@charset "UTF-8";
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
@import url(..\..\node_modules\fullpage.js\dist\jquery.fullpage.css);
html {
  font-family: sans-serif;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */ }

/**
 * Remove default margin.
 */
body {
  margin: 0; }

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block; }

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */
[hidden],
template {
  display: none; }

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent; }

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */
a:active,
a:hover {
  outline: 0; }

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted; }

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b,
strong {
  font-weight: bold; }

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic; }

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/**
 * Address styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000; }

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%; }

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline; }

sup {
  top: -0.5em; }

sub {
  bottom: -0.25em; }

/* Embedded content
   ========================================================================== */
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */
img {
  border: 0; }

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden; }

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px; }

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  box-sizing: content-box;
  height: 0; }

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto; }

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em; }

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  /* 1 */
  font: inherit;
  /* 2 */
  margin: 0;
  /* 3 */ }

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible; }

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none; }

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
  cursor: pointer;
  /* 3 */ }

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default; }

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0; }

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal; }

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
 */
input[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  box-sizing: content-box;
  /* 2 */ }

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto; }

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

.section:after, .claim-section:after {
  content: "";
  display: table;
  clear: both;
  border-spacing: 0; }

.parent:before, .parent-sm:before, .parent-md:before, .parent-lg:before, .parent:after, .parent-sm:after, .parent-md:after, .parent-lg:after {
  content: "";
  display: table;
  border-spacing: 0; }

.parent:after, .parent-sm:after, .parent-md:after, .parent-lg:after {
  clear: both; }

.parent, .parent-sm, .parent-md, .parent-lg {
  zoom: 1; }

.push-0, .push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-sm-0, .push-sm-1, .push-sm-2, .push-sm-3, .push-sm-4, .push-sm-5, .push-sm-6, .push-sm-7, .push-sm-8, .push-sm-9, .push-sm-10, .push-sm-11, .push-sm-12, .push-md-0, .push-md-1, .push-md-2, .push-md-3, .push-md-4, .push-md-5, .push-md-6, .push-md-7, .push-md-8, .push-md-9, .push-md-10, .push-md-11, .push-md-12, .push-md-13, .push-md-14, .push-md-15, .push-md-16, .push-lg-0, .push-lg-1, .push-lg-2, .push-lg-3, .push-lg-4, .push-lg-5, .push-lg-6, .push-lg-7, .push-lg-8, .push-lg-9, .push-lg-10, .push-lg-11, .push-lg-12, .push-lg-13, .push-lg-14, .push-lg-15, .push-lg-16, .navigation-popup .navigation-content, .navigation-popup .navigation-content .navigation-meta, .section .menu-title, .section .section-branding, .content-section .content-box-wrapper, .claim-section .claim-text {
  position: relative; }

.section, .claim-section {
  box-sizing: border-box; }

.parent, .parent-sm, .parent-md, .parent-lg {
  box-sizing: border-box; }

.grid-0, .grid-1, .grid-2, .grid-3, .grid-4, .grid-5, .grid-6, .grid-7, .grid-8, .grid-9, .grid-10, .grid-11, .grid-12, .grid-13, .grid-14, .grid-15, .grid-16, .grid-sm-0, .grid-sm-1, .grid-sm-2, .grid-sm-3, .grid-sm-4, .grid-sm-5, .grid-sm-6, .grid-sm-7, .grid-sm-8, .grid-sm-9, .grid-sm-10, .grid-sm-11, .grid-sm-12, .grid-md-0, .grid-md-1, .grid-md-2, .grid-md-3, .grid-md-4, .grid-md-5, .grid-md-6, .grid-md-7, .grid-md-8, .grid-md-9, .grid-md-10, .grid-md-11, .grid-md-12, .grid-md-13, .grid-md-14, .grid-md-15, .grid-md-16, .grid-lg-0, .grid-lg-1, .grid-lg-2, .grid-lg-3, .grid-lg-4, .grid-lg-5, .grid-lg-6, .grid-lg-7, .grid-lg-8, .grid-lg-9, .grid-lg-10, .grid-lg-11, .grid-lg-12, .grid-lg-13, .grid-lg-14, .grid-lg-15, .grid-lg-16, .navigation-popup .navigation-content, .navigation-popup .navigation-content .navigation-primary, .navigation-popup .navigation-content .navigation-primary li, .navigation-popup .navigation-content .navigation-meta, .navigation-popup .navigation-content .navigation-meta li, .section .section-logo, .section .menu-title, .section .section-branding, .content-section .content-box-wrapper, .claim-section .claim-text {
  display: inline-block;
  min-height: 1px;
  box-sizing: border-box; }

/**
 * Str replace
 *
 * @param {string}  $string    String that you want to replace
 * @param {string}  $substr    String that is to be replaced by `$newsubstr`
 * @param {string}  $newsubstr String that replaces `$substr`
 * @param {number*} $all       Flag for replaceing all (1+) or not (0)
 * @return {string}
 */
/**
 * Map set
 *
 * @param 	Map 	$map 		The map to use
 * @param 	String 	$key 		The key to update
 * @param 	Mixed 	$value 		The new value
 * @return 	Map 			The new map
 */
/**
 * Get the column width in percent for the global or a specific context
 *
 * @param 	int 		$columns 					The number of columns to calculate
 * @param 	int 		$context : $gridle-columns-count 	 	The context to use
 * @return 	percentage 							The width in percent
 */
/**
 *  Get a state map
 *
 * @param 	string 		$name 		The name of the state to get
 * @return 	map 				A state map object
 */
/**
 * Check if a state exist :
 *
 * @param 	string 		$name 		The name of the state to check
 * @return 	Boolean 			true is exist
 */
/**
 * Get the media queries variables :
 *
 * @param 	int 		$index 	 	The media query indes
 * @param 	String 		$var 		The media query variable name
 * @return 	String|int 			The variable value
 */
/**
 * Get a variable
 *
 * @param 	String 		$varName 				The variable name
 * @param  	String 		$stateMap-or-stateName 	 	The state name or a map state value
 * @return 	Mixed 							The finded value
 */
/**
 * Set a variable in a state
 * @param 	Mixed $stateName-or-stateIndex 	The state name of state index
 * @param  	String $var                    		Variable name to assign
 * @param  	Mixed $newValue          		The new value to assign
 * @return 	List                         			The states list (full)
 */
/**
 * Generate a column
 *
 * @param 	String 		$name 			The column name (often count)
 * @param 	int 		$columns 		The column count that the column will take
 * @param 	int 		$context 		The context on witch the with will be calculed
 * @param 	Boolean 	$generateClasses 	Set if the column has to be generated in css
 */
/**
 * Generate classname
 *
 * @param 	List 		$parrern 	The pattern to use to generate classname
 * @param 	String 		$state 		The state
 * @param 	int 		$count 		The column count
 */
/**
 * Get the media query for a particular state, or with, etc...
 *
 * @param 	Mixed 		$state-or-min-width 		The state name of the min with
 * @param 	Mixed 		$max-width 			The max width if first param is a min width
 * @return 	String 						The media query string without the @media
 */
/**
 * Get states count
 * 
 * @return 	int 	The number of states defined
 */
/**
 * Setup
 */
/**
 *  Register a clear each class
 */
/**
 * Register a special class
 */
/**
 * Register default states
 */
/**
 * Register default mobile first states :
 */
/**
 * Set the debug device (not used for now)
 * 
 * @param 	String 		$state 		The state to update
 * @para m 	String 		$device 	The device to use (iphone, etc...)
 */
/**
 * Parent clear each
 */
/**
 * Vertical align :
 */
/**
 * Show inline
 *
 * @param 	String 		$state 		The state name
 */
/**
 * Generate a custom class for all the states
 *
 * @param 	list 	$pattern 		The name pattern of the class
 * @param 	list 	$statesNames 		The states names to generate
 */
/**
 * State with can also include media queries:
 */
@media screen and (max-width: 400px) {
  @-ms-viewport {
    width: device-width; } }

#gridle-settings {
  content: '{ "version" : "1.3.40", "states" : { "retina":{ "query" : "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)", "classes" : false, "name" : "retina", "_gridle" : true }, "tv":{ "query" : "only tv", "classes" : false, "name" : "tv", "_gridle" : true }, "print":{ "query" : "only print", "classes" : false, "name" : "print", "_gridle" : true }, "portrait":{ "query" : "only screen and (orientation: portrait)", "classes" : false, "name" : "portrait", "_gridle" : true }, "landscape":{ "query" : "only screen and (orientation: landscape)", "classes" : false, "name" : "landscape", "_gridle" : true }, "default":{ "name" : "default", "min-width" : null, "max-width" : null, "query" : null, "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "sm":{ "name" : "sm", "min-width" : null, "max-width" : null, "query" : "only screen and (max-width: 40em)", "classes" : true, "context" : "12", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "md":{ "name" : "md", "min-width" : null, "max-width" : null, "query" : "only screen and (min-width:40.0625em) and (max-width:51.875em)", "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "lg":{ "name" : "lg", "min-width" : null, "max-width" : null, "query" : "only screen and (min-width:51.9375em) and (max-width:6249999.9375em)", "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }} }'; }

.grid-0, .grid-1, .grid-2, .grid-3, .grid-4, .grid-5, .grid-6, .grid-7, .grid-8, .grid-9, .grid-10, .grid-11, .grid-12, .grid-13, .grid-14, .grid-15, .grid-16, .grid-sm-0, .grid-sm-1, .grid-sm-2, .grid-sm-3, .grid-sm-4, .grid-sm-5, .grid-sm-6, .grid-sm-7, .grid-sm-8, .grid-sm-9, .grid-sm-10, .grid-sm-11, .grid-sm-12, .grid-md-0, .grid-md-1, .grid-md-2, .grid-md-3, .grid-md-4, .grid-md-5, .grid-md-6, .grid-md-7, .grid-md-8, .grid-md-9, .grid-md-10, .grid-md-11, .grid-md-12, .grid-md-13, .grid-md-14, .grid-md-15, .grid-md-16, .grid-lg-0, .grid-lg-1, .grid-lg-2, .grid-lg-3, .grid-lg-4, .grid-lg-5, .grid-lg-6, .grid-lg-7, .grid-lg-8, .grid-lg-9, .grid-lg-10, .grid-lg-11, .grid-lg-12, .grid-lg-13, .grid-lg-14, .grid-lg-15, .grid-lg-16 {
  float: left;
  direction: ltr;
  padding-left: 10px;
  padding-right: 10px; }

.grid-0 {
  width: 0%; }

.grid-1 {
  width: 6.25%; }

.grid-2 {
  width: 12.5%; }

.grid-3 {
  width: 18.75%; }

.grid-4 {
  width: 25%; }

.grid-5 {
  width: 31.25%; }

.grid-6 {
  width: 37.5%; }

.grid-7 {
  width: 43.75%; }

.grid-8 {
  width: 50%; }

.grid-9 {
  width: 56.25%; }

.grid-10 {
  width: 62.5%; }

.grid-11 {
  width: 68.75%; }

.grid-12 {
  width: 75%; }

.grid-13 {
  width: 81.25%; }

.grid-14 {
  width: 87.5%; }

.grid-15 {
  width: 93.75%; }

.grid-16 {
  width: 100%; }

/**
	 * Visible, hide, etc...
	 */
/**
	 * Clear each class :
	 */
@media only screen and (max-width: 40em) {
  .grid-sm-0 {
    width: 0%; }
  .grid-sm-1 {
    width: 8.33333%; }
  .grid-sm-2 {
    width: 16.66667%; }
  .grid-sm-3 {
    width: 25%; }
  .grid-sm-4 {
    width: 33.33333%; }
  .grid-sm-5 {
    width: 41.66667%; }
  .grid-sm-6 {
    width: 50%; }
  .grid-sm-7 {
    width: 58.33333%; }
  .grid-sm-8 {
    width: 66.66667%; }
  .grid-sm-9 {
    width: 75%; }
  .grid-sm-10 {
    width: 83.33333%; }
  .grid-sm-11 {
    width: 91.66667%; }
  .grid-sm-12 {
    width: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
  .grid-md-0 {
    width: 0%; }
  .grid-md-1 {
    width: 6.25%; }
  .grid-md-2 {
    width: 12.5%; }
  .grid-md-3 {
    width: 18.75%; }
  .grid-md-4 {
    width: 25%; }
  .grid-md-5 {
    width: 31.25%; }
  .grid-md-6 {
    width: 37.5%; }
  .grid-md-7 {
    width: 43.75%; }
  .grid-md-8 {
    width: 50%; }
  .grid-md-9 {
    width: 56.25%; }
  .grid-md-10 {
    width: 62.5%; }
  .grid-md-11 {
    width: 68.75%; }
  .grid-md-12 {
    width: 75%; }
  .grid-md-13 {
    width: 81.25%; }
  .grid-md-14 {
    width: 87.5%; }
  .grid-md-15 {
    width: 93.75%; }
  .grid-md-16 {
    width: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media only screen and (min-width: 51.9375em) and (max-width: 6249999.9375em) {
  .grid-lg-0 {
    width: 0%; }
  .grid-lg-1 {
    width: 6.25%; }
  .grid-lg-2 {
    width: 12.5%; }
  .grid-lg-3 {
    width: 18.75%; }
  .grid-lg-4 {
    width: 25%; }
  .grid-lg-5 {
    width: 31.25%; }
  .grid-lg-6 {
    width: 37.5%; }
  .grid-lg-7 {
    width: 43.75%; }
  .grid-lg-8 {
    width: 50%; }
  .grid-lg-9 {
    width: 56.25%; }
  .grid-lg-10 {
    width: 62.5%; }
  .grid-lg-11 {
    width: 68.75%; }
  .grid-lg-12 {
    width: 75%; }
  .grid-lg-13 {
    width: 81.25%; }
  .grid-lg-14 {
    width: 87.5%; }
  .grid-lg-15 {
    width: 93.75%; }
  .grid-lg-16 {
    width: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media screen and (max-width: 400px) {
  @-ms-viewport {
    width: device-width; } }

#gridle-settings {
  content: '{ "version" : "1.3.40", "states" : { "retina":{ "query" : "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)", "classes" : false, "name" : "retina", "_gridle" : true }, "tv":{ "query" : "only tv", "classes" : false, "name" : "tv", "_gridle" : true }, "print":{ "query" : "only print", "classes" : false, "name" : "print", "_gridle" : true }, "portrait":{ "query" : "only screen and (orientation: portrait)", "classes" : false, "name" : "portrait", "_gridle" : true }, "landscape":{ "query" : "only screen and (orientation: landscape)", "classes" : false, "name" : "landscape", "_gridle" : true }, "default":{ "name" : "default", "min-width" : null, "max-width" : null, "query" : null, "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "sm":{ "name" : "sm", "min-width" : null, "max-width" : null, "query" : "only screen and (max-width: 40em)", "classes" : true, "context" : "12", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "md":{ "name" : "md", "min-width" : null, "max-width" : null, "query" : "only screen and (min-width:40.0625em) and (max-width:51.875em)", "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }, "lg":{ "name" : "lg", "min-width" : null, "max-width" : null, "query" : "only screen and (min-width:51.9375em) and (max-width:6249999.9375em)", "classes" : true, "context" : "16", "gutter-width" : "20px", "direction" : "ltr", "name-multiplicator" : "1", "debug" : false, "debug-show-class-names" : true, "ie7-support" : false, "html-states-classes" : false, "generate-push-classes" : true, "generate-pull-classes" : true, "generate-prefix-classes" : true, "generate-suffix-classes" : true, "generate-helpers-classes" : true, "_gridle" : true }} }'; }

.push-0 {
  left: 0%; }

.push-1 {
  left: 6.25%; }

.push-2 {
  left: 12.5%; }

.push-3 {
  left: 18.75%; }

.push-4 {
  left: 25%; }

.push-5 {
  left: 31.25%; }

.push-6 {
  left: 37.5%; }

.push-7 {
  left: 43.75%; }

.push-8 {
  left: 50%; }

.push-9 {
  left: 56.25%; }

.push-10 {
  left: 62.5%; }

.push-11 {
  left: 68.75%; }

.push-12 {
  left: 75%; }

.push-13 {
  left: 81.25%; }

.push-14 {
  left: 87.5%; }

.push-15 {
  left: 93.75%; }

.push-16 {
  left: 100%; }

/**
	 * Visible, hide, etc...
	 */
/**
	 * Clear each class :
	 */
@media only screen and (max-width: 40em) {
  .push-sm-0 {
    left: 0%; }
  .push-sm-1 {
    left: 8.33333%; }
  .push-sm-2 {
    left: 16.66667%; }
  .push-sm-3 {
    left: 25%; }
  .push-sm-4 {
    left: 33.33333%; }
  .push-sm-5 {
    left: 41.66667%; }
  .push-sm-6 {
    left: 50%; }
  .push-sm-7 {
    left: 58.33333%; }
  .push-sm-8 {
    left: 66.66667%; }
  .push-sm-9 {
    left: 75%; }
  .push-sm-10 {
    left: 83.33333%; }
  .push-sm-11 {
    left: 91.66667%; }
  .push-sm-12 {
    left: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
  .push-md-0 {
    left: 0%; }
  .push-md-1 {
    left: 6.25%; }
  .push-md-2 {
    left: 12.5%; }
  .push-md-3 {
    left: 18.75%; }
  .push-md-4 {
    left: 25%; }
  .push-md-5 {
    left: 31.25%; }
  .push-md-6 {
    left: 37.5%; }
  .push-md-7 {
    left: 43.75%; }
  .push-md-8 {
    left: 50%; }
  .push-md-9 {
    left: 56.25%; }
  .push-md-10 {
    left: 62.5%; }
  .push-md-11 {
    left: 68.75%; }
  .push-md-12 {
    left: 75%; }
  .push-md-13 {
    left: 81.25%; }
  .push-md-14 {
    left: 87.5%; }
  .push-md-15 {
    left: 93.75%; }
  .push-md-16 {
    left: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media only screen and (min-width: 51.9375em) and (max-width: 6249999.9375em) {
  .push-lg-0 {
    left: 0%; }
  .push-lg-1 {
    left: 6.25%; }
  .push-lg-2 {
    left: 12.5%; }
  .push-lg-3 {
    left: 18.75%; }
  .push-lg-4 {
    left: 25%; }
  .push-lg-5 {
    left: 31.25%; }
  .push-lg-6 {
    left: 37.5%; }
  .push-lg-7 {
    left: 43.75%; }
  .push-lg-8 {
    left: 50%; }
  .push-lg-9 {
    left: 56.25%; }
  .push-lg-10 {
    left: 62.5%; }
  .push-lg-11 {
    left: 68.75%; }
  .push-lg-12 {
    left: 75%; }
  .push-lg-13 {
    left: 81.25%; }
  .push-lg-14 {
    left: 87.5%; }
  .push-lg-15 {
    left: 93.75%; }
  .push-lg-16 {
    left: 100%; }
  /**
	 * Visible, hide, etc...
	 */
  /**
	 * Clear each class :
	 */ }

@media only screen and (max-width: 40em) {
  [class*="grid-"] {
    width: 100%;
    left: 0; } }

@media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
  [class*="grid-"] {
    width: 100%;
    left: 0; } }

@font-face {
  font-family: 'Astoria';
  src: url("../fonts/Astoria-ExtraLight-webfont.eot");
  src: url("../fonts/Astoria-ExtraLight-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/Astoria-ExtraLight-webfont.woff2") format("woff2"), url("../fonts/Astoria-ExtraLight-webfont.woff") format("woff"), url("../fonts/Astoria-ExtraLight-webfont.ttf") format("truetype"), url("../fonts/Astoria-ExtraLight-webfont.svg#astoriaExtraLight") format("svg");
  font-weight: normal;
  font-style: normal; }

@font-face {
  font-family: 'Astoria';
  src: url("../fonts/Astoria-Medium-webfont.eot");
  src: url("../fonts/Astoria-Medium-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/Astoria-Medium-webfont.woff2") format("woff2"), url("../fonts/Astoria-Medium-webfont.woff") format("woff"), url("../fonts/Astoria-Medium-webfont.ttf") format("truetype"), url("../fonts/Astoria-Medium-webfont.svg#astoriaMedium") format("svg");
  font-weight: bold;
  font-style: normal; }

h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal;
  text-transform: uppercase;
  line-height: 1.1;
  margin: 0; }

h1 {
  font-family: "Astoria", sans;
  font-size: 4rem;
  line-height: 1; }

h2 {
  font-family: "Astoria", sans;
  font-size: 1.25rem;
  font-weight: bold; }

h3 {
  font-family: "Astoria", sans;
  font-size: 1.25rem; }

span.who-is-rosa-2016 {
  color: #ff3eb5;
  font-size: 6.25rem;
  line-height: 0.9;
  text-transform: uppercase; }
  @media only screen and (min-width: 0) and (max-width: 23.75em) {
    span.who-is-rosa-2016 {
      font-size: 4.5rem; } }

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
    visibility: visible; }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0); } }

@-webkit-keyframes fadeIn {
  from {
    opacity: 0; }
  to {
    opacity: 1; } }

@keyframes fadeIn {
  from {
    opacity: 0; }
  to {
    opacity: 1; } }

@-webkit-keyframes bounce {
  0%,
  15%,
  30%,
  45%,
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  22.5%,
  37.5% {
    -webkit-transform: translateY(-15px);
            transform: translateY(-15px); } }

@keyframes bounce {
  0%,
  15%,
  30%,
  45%,
  100% {
    -webkit-transform: translateY(0);
            transform: translateY(0); }
  22.5%,
  37.5% {
    -webkit-transform: translateY(-15px);
            transform: translateY(-15px); } }

/* small displays */
@media only screen {
  .show-for-small-only, .show-for-small-up, .hide-for-medium-only, .hide-for-medium-up {
    display: inherit !important; }
  .hide-for-small-only, .hide-for-small-up, .show-for-medium-only, .show-for-medium-up {
    display: none !important; } }

/* medium displays */
@media only screen and (min-width: 40.0625em) {
  .hide-for-small-only, .show-for-small-up, .show-for-medium-only, .show-for-medium-up {
    display: inherit !important; }
  .show-for-small-only, .hide-for-small-up, .hide-for-medium-only, .hide-for-medium-up {
    display: none !important; } }

html {
  box-sizing: border-box;
  color: #7d7266;
  font-family: "Astoria", sans;
  font-size: 1em;
  line-height: 1.5; }

*, *:before, *:after {
  box-sizing: inherit; }

body {
  position: relative; }

img {
  max-width: 100%;
  height: auto; }

img {
  -ms-interpolation-mode: bicubic; }

@media only screen and (min-width: 51.9375em) {
  #fullpage > .section {
    height: 100vh;
    min-height: inherit; } }

#fullpage > .section.fp-auto-height {
  height: auto;
  min-height: inherit; }

/*
 * Remove the gap between audio, canvas, iframes,
 * images, videos and the bottom of their containers:
 * https://github.com/h5bp/html5-boilerplate/issues/440
 */
audio,
canvas,
iframe,
svg,
video {
  vertical-align: middle; }

img {
  display: inline-block;
  vertical-align: middle; }

/*
 * Remove default fieldset styles.
 */
fieldset {
  border: 0;
  margin: 0;
  padding: 0; }

/*
 * Allow only vertical resizing of textareas.
 */
textarea {
  resize: vertical; }

/*
 * Our spritesheet design
 */
.sprite {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  height: 0;
  width: 100%; }
  .sprite svg {
    display: block;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%; }

.fullpage-wrapper {
  visibility: hidden; }

.fp-enabled .fullpage-wrapper {
  visibility: visible; }

.content-wrapper {
  max-width: 980px;
  margin: 0 auto;
  width: 100%;
  padding: 0 10px;
  position: relative; }
  @media only screen and (min-width: 51.9375em) {
    .content-wrapper {
      height: 100%; } }

a {
  color: #ff3eb5;
  text-decoration: underline; }
  a:hover, a:active {
    color: #ff3eb5;
    text-decoration: none; }

/* Magnific Popup CSS */
.mfp-bg {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1042;
  overflow: hidden;
  position: fixed;
  background: #0b0b0b;
  opacity: 0.8; }

.mfp-wrap {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1043;
  position: fixed;
  outline: none !important;
  -webkit-backface-visibility: hidden; }

.mfp-container {
  text-align: center;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  padding: 0 8px;
  box-sizing: border-box; }

.mfp-container:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle; }

.mfp-align-top .mfp-container:before {
  display: none; }

.mfp-content {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin: 0 auto;
  text-align: left;
  z-index: 1045; }

.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
  width: 100%;
  cursor: auto; }

.mfp-ajax-cur {
  cursor: progress; }

.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
  cursor: zoom-out; }

.mfp-zoom {
  cursor: pointer;
  cursor: zoom-in; }

.mfp-auto-cursor .mfp-content {
  cursor: auto; }

.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
      user-select: none; }

.mfp-loading.mfp-figure {
  display: none; }

.mfp-hide {
  display: none !important; }

.mfp-preloader {
  color: #CCC;
  position: absolute;
  top: 50%;
  width: auto;
  text-align: center;
  margin-top: -0.8em;
  left: 8px;
  right: 8px;
  z-index: 1044; }
  .mfp-preloader a {
    color: #CCC; }
    .mfp-preloader a:hover {
      color: #FFF; }

.mfp-s-ready .mfp-preloader {
  display: none; }

.mfp-s-error .mfp-content {
  display: none; }

button.mfp-close, button.mfp-arrow {
  overflow: visible;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
  display: block;
  outline: none;
  padding: 0;
  z-index: 1046;
  box-shadow: none;
  -ms-touch-action: manipulation;
      touch-action: manipulation; }

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

.mfp-close {
  width: 44px;
  height: 44px;
  line-height: 44px;
  position: absolute;
  right: 0;
  top: 0;
  text-decoration: none;
  text-align: center;
  opacity: 0.65;
  padding: 0 0 18px 10px;
  color: #FFF;
  font-style: normal;
  font-size: 28px;
  font-family: Arial, Baskerville, monospace; }
  .mfp-close:hover, .mfp-close:focus {
    opacity: 1; }
  .mfp-close:active {
    top: 1px; }

.mfp-close-btn-in .mfp-close {
  color: #333; }

.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
  color: #FFF;
  right: -6px;
  text-align: right;
  padding-right: 6px;
  width: 100%; }

.mfp-counter {
  position: absolute;
  top: 0;
  right: 0;
  color: #CCC;
  font-size: 12px;
  line-height: 18px;
  white-space: nowrap; }

.mfp-arrow {
  position: absolute;
  opacity: 0.65;
  margin: 0;
  top: 50%;
  margin-top: -55px;
  padding: 0;
  width: 90px;
  height: 110px;
  -webkit-tap-highlight-color: transparent; }
  .mfp-arrow:active {
    margin-top: -54px; }
  .mfp-arrow:hover, .mfp-arrow:focus {
    opacity: 1; }
  .mfp-arrow:before, .mfp-arrow:after {
    content: '';
    display: block;
    width: 0;
    height: 0;
    position: absolute;
    left: 0;
    top: 0;
    margin-top: 35px;
    margin-left: 35px;
    border: medium inset transparent; }
  .mfp-arrow:after {
    border-top-width: 13px;
    border-bottom-width: 13px;
    top: 8px; }
  .mfp-arrow:before {
    border-top-width: 21px;
    border-bottom-width: 21px;
    opacity: 0.7; }

.mfp-arrow-left {
  left: 0; }
  .mfp-arrow-left:after {
    border-right: 17px solid #FFF;
    margin-left: 31px; }
  .mfp-arrow-left:before {
    margin-left: 25px;
    border-right: 27px solid #3F3F3F; }

.mfp-arrow-right {
  right: 0; }
  .mfp-arrow-right:after {
    border-left: 17px solid #FFF;
    margin-left: 39px; }
  .mfp-arrow-right:before {
    border-left: 27px solid #3F3F3F; }

.mfp-iframe-holder {
  padding-top: 40px;
  padding-bottom: 40px; }
  .mfp-iframe-holder .mfp-content {
    line-height: 0;
    width: 100%;
    max-width: 900px; }
  .mfp-iframe-holder .mfp-close {
    top: -40px; }

.mfp-iframe-scaler {
  width: 100%;
  height: 0;
  overflow: hidden;
  padding-top: 56.25%; }
  .mfp-iframe-scaler iframe {
    position: absolute;
    display: block;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
    background: #000; }

/* Main image in popup */
img.mfp-img {
  width: auto;
  max-width: 100%;
  height: auto;
  display: block;
  line-height: 0;
  box-sizing: border-box;
  padding: 40px 0 40px;
  margin: 0 auto; }

/* The shadow behind the image */
.mfp-figure {
  line-height: 0; }
  .mfp-figure:after {
    content: '';
    position: absolute;
    left: 0;
    top: 40px;
    bottom: 40px;
    display: block;
    right: 0;
    width: auto;
    height: auto;
    z-index: -1;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
    background: #444; }
  .mfp-figure small {
    color: #BDBDBD;
    display: block;
    font-size: 12px;
    line-height: 14px; }
  .mfp-figure figure {
    margin: 0; }

.mfp-bottom-bar {
  margin-top: -36px;
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  cursor: auto; }

.mfp-title {
  text-align: left;
  line-height: 18px;
  color: #F3F3F3;
  word-wrap: break-word;
  padding-right: 36px; }

.mfp-image-holder .mfp-content {
  max-width: 100%; }

.mfp-gallery .mfp-image-holder .mfp-figure {
  cursor: pointer; }

@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
  /**
       * Remove all paddings around the image on small screen
       */
  .mfp-img-mobile .mfp-image-holder {
    padding-left: 0;
    padding-right: 0; }
  .mfp-img-mobile img.mfp-img {
    padding: 0; }
  .mfp-img-mobile .mfp-figure:after {
    top: 0;
    bottom: 0; }
  .mfp-img-mobile .mfp-figure small {
    display: inline;
    margin-left: 5px; }
  .mfp-img-mobile .mfp-bottom-bar {
    background: rgba(0, 0, 0, 0.6);
    bottom: 0;
    margin: 0;
    top: auto;
    padding: 3px 5px;
    position: fixed;
    box-sizing: border-box; }
    .mfp-img-mobile .mfp-bottom-bar:empty {
      padding: 0; }
  .mfp-img-mobile .mfp-counter {
    right: 5px;
    top: 3px; }
  .mfp-img-mobile .mfp-close {
    top: 0;
    right: 0;
    width: 35px;
    height: 35px;
    line-height: 35px;
    background: rgba(0, 0, 0, 0.6);
    position: fixed;
    text-align: center;
    padding: 0; } }

@media all and (max-width: 900px) {
  .mfp-arrow {
    -webkit-transform: scale(0.75);
    -ms-transform: scale(0.75);
        transform: scale(0.75); }
  .mfp-arrow-left {
    -webkit-transform-origin: 0;
    -ms-transform-origin: 0;
        transform-origin: 0; }
  .mfp-arrow-right {
    -webkit-transform-origin: 100%;
    -ms-transform-origin: 100%;
        transform-origin: 100%; }
  .mfp-container {
    padding-left: 6px;
    padding-right: 6px; } }

.navigation-popup.mfp-bg {
  background: #ff3eb5;
  opacity: 1; }

.navigation-popup .mfp-close {
  color: #ff3eb5;
  border-left: none;
  position: fixed;
  top: 62px;
  left: 0;
  z-index: 5;
  opacity: 1;
  background-color: #FFF;
  background-repeat: no-repeat;
  background-image: url("../images/close-pink.svg");
  background-position: center;
  background-size: 25px;
  height: 55px;
  width: 52px;
  font-size: 0;
  overflow: hidden; }
  .navigation-popup .mfp-close:hover {
    background-image: url("../images/close-brown.svg"); }
  @media only screen and (min-width: 51.9375em) {
    .navigation-popup .mfp-close {
      top: 8%;
      height: 62px;
      width: 57px; } }

.navigation-popup .navigation-content {
  float: left;
  direction: ltr;
  padding-left: 10px;
  padding-right: 10px;
  width: 93.75%;
  left: 6.25%; }
  @media only screen and (min-width: 51.9375em) {
    .navigation-popup .navigation-content {
      width: 87.5%; } }

.navigation-popup .navigation-content .navigation-primary {
  float: left;
  direction: ltr;
  padding-left: 10px;
  padding-right: 10px;
  width: 100%;
  padding-left: 0; }
  .navigation-popup .navigation-content .navigation-primary li:nth-child(2n+1) {
    clear: both; }
  .navigation-popup .navigation-content .navigation-primary ul {
    list-style: none;
    margin: 0;
    padding: 0; }
  .navigation-popup .navigation-content .navigation-primary li, .navigation-popup .navigation-content .navigation-primary a {
    font-family: "Astoria", sans;
    font-size: 1.75rem;
    color: #FFF;
    text-decoration: none;
    text-transform: uppercase;
    line-height: 1;
    font-weight: normal; }
    @media only screen and (min-width: 0) and (max-width: 23.75em) {
      .navigation-popup .navigation-content .navigation-primary li, .navigation-popup .navigation-content .navigation-primary a {
        font-size: 1.375rem; } }
  .navigation-popup .navigation-content .navigation-primary li {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    width: 50%;
    -webkit-transition: font-weight .25s;
    transition: font-weight .25s;
    position: relative;
    height: 125px;
    padding: 14px 0 0 14px;
    margin-left: 10%;
    margin-right: -10%; }
    .navigation-popup .navigation-content .navigation-primary li::before {
      -webkit-transition: visibility .25s, opacity .25s;
      transition: visibility .25s, opacity .25s;
      content: '';
      height: 14px;
      width: 14px;
      display: block;
      left: 0;
      top: 0;
      opacity: 0;
      visibility: hidden;
      position: absolute;
      background: url("../images/dornen-symbol-white.svg"); }
    .navigation-popup .navigation-content .navigation-primary li:active::before, .navigation-popup .navigation-content .navigation-primary li:hover::before {
      visibility: visible;
      opacity: 1; }
  @media only screen and (min-width: 51.9375em) {
    .navigation-popup .navigation-content .navigation-primary {
      width: 62.5%; }
      .navigation-popup .navigation-content .navigation-primary li {
        padding: 0;
        margin-left: 0;
        margin-right: 0; }
        .navigation-popup .navigation-content .navigation-primary li:before {
          left: -14px;
          top: -14px; } }

.navigation-popup .navigation-content .navigation-meta {
  float: left;
  direction: ltr;
  padding-left: 10px;
  padding-right: 10px;
  width: 100%; }
  .navigation-popup .navigation-content .navigation-meta ul {
    list-style: none;
    margin: 0;
    padding: 0; }
  .navigation-popup .navigation-content .navigation-meta li {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    width: 50%;
    margin-left: 10%;
    margin-right: -10%;
    height: auto; }
    .navigation-popup .navigation-content .navigation-meta li:hover,
    .navigation-popup .navigation-content .navigation-meta li:hover a, .navigation-popup .navigation-content .navigation-meta li:active,
    .navigation-popup .navigation-content .navigation-meta li:active a {
      text-decoration: underline; }
  .navigation-popup .navigation-content .navigation-meta li, .navigation-popup .navigation-content .navigation-meta a {
    font-family: "Astoria", sans;
    font-size: 1.25rem;
    color: #FFF;
    text-decoration: none;
    text-transform: uppercase;
    line-height: 1.2; }
  .navigation-popup .navigation-content .navigation-meta .language-switch a, .navigation-popup .navigation-content .navigation-meta .language-switch span {
    opacity: .3;
    -webkit-transition: opacity 0.2s ease-out;
    transition: opacity 0.2s ease-out; }
  .navigation-popup .navigation-content .navigation-meta .language-switch:hover,
  .navigation-popup .navigation-content .navigation-meta .language-switch:hover a, .navigation-popup .navigation-content .navigation-meta .language-switch:active,
  .navigation-popup .navigation-content .navigation-meta .language-switch:active a {
    text-decoration: none; }
  .navigation-popup .navigation-content .navigation-meta .language-switch a:hover,
  .navigation-popup .navigation-content .navigation-meta .language-switch a:active {
    text-decoration: underline;
    opacity: 1; }
  .navigation-popup .navigation-content .navigation-meta .language-switch a.active:hover,
  .navigation-popup .navigation-content .navigation-meta .language-switch a.active:active {
    text-decoration: none;
    cursor: default; }
  .navigation-popup .navigation-content .navigation-meta .language-switch a.active,
  .navigation-popup .navigation-content .navigation-meta .language-switch span.active {
    opacity: 1; }
  @media only screen and (min-width: 51.9375em) {
    .navigation-popup .navigation-content .navigation-meta {
      width: 25%;
      left: 12.5%; }
      .navigation-popup .navigation-content .navigation-meta li {
        width: 100%;
        height: 125px;
        margin-left: 0;
        margin-right: 0; } }

.navigation-sticky .navigation-close,
.navigation-sticky .navigation-open {
  -webkit-animation: slideInLeft 1s ease 0s 1 normal both;
          animation: slideInLeft 1s ease 0s 1 normal both;
  background: #ff3eb5;
  color: #FFF;
  border: 1px solid #FFF;
  overflow: hidden;
  border-left: none;
  position: absolute;
  z-index: 5;
  left: 0;
  cursor: pointer; }

.navigation-sticky .navigation-open {
  font-size: 19px;
  font-family: "Astoria", sans;
  padding: 11px 0 5px;
  width: 51px;
  text-align: center;
  line-height: 1;
  text-transform: uppercase;
  position: fixed;
  -webkit-transition: font .3s;
  transition: font .3s;
  top: 62px; }
  .navigation-sticky .navigation-open:hover {
    color: #7d7266; }
  @media only screen and (min-width: 51.9375em) {
    .navigation-sticky .navigation-open {
      font-size: 20px;
      padding: 13px 0 7px;
      width: 53px;
      top: 8%; } }

.navigation-sticky .navigation-close {
  opacity: 1;
  background-repeat: no-repeat;
  background-image: url("../images/close-white.svg");
  background-position: center;
  background-size: 25px;
  height: 55px;
  width: 52px;
  font-size: 0;
  top: 10px; }
  .navigation-sticky .navigation-close:hover {
    background-image: url("../images/close-brown.svg"); }
  @media only screen and (min-width: 51.9375em) {
    .navigation-sticky .navigation-close {
      position: fixed;
      top: 8%;
      height: 62px;
      width: 57px; } }

.section {
  clear: both;
  position: relative; }
  .section.intro-section {
    padding-bottom: 70px; }
  .section:last-child {
    padding-bottom: 0; }
  .section .section-logo {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    width: 100%;
    float: right;
    margin-right: 15px;
    max-width: 110px;
    padding: 50px 0 0; }
    .section .section-logo a {
      display: block; }
    .section .section-logo .sprite {
      padding-bottom: 68.3486239%; }
  .section .menu-title {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    left: 0%;
    margin: 28px 0 10px 38px;
    position: relative; }
    @media only screen and (min-width: 51.9375em) and (max-width: 6249999.9375em) {
      .section .menu-title {
        width: 37.5%; } }
    @media only screen and (max-width: 40em) {
      .section .menu-title {
        left: 8.33333%; } }
    @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
      .section .menu-title {
        left: 6.25%; } }
    @media only screen and (max-width: 40em) {
      .section .menu-title {
        clear: both; } }
    @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
      .section .menu-title {
        clear: both; } }
    .section .menu-title h1 {
      color: #FFF;
      word-break: break-all; }
    .section .menu-title:before {
      content: '';
      height: 28px;
      width: 28px;
      display: block;
      left: -28px;
      top: -28px;
      position: absolute; }
  .section .section-branding {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    width: 37.5%;
    float: right;
    left: auto;
    padding: 35px 0;
    margin: 0 135px 40px 0; }
    @media only screen and (min-width: 51.9375em) and (max-width: 6249999.9375em) {
      .section .section-branding {
        left: 43.75%; } }
    @media only screen and (max-width: 40em) {
      .section .section-branding {
        width: 50%; } }
    @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
      .section .section-branding {
        width: 37.5%; } }
    @media only screen and (max-width: 40em) {
      .section .section-branding {
        clear: both; } }
    @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
      .section .section-branding {
        clear: both; } }
    .section .section-branding .sprite {
      padding-bottom: 104.099378882%; }
  @media only screen and (max-width: 40em) {
    .section .menu-title h1 {
      font-size: 3.125rem; } }
  @media only screen and (min-width: 0) and (max-width: 23.75em) {
    .section .menu-title h1 {
      font-size: 2.625rem; }
    .section.content-section .menu-title h1 {
      font-size: 1.75rem; } }
  @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
    .section .menu-title h1 {
      font-size: 3.125rem; } }
  @media only screen and (min-width: 51.9375em) {
    .section.intro-section {
      padding-bottom: 0; }
    .section .section-logo {
      text-align: right;
      position: absolute;
      right: 2%;
      top: 8%;
      padding-top: 0;
      margin: 0;
      float: none;
      max-width: 130px; }
    .section .menu-title {
      margin: 28px 0 0 38px;
      padding: 0 10px 0 0;
      position: absolute;
      left: 6.25%; }
    .section .section-branding {
      padding: 0 10px;
      margin: 0;
      float: left; }
    .section .intro-container {
      position: absolute;
      top: 50%;
      left: 0;
      width: 100%;
      -webkit-transform: translateY(-50%);
          -ms-transform: translateY(-50%);
              transform: translateY(-50%); } }

.intro-section,
.claim-section {
  min-height: 100vh; }
  @media only screen and (min-width: 51.9375em) {
    .intro-section,
    .claim-section {
      min-height: inherit; } }

.section.theme-pink {
  background: #ff3eb5; }
  .section.theme-pink .menu-title:before {
    background: url("../images/dornen-symbol-brown.svg"); }
  .section.theme-pink .section-branding .sprite svg,
  .section.theme-pink .section-logo .sprite svg {
    color: #7d7266; }

.section.theme-brown {
  background: #7d7266; }
  .section.theme-brown .menu-title:before {
    background: url("../images/dornen-symbol-pink.svg"); }
  .section.theme-brown .section-branding .sprite svg,
  .section.theme-brown .section-logo .sprite svg {
    color: #ff3eb5; }

.content-section {
  background: #FFF; }
  .content-section .section-logo .sprite svg {
    color: #ff3eb5; }
  .content-section .menu-title {
    position: absolute;
    top: 50px;
    left: 12.5%;
    margin: 0;
    opacity: 0.1; }
    .content-section .menu-title h1 {
      color: #ff3eb5; }
  .content-section .content-box-wrapper:last-child {
    margin-bottom: 60px; }
  @media only screen and (min-width: 40.0625em) and (max-width: 51.875em) {
    .content-section .content-box-wrapper {
      left: 6.25%;
      float: left;
      direction: ltr;
      padding-left: 10px;
      padding-right: 10px;
      width: 62.5%;
      margin-right: 31.25%; }
    .content-section .content-box-wrapper.md-right {
      margin-right: 0%;
      margin-left: 31.25%; } }
  @media only screen and (min-width: 51.9375em) {
    .content-section .menu-title {
      top: 12.5%;
      margin: 28px 0 0; } }

.content-section + .content-section .section-logo {
  display: none; }

@media only screen and (min-width: 51.9375em) {
  .content-section + .content-section .section-logo {
    display: inherit; } }

.content-box-wrapper {
  margin-top: 60px; }
  @media only screen and (min-width: 51.9375em) {
    .content-box-wrapper {
      height: 100%;
      position: relative;
      margin-top: 0; } }

.section .content-box-wrapper:last-child .box-image {
  text-align: right; }

.content-box {
  position: relative;
  margin-left: 14px;
  margin-top: 14px;
  padding-right: 34px;
  width: 100%;
  /* Types */ }
  .content-box:before {
    content: '';
    height: 14px;
    width: 14px;
    display: block;
    left: -14px;
    top: -14px;
    position: absolute;
    background: url("../images/dornen-symbol-pink.svg") no-repeat;
    background-size: 14px 14px; }
  .content-box.brown-dornen:before {
    background-image: url("../images/dornen-symbol-brown.svg"); }
  .content-box .subheadline, .content-box .headline {
    font-size: 1.25rem;
    color: #ff3eb5;
    text-transform: uppercase;
    line-height: 1.2; }
  .content-box .headline {
    font-family: "Astoria", sans;
    font-weight: bold; }
  .content-box .subheadline {
    font-family: "Astoria", sans; }
  .content-box.box-image {
    margin-left: 0;
    margin-top: 0;
    padding-right: 20px; }
    .content-box.box-image:before {
      display: none; }
  .content-box.box-quote {
    width: 100%;
    margin-left: 0;
    margin-top: 0;
    text-align: center; }
    .content-box.box-quote:before {
      display: none; }
    .content-box.box-quote blockquote {
      -webkit-hyphens: auto;
          -ms-hyphens: auto;
              hyphens: auto;
      color: #ff3eb5;
      font-size: 2rem;
      line-height: 1;
      text-transform: uppercase;
      padding: 0;
      margin: 0;
      word-break: break-word; }
    .content-box.box-quote blockquote:before, .content-box.box-quote blockquote:after {
      display: inline;
      content: '»'; }
    .content-box.box-quote blockquote:after {
      content: '«'; }
    .content-box.box-quote .author {
      display: inline-block;
      line-height: 1; }
  @media only screen and (min-width: 51.9375em) {
    .content-box {
      /* Alignment */ }
      .content-box.box-bottom, .content-box.box-center, .content-box.box-top {
        position: absolute; }
        .content-box.box-bottom:before, .content-box.box-center:before, .content-box.box-top:before {
          left: -14px;
          top: -10px; }
      .content-box.box-top {
        top: 8%;
        bottom: auto; }
      .content-box.box-bottom {
        top: auto;
        bottom: 8%; }
      .content-box.box-archiv {
        top: 15%;
        bottom: auto; }
      .content-box.box-center {
        -webkit-transform: translate(0, -50%);
            -ms-transform: translate(0, -50%);
                transform: translate(0, -50%);
        top: 50%;
        bottom: auto; } }
  body.archive-page .content-box.box-bottom {
    top: 45%;
    bottom: auto; }

.image, .image-overlay {
  position: relative;
  overflow: hidden;
  display: inline-block; }

.image-overlay .overlay, .image-overlay .overlay::before {
  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  transition: -webkit-transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94), -webkit-transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); }

.image-overlay .overlay {
  position: absolute;
  overflow: hidden;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0; }
  .image-overlay .overlay:before {
    background: rgba(241, 0, 148, 0.55);
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    display: block; }

.image-overlay .overlay-caption {
  text-align: left;
  font-size: 2rem;
  text-transform: uppercase;
  color: #FFF;
  position: absolute;
  bottom: 0;
  left: 0;
  line-height: 1;
  font-family: "Astoria", sans;
  padding: 0 0 10px 10px; }

.image-overlay:hover .overlay::before {
  -webkit-transform: translate(0, -100%);
      -ms-transform: translate(0, -100%);
          transform: translate(0, -100%); }

.image-details {
  text-align: left;
  position: relative;
  margin: 40px 0 0 12.5%; }
  .image-details:before {
    content: '';
    height: 14px;
    width: 14px;
    display: block;
    left: -15px;
    top: -10px;
    position: absolute;
    background: url("../images/dornen-symbol-pink.svg");
    -webkit-transition: opacity .3s, visibility .3s;
    transition: opacity .3s, visibility .3s; }

.scroll-down-arrow {
  -webkit-animation: fadeIn 1s ease 5s 1 both;
          animation: fadeIn 1s ease 5s 1 both;
  -webkit-transform-origin: center bottom;
      -ms-transform-origin: center bottom;
          transform-origin: center bottom;
  background-image: url("../images/arrow-down.svg");
  background-repeat: no-repeat;
  height: 26px;
  width: 43px;
  background-size: 43px 26px;
  position: absolute;
  bottom: 12px;
  left: 50%;
  margin-left: -21px; }
  @media only screen and (min-width: 51.9375em) {
    .scroll-down-arrow {
      -webkit-animation: fadeIn 1s ease 5s 1 both, bounce 3.5s ease 7.5s infinite both;
              animation: fadeIn 1s ease 5s 1 both, bounce 3.5s ease 7.5s infinite both; } }

@-webkit-keyframes slideInDownRosaSchapireLogo {
  from {
    -webkit-transform: translate3d(0, -200%, 0);
            transform: translate3d(0, -200%, 0);
    visibility: hidden; }
  to {
    -webkit-transform: translate3d(0, -50%, 0);
            transform: translate3d(0, -50%, 0);
    visibility: visible; } }

@keyframes slideInDownRosaSchapireLogo {
  from {
    -webkit-transform: translate3d(0, -200%, 0);
            transform: translate3d(0, -200%, 0);
    visibility: hidden; }
  to {
    -webkit-transform: translate3d(0, -50%, 0);
            transform: translate3d(0, -50%, 0);
    visibility: visible; } }

.header-section {
  padding-bottom: 0; }
  .header-section .branding-container {
    height: 66.666%;
    overflow: hidden;
    background: url("../images/grey-background.jpg") no-repeat;
    background-size: 100% 100%; }
  .header-section .branding-container .content-wrapper,
  .header-section .navigation-content .content-wrapper {
    height: 100%; }
  .header-section .logo-container {
    height: 100%;
    width: 100%;
    position: relative; }
  .header-section .rosa-schapire-text {
    width: 40%;
    position: absolute;
    left: 0;
    top: 50%;
    -webkit-transform: translate(0, -50%);
        -ms-transform: translate(0, -50%);
            transform: translate(0, -50%);
    -webkit-animation: slideInDown 1s ease 2s 1 normal both;
            animation: slideInDown 1s ease 2s 1 normal both;
    -webkit-animation-name: slideInDownRosaSchapireLogo;
            animation-name: slideInDownRosaSchapireLogo; }
    .header-section .rosa-schapire-text .sprite {
      padding-bottom: 68.3486239%; }
      .header-section .rosa-schapire-text .sprite svg {
        color: #ff3eb5; }
  .header-section .rosa-schapire-symbol {
    width: 50%;
    position: absolute;
    left: 50%;
    top: 50%;
    -webkit-transform: translate(0, -50%);
        -ms-transform: translate(0, -50%);
            transform: translate(0, -50%); }
  .header-section .rosa-schapire-logo {
    top: 50%;
    left: 50%;
    padding: 0 20px; }
    .header-section .rosa-schapire-logo .sprite {
      padding-bottom: 45.850340136%; }
      .header-section .rosa-schapire-logo .sprite svg {
        color: #7d7266; }
  .header-section .navigation-content {
    height: 33.333%;
    overflow: hidden; }
    .header-section .navigation-content .header-navigation {
      height: 100%; }
    .header-section .navigation-content ul {
      -webkit-animation: slideInUp 1s ease 1s 1 normal both;
              animation: slideInUp 1s ease 1s 1 normal both;
      margin: 0;
      padding: 0;
      list-style: none;
      height: 100%; }
    .header-section .navigation-content a {
      width: 50%;
      vertical-align: middle;
      margin-right: -4px;
      text-decoration: none;
      height: 50%;
      display: inline-block;
      padding-left: 10%; }
      .header-section .navigation-content a:before {
        content: '';
        display: inline-block;
        height: 100%;
        vertical-align: middle; }
    .header-section .navigation-content li {
      font-family: "Astoria", sans;
      text-transform: uppercase;
      color: #919191;
      font-size: 1.75rem;
      line-height: 1;
      -webkit-transition: color .3s, -webkit-filter .3s;
      transition: color .3s, -webkit-filter .3s;
      transition: color .3s, filter .3s;
      transition: color .3s, filter .3s, -webkit-filter .3s;
      display: inline-block;
      vertical-align: middle;
      position: relative; }
      @media only screen and (min-width: 0) and (max-width: 23.75em) {
        .header-section .navigation-content li {
          font-size: 1.375rem; } }
      .header-section .navigation-content li:before {
        content: '';
        height: 14px;
        width: 14px;
        display: block;
        visibility: hidden;
        opacity: 0;
        left: -14px;
        top: -14px;
        position: absolute;
        background: url("../images/dornen-symbol-pink.svg");
        -webkit-transition: opacity .3s, visibility .3s;
        transition: opacity .3s, visibility .3s; }
      .header-section .navigation-content li:hover, .header-section .navigation-content li:active {
        color: #ff3eb5; }
        .header-section .navigation-content li:hover:before, .header-section .navigation-content li:active:before {
          visibility: visible;
          opacity: 1; }
    .flexbox.flexwrap .header-section .navigation-content ul {
      display: -webkit-box;
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
      -webkit-flex-wrap: wrap;
          -ms-flex-wrap: wrap;
              flex-wrap: wrap;
      -webkit-box-pack: justify;
      -webkit-justify-content: space-between;
          -ms-flex-pack: justify;
              justify-content: space-between;
      -webkit-box-align: center;
      -webkit-align-items: center;
          -ms-flex-align: center;
              align-items: center; }
    .flexbox.flexwrap .header-section .navigation-content li {
      display: inline-block;
      position: relative;
      vertical-align: middle; }
    .flexbox.flexwrap .header-section .navigation-content a {
      width: 50%;
      margin-right: 0;
      display: -webkit-box;
      display: -webkit-flex;
      display: -ms-flexbox;
      display: flex;
      height: auto;
      -webkit-flex-wrap: nowrap;
          -ms-flex-wrap: nowrap;
              flex-wrap: nowrap; }
  @media only screen and (min-width: 51.9375em) {
    .header-section .rosa-schapire-text {
      width: 30%; }
    .header-section .branding-container {
      height: 80%; }
      .header-section .branding-container li:hover,
      .header-section .branding-container li:active {
        font-size: 32px; }
    .header-section .navigation-content {
      height: 20%; }
      .header-section .navigation-content a {
        width: 25%;
        height: 100%;
        padding-left: 0; }
      .flexbox.flexwrap .header-section .navigation-content a {
        width: auto; } }

.footer-container {
  height: 33px;
  width: 100%;
  background: #7d7266;
  color: #FFF;
  overflow: hidden;
  clear: both; }
  .footer-container .footer {
    max-width: 960px;
    margin: 0 auto; }
  .footer-container ul {
    list-style: none;
    margin: 0;
    padding: 0;
    float: right; }
  .footer-container li {
    float: left;
    margin: 0 12px; }
  .footer-container li, .footer-container a {
    color: #FFF;
    line-height: 36px;
    height: 33px;
    font-size: 0.75rem;
    text-transform: uppercase;
    text-decoration: none; }
  .footer-container li a {
    position: relative;
    display: inline-block; }
    .footer-container li a::before {
      content: '';
      position: absolute;
      border-width: 0 0 1px 0;
      border-style: solid;
      border-color: #FFF;
      pointer-events: none;
      -webkit-transform: scale3d(0, 1, 1);
              transform: scale3d(0, 1, 1);
      -webkit-transition: -webkit-transform 0.4s;
      transition: -webkit-transform 0.4s;
      transition: transform 0.4s;
      transition: transform 0.4s, -webkit-transform 0.4s;
      -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
              transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1);
      width: 80%;
      left: 10%;
      height: 80%;
      top: 2px; }
    .footer-container li a:hover::before, .footer-container li a:active::before {
      -webkit-transform: scale3d(1, 1, 1);
              transform: scale3d(1, 1, 1); }
  .footer-container .facebook-icon {
    width: 7px;
    height: 33px; }
    .footer-container .facebook-icon a {
      position: inherit;
      display: inherit; }
      .footer-container .facebook-icon a::before {
        display: none; }
    .footer-container .facebook-icon .sprite {
      padding-bottom: 211.11111%;
      vertical-align: text-bottom; }
    .footer-container .facebook-icon .sprite svg {
      color: #ff3eb5;
      -webkit-transition: color .3s;
      transition: color .3s; }
    .footer-container .facebook-icon:active .sprite svg,
    .footer-container .facebook-icon:hover .sprite svg {
      color: #FFF; }

.claim-section {
  overflow: hidden; }
  .claim-section .claim-text {
    float: left;
    direction: ltr;
    padding-left: 10px;
    padding-right: 10px;
    width: 93.75%;
    left: 6.25%;
    margin: 70px 0; }
    .claim-section .claim-text h1 {
      font-size: 2.5rem;
      color: #ff3eb5;
      font-family: "Astoria", sans;
      text-transform: uppercase;
      line-height: 1;
      word-break: break-word;
      overflow-wrap: break-word;
      -webkit-hyphens: auto;
          -ms-hyphens: auto;
              hyphens: auto; }
  @media only screen and (min-width: 40.0625em) {
    .claim-section .claim-text h1 {
      font-size: 3.125rem; } }
  @media only screen and (min-width: 51.9375em) {
    .claim-section .claim-text {
      top: 50%;
      -webkit-transform: translateY(-50%);
          -ms-transform: translateY(-50%);
              transform: translateY(-50%);
      margin: 0; } }

.image-sources {
  margin: 10% 0 10%; }
  .image-sources h2 {
    color: #ff3eb5; }

.container-meta {
  padding-top: 102px;
  word-break: break-word;
  overflow-wrap: break-word; }
  .container-meta h1, .container-meta h2, .container-meta h3 {
    color: #ff3eb5; }
  @media only screen and (min-width: 51.9375em) {
    .container-meta {
      padding-top: 8%; } }

.archiv-item {
  text-decoration: none;
  display: block;
  overflow: hidden;
  margin-bottom: 60px;
  font-size: 1.5rem; }
  @media only screen and (min-width: 40.0625em) {
    .archiv-item {
      font-size: 1.875rem; } }

.archiv-year {
  float: left;
  color: #ff3eb5;
  line-height: 1; }

.archiv-body {
  margin-left: 50px; }
  @media only screen and (min-width: 40.0625em) {
    .archiv-body {
      margin-left: 94px; } }
  .archiv-body h2,
  .archiv-body h3 {
    line-height: 1;
    font-size: 1.25rem; }
    @media only screen and (min-width: 40.0625em) {
      .archiv-body h2,
      .archiv-body h3 {
        font-size: 1.5rem; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsb2JhbC5jc3MiLCJiYXNlL19ub3JtYWxpemUuc2NzcyIsImdsb2JhbC5zY3NzIiwiZ3JpZGxlL19zaWxlbnQtY2xhc3Nlcy5zY3NzIiwiZ3JpZGxlL19mdW5jdGlvbnMuc2NzcyIsImdyaWRsZS9fc2V0dGluZ3MtbWl4aW5zLnNjc3MiLCJncmlkbGUvX21peGlucy5zY3NzIiwiZ3JpZGxlL19nZW5lcmF0ZS1taXhpbnMuc2NzcyIsImJhc2UvX2dyaWQuc2NzcyIsImdyaWRsZS9fY29tbW9uLW1peGlucy5zY3NzIiwiYmFzZS9fdHlwb2dyYXBoeS5zY3NzIiwiYmFzZS9fdmFyaWFibGVzLnNjc3MiLCJfZnVuY3Rpb25zLnNjc3MiLCJiYXNlL19jb2xvcnMuc2NzcyIsImJhc2UvX2FuaW1hdGlvbi5zY3NzIiwiYmFzZS9fdmlzaWJpbGl0eS5zY3NzIiwiYmFzZS9fZ2xvYmFsLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFnbmlmaWMtcG9wdXAvc3JjL2Nzcy9tYWluLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvbWFnbmlmaWMtcG9wdXAvc3JjL2Nzcy9fc2V0dGluZ3Muc2NzcyIsImdlbmVyYWwvX25hdmlnYXRpb24uc2NzcyIsImdlbmVyYWwvX3NlY3Rpb24uc2NzcyIsImdlbmVyYWwvX2NvbnRlbnQtc2VjdGlvbi5zY3NzIiwiZ2VuZXJhbC9fY29udGVudC1ib3guc2NzcyIsImdlbmVyYWwvX2ltYWdlLnNjc3MiLCJnZW5lcmFsL19zY3JvbGwtZG93bi5zY3NzIiwicGFydHMvX2hlYWRlci5zY3NzIiwicGFydHMvX2Zvb3Rlci5zY3NzIiwicGFydHMvX2NsYWltLnNjc3MiLCJwYXJ0cy9faW1hZ2Utc291cmNlcy5zY3NzIiwicGFydHMvX3BhZ2UtbWV0YS5zY3NzIiwiYmFzZS9fYXJjaGl2LnNhc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FDQWpCLDRFQUE0RTtBQUU1RTs7OztHQUlHO0FDV0gscUVBQU87QURUUDtF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QUE7O0FDaENMO0VBQ0Usa0JBQWtCLEVBS25CO0VBTkQ7SUFJSSxlZkpVLEVlS1g7O0FDTEg7RUFDRSxtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLDBCQUEwQixFQVMzQjtFQVpEO0lBTUksZWhCTlUsRWdCT1g7RUFFRDtJQVRGO01BVUksZ0JBQWdCLEVBRW5CLEVBQUE7O0FDWkQ7RUFHUSxzQkFBc0I7RUFDdEIsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsa0JsQnFCWSxFa0JuQm9CO0VBRGhDO0lBUlI7TUFTWSxvQmxCbUJRLEVrQm5Cb0IsRUFBQTs7QUFUeEM7RUFZUSxZQUFZO0VBQ1osZWpCYk07RWlCY04sZUFBZSxFQUFHOztBQWQxQjtFQWlCUSxrQkFBa0IsRUFVb0I7RUFUdEM7SUFsQlI7TUFtQlksa0JBQWtCLEVBUWdCLEVBQUE7RUEzQjlDOztJQXdCWSxlQUFlO0lBQ2YsbUJsQkdRLEVrQkR3QjtJQURoQztNQTFCWjs7UUEyQmdCLGtCbEJDSSxFa0JEd0IsRUFBQSIsImZpbGUiOiJnbG9iYWwuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuLyohIG5vcm1hbGl6ZS5jc3MgdjMuMC4zIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuLyoqXG4gKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAqICAgIHdpdGhvdXQgZGlzYWJsaW5nIHVzZXIgem9vbS5cbiAqL1xuQGltcG9ydCB1cmwoLi5cXC4uXFxub2RlX21vZHVsZXNcXGZ1bGxwYWdlLmpzXFxkaXN0XFxqcXVlcnkuZnVsbHBhZ2UuY3NzKTtcbmh0bWwge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgLyogMSAqL1xuICAtbXMtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLyogMiAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDsgfVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYW55IEhUTUw1IGVsZW1lbnQgaW4gSUUgOC85LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBkZXRhaWxzYCBvciBgc3VtbWFyeWAgaW4gSUUgMTAvMTFcbiAqIGFuZCBGaXJlZm94LlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGBtYWluYCBpbiBJRSAxMS5cbiAqL1xuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBpbmxpbmUtYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgaW4gSUUgOC85LlxuICogMi4gTm9ybWFsaXplIHZlcnRpY2FsIGFsaWdubWVudCBvZiBgcHJvZ3Jlc3NgIGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBQcmV2ZW50IG1vZGVybiBicm93c2VycyBmcm9tIGRpc3BsYXlpbmcgYGF1ZGlvYCB3aXRob3V0IGNvbnRyb2xzLlxuICogUmVtb3ZlIGV4Y2VzcyBoZWlnaHQgaW4gaU9TIDUgZGV2aWNlcy5cbiAqL1xuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBgW2hpZGRlbl1gIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLlxuICogSGlkZSB0aGUgYHRlbXBsYXRlYCBlbGVtZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgRmlyZWZveCA8IDIyLlxuICovXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBMaW5rc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7IH1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljOyB9XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xubWFyayB7XG4gIGJhY2tncm91bmQ6ICNmZjA7XG4gIGNvbG9yOiAjMDAwOyB9XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7IH1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5pbWcge1xuICBib3JkZXI6IDA7IH1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4OyB9XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICBoZWlnaHQ6IDA7IH1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmNvZGUsXG5rYmQsXG5wcmUsXG5zYW1wIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICBmb250LXNpemU6IDFlbTsgfVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogS25vd24gbGltaXRhdGlvbjogYnkgZGVmYXVsdCwgQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWCBhbGxvdyB2ZXJ5IGxpbWl0ZWRcbiAqIHN0eWxpbmcgb2YgYHNlbGVjdGAsIHVubGVzcyBhIGBib3JkZXJgIHByb3BlcnR5IGlzIHNldC5cbiAqL1xuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIDMgKi8gfVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDsgfVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsOyB9XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87IH1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbiAgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9XG5cbi8qKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbiAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiAqL1xubGVnZW5kIHtcbiAgYm9yZGVyOiAwO1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87IH1cblxuLyoqXG4gKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xub3B0Z3JvdXAge1xuICBmb250LXdlaWdodDogYm9sZDsgfVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSBtb3N0IHNwYWNpbmcgYmV0d2VlbiB0YWJsZSBjZWxscy5cbiAqL1xudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG50ZCxcbnRoIHtcbiAgcGFkZGluZzogMDsgfVxuXG4uc2VjdGlvbjphZnRlciwgLmNsYWltLXNlY3Rpb246YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgY2xlYXI6IGJvdGg7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi5wYXJlbnQ6YmVmb3JlLCAucGFyZW50LXNtOmJlZm9yZSwgLnBhcmVudC1tZDpiZWZvcmUsIC5wYXJlbnQtbGc6YmVmb3JlLCAucGFyZW50OmFmdGVyLCAucGFyZW50LXNtOmFmdGVyLCAucGFyZW50LW1kOmFmdGVyLCAucGFyZW50LWxnOmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgZGlzcGxheTogdGFibGU7XG4gIGJvcmRlci1zcGFjaW5nOiAwOyB9XG5cbi5wYXJlbnQ6YWZ0ZXIsIC5wYXJlbnQtc206YWZ0ZXIsIC5wYXJlbnQtbWQ6YWZ0ZXIsIC5wYXJlbnQtbGc6YWZ0ZXIge1xuICBjbGVhcjogYm90aDsgfVxuXG4ucGFyZW50LCAucGFyZW50LXNtLCAucGFyZW50LW1kLCAucGFyZW50LWxnIHtcbiAgem9vbTogMTsgfVxuXG4ucHVzaC0wLCAucHVzaC0xLCAucHVzaC0yLCAucHVzaC0zLCAucHVzaC00LCAucHVzaC01LCAucHVzaC02LCAucHVzaC03LCAucHVzaC04LCAucHVzaC05LCAucHVzaC0xMCwgLnB1c2gtMTEsIC5wdXNoLTEyLCAucHVzaC0xMywgLnB1c2gtMTQsIC5wdXNoLTE1LCAucHVzaC0xNiwgLnB1c2gtc20tMCwgLnB1c2gtc20tMSwgLnB1c2gtc20tMiwgLnB1c2gtc20tMywgLnB1c2gtc20tNCwgLnB1c2gtc20tNSwgLnB1c2gtc20tNiwgLnB1c2gtc20tNywgLnB1c2gtc20tOCwgLnB1c2gtc20tOSwgLnB1c2gtc20tMTAsIC5wdXNoLXNtLTExLCAucHVzaC1zbS0xMiwgLnB1c2gtbWQtMCwgLnB1c2gtbWQtMSwgLnB1c2gtbWQtMiwgLnB1c2gtbWQtMywgLnB1c2gtbWQtNCwgLnB1c2gtbWQtNSwgLnB1c2gtbWQtNiwgLnB1c2gtbWQtNywgLnB1c2gtbWQtOCwgLnB1c2gtbWQtOSwgLnB1c2gtbWQtMTAsIC5wdXNoLW1kLTExLCAucHVzaC1tZC0xMiwgLnB1c2gtbWQtMTMsIC5wdXNoLW1kLTE0LCAucHVzaC1tZC0xNSwgLnB1c2gtbWQtMTYsIC5wdXNoLWxnLTAsIC5wdXNoLWxnLTEsIC5wdXNoLWxnLTIsIC5wdXNoLWxnLTMsIC5wdXNoLWxnLTQsIC5wdXNoLWxnLTUsIC5wdXNoLWxnLTYsIC5wdXNoLWxnLTcsIC5wdXNoLWxnLTgsIC5wdXNoLWxnLTksIC5wdXNoLWxnLTEwLCAucHVzaC1sZy0xMSwgLnB1c2gtbGctMTIsIC5wdXNoLWxnLTEzLCAucHVzaC1sZy0xNCwgLnB1c2gtbGctMTUsIC5wdXNoLWxnLTE2LCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50LCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEsIC5zZWN0aW9uIC5tZW51LXRpdGxlLCAuc2VjdGlvbiAuc2VjdGlvbi1icmFuZGluZywgLmNvbnRlbnQtc2VjdGlvbiAuY29udGVudC1ib3gtd3JhcHBlciwgLmNsYWltLXNlY3Rpb24gLmNsYWltLXRleHQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cblxuLnNlY3Rpb24sIC5jbGFpbS1zZWN0aW9uIHtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuLnBhcmVudCwgLnBhcmVudC1zbSwgLnBhcmVudC1tZCwgLnBhcmVudC1sZyB7XG4gIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5ncmlkLTAsIC5ncmlkLTEsIC5ncmlkLTIsIC5ncmlkLTMsIC5ncmlkLTQsIC5ncmlkLTUsIC5ncmlkLTYsIC5ncmlkLTcsIC5ncmlkLTgsIC5ncmlkLTksIC5ncmlkLTEwLCAuZ3JpZC0xMSwgLmdyaWQtMTIsIC5ncmlkLTEzLCAuZ3JpZC0xNCwgLmdyaWQtMTUsIC5ncmlkLTE2LCAuZ3JpZC1zbS0wLCAuZ3JpZC1zbS0xLCAuZ3JpZC1zbS0yLCAuZ3JpZC1zbS0zLCAuZ3JpZC1zbS00LCAuZ3JpZC1zbS01LCAuZ3JpZC1zbS02LCAuZ3JpZC1zbS03LCAuZ3JpZC1zbS04LCAuZ3JpZC1zbS05LCAuZ3JpZC1zbS0xMCwgLmdyaWQtc20tMTEsIC5ncmlkLXNtLTEyLCAuZ3JpZC1tZC0wLCAuZ3JpZC1tZC0xLCAuZ3JpZC1tZC0yLCAuZ3JpZC1tZC0zLCAuZ3JpZC1tZC00LCAuZ3JpZC1tZC01LCAuZ3JpZC1tZC02LCAuZ3JpZC1tZC03LCAuZ3JpZC1tZC04LCAuZ3JpZC1tZC05LCAuZ3JpZC1tZC0xMCwgLmdyaWQtbWQtMTEsIC5ncmlkLW1kLTEyLCAuZ3JpZC1tZC0xMywgLmdyaWQtbWQtMTQsIC5ncmlkLW1kLTE1LCAuZ3JpZC1tZC0xNiwgLmdyaWQtbGctMCwgLmdyaWQtbGctMSwgLmdyaWQtbGctMiwgLmdyaWQtbGctMywgLmdyaWQtbGctNCwgLmdyaWQtbGctNSwgLmdyaWQtbGctNiwgLmdyaWQtbGctNywgLmdyaWQtbGctOCwgLmdyaWQtbGctOSwgLmdyaWQtbGctMTAsIC5ncmlkLWxnLTExLCAuZ3JpZC1sZy0xMiwgLmdyaWQtbGctMTMsIC5ncmlkLWxnLTE0LCAuZ3JpZC1sZy0xNSwgLmdyaWQtbGctMTYsIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQsIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tcHJpbWFyeSwgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IGxpLCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEsIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSBsaSwgLnNlY3Rpb24gLnNlY3Rpb24tbG9nbywgLnNlY3Rpb24gLm1lbnUtdGl0bGUsIC5zZWN0aW9uIC5zZWN0aW9uLWJyYW5kaW5nLCAuY29udGVudC1zZWN0aW9uIC5jb250ZW50LWJveC13cmFwcGVyLCAuY2xhaW0tc2VjdGlvbiAuY2xhaW0tdGV4dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWluLWhlaWdodDogMXB4O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4vKipcbiAqIFN0ciByZXBsYWNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9ICAkc3RyaW5nICAgIFN0cmluZyB0aGF0IHlvdSB3YW50IHRvIHJlcGxhY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSAgJHN1YnN0ciAgICBTdHJpbmcgdGhhdCBpcyB0byBiZSByZXBsYWNlZCBieSBgJG5ld3N1YnN0cmBcbiAqIEBwYXJhbSB7c3RyaW5nfSAgJG5ld3N1YnN0ciBTdHJpbmcgdGhhdCByZXBsYWNlcyBgJHN1YnN0cmBcbiAqIEBwYXJhbSB7bnVtYmVyKn0gJGFsbCAgICAgICBGbGFnIGZvciByZXBsYWNlaW5nIGFsbCAoMSspIG9yIG5vdCAoMClcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuLyoqXG4gKiBNYXAgc2V0XG4gKlxuICogQHBhcmFtIFx0TWFwIFx0JG1hcCBcdFx0VGhlIG1hcCB0byB1c2VcbiAqIEBwYXJhbSBcdFN0cmluZyBcdCRrZXkgXHRcdFRoZSBrZXkgdG8gdXBkYXRlXG4gKiBAcGFyYW0gXHRNaXhlZCBcdCR2YWx1ZSBcdFx0VGhlIG5ldyB2YWx1ZVxuICogQHJldHVybiBcdE1hcCBcdFx0XHRUaGUgbmV3IG1hcFxuICovXG4vKipcbiAqIEdldCB0aGUgY29sdW1uIHdpZHRoIGluIHBlcmNlbnQgZm9yIHRoZSBnbG9iYWwgb3IgYSBzcGVjaWZpYyBjb250ZXh0XG4gKlxuICogQHBhcmFtIFx0aW50IFx0XHQkY29sdW1ucyBcdFx0XHRcdFx0VGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIGNhbGN1bGF0ZVxuICogQHBhcmFtIFx0aW50IFx0XHQkY29udGV4dCA6ICRncmlkbGUtY29sdW1ucy1jb3VudCBcdCBcdFRoZSBjb250ZXh0IHRvIHVzZVxuICogQHJldHVybiBcdHBlcmNlbnRhZ2UgXHRcdFx0XHRcdFx0XHRUaGUgd2lkdGggaW4gcGVyY2VudFxuICovXG4vKipcbiAqICBHZXQgYSBzdGF0ZSBtYXBcbiAqXG4gKiBAcGFyYW0gXHRzdHJpbmcgXHRcdCRuYW1lIFx0XHRUaGUgbmFtZSBvZiB0aGUgc3RhdGUgdG8gZ2V0XG4gKiBAcmV0dXJuIFx0bWFwIFx0XHRcdFx0QSBzdGF0ZSBtYXAgb2JqZWN0XG4gKi9cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0ZSBleGlzdCA6XG4gKlxuICogQHBhcmFtIFx0c3RyaW5nIFx0XHQkbmFtZSBcdFx0VGhlIG5hbWUgb2YgdGhlIHN0YXRlIHRvIGNoZWNrXG4gKiBAcmV0dXJuIFx0Qm9vbGVhbiBcdFx0XHR0cnVlIGlzIGV4aXN0XG4gKi9cbi8qKlxuICogR2V0IHRoZSBtZWRpYSBxdWVyaWVzIHZhcmlhYmxlcyA6XG4gKlxuICogQHBhcmFtIFx0aW50IFx0XHQkaW5kZXggXHQgXHRUaGUgbWVkaWEgcXVlcnkgaW5kZXNcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JHZhciBcdFx0VGhlIG1lZGlhIHF1ZXJ5IHZhcmlhYmxlIG5hbWVcbiAqIEByZXR1cm4gXHRTdHJpbmd8aW50IFx0XHRcdFRoZSB2YXJpYWJsZSB2YWx1ZVxuICovXG4vKipcbiAqIEdldCBhIHZhcmlhYmxlXG4gKlxuICogQHBhcmFtIFx0U3RyaW5nIFx0XHQkdmFyTmFtZSBcdFx0XHRcdFRoZSB2YXJpYWJsZSBuYW1lXG4gKiBAcGFyYW0gIFx0U3RyaW5nIFx0XHQkc3RhdGVNYXAtb3Itc3RhdGVOYW1lIFx0IFx0VGhlIHN0YXRlIG5hbWUgb3IgYSBtYXAgc3RhdGUgdmFsdWVcbiAqIEByZXR1cm4gXHRNaXhlZCBcdFx0XHRcdFx0XHRcdFRoZSBmaW5kZWQgdmFsdWVcbiAqL1xuLyoqXG4gKiBTZXQgYSB2YXJpYWJsZSBpbiBhIHN0YXRlXG4gKiBAcGFyYW0gXHRNaXhlZCAkc3RhdGVOYW1lLW9yLXN0YXRlSW5kZXggXHRUaGUgc3RhdGUgbmFtZSBvZiBzdGF0ZSBpbmRleFxuICogQHBhcmFtICBcdFN0cmluZyAkdmFyICAgICAgICAgICAgICAgICAgICBcdFx0VmFyaWFibGUgbmFtZSB0byBhc3NpZ25cbiAqIEBwYXJhbSAgXHRNaXhlZCAkbmV3VmFsdWUgICAgICAgICAgXHRcdFRoZSBuZXcgdmFsdWUgdG8gYXNzaWduXG4gKiBAcmV0dXJuIFx0TGlzdCAgICAgICAgICAgICAgICAgICAgICAgICBcdFx0XHRUaGUgc3RhdGVzIGxpc3QgKGZ1bGwpXG4gKi9cbi8qKlxuICogR2VuZXJhdGUgYSBjb2x1bW5cbiAqXG4gKiBAcGFyYW0gXHRTdHJpbmcgXHRcdCRuYW1lIFx0XHRcdFRoZSBjb2x1bW4gbmFtZSAob2Z0ZW4gY291bnQpXG4gKiBAcGFyYW0gXHRpbnQgXHRcdCRjb2x1bW5zIFx0XHRUaGUgY29sdW1uIGNvdW50IHRoYXQgdGhlIGNvbHVtbiB3aWxsIHRha2VcbiAqIEBwYXJhbSBcdGludCBcdFx0JGNvbnRleHQgXHRcdFRoZSBjb250ZXh0IG9uIHdpdGNoIHRoZSB3aXRoIHdpbGwgYmUgY2FsY3VsZWRcbiAqIEBwYXJhbSBcdEJvb2xlYW4gXHQkZ2VuZXJhdGVDbGFzc2VzIFx0U2V0IGlmIHRoZSBjb2x1bW4gaGFzIHRvIGJlIGdlbmVyYXRlZCBpbiBjc3NcbiAqL1xuLyoqXG4gKiBHZW5lcmF0ZSBjbGFzc25hbWVcbiAqXG4gKiBAcGFyYW0gXHRMaXN0IFx0XHQkcGFycmVybiBcdFRoZSBwYXR0ZXJuIHRvIHVzZSB0byBnZW5lcmF0ZSBjbGFzc25hbWVcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JHN0YXRlIFx0XHRUaGUgc3RhdGVcbiAqIEBwYXJhbSBcdGludCBcdFx0JGNvdW50IFx0XHRUaGUgY29sdW1uIGNvdW50XG4gKi9cbi8qKlxuICogR2V0IHRoZSBtZWRpYSBxdWVyeSBmb3IgYSBwYXJ0aWN1bGFyIHN0YXRlLCBvciB3aXRoLCBldGMuLi5cbiAqXG4gKiBAcGFyYW0gXHRNaXhlZCBcdFx0JHN0YXRlLW9yLW1pbi13aWR0aCBcdFx0VGhlIHN0YXRlIG5hbWUgb2YgdGhlIG1pbiB3aXRoXG4gKiBAcGFyYW0gXHRNaXhlZCBcdFx0JG1heC13aWR0aCBcdFx0XHRUaGUgbWF4IHdpZHRoIGlmIGZpcnN0IHBhcmFtIGlzIGEgbWluIHdpZHRoXG4gKiBAcmV0dXJuIFx0U3RyaW5nIFx0XHRcdFx0XHRcdFRoZSBtZWRpYSBxdWVyeSBzdHJpbmcgd2l0aG91dCB0aGUgQG1lZGlhXG4gKi9cbi8qKlxuICogR2V0IHN0YXRlcyBjb3VudFxuICogXG4gKiBAcmV0dXJuIFx0aW50IFx0VGhlIG51bWJlciBvZiBzdGF0ZXMgZGVmaW5lZFxuICovXG4vKipcbiAqIFNldHVwXG4gKi9cbi8qKlxuICogIFJlZ2lzdGVyIGEgY2xlYXIgZWFjaCBjbGFzc1xuICovXG4vKipcbiAqIFJlZ2lzdGVyIGEgc3BlY2lhbCBjbGFzc1xuICovXG4vKipcbiAqIFJlZ2lzdGVyIGRlZmF1bHQgc3RhdGVzXG4gKi9cbi8qKlxuICogUmVnaXN0ZXIgZGVmYXVsdCBtb2JpbGUgZmlyc3Qgc3RhdGVzIDpcbiAqL1xuLyoqXG4gKiBTZXQgdGhlIGRlYnVnIGRldmljZSAobm90IHVzZWQgZm9yIG5vdylcbiAqIFxuICogQHBhcmFtIFx0U3RyaW5nIFx0XHQkc3RhdGUgXHRcdFRoZSBzdGF0ZSB0byB1cGRhdGVcbiAqIEBwYXJhIG0gXHRTdHJpbmcgXHRcdCRkZXZpY2UgXHRUaGUgZGV2aWNlIHRvIHVzZSAoaXBob25lLCBldGMuLi4pXG4gKi9cbi8qKlxuICogUGFyZW50IGNsZWFyIGVhY2hcbiAqL1xuLyoqXG4gKiBWZXJ0aWNhbCBhbGlnbiA6XG4gKi9cbi8qKlxuICogU2hvdyBpbmxpbmVcbiAqXG4gKiBAcGFyYW0gXHRTdHJpbmcgXHRcdCRzdGF0ZSBcdFx0VGhlIHN0YXRlIG5hbWVcbiAqL1xuLyoqXG4gKiBHZW5lcmF0ZSBhIGN1c3RvbSBjbGFzcyBmb3IgYWxsIHRoZSBzdGF0ZXNcbiAqXG4gKiBAcGFyYW0gXHRsaXN0IFx0JHBhdHRlcm4gXHRcdFRoZSBuYW1lIHBhdHRlcm4gb2YgdGhlIGNsYXNzXG4gKiBAcGFyYW0gXHRsaXN0IFx0JHN0YXRlc05hbWVzIFx0XHRUaGUgc3RhdGVzIG5hbWVzIHRvIGdlbmVyYXRlXG4gKi9cbi8qKlxuICogU3RhdGUgd2l0aCBjYW4gYWxzbyBpbmNsdWRlIG1lZGlhIHF1ZXJpZXM6XG4gKi9cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwMHB4KSB7XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIHdpZHRoOiBkZXZpY2Utd2lkdGg7IH0gfVxuXG4jZ3JpZGxlLXNldHRpbmdzIHtcbiAgY29udGVudDogJ3sgXCJ2ZXJzaW9uXCIgOiBcIjEuMy40MFwiLCBcInN0YXRlc1wiIDogeyBcInJldGluYVwiOnsgXCJxdWVyeVwiIDogXCIoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpLCAobWluLXJlc29sdXRpb246IDJkcHB4KVwiLCBcImNsYXNzZXNcIiA6IGZhbHNlLCBcIm5hbWVcIiA6IFwicmV0aW5hXCIsIFwiX2dyaWRsZVwiIDogdHJ1ZSB9LCBcInR2XCI6eyBcInF1ZXJ5XCIgOiBcIm9ubHkgdHZcIiwgXCJjbGFzc2VzXCIgOiBmYWxzZSwgXCJuYW1lXCIgOiBcInR2XCIsIFwiX2dyaWRsZVwiIDogdHJ1ZSB9LCBcInByaW50XCI6eyBcInF1ZXJ5XCIgOiBcIm9ubHkgcHJpbnRcIiwgXCJjbGFzc2VzXCIgOiBmYWxzZSwgXCJuYW1lXCIgOiBcInByaW50XCIsIFwiX2dyaWRsZVwiIDogdHJ1ZSB9LCBcInBvcnRyYWl0XCI6eyBcInF1ZXJ5XCIgOiBcIm9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KVwiLCBcImNsYXNzZXNcIiA6IGZhbHNlLCBcIm5hbWVcIiA6IFwicG9ydHJhaXRcIiwgXCJfZ3JpZGxlXCIgOiB0cnVlIH0sIFwibGFuZHNjYXBlXCI6eyBcInF1ZXJ5XCIgOiBcIm9ubHkgc2NyZWVuIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSlcIiwgXCJjbGFzc2VzXCIgOiBmYWxzZSwgXCJuYW1lXCIgOiBcImxhbmRzY2FwZVwiLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJkZWZhdWx0XCI6eyBcIm5hbWVcIiA6IFwiZGVmYXVsdFwiLCBcIm1pbi13aWR0aFwiIDogbnVsbCwgXCJtYXgtd2lkdGhcIiA6IG51bGwsIFwicXVlcnlcIiA6IG51bGwsIFwiY2xhc3Nlc1wiIDogdHJ1ZSwgXCJjb250ZXh0XCIgOiBcIjE2XCIsIFwiZ3V0dGVyLXdpZHRoXCIgOiBcIjIwcHhcIiwgXCJkaXJlY3Rpb25cIiA6IFwibHRyXCIsIFwibmFtZS1tdWx0aXBsaWNhdG9yXCIgOiBcIjFcIiwgXCJkZWJ1Z1wiIDogZmFsc2UsIFwiZGVidWctc2hvdy1jbGFzcy1uYW1lc1wiIDogdHJ1ZSwgXCJpZTctc3VwcG9ydFwiIDogZmFsc2UsIFwiaHRtbC1zdGF0ZXMtY2xhc3Nlc1wiIDogZmFsc2UsIFwiZ2VuZXJhdGUtcHVzaC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXB1bGwtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1wcmVmaXgtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1zdWZmaXgtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1oZWxwZXJzLWNsYXNzZXNcIiA6IHRydWUsIFwiX2dyaWRsZVwiIDogdHJ1ZSB9LCBcInNtXCI6eyBcIm5hbWVcIiA6IFwic21cIiwgXCJtaW4td2lkdGhcIiA6IG51bGwsIFwibWF4LXdpZHRoXCIgOiBudWxsLCBcInF1ZXJ5XCIgOiBcIm9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MGVtKVwiLCBcImNsYXNzZXNcIiA6IHRydWUsIFwiY29udGV4dFwiIDogXCIxMlwiLCBcImd1dHRlci13aWR0aFwiIDogXCIyMHB4XCIsIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLCBcIm5hbWUtbXVsdGlwbGljYXRvclwiIDogXCIxXCIsIFwiZGVidWdcIiA6IGZhbHNlLCBcImRlYnVnLXNob3ctY2xhc3MtbmFtZXNcIiA6IHRydWUsIFwiaWU3LXN1cHBvcnRcIiA6IGZhbHNlLCBcImh0bWwtc3RhdGVzLWNsYXNzZXNcIiA6IGZhbHNlLCBcImdlbmVyYXRlLXB1c2gtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1wdWxsLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtaGVscGVycy1jbGFzc2VzXCIgOiB0cnVlLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJtZFwiOnsgXCJuYW1lXCIgOiBcIm1kXCIsIFwibWluLXdpZHRoXCIgOiBudWxsLCBcIm1heC13aWR0aFwiIDogbnVsbCwgXCJxdWVyeVwiIDogXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOjUxLjg3NWVtKVwiLCBcImNsYXNzZXNcIiA6IHRydWUsIFwiY29udGV4dFwiIDogXCIxNlwiLCBcImd1dHRlci13aWR0aFwiIDogXCIyMHB4XCIsIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLCBcIm5hbWUtbXVsdGlwbGljYXRvclwiIDogXCIxXCIsIFwiZGVidWdcIiA6IGZhbHNlLCBcImRlYnVnLXNob3ctY2xhc3MtbmFtZXNcIiA6IHRydWUsIFwiaWU3LXN1cHBvcnRcIiA6IGZhbHNlLCBcImh0bWwtc3RhdGVzLWNsYXNzZXNcIiA6IGZhbHNlLCBcImdlbmVyYXRlLXB1c2gtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1wdWxsLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtaGVscGVycy1jbGFzc2VzXCIgOiB0cnVlLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJsZ1wiOnsgXCJuYW1lXCIgOiBcImxnXCIsIFwibWluLXdpZHRoXCIgOiBudWxsLCBcIm1heC13aWR0aFwiIDogbnVsbCwgXCJxdWVyeVwiIDogXCJvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo1MS45Mzc1ZW0pIGFuZCAobWF4LXdpZHRoOjYyNDk5OTkuOTM3NWVtKVwiLCBcImNsYXNzZXNcIiA6IHRydWUsIFwiY29udGV4dFwiIDogXCIxNlwiLCBcImd1dHRlci13aWR0aFwiIDogXCIyMHB4XCIsIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLCBcIm5hbWUtbXVsdGlwbGljYXRvclwiIDogXCIxXCIsIFwiZGVidWdcIiA6IGZhbHNlLCBcImRlYnVnLXNob3ctY2xhc3MtbmFtZXNcIiA6IHRydWUsIFwiaWU3LXN1cHBvcnRcIiA6IGZhbHNlLCBcImh0bWwtc3RhdGVzLWNsYXNzZXNcIiA6IGZhbHNlLCBcImdlbmVyYXRlLXB1c2gtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1wdWxsLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtaGVscGVycy1jbGFzc2VzXCIgOiB0cnVlLCBcIl9ncmlkbGVcIiA6IHRydWUgfX0gfSc7IH1cblxuLmdyaWQtMCwgLmdyaWQtMSwgLmdyaWQtMiwgLmdyaWQtMywgLmdyaWQtNCwgLmdyaWQtNSwgLmdyaWQtNiwgLmdyaWQtNywgLmdyaWQtOCwgLmdyaWQtOSwgLmdyaWQtMTAsIC5ncmlkLTExLCAuZ3JpZC0xMiwgLmdyaWQtMTMsIC5ncmlkLTE0LCAuZ3JpZC0xNSwgLmdyaWQtMTYsIC5ncmlkLXNtLTAsIC5ncmlkLXNtLTEsIC5ncmlkLXNtLTIsIC5ncmlkLXNtLTMsIC5ncmlkLXNtLTQsIC5ncmlkLXNtLTUsIC5ncmlkLXNtLTYsIC5ncmlkLXNtLTcsIC5ncmlkLXNtLTgsIC5ncmlkLXNtLTksIC5ncmlkLXNtLTEwLCAuZ3JpZC1zbS0xMSwgLmdyaWQtc20tMTIsIC5ncmlkLW1kLTAsIC5ncmlkLW1kLTEsIC5ncmlkLW1kLTIsIC5ncmlkLW1kLTMsIC5ncmlkLW1kLTQsIC5ncmlkLW1kLTUsIC5ncmlkLW1kLTYsIC5ncmlkLW1kLTcsIC5ncmlkLW1kLTgsIC5ncmlkLW1kLTksIC5ncmlkLW1kLTEwLCAuZ3JpZC1tZC0xMSwgLmdyaWQtbWQtMTIsIC5ncmlkLW1kLTEzLCAuZ3JpZC1tZC0xNCwgLmdyaWQtbWQtMTUsIC5ncmlkLW1kLTE2LCAuZ3JpZC1sZy0wLCAuZ3JpZC1sZy0xLCAuZ3JpZC1sZy0yLCAuZ3JpZC1sZy0zLCAuZ3JpZC1sZy00LCAuZ3JpZC1sZy01LCAuZ3JpZC1sZy02LCAuZ3JpZC1sZy03LCAuZ3JpZC1sZy04LCAuZ3JpZC1sZy05LCAuZ3JpZC1sZy0xMCwgLmdyaWQtbGctMTEsIC5ncmlkLWxnLTEyLCAuZ3JpZC1sZy0xMywgLmdyaWQtbGctMTQsIC5ncmlkLWxnLTE1LCAuZ3JpZC1sZy0xNiB7XG4gIGZsb2F0OiBsZWZ0O1xuICBkaXJlY3Rpb246IGx0cjtcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMHB4OyB9XG5cbi5ncmlkLTAge1xuICB3aWR0aDogMCU7IH1cblxuLmdyaWQtMSB7XG4gIHdpZHRoOiA2LjI1JTsgfVxuXG4uZ3JpZC0yIHtcbiAgd2lkdGg6IDEyLjUlOyB9XG5cbi5ncmlkLTMge1xuICB3aWR0aDogMTguNzUlOyB9XG5cbi5ncmlkLTQge1xuICB3aWR0aDogMjUlOyB9XG5cbi5ncmlkLTUge1xuICB3aWR0aDogMzEuMjUlOyB9XG5cbi5ncmlkLTYge1xuICB3aWR0aDogMzcuNSU7IH1cblxuLmdyaWQtNyB7XG4gIHdpZHRoOiA0My43NSU7IH1cblxuLmdyaWQtOCB7XG4gIHdpZHRoOiA1MCU7IH1cblxuLmdyaWQtOSB7XG4gIHdpZHRoOiA1Ni4yNSU7IH1cblxuLmdyaWQtMTAge1xuICB3aWR0aDogNjIuNSU7IH1cblxuLmdyaWQtMTEge1xuICB3aWR0aDogNjguNzUlOyB9XG5cbi5ncmlkLTEyIHtcbiAgd2lkdGg6IDc1JTsgfVxuXG4uZ3JpZC0xMyB7XG4gIHdpZHRoOiA4MS4yNSU7IH1cblxuLmdyaWQtMTQge1xuICB3aWR0aDogODcuNSU7IH1cblxuLmdyaWQtMTUge1xuICB3aWR0aDogOTMuNzUlOyB9XG5cbi5ncmlkLTE2IHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLyoqXG5cdCAqIFZpc2libGUsIGhpZGUsIGV0Yy4uLlxuXHQgKi9cbi8qKlxuXHQgKiBDbGVhciBlYWNoIGNsYXNzIDpcblx0ICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwZW0pIHtcbiAgLmdyaWQtc20tMCB7XG4gICAgd2lkdGg6IDAlOyB9XG4gIC5ncmlkLXNtLTEge1xuICAgIHdpZHRoOiA4LjMzMzMzJTsgfVxuICAuZ3JpZC1zbS0yIHtcbiAgICB3aWR0aDogMTYuNjY2NjclOyB9XG4gIC5ncmlkLXNtLTMge1xuICAgIHdpZHRoOiAyNSU7IH1cbiAgLmdyaWQtc20tNCB7XG4gICAgd2lkdGg6IDMzLjMzMzMzJTsgfVxuICAuZ3JpZC1zbS01IHtcbiAgICB3aWR0aDogNDEuNjY2NjclOyB9XG4gIC5ncmlkLXNtLTYge1xuICAgIHdpZHRoOiA1MCU7IH1cbiAgLmdyaWQtc20tNyB7XG4gICAgd2lkdGg6IDU4LjMzMzMzJTsgfVxuICAuZ3JpZC1zbS04IHtcbiAgICB3aWR0aDogNjYuNjY2NjclOyB9XG4gIC5ncmlkLXNtLTkge1xuICAgIHdpZHRoOiA3NSU7IH1cbiAgLmdyaWQtc20tMTAge1xuICAgIHdpZHRoOiA4My4zMzMzMyU7IH1cbiAgLmdyaWQtc20tMTEge1xuICAgIHdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLmdyaWQtc20tMTIge1xuICAgIHdpZHRoOiAxMDAlOyB9XG4gIC8qKlxuXHQgKiBWaXNpYmxlLCBoaWRlLCBldGMuLi5cblx0ICovXG4gIC8qKlxuXHQgKiBDbGVhciBlYWNoIGNsYXNzIDpcblx0ICovIH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAuZ3JpZC1tZC0wIHtcbiAgICB3aWR0aDogMCU7IH1cbiAgLmdyaWQtbWQtMSB7XG4gICAgd2lkdGg6IDYuMjUlOyB9XG4gIC5ncmlkLW1kLTIge1xuICAgIHdpZHRoOiAxMi41JTsgfVxuICAuZ3JpZC1tZC0zIHtcbiAgICB3aWR0aDogMTguNzUlOyB9XG4gIC5ncmlkLW1kLTQge1xuICAgIHdpZHRoOiAyNSU7IH1cbiAgLmdyaWQtbWQtNSB7XG4gICAgd2lkdGg6IDMxLjI1JTsgfVxuICAuZ3JpZC1tZC02IHtcbiAgICB3aWR0aDogMzcuNSU7IH1cbiAgLmdyaWQtbWQtNyB7XG4gICAgd2lkdGg6IDQzLjc1JTsgfVxuICAuZ3JpZC1tZC04IHtcbiAgICB3aWR0aDogNTAlOyB9XG4gIC5ncmlkLW1kLTkge1xuICAgIHdpZHRoOiA1Ni4yNSU7IH1cbiAgLmdyaWQtbWQtMTAge1xuICAgIHdpZHRoOiA2Mi41JTsgfVxuICAuZ3JpZC1tZC0xMSB7XG4gICAgd2lkdGg6IDY4Ljc1JTsgfVxuICAuZ3JpZC1tZC0xMiB7XG4gICAgd2lkdGg6IDc1JTsgfVxuICAuZ3JpZC1tZC0xMyB7XG4gICAgd2lkdGg6IDgxLjI1JTsgfVxuICAuZ3JpZC1tZC0xNCB7XG4gICAgd2lkdGg6IDg3LjUlOyB9XG4gIC5ncmlkLW1kLTE1IHtcbiAgICB3aWR0aDogOTMuNzUlOyB9XG4gIC5ncmlkLW1kLTE2IHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAvKipcblx0ICogVmlzaWJsZSwgaGlkZSwgZXRjLi4uXG5cdCAqL1xuICAvKipcblx0ICogQ2xlYXIgZWFjaCBjbGFzcyA6XG5cdCAqLyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSBhbmQgKG1heC13aWR0aDogNjI0OTk5OS45Mzc1ZW0pIHtcbiAgLmdyaWQtbGctMCB7XG4gICAgd2lkdGg6IDAlOyB9XG4gIC5ncmlkLWxnLTEge1xuICAgIHdpZHRoOiA2LjI1JTsgfVxuICAuZ3JpZC1sZy0yIHtcbiAgICB3aWR0aDogMTIuNSU7IH1cbiAgLmdyaWQtbGctMyB7XG4gICAgd2lkdGg6IDE4Ljc1JTsgfVxuICAuZ3JpZC1sZy00IHtcbiAgICB3aWR0aDogMjUlOyB9XG4gIC5ncmlkLWxnLTUge1xuICAgIHdpZHRoOiAzMS4yNSU7IH1cbiAgLmdyaWQtbGctNiB7XG4gICAgd2lkdGg6IDM3LjUlOyB9XG4gIC5ncmlkLWxnLTcge1xuICAgIHdpZHRoOiA0My43NSU7IH1cbiAgLmdyaWQtbGctOCB7XG4gICAgd2lkdGg6IDUwJTsgfVxuICAuZ3JpZC1sZy05IHtcbiAgICB3aWR0aDogNTYuMjUlOyB9XG4gIC5ncmlkLWxnLTEwIHtcbiAgICB3aWR0aDogNjIuNSU7IH1cbiAgLmdyaWQtbGctMTEge1xuICAgIHdpZHRoOiA2OC43NSU7IH1cbiAgLmdyaWQtbGctMTIge1xuICAgIHdpZHRoOiA3NSU7IH1cbiAgLmdyaWQtbGctMTMge1xuICAgIHdpZHRoOiA4MS4yNSU7IH1cbiAgLmdyaWQtbGctMTQge1xuICAgIHdpZHRoOiA4Ny41JTsgfVxuICAuZ3JpZC1sZy0xNSB7XG4gICAgd2lkdGg6IDkzLjc1JTsgfVxuICAuZ3JpZC1sZy0xNiB7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgLyoqXG5cdCAqIFZpc2libGUsIGhpZGUsIGV0Yy4uLlxuXHQgKi9cbiAgLyoqXG5cdCAqIENsZWFyIGVhY2ggY2xhc3MgOlxuXHQgKi8gfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MDBweCkge1xuICBALW1zLXZpZXdwb3J0IHtcbiAgICB3aWR0aDogZGV2aWNlLXdpZHRoOyB9IH1cblxuI2dyaWRsZS1zZXR0aW5ncyB7XG4gIGNvbnRlbnQ6ICd7IFwidmVyc2lvblwiIDogXCIxLjMuNDBcIiwgXCJzdGF0ZXNcIiA6IHsgXCJyZXRpbmFcIjp7IFwicXVlcnlcIiA6IFwiKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMTkyZHBpKSwgKG1pbi1yZXNvbHV0aW9uOiAyZHBweClcIiwgXCJjbGFzc2VzXCIgOiBmYWxzZSwgXCJuYW1lXCIgOiBcInJldGluYVwiLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJ0dlwiOnsgXCJxdWVyeVwiIDogXCJvbmx5IHR2XCIsIFwiY2xhc3Nlc1wiIDogZmFsc2UsIFwibmFtZVwiIDogXCJ0dlwiLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJwcmludFwiOnsgXCJxdWVyeVwiIDogXCJvbmx5IHByaW50XCIsIFwiY2xhc3Nlc1wiIDogZmFsc2UsIFwibmFtZVwiIDogXCJwcmludFwiLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJwb3J0cmFpdFwiOnsgXCJxdWVyeVwiIDogXCJvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcIiwgXCJjbGFzc2VzXCIgOiBmYWxzZSwgXCJuYW1lXCIgOiBcInBvcnRyYWl0XCIsIFwiX2dyaWRsZVwiIDogdHJ1ZSB9LCBcImxhbmRzY2FwZVwiOnsgXCJxdWVyeVwiIDogXCJvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXCIsIFwiY2xhc3Nlc1wiIDogZmFsc2UsIFwibmFtZVwiIDogXCJsYW5kc2NhcGVcIiwgXCJfZ3JpZGxlXCIgOiB0cnVlIH0sIFwiZGVmYXVsdFwiOnsgXCJuYW1lXCIgOiBcImRlZmF1bHRcIiwgXCJtaW4td2lkdGhcIiA6IG51bGwsIFwibWF4LXdpZHRoXCIgOiBudWxsLCBcInF1ZXJ5XCIgOiBudWxsLCBcImNsYXNzZXNcIiA6IHRydWUsIFwiY29udGV4dFwiIDogXCIxNlwiLCBcImd1dHRlci13aWR0aFwiIDogXCIyMHB4XCIsIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLCBcIm5hbWUtbXVsdGlwbGljYXRvclwiIDogXCIxXCIsIFwiZGVidWdcIiA6IGZhbHNlLCBcImRlYnVnLXNob3ctY2xhc3MtbmFtZXNcIiA6IHRydWUsIFwiaWU3LXN1cHBvcnRcIiA6IGZhbHNlLCBcImh0bWwtc3RhdGVzLWNsYXNzZXNcIiA6IGZhbHNlLCBcImdlbmVyYXRlLXB1c2gtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJnZW5lcmF0ZS1wdWxsLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtaGVscGVycy1jbGFzc2VzXCIgOiB0cnVlLCBcIl9ncmlkbGVcIiA6IHRydWUgfSwgXCJzbVwiOnsgXCJuYW1lXCIgOiBcInNtXCIsIFwibWluLXdpZHRoXCIgOiBudWxsLCBcIm1heC13aWR0aFwiIDogbnVsbCwgXCJxdWVyeVwiIDogXCJvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDBlbSlcIiwgXCJjbGFzc2VzXCIgOiB0cnVlLCBcImNvbnRleHRcIiA6IFwiMTJcIiwgXCJndXR0ZXItd2lkdGhcIiA6IFwiMjBweFwiLCBcImRpcmVjdGlvblwiIDogXCJsdHJcIiwgXCJuYW1lLW11bHRpcGxpY2F0b3JcIiA6IFwiMVwiLCBcImRlYnVnXCIgOiBmYWxzZSwgXCJkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzXCIgOiB0cnVlLCBcImllNy1zdXBwb3J0XCIgOiBmYWxzZSwgXCJodG1sLXN0YXRlcy1jbGFzc2VzXCIgOiBmYWxzZSwgXCJnZW5lcmF0ZS1wdXNoLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHVsbC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXByZWZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLWhlbHBlcnMtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJfZ3JpZGxlXCIgOiB0cnVlIH0sIFwibWRcIjp7IFwibmFtZVwiIDogXCJtZFwiLCBcIm1pbi13aWR0aFwiIDogbnVsbCwgXCJtYXgtd2lkdGhcIiA6IG51bGwsIFwicXVlcnlcIiA6IFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NDAuMDYyNWVtKSBhbmQgKG1heC13aWR0aDo1MS44NzVlbSlcIiwgXCJjbGFzc2VzXCIgOiB0cnVlLCBcImNvbnRleHRcIiA6IFwiMTZcIiwgXCJndXR0ZXItd2lkdGhcIiA6IFwiMjBweFwiLCBcImRpcmVjdGlvblwiIDogXCJsdHJcIiwgXCJuYW1lLW11bHRpcGxpY2F0b3JcIiA6IFwiMVwiLCBcImRlYnVnXCIgOiBmYWxzZSwgXCJkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzXCIgOiB0cnVlLCBcImllNy1zdXBwb3J0XCIgOiBmYWxzZSwgXCJodG1sLXN0YXRlcy1jbGFzc2VzXCIgOiBmYWxzZSwgXCJnZW5lcmF0ZS1wdXNoLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHVsbC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXByZWZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLWhlbHBlcnMtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJfZ3JpZGxlXCIgOiB0cnVlIH0sIFwibGdcIjp7IFwibmFtZVwiIDogXCJsZ1wiLCBcIm1pbi13aWR0aFwiIDogbnVsbCwgXCJtYXgtd2lkdGhcIiA6IG51bGwsIFwicXVlcnlcIiA6IFwib25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6NTEuOTM3NWVtKSBhbmQgKG1heC13aWR0aDo2MjQ5OTk5LjkzNzVlbSlcIiwgXCJjbGFzc2VzXCIgOiB0cnVlLCBcImNvbnRleHRcIiA6IFwiMTZcIiwgXCJndXR0ZXItd2lkdGhcIiA6IFwiMjBweFwiLCBcImRpcmVjdGlvblwiIDogXCJsdHJcIiwgXCJuYW1lLW11bHRpcGxpY2F0b3JcIiA6IFwiMVwiLCBcImRlYnVnXCIgOiBmYWxzZSwgXCJkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzXCIgOiB0cnVlLCBcImllNy1zdXBwb3J0XCIgOiBmYWxzZSwgXCJodG1sLXN0YXRlcy1jbGFzc2VzXCIgOiBmYWxzZSwgXCJnZW5lcmF0ZS1wdXNoLWNsYXNzZXNcIiA6IHRydWUsIFwiZ2VuZXJhdGUtcHVsbC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXByZWZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzXCIgOiB0cnVlLCBcImdlbmVyYXRlLWhlbHBlcnMtY2xhc3Nlc1wiIDogdHJ1ZSwgXCJfZ3JpZGxlXCIgOiB0cnVlIH19IH0nOyB9XG5cbi5wdXNoLTAge1xuICBsZWZ0OiAwJTsgfVxuXG4ucHVzaC0xIHtcbiAgbGVmdDogNi4yNSU7IH1cblxuLnB1c2gtMiB7XG4gIGxlZnQ6IDEyLjUlOyB9XG5cbi5wdXNoLTMge1xuICBsZWZ0OiAxOC43NSU7IH1cblxuLnB1c2gtNCB7XG4gIGxlZnQ6IDI1JTsgfVxuXG4ucHVzaC01IHtcbiAgbGVmdDogMzEuMjUlOyB9XG5cbi5wdXNoLTYge1xuICBsZWZ0OiAzNy41JTsgfVxuXG4ucHVzaC03IHtcbiAgbGVmdDogNDMuNzUlOyB9XG5cbi5wdXNoLTgge1xuICBsZWZ0OiA1MCU7IH1cblxuLnB1c2gtOSB7XG4gIGxlZnQ6IDU2LjI1JTsgfVxuXG4ucHVzaC0xMCB7XG4gIGxlZnQ6IDYyLjUlOyB9XG5cbi5wdXNoLTExIHtcbiAgbGVmdDogNjguNzUlOyB9XG5cbi5wdXNoLTEyIHtcbiAgbGVmdDogNzUlOyB9XG5cbi5wdXNoLTEzIHtcbiAgbGVmdDogODEuMjUlOyB9XG5cbi5wdXNoLTE0IHtcbiAgbGVmdDogODcuNSU7IH1cblxuLnB1c2gtMTUge1xuICBsZWZ0OiA5My43NSU7IH1cblxuLnB1c2gtMTYge1xuICBsZWZ0OiAxMDAlOyB9XG5cbi8qKlxuXHQgKiBWaXNpYmxlLCBoaWRlLCBldGMuLi5cblx0ICovXG4vKipcblx0ICogQ2xlYXIgZWFjaCBjbGFzcyA6XG5cdCAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MGVtKSB7XG4gIC5wdXNoLXNtLTAge1xuICAgIGxlZnQ6IDAlOyB9XG4gIC5wdXNoLXNtLTEge1xuICAgIGxlZnQ6IDguMzMzMzMlOyB9XG4gIC5wdXNoLXNtLTIge1xuICAgIGxlZnQ6IDE2LjY2NjY3JTsgfVxuICAucHVzaC1zbS0zIHtcbiAgICBsZWZ0OiAyNSU7IH1cbiAgLnB1c2gtc20tNCB7XG4gICAgbGVmdDogMzMuMzMzMzMlOyB9XG4gIC5wdXNoLXNtLTUge1xuICAgIGxlZnQ6IDQxLjY2NjY3JTsgfVxuICAucHVzaC1zbS02IHtcbiAgICBsZWZ0OiA1MCU7IH1cbiAgLnB1c2gtc20tNyB7XG4gICAgbGVmdDogNTguMzMzMzMlOyB9XG4gIC5wdXNoLXNtLTgge1xuICAgIGxlZnQ6IDY2LjY2NjY3JTsgfVxuICAucHVzaC1zbS05IHtcbiAgICBsZWZ0OiA3NSU7IH1cbiAgLnB1c2gtc20tMTAge1xuICAgIGxlZnQ6IDgzLjMzMzMzJTsgfVxuICAucHVzaC1zbS0xMSB7XG4gICAgbGVmdDogOTEuNjY2NjclOyB9XG4gIC5wdXNoLXNtLTEyIHtcbiAgICBsZWZ0OiAxMDAlOyB9XG4gIC8qKlxuXHQgKiBWaXNpYmxlLCBoaWRlLCBldGMuLi5cblx0ICovXG4gIC8qKlxuXHQgKiBDbGVhciBlYWNoIGNsYXNzIDpcblx0ICovIH1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAucHVzaC1tZC0wIHtcbiAgICBsZWZ0OiAwJTsgfVxuICAucHVzaC1tZC0xIHtcbiAgICBsZWZ0OiA2LjI1JTsgfVxuICAucHVzaC1tZC0yIHtcbiAgICBsZWZ0OiAxMi41JTsgfVxuICAucHVzaC1tZC0zIHtcbiAgICBsZWZ0OiAxOC43NSU7IH1cbiAgLnB1c2gtbWQtNCB7XG4gICAgbGVmdDogMjUlOyB9XG4gIC5wdXNoLW1kLTUge1xuICAgIGxlZnQ6IDMxLjI1JTsgfVxuICAucHVzaC1tZC02IHtcbiAgICBsZWZ0OiAzNy41JTsgfVxuICAucHVzaC1tZC03IHtcbiAgICBsZWZ0OiA0My43NSU7IH1cbiAgLnB1c2gtbWQtOCB7XG4gICAgbGVmdDogNTAlOyB9XG4gIC5wdXNoLW1kLTkge1xuICAgIGxlZnQ6IDU2LjI1JTsgfVxuICAucHVzaC1tZC0xMCB7XG4gICAgbGVmdDogNjIuNSU7IH1cbiAgLnB1c2gtbWQtMTEge1xuICAgIGxlZnQ6IDY4Ljc1JTsgfVxuICAucHVzaC1tZC0xMiB7XG4gICAgbGVmdDogNzUlOyB9XG4gIC5wdXNoLW1kLTEzIHtcbiAgICBsZWZ0OiA4MS4yNSU7IH1cbiAgLnB1c2gtbWQtMTQge1xuICAgIGxlZnQ6IDg3LjUlOyB9XG4gIC5wdXNoLW1kLTE1IHtcbiAgICBsZWZ0OiA5My43NSU7IH1cbiAgLnB1c2gtbWQtMTYge1xuICAgIGxlZnQ6IDEwMCU7IH1cbiAgLyoqXG5cdCAqIFZpc2libGUsIGhpZGUsIGV0Yy4uLlxuXHQgKi9cbiAgLyoqXG5cdCAqIENsZWFyIGVhY2ggY2xhc3MgOlxuXHQgKi8gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkgYW5kIChtYXgtd2lkdGg6IDYyNDk5OTkuOTM3NWVtKSB7XG4gIC5wdXNoLWxnLTAge1xuICAgIGxlZnQ6IDAlOyB9XG4gIC5wdXNoLWxnLTEge1xuICAgIGxlZnQ6IDYuMjUlOyB9XG4gIC5wdXNoLWxnLTIge1xuICAgIGxlZnQ6IDEyLjUlOyB9XG4gIC5wdXNoLWxnLTMge1xuICAgIGxlZnQ6IDE4Ljc1JTsgfVxuICAucHVzaC1sZy00IHtcbiAgICBsZWZ0OiAyNSU7IH1cbiAgLnB1c2gtbGctNSB7XG4gICAgbGVmdDogMzEuMjUlOyB9XG4gIC5wdXNoLWxnLTYge1xuICAgIGxlZnQ6IDM3LjUlOyB9XG4gIC5wdXNoLWxnLTcge1xuICAgIGxlZnQ6IDQzLjc1JTsgfVxuICAucHVzaC1sZy04IHtcbiAgICBsZWZ0OiA1MCU7IH1cbiAgLnB1c2gtbGctOSB7XG4gICAgbGVmdDogNTYuMjUlOyB9XG4gIC5wdXNoLWxnLTEwIHtcbiAgICBsZWZ0OiA2Mi41JTsgfVxuICAucHVzaC1sZy0xMSB7XG4gICAgbGVmdDogNjguNzUlOyB9XG4gIC5wdXNoLWxnLTEyIHtcbiAgICBsZWZ0OiA3NSU7IH1cbiAgLnB1c2gtbGctMTMge1xuICAgIGxlZnQ6IDgxLjI1JTsgfVxuICAucHVzaC1sZy0xNCB7XG4gICAgbGVmdDogODcuNSU7IH1cbiAgLnB1c2gtbGctMTUge1xuICAgIGxlZnQ6IDkzLjc1JTsgfVxuICAucHVzaC1sZy0xNiB7XG4gICAgbGVmdDogMTAwJTsgfVxuICAvKipcblx0ICogVmlzaWJsZSwgaGlkZSwgZXRjLi4uXG5cdCAqL1xuICAvKipcblx0ICogQ2xlYXIgZWFjaCBjbGFzcyA6XG5cdCAqLyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDBlbSkge1xuICBbY2xhc3MqPVwiZ3JpZC1cIl0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGxlZnQ6IDA7IH0gfVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwLjA2MjVlbSkgYW5kIChtYXgtd2lkdGg6IDUxLjg3NWVtKSB7XG4gIFtjbGFzcyo9XCJncmlkLVwiXSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbGVmdDogMDsgfSB9XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0FzdG9yaWEnO1xuICBzcmM6IHVybChcIi4uL2ZvbnRzL0FzdG9yaWEtRXh0cmFMaWdodC13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLUV4dHJhTGlnaHQtd2ViZm9udC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLUV4dHJhTGlnaHQtd2ViZm9udC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiLi4vZm9udHMvQXN0b3JpYS1FeHRyYUxpZ2h0LXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLUV4dHJhTGlnaHQtd2ViZm9udC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksIHVybChcIi4uL2ZvbnRzL0FzdG9yaWEtRXh0cmFMaWdodC13ZWJmb250LnN2ZyNhc3RvcmlhRXh0cmFMaWdodFwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdBc3RvcmlhJztcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi4uL2ZvbnRzL0FzdG9yaWEtTWVkaXVtLXdlYmZvbnQud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi4uL2ZvbnRzL0FzdG9yaWEtTWVkaXVtLXdlYmZvbnQud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSwgdXJsKFwiLi4vZm9udHMvQXN0b3JpYS1NZWRpdW0td2ViZm9udC5zdmcjYXN0b3JpYU1lZGl1bVwiKSBmb3JtYXQoXCJzdmdcIik7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbWFyZ2luOiAwOyB9XG5cbmgxIHtcbiAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICBmb250LXNpemU6IDRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbmgyIHtcbiAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG5cbmgzIHtcbiAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICBmb250LXNpemU6IDEuMjVyZW07IH1cblxuc3Bhbi53aG8taXMtcm9zYS0yMDE2IHtcbiAgY29sb3I6ICNmZjNlYjU7XG4gIGZvbnQtc2l6ZTogNi4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDAuOTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDApIGFuZCAobWF4LXdpZHRoOiAyMy43NWVtKSB7XG4gICAgc3Bhbi53aG8taXMtcm9zYS0yMDE2IHtcbiAgICAgIGZvbnQtc2l6ZTogNC41cmVtOyB9IH1cblxuQGtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5Eb3duIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMTAwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgfSB9XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOyB9IH1cblxuQGtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0gfVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7IH0gfVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG4gIDAlLFxuICAxNSUsXG4gIDMwJSxcbiAgNDUlLFxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbiAgMjIuNSUsXG4gIDM3LjUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpOyB9IH1cblxuLyogc21hbGwgZGlzcGxheXMgKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiB7XG4gIC5zaG93LWZvci1zbWFsbC1vbmx5LCAuc2hvdy1mb3Itc21hbGwtdXAsIC5oaWRlLWZvci1tZWRpdW0tb25seSwgLmhpZGUtZm9yLW1lZGl1bS11cCB7XG4gICAgZGlzcGxheTogaW5oZXJpdCAhaW1wb3J0YW50OyB9XG4gIC5oaWRlLWZvci1zbWFsbC1vbmx5LCAuaGlkZS1mb3Itc21hbGwtdXAsIC5zaG93LWZvci1tZWRpdW0tb25seSwgLnNob3ctZm9yLW1lZGl1bS11cCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH1cblxuLyogbWVkaXVtIGRpc3BsYXlzICovXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwLjA2MjVlbSkge1xuICAuaGlkZS1mb3Itc21hbGwtb25seSwgLnNob3ctZm9yLXNtYWxsLXVwLCAuc2hvdy1mb3ItbWVkaXVtLW9ubHksIC5zaG93LWZvci1tZWRpdW0tdXAge1xuICAgIGRpc3BsYXk6IGluaGVyaXQgIWltcG9ydGFudDsgfVxuICAuc2hvdy1mb3Itc21hbGwtb25seSwgLmhpZGUtZm9yLXNtYWxsLXVwLCAuaGlkZS1mb3ItbWVkaXVtLW9ubHksIC5oaWRlLWZvci1tZWRpdW0tdXAge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfSB9XG5cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjb2xvcjogIzdkNzI2NjtcbiAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTsgfVxuXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7IH1cblxuYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bzsgfVxuXG5pbWcge1xuICAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICNmdWxscGFnZSA+IC5zZWN0aW9uIHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7IH0gfVxuXG4jZnVsbHBhZ2UgPiAuc2VjdGlvbi5mcC1hdXRvLWhlaWdodCB7XG4gIGhlaWdodDogYXV0bztcbiAgbWluLWhlaWdodDogaW5oZXJpdDsgfVxuXG4vKlxuICogUmVtb3ZlIHRoZSBnYXAgYmV0d2VlbiBhdWRpbywgY2FudmFzLCBpZnJhbWVzLFxuICogaW1hZ2VzLCB2aWRlb3MgYW5kIHRoZSBib3R0b20gb2YgdGhlaXIgY29udGFpbmVyczpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2lzc3Vlcy80NDBcbiAqL1xuYXVkaW8sXG5jYW52YXMsXG5pZnJhbWUsXG5zdmcsXG52aWRlbyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuaW1nIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8qXG4gKiBSZW1vdmUgZGVmYXVsdCBmaWVsZHNldCBzdHlsZXMuXG4gKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAwO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLypcbiAqIEFsbG93IG9ubHkgdmVydGljYWwgcmVzaXppbmcgb2YgdGV4dGFyZWFzLlxuICovXG50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogdmVydGljYWw7IH1cblxuLypcbiAqIE91ciBzcHJpdGVzaGVldCBkZXNpZ25cbiAqL1xuLnNwcml0ZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlOyB9XG4gIC5zcHJpdGUgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7IH1cblxuLmZ1bGxwYWdlLXdyYXBwZXIge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cblxuLmZwLWVuYWJsZWQgLmZ1bGxwYWdlLXdyYXBwZXIge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XG5cbi5jb250ZW50LXdyYXBwZXIge1xuICBtYXgtd2lkdGg6IDk4MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDAgMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLmNvbnRlbnQtd3JhcHBlciB7XG4gICAgICBoZWlnaHQ6IDEwMCU7IH0gfVxuXG5hIHtcbiAgY29sb3I6ICNmZjNlYjU7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGE6aG92ZXIsIGE6YWN0aXZlIHtcbiAgICBjb2xvcjogI2ZmM2ViNTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cblxuLyogTWFnbmlmaWMgUG9wdXAgQ1NTICovXG4ubWZwLWJnIHtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICB6LWluZGV4OiAxMDQyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJhY2tncm91bmQ6ICMwYjBiMGI7XG4gIG9wYWNpdHk6IDAuODsgfVxuXG4ubWZwLXdyYXAge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6IDEwNDM7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG4ubWZwLWNvbnRhaW5lciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIHBhZGRpbmc6IDAgOHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5tZnAtY29udGFpbmVyOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4ubWZwLWFsaWduLXRvcCAubWZwLWNvbnRhaW5lcjpiZWZvcmUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5tZnAtY29udGVudCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgei1pbmRleDogMTA0NTsgfVxuXG4ubWZwLWlubGluZS1ob2xkZXIgLm1mcC1jb250ZW50LFxuLm1mcC1hamF4LWhvbGRlciAubWZwLWNvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgY3Vyc29yOiBhdXRvOyB9XG5cbi5tZnAtYWpheC1jdXIge1xuICBjdXJzb3I6IHByb2dyZXNzOyB9XG5cbi5tZnAtem9vbS1vdXQtY3VyLCAubWZwLXpvb20tb3V0LWN1ciAubWZwLWltYWdlLWhvbGRlciAubWZwLWNsb3NlIHtcbiAgY3Vyc29yOiAtbW96LXpvb20tb3V0O1xuICBjdXJzb3I6IC13ZWJraXQtem9vbS1vdXQ7XG4gIGN1cnNvcjogem9vbS1vdXQ7IH1cblxuLm1mcC16b29tIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjdXJzb3I6IC13ZWJraXQtem9vbS1pbjtcbiAgY3Vyc29yOiAtbW96LXpvb20taW47XG4gIGN1cnNvcjogem9vbS1pbjsgfVxuXG4ubWZwLWF1dG8tY3Vyc29yIC5tZnAtY29udGVudCB7XG4gIGN1cnNvcjogYXV0bzsgfVxuXG4ubWZwLWNsb3NlLFxuLm1mcC1hcnJvdyxcbi5tZnAtcHJlbG9hZGVyLFxuLm1mcC1jb3VudGVyIHtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cblxuLm1mcC1sb2FkaW5nLm1mcC1maWd1cmUge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi5tZnAtaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4ubWZwLXByZWxvYWRlciB7XG4gIGNvbG9yOiAjQ0NDO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICB3aWR0aDogYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAtMC44ZW07XG4gIGxlZnQ6IDhweDtcbiAgcmlnaHQ6IDhweDtcbiAgei1pbmRleDogMTA0NDsgfVxuICAubWZwLXByZWxvYWRlciBhIHtcbiAgICBjb2xvcjogI0NDQzsgfVxuICAgIC5tZnAtcHJlbG9hZGVyIGE6aG92ZXIge1xuICAgICAgY29sb3I6ICNGRkY7IH1cblxuLm1mcC1zLXJlYWR5IC5tZnAtcHJlbG9hZGVyIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ubWZwLXMtZXJyb3IgLm1mcC1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG5idXR0b24ubWZwLWNsb3NlLCBidXR0b24ubWZwLWFycm93IHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3V0bGluZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgei1pbmRleDogMTA0NjtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi5tZnAtY2xvc2Uge1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBsaW5lLWhlaWdodDogNDRweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgdG9wOiAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgb3BhY2l0eTogMC42NTtcbiAgcGFkZGluZzogMCAwIDE4cHggMTBweDtcbiAgY29sb3I6ICNGRkY7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAyOHB4O1xuICBmb250LWZhbWlseTogQXJpYWwsIEJhc2tlcnZpbGxlLCBtb25vc3BhY2U7IH1cbiAgLm1mcC1jbG9zZTpob3ZlciwgLm1mcC1jbG9zZTpmb2N1cyB7XG4gICAgb3BhY2l0eTogMTsgfVxuICAubWZwLWNsb3NlOmFjdGl2ZSB7XG4gICAgdG9wOiAxcHg7IH1cblxuLm1mcC1jbG9zZS1idG4taW4gLm1mcC1jbG9zZSB7XG4gIGNvbG9yOiAjMzMzOyB9XG5cbi5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY2xvc2UsXG4ubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jbG9zZSB7XG4gIGNvbG9yOiAjRkZGO1xuICByaWdodDogLTZweDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLm1mcC1jb3VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBjb2xvcjogI0NDQztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMThweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4ubWZwLWFycm93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvcGFjaXR5OiAwLjY1O1xuICBtYXJnaW46IDA7XG4gIHRvcDogNTAlO1xuICBtYXJnaW4tdG9wOiAtNTVweDtcbiAgcGFkZGluZzogMDtcbiAgd2lkdGg6IDkwcHg7XG4gIGhlaWdodDogMTEwcHg7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLm1mcC1hcnJvdzphY3RpdmUge1xuICAgIG1hcmdpbi10b3A6IC01NHB4OyB9XG4gIC5tZnAtYXJyb3c6aG92ZXIsIC5tZnAtYXJyb3c6Zm9jdXMge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1mcC1hcnJvdzpiZWZvcmUsIC5tZnAtYXJyb3c6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luLXRvcDogMzVweDtcbiAgICBtYXJnaW4tbGVmdDogMzVweDtcbiAgICBib3JkZXI6IG1lZGl1bSBpbnNldCB0cmFuc3BhcmVudDsgfVxuICAubWZwLWFycm93OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4O1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDEzcHg7XG4gICAgdG9wOiA4cHg7IH1cbiAgLm1mcC1hcnJvdzpiZWZvcmUge1xuICAgIGJvcmRlci10b3Atd2lkdGg6IDIxcHg7XG4gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjFweDtcbiAgICBvcGFjaXR5OiAwLjc7IH1cblxuLm1mcC1hcnJvdy1sZWZ0IHtcbiAgbGVmdDogMDsgfVxuICAubWZwLWFycm93LWxlZnQ6YWZ0ZXIge1xuICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCAjRkZGO1xuICAgIG1hcmdpbi1sZWZ0OiAzMXB4OyB9XG4gIC5tZnAtYXJyb3ctbGVmdDpiZWZvcmUge1xuICAgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICAgIGJvcmRlci1yaWdodDogMjdweCBzb2xpZCAjM0YzRjNGOyB9XG5cbi5tZnAtYXJyb3ctcmlnaHQge1xuICByaWdodDogMDsgfVxuICAubWZwLWFycm93LXJpZ2h0OmFmdGVyIHtcbiAgICBib3JkZXItbGVmdDogMTdweCBzb2xpZCAjRkZGO1xuICAgIG1hcmdpbi1sZWZ0OiAzOXB4OyB9XG4gIC5tZnAtYXJyb3ctcmlnaHQ6YmVmb3JlIHtcbiAgICBib3JkZXItbGVmdDogMjdweCBzb2xpZCAjM0YzRjNGOyB9XG5cbi5tZnAtaWZyYW1lLWhvbGRlciB7XG4gIHBhZGRpbmctdG9wOiA0MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNDBweDsgfVxuICAubWZwLWlmcmFtZS1ob2xkZXIgLm1mcC1jb250ZW50IHtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDkwMHB4OyB9XG4gIC5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNsb3NlIHtcbiAgICB0b3A6IC00MHB4OyB9XG5cbi5tZnAtaWZyYW1lLXNjYWxlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmctdG9wOiA1Ni4yNSU7IH1cbiAgLm1mcC1pZnJhbWUtc2NhbGVyIGlmcmFtZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwOyB9XG5cbi8qIE1haW4gaW1hZ2UgaW4gcG9wdXAgKi9cbmltZy5tZnAtaW1nIHtcbiAgd2lkdGg6IGF1dG87XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDQwcHggMCA0MHB4O1xuICBtYXJnaW46IDAgYXV0bzsgfVxuXG4vKiBUaGUgc2hhZG93IGJlaGluZCB0aGUgaW1hZ2UgKi9cbi5tZnAtZmlndXJlIHtcbiAgbGluZS1oZWlnaHQ6IDA7IH1cbiAgLm1mcC1maWd1cmU6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogNDBweDtcbiAgICBib3R0b206IDQwcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHotaW5kZXg6IC0xO1xuICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIGJhY2tncm91bmQ6ICM0NDQ7IH1cbiAgLm1mcC1maWd1cmUgc21hbGwge1xuICAgIGNvbG9yOiAjQkRCREJEO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTRweDsgfVxuICAubWZwLWZpZ3VyZSBmaWd1cmUge1xuICAgIG1hcmdpbjogMDsgfVxuXG4ubWZwLWJvdHRvbS1iYXIge1xuICBtYXJnaW4tdG9wOiAtMzZweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBjdXJzb3I6IGF1dG87IH1cblxuLm1mcC10aXRsZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICBjb2xvcjogI0YzRjNGMztcbiAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICBwYWRkaW5nLXJpZ2h0OiAzNnB4OyB9XG5cbi5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY29udGVudCB7XG4gIG1heC13aWR0aDogMTAwJTsgfVxuXG4ubWZwLWdhbGxlcnkgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1maWd1cmUge1xuICBjdXJzb3I6IHBvaW50ZXI7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSksIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDMwMHB4KSB7XG4gIC8qKlxuICAgICAgICogUmVtb3ZlIGFsbCBwYWRkaW5ncyBhcm91bmQgdGhlIGltYWdlIG9uIHNtYWxsIHNjcmVlblxuICAgICAgICovXG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWltYWdlLWhvbGRlciB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7IH1cbiAgLm1mcC1pbWctbW9iaWxlIGltZy5tZnAtaW1nIHtcbiAgICBwYWRkaW5nOiAwOyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWZpZ3VyZTphZnRlciB7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDsgfVxuICAubWZwLWltZy1tb2JpbGUgLm1mcC1maWd1cmUgc21hbGwge1xuICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICBtYXJnaW4tbGVmdDogNXB4OyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBib3R0b206IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRvcDogYXV0bztcbiAgICBwYWRkaW5nOiAzcHggNXB4O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4gICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhcjplbXB0eSB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gIC5tZnAtaW1nLW1vYmlsZSAubWZwLWNvdW50ZXIge1xuICAgIHJpZ2h0OiA1cHg7XG4gICAgdG9wOiAzcHg7IH1cbiAgLm1mcC1pbWctbW9iaWxlIC5tZnAtY2xvc2Uge1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMzVweDtcbiAgICBoZWlnaHQ6IDM1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDM1cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjYpO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMDsgfSB9XG5cbkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIC5tZnAtYXJyb3cge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjc1KTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpOyB9XG4gIC5tZnAtYXJyb3ctbGVmdCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAwO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDA7IH1cbiAgLm1mcC1hcnJvdy1yaWdodCB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDEwMCU7IH1cbiAgLm1mcC1jb250YWluZXIge1xuICAgIHBhZGRpbmctbGVmdDogNnB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweDsgfSB9XG5cbi5uYXZpZ2F0aW9uLXBvcHVwLm1mcC1iZyB7XG4gIGJhY2tncm91bmQ6ICNmZjNlYjU7XG4gIG9wYWNpdHk6IDE7IH1cblxuLm5hdmlnYXRpb24tcG9wdXAgLm1mcC1jbG9zZSB7XG4gIGNvbG9yOiAjZmYzZWI1O1xuICBib3JkZXItbGVmdDogbm9uZTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDYycHg7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDU7XG4gIG9wYWNpdHk6IDE7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jbG9zZS1waW5rLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI1cHg7XG4gIGhlaWdodDogNTVweDtcbiAgd2lkdGg6IDUycHg7XG4gIGZvbnQtc2l6ZTogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubWZwLWNsb3NlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvY2xvc2UtYnJvd24uc3ZnXCIpOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLm5hdmlnYXRpb24tcG9wdXAgLm1mcC1jbG9zZSB7XG4gICAgICB0b3A6IDglO1xuICAgICAgaGVpZ2h0OiA2MnB4O1xuICAgICAgd2lkdGg6IDU3cHg7IH0gfVxuXG4ubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IHtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGRpcmVjdGlvbjogbHRyO1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIHdpZHRoOiA5My43NSU7XG4gIGxlZnQ6IDYuMjUlOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCB7XG4gICAgICB3aWR0aDogODcuNSU7IH0gfVxuXG4ubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkge1xuICBmbG9hdDogbGVmdDtcbiAgZGlyZWN0aW9uOiBsdHI7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgbGk6bnRoLWNoaWxkKDJuKzEpIHtcbiAgICBjbGVhcjogYm90aDsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7IH1cbiAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IGxpLCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgYSB7XG4gICAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAwKSBhbmQgKG1heC13aWR0aDogMjMuNzVlbSkge1xuICAgICAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IGxpLCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07IH0gfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgbGkge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogZm9udC13ZWlnaHQgLjI1cztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMjVweDtcbiAgICBwYWRkaW5nOiAxNHB4IDAgMCAxNHB4O1xuICAgIG1hcmdpbi1sZWZ0OiAxMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAtMTAlOyB9XG4gICAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IGxpOjpiZWZvcmUge1xuICAgICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSAuMjVzLCBvcGFjaXR5IC4yNXM7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMTRweDtcbiAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9kb3JuZW4tc3ltYm9sLXdoaXRlLnN2Z1wiKTsgfVxuICAgIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tcHJpbWFyeSBsaTphY3RpdmU6OmJlZm9yZSwgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IGxpOmhvdmVyOjpiZWZvcmUge1xuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkge1xuICAgICAgd2lkdGg6IDYyLjUlOyB9XG4gICAgICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLXByaW1hcnkgbGkge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9XG4gICAgICAgIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tcHJpbWFyeSBsaTpiZWZvcmUge1xuICAgICAgICAgIGxlZnQ6IC0xNHB4O1xuICAgICAgICAgIHRvcDogLTE0cHg7IH0gfVxuXG4ubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEge1xuICBmbG9hdDogbGVmdDtcbiAgZGlyZWN0aW9uOiBsdHI7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgd2lkdGg6IDEwMCU7IH1cbiAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwOyB9XG4gIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgIG1hcmdpbi1yaWdodDogLTEwJTtcbiAgICBoZWlnaHQ6IGF1dG87IH1cbiAgICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgbGk6aG92ZXIsXG4gICAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIGxpOmhvdmVyIGEsIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSBsaTphY3RpdmUsXG4gICAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIGxpOmFjdGl2ZSBhIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSBsaSwgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIGEge1xuICAgIGZvbnQtZmFtaWx5OiBcIkFzdG9yaWFcIiwgc2FucztcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgY29sb3I6ICNGRkY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBhLCAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBzcGFuIHtcbiAgICBvcGFjaXR5OiAuMztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7IH1cbiAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIC5sYW5ndWFnZS1zd2l0Y2g6aG92ZXIsXG4gIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSAubGFuZ3VhZ2Utc3dpdGNoOmhvdmVyIGEsIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSAubGFuZ3VhZ2Utc3dpdGNoOmFjdGl2ZSxcbiAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIC5sYW5ndWFnZS1zd2l0Y2g6YWN0aXZlIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBhOmhvdmVyLFxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBhOmFjdGl2ZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgb3BhY2l0eTogMTsgfVxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBhLmFjdGl2ZTpob3ZlcixcbiAgLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1tZXRhIC5sYW5ndWFnZS1zd2l0Y2ggYS5hY3RpdmU6YWN0aXZlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBkZWZhdWx0OyB9XG4gIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSAubGFuZ3VhZ2Utc3dpdGNoIGEuYWN0aXZlLFxuICAubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEgLmxhbmd1YWdlLXN3aXRjaCBzcGFuLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkge1xuICAgIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSB7XG4gICAgICB3aWR0aDogMjUlO1xuICAgICAgbGVmdDogMTIuNSU7IH1cbiAgICAgIC5uYXZpZ2F0aW9uLXBvcHVwIC5uYXZpZ2F0aW9uLWNvbnRlbnQgLm5hdmlnYXRpb24tbWV0YSBsaSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEyNXB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLm5hdmlnYXRpb24tc3RpY2t5IC5uYXZpZ2F0aW9uLWNsb3NlLFxuLm5hdmlnYXRpb24tc3RpY2t5IC5uYXZpZ2F0aW9uLW9wZW4ge1xuICBhbmltYXRpb246IHNsaWRlSW5MZWZ0IDFzIGVhc2UgMHMgMSBub3JtYWwgYm90aDtcbiAgYmFja2dyb3VuZDogI2ZmM2ViNTtcbiAgY29sb3I6ICNGRkY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDU7XG4gIGxlZnQ6IDA7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuXG4ubmF2aWdhdGlvbi1zdGlja3kgLm5hdmlnYXRpb24tb3BlbiB7XG4gIGZvbnQtc2l6ZTogMTlweDtcbiAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICBwYWRkaW5nOiAxMXB4IDAgNXB4O1xuICB3aWR0aDogNTFweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBsaW5lLWhlaWdodDogMTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0cmFuc2l0aW9uOiBmb250IC4zcztcbiAgdG9wOiA2MnB4OyB9XG4gIC5uYXZpZ2F0aW9uLXN0aWNreSAubmF2aWdhdGlvbi1vcGVuOmhvdmVyIHtcbiAgICBjb2xvcjogIzdkNzI2NjsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkge1xuICAgIC5uYXZpZ2F0aW9uLXN0aWNreSAubmF2aWdhdGlvbi1vcGVuIHtcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgIHBhZGRpbmc6IDEzcHggMCA3cHg7XG4gICAgICB3aWR0aDogNTNweDtcbiAgICAgIHRvcDogOCU7IH0gfVxuXG4ubmF2aWdhdGlvbi1zdGlja3kgLm5hdmlnYXRpb24tY2xvc2Uge1xuICBvcGFjaXR5OiAxO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvY2xvc2Utd2hpdGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMjVweDtcbiAgaGVpZ2h0OiA1NXB4O1xuICB3aWR0aDogNTJweDtcbiAgZm9udC1zaXplOiAwO1xuICB0b3A6IDEwcHg7IH1cbiAgLm5hdmlnYXRpb24tc3RpY2t5IC5uYXZpZ2F0aW9uLWNsb3NlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvY2xvc2UtYnJvd24uc3ZnXCIpOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLm5hdmlnYXRpb24tc3RpY2t5IC5uYXZpZ2F0aW9uLWNsb3NlIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogOCU7XG4gICAgICBoZWlnaHQ6IDYycHg7XG4gICAgICB3aWR0aDogNTdweDsgfSB9XG5cbi5zZWN0aW9uIHtcbiAgY2xlYXI6IGJvdGg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuc2VjdGlvbi5pbnRyby1zZWN0aW9uIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogNzBweDsgfVxuICAuc2VjdGlvbjpsYXN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDsgfVxuICAuc2VjdGlvbiAuc2VjdGlvbi1sb2dvIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBkaXJlY3Rpb246IGx0cjtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIG1heC13aWR0aDogMTEwcHg7XG4gICAgcGFkZGluZzogNTBweCAwIDA7IH1cbiAgICAuc2VjdGlvbiAuc2VjdGlvbi1sb2dvIGEge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICAuc2VjdGlvbiAuc2VjdGlvbi1sb2dvIC5zcHJpdGUge1xuICAgICAgcGFkZGluZy1ib3R0b206IDY4LjM0ODYyMzklOyB9XG4gIC5zZWN0aW9uIC5tZW51LXRpdGxlIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBkaXJlY3Rpb246IGx0cjtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICBsZWZ0OiAwJTtcbiAgICBtYXJnaW46IDI4cHggMCAxMHB4IDM4cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIGFuZCAobWF4LXdpZHRoOiA2MjQ5OTk5LjkzNzVlbSkge1xuICAgICAgLnNlY3Rpb24gLm1lbnUtdGl0bGUge1xuICAgICAgICB3aWR0aDogMzcuNSU7IH0gfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDBlbSkge1xuICAgICAgLnNlY3Rpb24gLm1lbnUtdGl0bGUge1xuICAgICAgICBsZWZ0OiA4LjMzMzMzJTsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAgICAgLnNlY3Rpb24gLm1lbnUtdGl0bGUge1xuICAgICAgICBsZWZ0OiA2LjI1JTsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MGVtKSB7XG4gICAgICAuc2VjdGlvbiAubWVudS10aXRsZSB7XG4gICAgICAgIGNsZWFyOiBib3RoOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQwLjA2MjVlbSkgYW5kIChtYXgtd2lkdGg6IDUxLjg3NWVtKSB7XG4gICAgICAuc2VjdGlvbiAubWVudS10aXRsZSB7XG4gICAgICAgIGNsZWFyOiBib3RoOyB9IH1cbiAgICAuc2VjdGlvbiAubWVudS10aXRsZSBoMSB7XG4gICAgICBjb2xvcjogI0ZGRjtcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgfVxuICAgIC5zZWN0aW9uIC5tZW51LXRpdGxlOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGhlaWdodDogMjhweDtcbiAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBsZWZ0OiAtMjhweDtcbiAgICAgIHRvcDogLTI4cHg7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgLnNlY3Rpb24gLnNlY3Rpb24tYnJhbmRpbmcge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiAzNy41JTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbGVmdDogYXV0bztcbiAgICBwYWRkaW5nOiAzNXB4IDA7XG4gICAgbWFyZ2luOiAwIDEzNXB4IDQwcHggMDsgfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSBhbmQgKG1heC13aWR0aDogNjI0OTk5OS45Mzc1ZW0pIHtcbiAgICAgIC5zZWN0aW9uIC5zZWN0aW9uLWJyYW5kaW5nIHtcbiAgICAgICAgbGVmdDogNDMuNzUlOyB9IH1cbiAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwZW0pIHtcbiAgICAgIC5zZWN0aW9uIC5zZWN0aW9uLWJyYW5kaW5nIHtcbiAgICAgICAgd2lkdGg6IDUwJTsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAgICAgLnNlY3Rpb24gLnNlY3Rpb24tYnJhbmRpbmcge1xuICAgICAgICB3aWR0aDogMzcuNSU7IH0gfVxuICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDBlbSkge1xuICAgICAgLnNlY3Rpb24gLnNlY3Rpb24tYnJhbmRpbmcge1xuICAgICAgICBjbGVhcjogYm90aDsgfSB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAgICAgLnNlY3Rpb24gLnNlY3Rpb24tYnJhbmRpbmcge1xuICAgICAgICBjbGVhcjogYm90aDsgfSB9XG4gICAgLnNlY3Rpb24gLnNlY3Rpb24tYnJhbmRpbmcgLnNwcml0ZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTA0LjA5OTM3ODg4MiU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0MGVtKSB7XG4gICAgLnNlY3Rpb24gLm1lbnUtdGl0bGUgaDEge1xuICAgICAgZm9udC1zaXplOiAzLjEyNXJlbTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMCkgYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAuc2VjdGlvbiAubWVudS10aXRsZSBoMSB7XG4gICAgICBmb250LXNpemU6IDIuNjI1cmVtOyB9XG4gICAgLnNlY3Rpb24uY29udGVudC1zZWN0aW9uIC5tZW51LXRpdGxlIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDAuMDYyNWVtKSBhbmQgKG1heC13aWR0aDogNTEuODc1ZW0pIHtcbiAgICAuc2VjdGlvbiAubWVudS10aXRsZSBoMSB7XG4gICAgICBmb250LXNpemU6IDMuMTI1cmVtOyB9IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgICAuc2VjdGlvbi5pbnRyby1zZWN0aW9uIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwOyB9XG4gICAgLnNlY3Rpb24gLnNlY3Rpb24tbG9nbyB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHJpZ2h0OiAyJTtcbiAgICAgIHRvcDogOCU7XG4gICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgbWF4LXdpZHRoOiAxMzBweDsgfVxuICAgIC5zZWN0aW9uIC5tZW51LXRpdGxlIHtcbiAgICAgIG1hcmdpbjogMjhweCAwIDAgMzhweDtcbiAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiA2LjI1JTsgfVxuICAgIC5zZWN0aW9uIC5zZWN0aW9uLWJyYW5kaW5nIHtcbiAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGZsb2F0OiBsZWZ0OyB9XG4gICAgLnNlY3Rpb24gLmludHJvLWNvbnRhaW5lciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDUwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfSB9XG5cbi5pbnRyby1zZWN0aW9uLFxuLmNsYWltLXNlY3Rpb24ge1xuICBtaW4taGVpZ2h0OiAxMDB2aDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkge1xuICAgIC5pbnRyby1zZWN0aW9uLFxuICAgIC5jbGFpbS1zZWN0aW9uIHtcbiAgICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7IH0gfVxuXG4uc2VjdGlvbi50aGVtZS1waW5rIHtcbiAgYmFja2dyb3VuZDogI2ZmM2ViNTsgfVxuICAuc2VjdGlvbi50aGVtZS1waW5rIC5tZW51LXRpdGxlOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtYnJvd24uc3ZnXCIpOyB9XG4gIC5zZWN0aW9uLnRoZW1lLXBpbmsgLnNlY3Rpb24tYnJhbmRpbmcgLnNwcml0ZSBzdmcsXG4gIC5zZWN0aW9uLnRoZW1lLXBpbmsgLnNlY3Rpb24tbG9nbyAuc3ByaXRlIHN2ZyB7XG4gICAgY29sb3I6ICM3ZDcyNjY7IH1cblxuLnNlY3Rpb24udGhlbWUtYnJvd24ge1xuICBiYWNrZ3JvdW5kOiAjN2Q3MjY2OyB9XG4gIC5zZWN0aW9uLnRoZW1lLWJyb3duIC5tZW51LXRpdGxlOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogdXJsKFwiLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtcGluay5zdmdcIik7IH1cbiAgLnNlY3Rpb24udGhlbWUtYnJvd24gLnNlY3Rpb24tYnJhbmRpbmcgLnNwcml0ZSBzdmcsXG4gIC5zZWN0aW9uLnRoZW1lLWJyb3duIC5zZWN0aW9uLWxvZ28gLnNwcml0ZSBzdmcge1xuICAgIGNvbG9yOiAjZmYzZWI1OyB9XG5cbi5jb250ZW50LXNlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAjRkZGOyB9XG4gIC5jb250ZW50LXNlY3Rpb24gLnNlY3Rpb24tbG9nbyAuc3ByaXRlIHN2ZyB7XG4gICAgY29sb3I6ICNmZjNlYjU7IH1cbiAgLmNvbnRlbnQtc2VjdGlvbiAubWVudS10aXRsZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTBweDtcbiAgICBsZWZ0OiAxMi41JTtcbiAgICBtYXJnaW46IDA7XG4gICAgb3BhY2l0eTogMC4xOyB9XG4gICAgLmNvbnRlbnQtc2VjdGlvbiAubWVudS10aXRsZSBoMSB7XG4gICAgICBjb2xvcjogI2ZmM2ViNTsgfVxuICAuY29udGVudC1zZWN0aW9uIC5jb250ZW50LWJveC13cmFwcGVyOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDYwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIGFuZCAobWF4LXdpZHRoOiA1MS44NzVlbSkge1xuICAgIC5jb250ZW50LXNlY3Rpb24gLmNvbnRlbnQtYm94LXdyYXBwZXIge1xuICAgICAgbGVmdDogNi4yNSU7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICAgIHdpZHRoOiA2Mi41JTtcbiAgICAgIG1hcmdpbi1yaWdodDogMzEuMjUlOyB9XG4gICAgLmNvbnRlbnQtc2VjdGlvbiAuY29udGVudC1ib3gtd3JhcHBlci5tZC1yaWdodCB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAlO1xuICAgICAgbWFyZ2luLWxlZnQ6IDMxLjI1JTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLmNvbnRlbnQtc2VjdGlvbiAubWVudS10aXRsZSB7XG4gICAgICB0b3A6IDEyLjUlO1xuICAgICAgbWFyZ2luOiAyOHB4IDAgMDsgfSB9XG5cbi5jb250ZW50LXNlY3Rpb24gKyAuY29udGVudC1zZWN0aW9uIC5zZWN0aW9uLWxvZ28ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gIC5jb250ZW50LXNlY3Rpb24gKyAuY29udGVudC1zZWN0aW9uIC5zZWN0aW9uLWxvZ28ge1xuICAgIGRpc3BsYXk6IGluaGVyaXQ7IH0gfVxuXG4uY29udGVudC1ib3gtd3JhcHBlciB7XG4gIG1hcmdpbi10b3A6IDYwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgICAuY29udGVudC1ib3gtd3JhcHBlciB7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW4tdG9wOiAwOyB9IH1cblxuLnNlY3Rpb24gLmNvbnRlbnQtYm94LXdyYXBwZXI6bGFzdC1jaGlsZCAuYm94LWltYWdlIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7IH1cblxuLmNvbnRlbnQtYm94IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogMTRweDtcbiAgbWFyZ2luLXRvcDogMTRweDtcbiAgcGFkZGluZy1yaWdodDogMzRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIC8qIFR5cGVzICovIH1cbiAgLmNvbnRlbnQtYm94OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGxlZnQ6IC0xNHB4O1xuICAgIHRvcDogLTE0cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9kb3JuZW4tc3ltYm9sLXBpbmsuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE0cHggMTRweDsgfVxuICAuY29udGVudC1ib3guYnJvd24tZG9ybmVuOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtYnJvd24uc3ZnXCIpOyB9XG4gIC5jb250ZW50LWJveCAuc3ViaGVhZGxpbmUsIC5jb250ZW50LWJveCAuaGVhZGxpbmUge1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBjb2xvcjogI2ZmM2ViNTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7IH1cbiAgLmNvbnRlbnQtYm94IC5oZWFkbGluZSB7XG4gICAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIC5jb250ZW50LWJveCAuc3ViaGVhZGxpbmUge1xuICAgIGZvbnQtZmFtaWx5OiBcIkFzdG9yaWFcIiwgc2FuczsgfVxuICAuY29udGVudC1ib3guYm94LWltYWdlIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7IH1cbiAgICAuY29udGVudC1ib3guYm94LWltYWdlOmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5jb250ZW50LWJveC5ib3gtcXVvdGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgLmNvbnRlbnQtYm94LmJveC1xdW90ZTpiZWZvcmUge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5jb250ZW50LWJveC5ib3gtcXVvdGUgYmxvY2txdW90ZSB7XG4gICAgICBoeXBoZW5zOiBhdXRvO1xuICAgICAgY29sb3I6ICNmZjNlYjU7XG4gICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsgfVxuICAgIC5jb250ZW50LWJveC5ib3gtcXVvdGUgYmxvY2txdW90ZTpiZWZvcmUsIC5jb250ZW50LWJveC5ib3gtcXVvdGUgYmxvY2txdW90ZTphZnRlciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICBjb250ZW50OiAnwrsnOyB9XG4gICAgLmNvbnRlbnQtYm94LmJveC1xdW90ZSBibG9ja3F1b3RlOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICfCqyc7IH1cbiAgICAuY29udGVudC1ib3guYm94LXF1b3RlIC5hdXRob3Ige1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgICAuY29udGVudC1ib3gge1xuICAgICAgLyogQWxpZ25tZW50ICovIH1cbiAgICAgIC5jb250ZW50LWJveC5ib3gtYm90dG9tLCAuY29udGVudC1ib3guYm94LWNlbnRlciwgLmNvbnRlbnQtYm94LmJveC10b3Age1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cbiAgICAgICAgLmNvbnRlbnQtYm94LmJveC1ib3R0b206YmVmb3JlLCAuY29udGVudC1ib3guYm94LWNlbnRlcjpiZWZvcmUsIC5jb250ZW50LWJveC5ib3gtdG9wOmJlZm9yZSB7XG4gICAgICAgICAgbGVmdDogLTE0cHg7XG4gICAgICAgICAgdG9wOiAtMTBweDsgfVxuICAgICAgLmNvbnRlbnQtYm94LmJveC10b3Age1xuICAgICAgICB0b3A6IDglO1xuICAgICAgICBib3R0b206IGF1dG87IH1cbiAgICAgIC5jb250ZW50LWJveC5ib3gtYm90dG9tIHtcbiAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICBib3R0b206IDglOyB9XG4gICAgICAuY29udGVudC1ib3guYm94LWFyY2hpdiB7XG4gICAgICAgIHRvcDogMTUlO1xuICAgICAgICBib3R0b206IGF1dG87IH1cbiAgICAgIC5jb250ZW50LWJveC5ib3gtY2VudGVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICBib3R0b206IGF1dG87IH0gfVxuICBib2R5LmFyY2hpdmUtcGFnZSAuY29udGVudC1ib3guYm94LWJvdHRvbSB7XG4gICAgdG9wOiA0NSU7XG4gICAgYm90dG9tOiBhdXRvOyB9XG5cbi5pbWFnZSwgLmltYWdlLW92ZXJsYXkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuXG4uaW1hZ2Utb3ZlcmxheSAub3ZlcmxheSwgLmltYWdlLW92ZXJsYXkgLm92ZXJsYXk6OmJlZm9yZSB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTsgfVxuXG4uaW1hZ2Utb3ZlcmxheSAub3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwOyB9XG4gIC5pbWFnZS1vdmVybGF5IC5vdmVybGF5OmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNDEsIDAsIDE0OCwgMC41NSk7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuXG4uaW1hZ2Utb3ZlcmxheSAub3ZlcmxheS1jYXB0aW9uIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgZm9udC1zaXplOiAycmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogI0ZGRjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LWZhbWlseTogXCJBc3RvcmlhXCIsIHNhbnM7XG4gIHBhZGRpbmc6IDAgMCAxMHB4IDEwcHg7IH1cblxuLmltYWdlLW92ZXJsYXk6aG92ZXIgLm92ZXJsYXk6OmJlZm9yZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTsgfVxuXG4uaW1hZ2UtZGV0YWlscyB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiA0MHB4IDAgMCAxMi41JTsgfVxuICAuaW1hZ2UtZGV0YWlsczpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGhlaWdodDogMTRweDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBsZWZ0OiAtMTVweDtcbiAgICB0b3A6IC0xMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi9pbWFnZXMvZG9ybmVuLXN5bWJvbC1waW5rLnN2Z1wiKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcywgdmlzaWJpbGl0eSAuM3M7IH1cblxuLnNjcm9sbC1kb3duLWFycm93IHtcbiAgYW5pbWF0aW9uOiBmYWRlSW4gMXMgZWFzZSA1cyAxIGJvdGg7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKTtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgaGVpZ2h0OiAyNnB4O1xuICB3aWR0aDogNDNweDtcbiAgYmFja2dyb3VuZC1zaXplOiA0M3B4IDI2cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAxMnB4O1xuICBsZWZ0OiA1MCU7XG4gIG1hcmdpbi1sZWZ0OiAtMjFweDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkge1xuICAgIC5zY3JvbGwtZG93bi1hcnJvdyB7XG4gICAgICBhbmltYXRpb246IGZhZGVJbiAxcyBlYXNlIDVzIDEgYm90aCwgYm91bmNlIDMuNXMgZWFzZSA3LjVzIGluZmluaXRlIGJvdGg7IH0gfVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5Eb3duUm9zYVNjaGFwaXJlTG9nbyB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNTAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9IH1cblxuLmhlYWRlci1zZWN0aW9uIHtcbiAgcGFkZGluZy1ib3R0b206IDA7IH1cbiAgLmhlYWRlci1zZWN0aW9uIC5icmFuZGluZy1jb250YWluZXIge1xuICAgIGhlaWdodDogNjYuNjY2JTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9ncmV5LWJhY2tncm91bmQuanBnXCIpIG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsgfVxuICAuaGVhZGVyLXNlY3Rpb24gLmJyYW5kaW5nLWNvbnRhaW5lciAuY29udGVudC13cmFwcGVyLFxuICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCAuY29udGVudC13cmFwcGVyIHtcbiAgICBoZWlnaHQ6IDEwMCU7IH1cbiAgLmhlYWRlci1zZWN0aW9uIC5sb2dvLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuICAuaGVhZGVyLXNlY3Rpb24gLnJvc2Etc2NoYXBpcmUtdGV4dCB7XG4gICAgd2lkdGg6IDQwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTtcbiAgICBhbmltYXRpb246IHNsaWRlSW5Eb3duIDFzIGVhc2UgMnMgMSBub3JtYWwgYm90aDtcbiAgICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd25Sb3NhU2NoYXBpcmVMb2dvOyB9XG4gICAgLmhlYWRlci1zZWN0aW9uIC5yb3NhLXNjaGFwaXJlLXRleHQgLnNwcml0ZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNjguMzQ4NjIzOSU7IH1cbiAgICAgIC5oZWFkZXItc2VjdGlvbiAucm9zYS1zY2hhcGlyZS10ZXh0IC5zcHJpdGUgc3ZnIHtcbiAgICAgICAgY29sb3I6ICNmZjNlYjU7IH1cbiAgLmhlYWRlci1zZWN0aW9uIC5yb3NhLXNjaGFwaXJlLXN5bWJvbCB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOyB9XG4gIC5oZWFkZXItc2VjdGlvbiAucm9zYS1zY2hhcGlyZS1sb2dvIHtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgcGFkZGluZzogMCAyMHB4OyB9XG4gICAgLmhlYWRlci1zZWN0aW9uIC5yb3NhLXNjaGFwaXJlLWxvZ28gLnNwcml0ZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNDUuODUwMzQwMTM2JTsgfVxuICAgICAgLmhlYWRlci1zZWN0aW9uIC5yb3NhLXNjaGFwaXJlLWxvZ28gLnNwcml0ZSBzdmcge1xuICAgICAgICBjb2xvcjogIzdkNzI2NjsgfVxuICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCB7XG4gICAgaGVpZ2h0OiAzMy4zMzMlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCAuaGVhZGVyLW5hdmlnYXRpb24ge1xuICAgICAgaGVpZ2h0OiAxMDAlOyB9XG4gICAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgdWwge1xuICAgICAgYW5pbWF0aW9uOiBzbGlkZUluVXAgMXMgZWFzZSAxcyAxIG5vcm1hbCBib3RoO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICBoZWlnaHQ6IDEwMCU7IH1cbiAgICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCBhIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwJTsgfVxuICAgICAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgYTpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCBsaSB7XG4gICAgICBmb250LWZhbWlseTogXCJBc3RvcmlhXCIsIHNhbnM7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgY29sb3I6ICM5MTkxOTE7XG4gICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcywgZmlsdGVyIC4zcztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMCkgYW5kIChtYXgtd2lkdGg6IDIzLjc1ZW0pIHtcbiAgICAgICAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgbGkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07IH0gfVxuICAgICAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgbGk6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGxlZnQ6IC0xNHB4O1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybChcIi4uL2ltYWdlcy9kb3JuZW4tc3ltYm9sLXBpbmsuc3ZnXCIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcywgdmlzaWJpbGl0eSAuM3M7IH1cbiAgICAgIC5oZWFkZXItc2VjdGlvbiAubmF2aWdhdGlvbi1jb250ZW50IGxpOmhvdmVyLCAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCBsaTphY3RpdmUge1xuICAgICAgICBjb2xvcjogI2ZmM2ViNTsgfVxuICAgICAgICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCBsaTpob3ZlcjpiZWZvcmUsIC5oZWFkZXItc2VjdGlvbiAubmF2aWdhdGlvbi1jb250ZW50IGxpOmFjdGl2ZTpiZWZvcmUge1xuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgb3BhY2l0eTogMTsgfVxuICAgIC5mbGV4Ym94LmZsZXh3cmFwIC5oZWFkZXItc2VjdGlvbiAubmF2aWdhdGlvbi1jb250ZW50IHVsIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyOyB9XG4gICAgLmZsZXhib3guZmxleHdyYXAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgbGkge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuICAgIC5mbGV4Ym94LmZsZXh3cmFwIC5oZWFkZXItc2VjdGlvbiAubmF2aWdhdGlvbi1jb250ZW50IGEge1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDsgfVxuICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUxLjkzNzVlbSkge1xuICAgIC5oZWFkZXItc2VjdGlvbiAucm9zYS1zY2hhcGlyZS10ZXh0IHtcbiAgICAgIHdpZHRoOiAzMCU7IH1cbiAgICAuaGVhZGVyLXNlY3Rpb24gLmJyYW5kaW5nLWNvbnRhaW5lciB7XG4gICAgICBoZWlnaHQ6IDgwJTsgfVxuICAgICAgLmhlYWRlci1zZWN0aW9uIC5icmFuZGluZy1jb250YWluZXIgbGk6aG92ZXIsXG4gICAgICAuaGVhZGVyLXNlY3Rpb24gLmJyYW5kaW5nLWNvbnRhaW5lciBsaTphY3RpdmUge1xuICAgICAgICBmb250LXNpemU6IDMycHg7IH1cbiAgICAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCB7XG4gICAgICBoZWlnaHQ6IDIwJTsgfVxuICAgICAgLmhlYWRlci1zZWN0aW9uIC5uYXZpZ2F0aW9uLWNvbnRlbnQgYSB7XG4gICAgICAgIHdpZHRoOiAyNSU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwOyB9XG4gICAgICAuZmxleGJveC5mbGV4d3JhcCAuaGVhZGVyLXNlY3Rpb24gLm5hdmlnYXRpb24tY29udGVudCBhIHtcbiAgICAgICAgd2lkdGg6IGF1dG87IH0gfVxuXG4uZm9vdGVyLWNvbnRhaW5lciB7XG4gIGhlaWdodDogMzNweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICM3ZDcyNjY7XG4gIGNvbG9yOiAjRkZGO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGVhcjogYm90aDsgfVxuICAuZm9vdGVyLWNvbnRhaW5lciAuZm9vdGVyIHtcbiAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvOyB9XG4gIC5mb290ZXItY29udGFpbmVyIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZsb2F0OiByaWdodDsgfVxuICAuZm9vdGVyLWNvbnRhaW5lciBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwIDEycHg7IH1cbiAgLmZvb3Rlci1jb250YWluZXIgbGksIC5mb290ZXItY29udGFpbmVyIGEge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgIGhlaWdodDogMzNweDtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbiAgLmZvb3Rlci1jb250YWluZXIgbGkgYSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuICAgIC5mb290ZXItY29udGFpbmVyIGxpIGE6OmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvcmRlci13aWR0aDogMCAwIDFweCAwO1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGJvcmRlci1jb2xvcjogI0ZGRjtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAsIDEsIDEpO1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHM7XG4gICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMiwgMSwgMC4zLCAxKTtcbiAgICAgIHdpZHRoOiA4MCU7XG4gICAgICBsZWZ0OiAxMCU7XG4gICAgICBoZWlnaHQ6IDgwJTtcbiAgICAgIHRvcDogMnB4OyB9XG4gICAgLmZvb3Rlci1jb250YWluZXIgbGkgYTpob3Zlcjo6YmVmb3JlLCAuZm9vdGVyLWNvbnRhaW5lciBsaSBhOmFjdGl2ZTo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTsgfVxuICAuZm9vdGVyLWNvbnRhaW5lciAuZmFjZWJvb2staWNvbiB7XG4gICAgd2lkdGg6IDdweDtcbiAgICBoZWlnaHQ6IDMzcHg7IH1cbiAgICAuZm9vdGVyLWNvbnRhaW5lciAuZmFjZWJvb2staWNvbiBhIHtcbiAgICAgIHBvc2l0aW9uOiBpbmhlcml0O1xuICAgICAgZGlzcGxheTogaW5oZXJpdDsgfVxuICAgICAgLmZvb3Rlci1jb250YWluZXIgLmZhY2Vib29rLWljb24gYTo6YmVmb3JlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5mb290ZXItY29udGFpbmVyIC5mYWNlYm9vay1pY29uIC5zcHJpdGUge1xuICAgICAgcGFkZGluZy1ib3R0b206IDIxMS4xMTExMSU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207IH1cbiAgICAuZm9vdGVyLWNvbnRhaW5lciAuZmFjZWJvb2staWNvbiAuc3ByaXRlIHN2ZyB7XG4gICAgICBjb2xvcjogI2ZmM2ViNTtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zczsgfVxuICAgIC5mb290ZXItY29udGFpbmVyIC5mYWNlYm9vay1pY29uOmFjdGl2ZSAuc3ByaXRlIHN2ZyxcbiAgICAuZm9vdGVyLWNvbnRhaW5lciAuZmFjZWJvb2staWNvbjpob3ZlciAuc3ByaXRlIHN2ZyB7XG4gICAgICBjb2xvcjogI0ZGRjsgfVxuXG4uY2xhaW0tc2VjdGlvbiB7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLmNsYWltLXNlY3Rpb24gLmNsYWltLXRleHQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICAgIHdpZHRoOiA5My43NSU7XG4gICAgbGVmdDogNi4yNSU7XG4gICAgbWFyZ2luOiA3MHB4IDA7IH1cbiAgICAuY2xhaW0tc2VjdGlvbiAuY2xhaW0tdGV4dCBoMSB7XG4gICAgICBmb250LXNpemU6IDIuNXJlbTtcbiAgICAgIGNvbG9yOiAjZmYzZWI1O1xuICAgICAgZm9udC1mYW1pbHk6IFwiQXN0b3JpYVwiLCBzYW5zO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICBoeXBoZW5zOiBhdXRvOyB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDAuMDYyNWVtKSB7XG4gICAgLmNsYWltLXNlY3Rpb24gLmNsYWltLXRleHQgaDEge1xuICAgICAgZm9udC1zaXplOiAzLjEyNXJlbTsgfSB9XG4gIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTEuOTM3NWVtKSB7XG4gICAgLmNsYWltLXNlY3Rpb24gLmNsYWltLXRleHQge1xuICAgICAgdG9wOiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICBtYXJnaW46IDA7IH0gfVxuXG4uaW1hZ2Utc291cmNlcyB7XG4gIG1hcmdpbjogMTAlIDAgMTAlOyB9XG4gIC5pbWFnZS1zb3VyY2VzIGgyIHtcbiAgICBjb2xvcjogI2ZmM2ViNTsgfVxuXG4uY29udGFpbmVyLW1ldGEge1xuICBwYWRkaW5nLXRvcDogMTAycHg7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7IH1cbiAgLmNvbnRhaW5lci1tZXRhIGgxLCAuY29udGFpbmVyLW1ldGEgaDIsIC5jb250YWluZXItbWV0YSBoMyB7XG4gICAgY29sb3I6ICNmZjNlYjU7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MS45Mzc1ZW0pIHtcbiAgICAuY29udGFpbmVyLW1ldGEge1xuICAgICAgcGFkZGluZy10b3A6IDglOyB9IH1cblxuLmFyY2hpdi1pdGVtIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgZm9udC1zaXplOiAxLjVyZW07IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIHtcbiAgICAuYXJjaGl2LWl0ZW0ge1xuICAgICAgZm9udC1zaXplOiAxLjg3NXJlbTsgfSB9XG5cbi5hcmNoaXYteWVhciB7XG4gIGZsb2F0OiBsZWZ0O1xuICBjb2xvcjogI2ZmM2ViNTtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLmFyY2hpdi1ib2R5IHtcbiAgbWFyZ2luLWxlZnQ6IDUwcHg7IH1cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIHtcbiAgICAuYXJjaGl2LWJvZHkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDk0cHg7IH0gfVxuICAuYXJjaGl2LWJvZHkgaDIsXG4gIC5hcmNoaXYtYm9keSBoMyB7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtOyB9XG4gICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MC4wNjI1ZW0pIHtcbiAgICAgIC5hcmNoaXYtYm9keSBoMixcbiAgICAgIC5hcmNoaXYtYm9keSBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOyB9IH1cbiIsIi8qISBub3JtYWxpemUuY3NzIHYzLjAuMyB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyoqXG4gKiAxLiBTZXQgZGVmYXVsdCBmb250IGZhbWlseSB0byBzYW5zLXNlcmlmLlxuICogMi4gUHJldmVudCBpT1MgYW5kIElFIHRleHQgc2l6ZSBhZGp1c3QgYWZ0ZXIgZGV2aWNlIG9yaWVudGF0aW9uIGNoYW5nZSxcbiAqICAgIHdpdGhvdXQgZGlzYWJsaW5nIHVzZXIgem9vbS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IC8qIDEgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDIgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgbWFyZ2luLlxuICovXG5cbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8qIEhUTUw1IGRpc3BsYXkgZGVmaW5pdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQ29ycmVjdCBgYmxvY2tgIGRpc3BsYXkgbm90IGRlZmluZWQgZm9yIGFueSBIVE1MNSBlbGVtZW50IGluIElFIDgvOS5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgZGV0YWlsc2Agb3IgYHN1bW1hcnlgIGluIElFIDEwLzExXG4gKiBhbmQgRmlyZWZveC5cbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBgbWFpbmAgaW4gSUUgMTEuXG4gKi9cblxuYXJ0aWNsZSxcbmFzaWRlLFxuZGV0YWlscyxcbmZpZ2NhcHRpb24sXG5maWd1cmUsXG5mb290ZXIsXG5oZWFkZXIsXG5oZ3JvdXAsXG5tYWluLFxubWVudSxcbm5hdixcbnNlY3Rpb24sXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgaW5saW5lLWJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGluIElFIDgvOS5cbiAqIDIuIE5vcm1hbGl6ZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2YgYHByb2dyZXNzYCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xuXG5hdWRpbyxcbmNhbnZhcyxcbnByb2dyZXNzLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUHJldmVudCBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lOiAwO1xufVxuXG4vKiBUZXh0LWxldmVsIHNlbWFudGljc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGUgc2V0IHRvIGBib2xkZXJgIGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5iLFxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmRmbiB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHZhcmlhYmxlIGBoMWAgZm9udC1zaXplIGFuZCBtYXJnaW4gd2l0aGluIGBzZWN0aW9uYCBhbmQgYGFydGljbGVgXG4gKiBjb250ZXh0cyBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuaDEge1xuICBmb250LXNpemU6IDJlbTtcbiAgbWFyZ2luOiAwLjY3ZW0gMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxpbmcgbm90IHByZXNlbnQgaW4gSUUgOC85LlxuICovXG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kOiAjZmYwO1xuICBjb2xvcjogIzAwMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBhbmQgdmFyaWFibGUgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcbiAqIFByZXZlbnQgYHN1YmAgYW5kIGBzdXBgIGFmZmVjdGluZyBgbGluZS1oZWlnaHRgIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSBib3JkZXIgd2hlbiBpbnNpZGUgYGFgIGVsZW1lbnQgaW4gSUUgOC85LzEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlcjogMDtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxucHJlLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgICBLbm93biBpc3N1ZTogYWZmZWN0cyBjb2xvciBvZiBkaXNhYmxlZCBlbGVtZW50cy5cbiAqIDIuIENvcnJlY3QgZm9udCBwcm9wZXJ0aWVzIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAzLiBBZGRyZXNzIG1hcmdpbnMgc2V0IGRpZmZlcmVudGx5IGluIEZpcmVmb3ggNCssIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBjb2xvcjogaW5oZXJpdDsgLyogMSAqL1xuICBmb250OiBpbmhlcml0OyAvKiAyICovXG4gIG1hcmdpbjogMDsgLyogMyAqL1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYG92ZXJmbG93YCBzZXQgdG8gYGhpZGRlbmAgaW4gSUUgOC85LzEwLzExLlxuICovXG5cbmJ1dHRvbiB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGB0ZXh0LXRyYW5zZm9ybWAgaW5oZXJpdGFuY2UgZm9yIGBidXR0b25gIGFuZCBgc2VsZWN0YC5cbiAqIEFsbCBvdGhlciBmb3JtIGNvbnRyb2wgZWxlbWVudHMgZG8gbm90IGluaGVyaXQgYHRleHQtdHJhbnNmb3JtYCB2YWx1ZXMuXG4gKiBDb3JyZWN0IGBidXR0b25gIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3gsIElFIDgvOS8xMC8xMSwgYW5kIE9wZXJhLlxuICogQ29ycmVjdCBgc2VsZWN0YCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LlxuICovXG5cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIEF2b2lkIHRoZSBXZWJLaXQgYnVnIGluIEFuZHJvaWQgNC4wLiogd2hlcmUgKDIpIGRlc3Ryb3lzIG5hdGl2ZSBgYXVkaW9gXG4gKiAgICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgICBgaW5wdXRgIGFuZCBvdGhlcnMuXG4gKi9cblxuYnV0dG9uLFxuaHRtbCBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5pbnB1dFt0eXBlPVwicmVzZXRcIl0sXG5pbnB1dFt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDIgKi9cbiAgY3Vyc29yOiBwb2ludGVyOyAvKiAzICovXG59XG5cbi8qKlxuICogUmUtc2V0IGRlZmF1bHQgY3Vyc29yIGZvciBkaXNhYmxlZCBlbGVtZW50cy5cbiAqL1xuXG5idXR0b25bZGlzYWJsZWRdLFxuaHRtbCBpbnB1dFtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IGRlZmF1bHQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIGJvcmRlciBpbiBGaXJlZm94IDQrLlxuICovXG5cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcbmlucHV0OjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgRmlyZWZveCA0KyBzZXR0aW5nIGBsaW5lLWhlaWdodGAgb24gYGlucHV0YCB1c2luZyBgIWltcG9ydGFudGAgaW5cbiAqIHRoZSBVQSBzdHlsZXNoZWV0LlxuICovXG5cbmlucHV0IHtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbn1cblxuLyoqXG4gKiBJdCdzIHJlY29tbWVuZGVkIHRoYXQgeW91IGRvbid0IGF0dGVtcHQgdG8gc3R5bGUgdGhlc2UgZWxlbWVudHMuXG4gKiBGaXJlZm94J3MgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXNwZWN0IGJveC1zaXppbmcsIHBhZGRpbmcsIG9yIHdpZHRoLlxuICpcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICovXG5cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEZpeCB0aGUgY3Vyc29yIHN0eWxlIGZvciBDaHJvbWUncyBpbmNyZW1lbnQvZGVjcmVtZW50IGJ1dHRvbnMuIEZvciBjZXJ0YWluXG4gKiBgZm9udC1zaXplYCB2YWx1ZXMgb2YgdGhlIGBpbnB1dGAsIGl0IGNhdXNlcyB0aGUgY3Vyc29yIHN0eWxlIG9mIHRoZVxuICogZGVjcmVtZW50IGJ1dHRvbiB0byBjaGFuZ2UgZnJvbSBgZGVmYXVsdGAgdG8gYHRleHRgLlxuICovXG5cbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYGFwcGVhcmFuY2VgIHNldCB0byBgc2VhcmNoZmllbGRgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICogMi4gQWRkcmVzcyBgYm94LXNpemluZ2Agc2V0IHRvIGBib3JkZXItYm94YCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgc2VhcmNoIGNhbmNlbCBidXR0b24gaW4gU2FmYXJpIGFuZCBDaHJvbWUgb24gT1MgWC5cbiAqIFNhZmFyaSAoYnV0IG5vdCBDaHJvbWUpIGNsaXBzIHRoZSBjYW5jZWwgYnV0dG9uIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBoYXNcbiAqIHBhZGRpbmcgKGFuZCBgdGV4dGZpZWxkYCBhcHBlYXJhbmNlKS5cbiAqL1xuXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiBEZWZpbmUgY29uc2lzdGVudCBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcuXG4gKi9cblxuZmllbGRzZXQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjYzBjMGMwO1xuICBtYXJnaW46IDAgMnB4O1xuICBwYWRkaW5nOiAwLjM1ZW0gMC42MjVlbSAwLjc1ZW07XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCBgY29sb3JgIG5vdCBiZWluZyBpbmhlcml0ZWQgaW4gSUUgOC85LzEwLzExLlxuICogMi4gUmVtb3ZlIHBhZGRpbmcgc28gcGVvcGxlIGFyZW4ndCBjYXVnaHQgb3V0IGlmIHRoZXkgemVybyBvdXQgZmllbGRzZXRzLlxuICovXG5cbmxlZ2VuZCB7XG4gIGJvcmRlcjogMDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIERvbid0IGluaGVyaXQgdGhlIGBmb250LXdlaWdodGAgKGFwcGxpZWQgYnkgYSBydWxlIGFib3ZlKS5cbiAqIE5PVEU6IHRoZSBkZWZhdWx0IGNhbm5vdCBzYWZlbHkgYmUgY2hhbmdlZCBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYLlxuICovXG5cbm9wdGdyb3VwIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi8qIFRhYmxlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgbW9zdCBzcGFjaW5nIGJldHdlZW4gdGFibGUgY2VsbHMuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIHBhZGRpbmc6IDA7XG59XG4iLCJAaW1wb3J0ICdiYXNlL25vcm1hbGl6ZSc7XG5AaW1wb3J0ICdiYXNlL2NvbG9ycyc7XG5AaW1wb3J0ICdmdW5jdGlvbnMnO1xuQGltcG9ydCAnYmFzZS9taXhpbnMnO1xuQGltcG9ydCAnYmFzZS92YXJpYWJsZXMnO1xuQGltcG9ydCAnYmFzZS9ncmlkJztcbkBpbXBvcnQgJ2Jhc2UvdHlwb2dyYXBoeSc7XG5AaW1wb3J0ICdiYXNlL2FuaW1hdGlvbic7XG5AaW1wb3J0ICdiYXNlL3Zpc2liaWxpdHknO1xuXG5AaW1wb3J0ICdiYXNlL2dsb2JhbCc7XG5cbi8vIFdlIGRvbid0IHVzZSB0aGlzIGZvciBub3dcbi8vIEBpbXBvcnQgJ2dlbmVyYXRlZC9pY29ucyc7XG5cbi8vIERlcGVuZGVuY2llcyBmcm9tIGV4dGVybmFsIGxpYnJhcmllc1xuLy8gQGltcG9ydCAnfmZ1bGxwYWdlLmpzL2pxdWVyeS5mdWxsUGFnZS5zY3NzJztcbkBpbXBvcnQgJ35mdWxscGFnZS5qcy9kaXN0L2pxdWVyeS5mdWxscGFnZS5jc3MnO1xuQGltcG9ydCAnfm1hZ25pZmljLXBvcHVwL3NyYy9jc3MvbWFpbic7XG5cbkBpbXBvcnQgJ2dlbmVyYWwvbmF2aWdhdGlvbic7XG5AaW1wb3J0ICdnZW5lcmFsL3NlY3Rpb24nO1xuQGltcG9ydCAnZ2VuZXJhbC9jb250ZW50LXNlY3Rpb24nO1xuQGltcG9ydCAnZ2VuZXJhbC9jb250ZW50LWJveCc7XG5AaW1wb3J0ICdnZW5lcmFsL2ltYWdlJztcbkBpbXBvcnQgJ2dlbmVyYWwvc2Nyb2xsLWRvd24nO1xuXG5AaW1wb3J0ICdwYXJ0cy9oZWFkZXInO1xuQGltcG9ydCAncGFydHMvZm9vdGVyJztcbkBpbXBvcnQgJ3BhcnRzL2NsYWltJztcbkBpbXBvcnQgJ3BhcnRzL2ltYWdlLXNvdXJjZXMnO1xuQGltcG9ydCAncGFydHMvcGFnZS1tZXRhJztcblxuQGltcG9ydCAnYmFzZS9hcmNoaXYnO1xuIiwiLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfCBTaWxlbnQgY2xhc3Nlc1xuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4lZ3JpZGxlLXBpZS1jbGVhcmZpeCB7XG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiLlwiO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGNsZWFyOiBib3RoO1xuXHRcdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0XHRsaW5lLWhlaWdodDogMDtcblx0XHRoZWlnaHQ6IDA7XG5cdH1cblx0IFxuXHQmIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdH1cblx0IFxuXHRodG1sW3htbG5zXSAmIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXHQgXG5cdCogaHRtbCAmIHtcblx0XHRoZWlnaHQ6IDElO1xuXHR9XG59XG4lZ3JpZGxlLXNpbXBsZS1jbGVhcmZpeCB7XG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0Y2xlYXI6IGJvdGg7XG5cdFx0Ym9yZGVyLXNwYWNpbmc6MDtcblx0fVxufVxuJWdyaWRsZS1jbGVhcmZpeCB7XG5cdC8vIEZvciBtb2Rlcm4gYnJvd3NlclxuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDpcIlwiO1xuXHRcdGRpc3BsYXk6dGFibGU7XG5cdFx0Ym9yZGVyLXNwYWNpbmc6MDtcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjpib3RoO1xuXHR9XG5cdC8vIEZvciBJRSA2LzcgKHRyaWdnZXIgaGFzTGF5b3V0XG5cdCYge1xuXHQgICB6b29tOjE7XG5cdH1cbn1cbiVncmlkbGUtcHVzaC1wdWxsLWRlYnVnLWJhY2tncm91bmQtY29tbW9uIHtcblx0YmFja2dyb3VuZC1zaXplOjUwcHggOTAlO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgNTAlO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtcbn1cbiVncmlkbGUtcHVzaC1wdWxsLWNvbW1vbiB7XG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xufVxuJWdyaWRsZS1jb250YWluZXItY29tbW9uIHtcblx0LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4lZ3JpZGxlLXBhcmVudC1jb21tb24ge1xuXHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbiVncmlkbGUtY29udGFpbmVyLWRlYnVnLWNvbW1vbiB7XG5cdGJhY2tncm91bmQtY29sb3I6I2Y1ZjVmNTtcbn1cbiVncmlkbGUtZ3JpZC1kZWJ1Zy1jb21tb24ge1xuXHQmOmJlZm9yZSxcblx0JjphZnRlciB7XG5cdFx0Y29udGVudDpcIlwiO1xuXHRcdGRpc3BsYXk6YmxvY2s7XG5cdFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBeVJwVkZoMFdFMU1PbU52YlM1aFpHOWlaUzU0YlhBQUFBQUFBRHcvZUhCaFkydGxkQ0JpWldkcGJqMGk3N3UvSWlCcFpEMGlWelZOTUUxd1EyVm9hVWg2Y21WVGVrNVVZM3ByWXpsa0lqOCtJRHg0T25odGNHMWxkR0VnZUcxc2JuTTZlRDBpWVdSdlltVTZibk02YldWMFlTOGlJSGc2ZUcxd2RHczlJa0ZrYjJKbElGaE5VQ0JEYjNKbElEVXVNeTFqTURFeElEWTJMakUwTlRZMk1Td2dNakF4TWk4d01pOHdOaTB4TkRvMU5qb3lOeUFnSUNBZ0lDQWdJajRnUEhKa1pqcFNSRVlnZUcxc2JuTTZjbVJtUFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eE9UazVMekF5THpJeUxYSmtaaTF6ZVc1MFlYZ3Ribk1qSWo0Z1BISmtaanBFWlhOamNtbHdkR2x2YmlCeVpHWTZZV0p2ZFhROUlpSWdlRzFzYm5NNmVHMXdQU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2SWlCNGJXeHVjenA0YlhCTlRUMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzk0WVhBdk1TNHdMMjF0THlJZ2VHMXNibk02YzNSU1pXWTlJbWgwZEhBNkx5OXVjeTVoWkc5aVpTNWpiMjB2ZUdGd0x6RXVNQzl6Vkhsd1pTOVNaWE52ZFhKalpWSmxaaU1pSUhodGNEcERjbVZoZEc5eVZHOXZiRDBpUVdSdlltVWdVR2h2ZEc5emFHOXdJRU5UTmlBb1RXRmphVzUwYjNOb0tTSWdlRzF3VFUwNlNXNXpkR0Z1WTJWSlJEMGllRzF3TG1scFpEb3dSa0V6TnpWRk5UZzFOamd4TVVVeU9VSTRSamhFTXpnNFF6TTRRalpGT0NJZ2VHMXdUVTA2Ukc5amRXMWxiblJKUkQwaWVHMXdMbVJwWkRvd1JrRXpOelZGTmpnMU5qZ3hNVVV5T1VJNFJqaEVNemc0UXpNNFFqWkZPQ0krSUR4NGJYQk5UVHBFWlhKcGRtVmtSbkp2YlNCemRGSmxaanBwYm5OMFlXNWpaVWxFUFNKNGJYQXVhV2xrT2pCR1FUTTNOVVV6T0RVMk9ERXhSVEk1UWpoR09FUXpPRGhETXpoQ05rVTRJaUJ6ZEZKbFpqcGtiMk4xYldWdWRFbEVQU0o0YlhBdVpHbGtPakJHUVRNM05VVTBPRFUyT0RFeFJUSTVRamhHT0VRek9EaERNemhDTmtVNElpOCtJRHd2Y21SbU9rUmxjMk55YVhCMGFXOXVQaUE4TDNKa1pqcFNSRVkrSUR3dmVEcDRiWEJ0WlhSaFBpQThQM2h3WVdOclpYUWdaVzVrUFNKeUlqOCsrNStCaFFBQUFBOUpSRUZVZU5waVlHQmdrQUlJTUFBQUh3QWJaSUJ0R2dBQUFBQkpSVTVFcmtKZ2dnPT0pO1xuXHRcdG1hcmdpbjoxMHB4IDA7XG5cdFx0cGFkZGluZzo1cHggMDtcblx0XHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0XHRjb2xvcjp3aGl0ZTtcblx0XHRmb250LXNpemU6MTFweDtcblx0XHQtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0LW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdFx0ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O1xuXHR9XG5cdGJhY2tncm91bmQtY29sb3I6I2RhZWZmNTtcbn1cbiVncmlkbGUtZ3JpZC1jb21tb24ge1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0bWluLWhlaWdodDoxcHg7XG5cblx0LXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXHQtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbn1cbiVncmlkbGUtcHJlZml4LWRlYnVnLWNvbW1vbiB7XG5cdGJhY2tncm91bmQtY29sb3I6I2RhZTdlOSAhaW1wb3J0YW50O1xufVxuJWdyaWRsZS1zdWZmaXgtZGVidWctY29tbW9uIHtcblx0YmFja2dyb3VuZC1jb2xvcjojZGFlN2U5ICFpbXBvcnRhbnQ7XG59IiwiLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfCBGdW5jdGlvbnNcbi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBTdHIgcmVwbGFjZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSAgJHN0cmluZyAgICBTdHJpbmcgdGhhdCB5b3Ugd2FudCB0byByZXBsYWNlXG4gKiBAcGFyYW0ge3N0cmluZ30gICRzdWJzdHIgICAgU3RyaW5nIHRoYXQgaXMgdG8gYmUgcmVwbGFjZWQgYnkgYCRuZXdzdWJzdHJgXG4gKiBAcGFyYW0ge3N0cmluZ30gICRuZXdzdWJzdHIgU3RyaW5nIHRoYXQgcmVwbGFjZXMgYCRzdWJzdHJgXG4gKiBAcGFyYW0ge251bWJlcip9ICRhbGwgICAgICAgRmxhZyBmb3IgcmVwbGFjZWluZyBhbGwgKDErKSBvciBub3QgKDApXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbkBmdW5jdGlvbiBzdHItcmVwbGFjZSgkc3RyaW5nLCAkc3Vic3RyLCAkbmV3c3Vic3RyLCAkYWxsOiAwKSB7XG5cdCRwb3NpdGlvbi1mb3VuZDogc3RyLWluZGV4KCRzdHJpbmcsICRzdWJzdHIpO1xuXHQkcHJvY2Vzc2VkOiAoKTtcblxuXHRAd2hpbGUgKCRwb3NpdGlvbi1mb3VuZCBhbmQgJHBvc2l0aW9uLWZvdW5kID4gMCkge1xuXHRcdCRsZW5ndGgtc3Vic3RyOiBzdHItbGVuZ3RoKCRzdWJzdHIpO1xuXHRcdCRwcm9jZXNzZWQ6IGFwcGVuZCgkcHJvY2Vzc2VkLCBzdHItc2xpY2UoJHN0cmluZywgMCwgJHBvc2l0aW9uLWZvdW5kIC0gMSkpO1xuXHRcdCRwcm9jZXNzZWQ6IGFwcGVuZCgkcHJvY2Vzc2VkLCAkbmV3c3Vic3RyKTtcblx0XHQkc3RyaW5nOiBzdHItc2xpY2UoJHN0cmluZywgJHBvc2l0aW9uLWZvdW5kICsgJGxlbmd0aC1zdWJzdHIpO1xuXG5cdFx0JHBvc2l0aW9uLWZvdW5kOiAwO1xuXG5cdFx0QGlmICgkYWxsID4gMCkge1xuXHRcdFx0JHBvc2l0aW9uLWZvdW5kOiBzdHItaW5kZXgoJHN0cmluZywgJHN1YnN0cik7XG5cdFx0fVxuXHR9XG5cblx0JHByb2Nlc3NlZDogYXBwZW5kKCRwcm9jZXNzZWQsICRzdHJpbmcpO1xuXHQkc3RyaW5nOiBcIlwiO1xuXG5cdEBlYWNoICRzIGluICRwcm9jZXNzZWQge1xuXHRcdCRzdHJpbmc6ICN7JHN0cmluZ30jeyRzfTtcblx0fVxuXG5cdEByZXR1cm4gJHN0cmluZztcbn1cblxuLyoqXG4gKiBNYXAgc2V0XG4gKlxuICogQHBhcmFtIFx0TWFwIFx0JG1hcCBcdFx0VGhlIG1hcCB0byB1c2VcbiAqIEBwYXJhbSBcdFN0cmluZyBcdCRrZXkgXHRcdFRoZSBrZXkgdG8gdXBkYXRlXG4gKiBAcGFyYW0gXHRNaXhlZCBcdCR2YWx1ZSBcdFx0VGhlIG5ldyB2YWx1ZVxuICogQHJldHVybiBcdE1hcCBcdFx0XHRUaGUgbmV3IG1hcFxuICovXG5AZnVuY3Rpb24gbWFwLXNldCgkbWFwLCAka2V5LCAkdmFsdWUpIHtcblx0JG5ldzogKCRrZXk6ICR2YWx1ZSk7XG5cdEByZXR1cm4gbWFwLW1lcmdlKCRtYXAsICRuZXcpO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBjb2x1bW4gd2lkdGggaW4gcGVyY2VudCBmb3IgdGhlIGdsb2JhbCBvciBhIHNwZWNpZmljIGNvbnRleHRcbiAqXG4gKiBAcGFyYW0gXHRpbnQgXHRcdCRjb2x1bW5zIFx0XHRcdFx0XHRUaGUgbnVtYmVyIG9mIGNvbHVtbnMgdG8gY2FsY3VsYXRlXG4gKiBAcGFyYW0gXHRpbnQgXHRcdCRjb250ZXh0IDogJGdyaWRsZS1jb2x1bW5zLWNvdW50IFx0IFx0VGhlIGNvbnRleHQgdG8gdXNlXG4gKiBAcmV0dXJuIFx0cGVyY2VudGFnZSBcdFx0XHRcdFx0XHRcdFRoZSB3aWR0aCBpbiBwZXJjZW50XG4gKi9cbkBmdW5jdGlvbiBncmlkbGVfZ2V0X2NvbHVtbl93aWR0aChcblx0JGNvbHVtbnMgOiAxLFxuXHQkc3RhdGVNYXAtb3Itc3RhdGVOYW1lIDogbnVsbFxuKSB7XG5cdEByZXR1cm4gcGVyY2VudGFnZSgxIC8gJGNvbnRleHQgKiAkY29sdW1ucyk7XG59XG5cblxuLyoqXG4gKiAgR2V0IGEgc3RhdGUgbWFwXG4gKlxuICogQHBhcmFtIFx0c3RyaW5nIFx0XHQkbmFtZSBcdFx0VGhlIG5hbWUgb2YgdGhlIHN0YXRlIHRvIGdldFxuICogQHJldHVybiBcdG1hcCBcdFx0XHRcdEEgc3RhdGUgbWFwIG9iamVjdFxuICovXG5AZnVuY3Rpb24gX2dyaWRsZV9nZXRfc3RhdGUoXG5cdCRzdGF0ZU1hcC1vci1zdGF0ZU5hbWVcbikge1xuXHQvLyBjaGVjayBpZiBoYXMgYSBzdGF0ZSBuYW1lZCBsaWtlIHRoaXNcblx0QGlmICh0eXBlLW9mKCRzdGF0ZU1hcC1vci1zdGF0ZU5hbWUpID09IHN0cmluZ1xuXHRcdGFuZCAgbWFwLWhhcy1rZXkoJF9ncmlkbGVfc3RhdGVzLCB1bnF1b3RlKFwiI3skc3RhdGVNYXAtb3Itc3RhdGVOYW1lfVwiKSkpXG5cdHtcblx0XHRAcmV0dXJuIG1hcC1nZXQoJF9ncmlkbGVfc3RhdGVzLCB1bnF1b3RlKFwiI3skc3RhdGVNYXAtb3Itc3RhdGVOYW1lfVwiKSk7XG5cdH1cblxuXHQvLyBhIG1hcCBpcyBwYXNzZWQsIHNvIGl0J3MgYSBzdGF0ZSBoaW1zZWxmXG5cdEBpZiAkc3RhdGVNYXAtb3Itc3RhdGVOYW1lXG5cdFx0YW5kIHR5cGUtb2YoJHN0YXRlTWFwLW9yLXN0YXRlTmFtZSkgPT0gbWFwXG5cdHtcblx0XHRAcmV0dXJuIG1hcC1tZXJnZSgkX2dyaWRsZS1zZXR0aW5ncywgJHN0YXRlTWFwLW9yLXN0YXRlTmFtZSk7XG5cdH1cblxuXHQvLyByZXR1cm4gdGhlIGRlZmF1bHQgb25lIGlmIGV4aXN0XG5cdEBpZiBtYXAtaGFzLWtleSgkX2dyaWRsZV9zdGF0ZXMsIGRlZmF1bHQpXG5cdHtcblx0XHRAcmV0dXJuIG1hcC1nZXQoJF9ncmlkbGVfc3RhdGVzLCBkZWZhdWx0KTtcblx0fVxuXG5cdC8vIG5vdGhpbmcgZmluZGVkLCByZXR1cm4gdGhlIGRlZmF1bHQgc3RhdGVcblx0QHJldHVybiAkX2dyaWRsZS1zZXR0aW5ncztcbn1cblxuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RhdGUgZXhpc3QgOlxuICpcbiAqIEBwYXJhbSBcdHN0cmluZyBcdFx0JG5hbWUgXHRcdFRoZSBuYW1lIG9mIHRoZSBzdGF0ZSB0byBjaGVja1xuICogQHJldHVybiBcdEJvb2xlYW4gXHRcdFx0dHJ1ZSBpcyBleGlzdFxuICovXG5AZnVuY3Rpb24gX2dyaWRsZV9oYXNfc3RhdGUoXG5cdCRzdGF0ZU5hbWVcbikge1xuXHRAaWYgbWFwLWhhcy1rZXkoJF9ncmlkbGVfc3RhdGVzLCB1bnF1b3RlKFwiI3skc3RhdGVOYW1lfVwiKSkge1xuXHRcdEByZXR1cm4gdHJ1ZTtcblx0fSBAZWxzZSB7XG5cdFx0QHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5cbi8qKlxuICogR2V0IHRoZSBtZWRpYSBxdWVyaWVzIHZhcmlhYmxlcyA6XG4gKlxuICogQHBhcmFtIFx0aW50IFx0XHQkaW5kZXggXHQgXHRUaGUgbWVkaWEgcXVlcnkgaW5kZXNcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JHZhciBcdFx0VGhlIG1lZGlhIHF1ZXJ5IHZhcmlhYmxlIG5hbWVcbiAqIEByZXR1cm4gXHRTdHJpbmd8aW50IFx0XHRcdFRoZSB2YXJpYWJsZSB2YWx1ZVxuICovXG5AZnVuY3Rpb24gX2dyaWRsZV9nZXRfc3RhdGVfdmFyKFxuXHQkc3RhdGVOYW1lLFxuXHQkdmFyIFx0OiBcIm5hbWVcIlxuKSB7XG5cblx0Ly8gZ2V0IHRoZSBzdGF0ZSA6XG5cdCRzdGF0ZSA6IF9ncmlkbGVfZ2V0X3N0YXRlKCRzdGF0ZU5hbWUpO1xuXG5cdC8vIGNoZWNrIGlnIHN0YXRlIGFuZCBpZiBoYXMgdGhlIHZhcmlhYmxlIDpcblx0QGlmICRzdGF0ZVxuXHRcdCAgYW5kIG1hcC1oYXMta2V5KCRzdGF0ZSx1bnF1b3RlKFwiI3skdmFyfVwiKSlcblx0e1xuXHRcdEByZXR1cm4gbWFwLWdldCgkc3RhdGUsdW5xdW90ZShcIiN7JHZhcn1cIikpO1xuXHR9XG5cblx0Ly8gbm90aGluZyBnZXR0ZWQgOlxuXHRAcmV0dXJuIG51bGw7XG59XG5cblxuLyoqXG4gKiBHZXQgYSB2YXJpYWJsZVxuICpcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JHZhck5hbWUgXHRcdFx0XHRUaGUgdmFyaWFibGUgbmFtZVxuICogQHBhcmFtICBcdFN0cmluZyBcdFx0JHN0YXRlTWFwLW9yLXN0YXRlTmFtZSBcdCBcdFRoZSBzdGF0ZSBuYW1lIG9yIGEgbWFwIHN0YXRlIHZhbHVlXG4gKiBAcmV0dXJuIFx0TWl4ZWQgXHRcdFx0XHRcdFx0XHRUaGUgZmluZGVkIHZhbHVlXG4gKi9cbkBmdW5jdGlvbiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoXG5cdCR2YXJOYW1lLFxuXHQkc3RhdGVNYXAtb3Itc3RhdGVOYW1lIDogbnVsbFxuKSB7XG5cdC8vIGlmIGlzIGEgc3RhdGUgOlxuXHQkc3RhdGUgOiBudWxsO1xuXG5cdC8vIGdldCB0aGUgc3RhdGUgKGlmIG5vIHN0YXRlIGZpbmQsIHJldHVybiB0aGUgZGVmYXVsdCBvbmUpIDpcblx0JHN0YXRlIDogX2dyaWRsZV9nZXRfc3RhdGUoJHN0YXRlTWFwLW9yLXN0YXRlTmFtZSk7XG5cblx0Ly8gZXh0ZW5kIGRlZmF1bHQgc3RhdGUgd2l0aCBnaXZlbiBzdGF0ZSA6XG5cdCRwcm9wcyA6IG1hcC1tZXJnZSgkX2dyaWRsZS1zZXR0aW5ncywgJHN0YXRlKTtcblxuXHRAaWYgbWFwLWhhcy1rZXkoJHByb3BzLCB1bnF1b3RlKFwiI3skdmFyTmFtZX1cIikpIHtcblx0XHRAcmV0dXJuIG1hcC1nZXQoJHN0YXRlLCB1bnF1b3RlKFwiI3skdmFyTmFtZX1cIikpO1xuXHR9XG5cdFxuXHQvLyBub3RoaW5nIGZpbmRlZCA6XG5cdEByZXR1cm4gbnVsbDtcbn1cblxuXG4vKipcbiAqIFNldCBhIHZhcmlhYmxlIGluIGEgc3RhdGVcbiAqIEBwYXJhbSBcdE1peGVkICRzdGF0ZU5hbWUtb3Itc3RhdGVJbmRleCBcdFRoZSBzdGF0ZSBuYW1lIG9mIHN0YXRlIGluZGV4XG4gKiBAcGFyYW0gIFx0U3RyaW5nICR2YXIgICAgICAgICAgICAgICAgICAgIFx0XHRWYXJpYWJsZSBuYW1lIHRvIGFzc2lnblxuICogQHBhcmFtICBcdE1peGVkICRuZXdWYWx1ZSAgICAgICAgICBcdFx0VGhlIG5ldyB2YWx1ZSB0byBhc3NpZ25cbiAqIEByZXR1cm4gXHRMaXN0ICAgICAgICAgICAgICAgICAgICAgICAgIFx0XHRcdFRoZSBzdGF0ZXMgbGlzdCAoZnVsbClcbiAqL1xuQGZ1bmN0aW9uIF9ncmlkbGVfc2V0X3N0YXRlX3Zhcihcblx0JHN0YXRlTmFtZSxcblx0JHZhcixcblx0JG5ld1ZhbHVlXG4pIHtcblx0Ly8gZ2V0IHRoZSBzdGF0ZSA6XG5cdCRzdGF0ZSA6IF9ncmlkbGVfZ2V0X3N0YXRlKCRzdGF0ZU5hbWUpO1xuXG5cdC8vIGNoZWNrIGlnIHN0YXRlIGFuZCBpZiBoYXMgdGhlIHZhcmlhYmxlIDpcblx0QGlmICRzdGF0ZVxuXHRcdCAgYW5kIG1hcC1oYXMta2V5KCRzdGF0ZSx1bnF1b3RlKFwiI3skdmFyfVwiKSlcblx0e1xuXHRcdC8vIHNldCBuZXcgdmFsdWUgaW4gc3RhdGUgOlxuXHRcdCRzdGF0ZSA6IG1hcC1zZXQoJHN0YXRlLCB1bnF1b3RlKFwiI3skdmFyfVwiKSwgJG5ld1ZhbHVlKTtcblxuXHRcdC8vIHNldCBzdGF0ZXMgOlxuXHRcdCRfZ3JpZGxlX3N0YXRlcyA6IG1hcC1zZXQoJF9ncmlkbGVfc3RhdGVzLCB1bnF1b3RlKFwiI3skc3RhdGVOYW1lfVwiKSwgJHN0YXRlKTtcblxuXHRcdC8vIHJldHVybiBuZXcgc3RhdGUgOlxuXHRcdEByZXR1cm4gJHN0YXRlO1xuXHR9XG5cblx0Ly8gbm90aGluZyBnZXR0ZWQgOlxuXHRAcmV0dXJuIG51bGw7XG59XG5cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGNvbHVtblxuICpcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JG5hbWUgXHRcdFx0VGhlIGNvbHVtbiBuYW1lIChvZnRlbiBjb3VudClcbiAqIEBwYXJhbSBcdGludCBcdFx0JGNvbHVtbnMgXHRcdFRoZSBjb2x1bW4gY291bnQgdGhhdCB0aGUgY29sdW1uIHdpbGwgdGFrZVxuICogQHBhcmFtIFx0aW50IFx0XHQkY29udGV4dCBcdFx0VGhlIGNvbnRleHQgb24gd2l0Y2ggdGhlIHdpdGggd2lsbCBiZSBjYWxjdWxlZFxuICogQHBhcmFtIFx0Qm9vbGVhbiBcdCRnZW5lcmF0ZUNsYXNzZXMgXHRTZXQgaWYgdGhlIGNvbHVtbiBoYXMgdG8gYmUgZ2VuZXJhdGVkIGluIGNzc1xuICovXG5AZnVuY3Rpb24gX2dyaWRsZV9jcmVhdGVfY29sdW1uKFxuXHQkbmFtZSxcblx0JGNvbHVtbnMsXG5cdCRjb250ZXh0LFxuXHQkbmFtZS1tdWx0aXBsaWNhdG9yIDogMSAvLyB1c2VkIHRvIGV4dGVuZCB0aGUgc3RhdGUgb24gY3VzdG9tIHJlZ2lzdGVyZWQgY29sdW1uc1xuKSB7XG5cdEByZXR1cm4gKFxuXHRcdG5hbWUgOiAkbmFtZSxcblx0XHRjb2x1bW5zIDogJGNvbHVtbnMsXG5cdFx0Y29udGV4dCA6ICRjb250ZXh0LFxuXHRcdG5hbWUtbXVsdGlwbGljYXRvciA6ICRuYW1lLW11bHRpcGxpY2F0b3Jcblx0KTtcbn1cblxuXG4vKipcbiAqIEdlbmVyYXRlIGNsYXNzbmFtZVxuICpcbiAqIEBwYXJhbSBcdExpc3QgXHRcdCRwYXJyZXJuIFx0VGhlIHBhdHRlcm4gdG8gdXNlIHRvIGdlbmVyYXRlIGNsYXNzbmFtZVxuICogQHBhcmFtIFx0U3RyaW5nIFx0XHQkc3RhdGUgXHRcdFRoZSBzdGF0ZVxuICogQHBhcmFtIFx0aW50IFx0XHQkY291bnQgXHRcdFRoZSBjb2x1bW4gY291bnRcbiAqL1xuQGZ1bmN0aW9uIF9ncmlkbGVfY2xhc3NuYW1lKFxuXHQkcGF0dGVybixcblx0JHN0YXRlIDogbnVsbCxcblx0JGNvdW50IDogbnVsbFxuKSB7XG5cblx0Ly8gaW5pdCBzZWxlY3RvciA6XG5cdCRzZWwgOiBcIi5cIjtcblxuXHQvLyBkZWxldGUgZGVmYXVsdCA6XG5cdEBpZiB1bnF1b3RlKFwiI3skc3RhdGV9XCIpID09IGRlZmF1bHQge1xuXHRcdCRzdGF0ZSA6IG51bGw7XG5cdH1cblx0XG5cdC8vIGFkZCBjbGFzcyBwcmVmaXggOlxuXHRAaWYgJGdyaWRsZS1jbGFzcy1wcmVmaXggYW5kICRncmlkbGUtY2xhc3MtcHJlZml4ICE9ICcnIHtcblx0XHQkc2VsIDogXCIjeyRzZWx9I3skZ3JpZGxlLWNsYXNzLXByZWZpeH1cIjtcblx0XHRAaWYgJGdyaWRsZS1jbGFzcy1zZXBhcmF0b3Ige1xuXHRcdFx0JHNlbCA6IFwiI3skc2VsfSN7JGdyaWRsZS1jbGFzcy1zZXBhcmF0b3J9XCI7XG5cdFx0fVxuXHR9XG5cblx0Ly8gY29uc3RydWN0IGNsYXNzIG5hbWUgOlxuXHQkaSA6IDE7XG5cdEBlYWNoICR2YXIgaW4gJHBhdHRlcm4ge1xuXHRcdFxuXHRcdC8vIHJlcGxhY2UgdG9rZW5zIDpcblx0XHRAaWYgJHZhciA9PSAnJXN0YXRlJyBhbmQgJHN0YXRlIHtcblx0XHRcdCRzZWwgOiBcIiN7JHNlbH0jeyRzdGF0ZX1cIjtcblx0XHR9IFxuXHRcdEBpZiAkdmFyID09ICclY291bnQnIGFuZCAkY291bnQge1xuXHRcdFx0JHNlbCA6IFwiI3skc2VsfSN7JGNvdW50fVwiO1xuXHRcdH0gIFxuXHRcdEBpZiAkdmFyICE9ICclc3RhdGUnIGFuZCAkdmFyICE9ICclY291bnQnIGFuZCAkdmFyICE9ICclLScgYW5kICR2YXIgIT0gJy0nIGFuZCAkdmFyICE9ICctLScgYW5kICR2YXIgIT0gJ18nIGFuZCAkdmFyICE9ICdfXycgYW5kICR2YXIgIT0gJyVwcmVmaXgnIHtcblx0XHRcdCRzZWwgOiBcIiN7JHNlbH0jeyR2YXJ9XCI7XG5cdFx0fVxuXG5cdFx0Ly8gaGFuZGxlIHNlcGFyYXRvcnMgOlxuXHRcdEBpZiAoJHZhciA9PSAnJS0nIG9yICR2YXIgPT0gJy0nIG9yICR2YXIgPT0gJy0tJyBvciAkdmFyID09ICdfJyBvciAkdmFyID09ICdfXycpIGFuZCAkaSA8IGxlbmd0aCgkcGF0dGVybikge1xuXHRcdFx0JGluZGV4IDogJGkgKyAxO1xuXHRcdFx0JHZhbHVlIDogbnRoKCRwYXR0ZXJuLCAkaW5kZXgpO1xuXHRcdFx0QGlmICR2YWx1ZSAhPSAnJXN0YXRlJyBhbmQgJHZhbHVlICE9ICclY291bnQnIGFuZCAkdmFsdWUgIT0gJyUtJyBhbmQgJHZhbHVlICE9ICctJyBhbmQgJHZhbHVlICE9ICctLScgYW5kICR2YWx1ZSAhPSAnXycgYW5kICR2YWx1ZSAhPSAnX18nIGFuZCAkdmFsdWUgIT0gJyVwcmVmaXgnIHtcblx0XHRcdFx0QGlmICR2YXIgPT0gJyUtJyB7XG5cdFx0XHRcdFx0JHNlbCA6IFwiI3skc2VsfSN7JGdyaWRsZS1jbGFzcy1zZXBhcmF0b3J9XCI7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdCRzZWwgOiBcIiN7JHNlbH0jeyR2YXJ9XCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdEBpZiAkdmFsdWUgPT0gJyVzdGF0ZScgYW5kICRzdGF0ZSB7XG5cdFx0XHRcdEBpZiAkdmFyID09ICclLScge1xuXHRcdFx0XHRcdCRzZWwgOiBcIiN7JHNlbH0jeyRncmlkbGUtY2xhc3Mtc2VwYXJhdG9yfVwiO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHQkc2VsIDogXCIjeyRzZWx9I3skdmFyfVwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRAaWYgJHZhbHVlID09ICclY291bnQnIGFuZCAkY291bnQge1xuXHRcdFx0XHRAaWYgJHZhciA9PSAnJS0nIHtcblx0XHRcdFx0XHQkc2VsIDogXCIjeyRzZWx9I3skZ3JpZGxlLWNsYXNzLXNlcGFyYXRvcn1cIjtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0JHNlbCA6IFwiI3skc2VsfSN7JHZhcn1cIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIHVwZGF0ZSBpIDpcblx0XHQkaSA6ICRpICsgMTtcblx0fVxuXG5cdC8vIHJldHVybiBnZW5lcmF0ZWQgY2xhc3MgOlxuXHRAcmV0dXJuICRzZWw7XG59XG5cblxuLyoqXG4gKiBHZXQgdGhlIG1lZGlhIHF1ZXJ5IGZvciBhIHBhcnRpY3VsYXIgc3RhdGUsIG9yIHdpdGgsIGV0Yy4uLlxuICpcbiAqIEBwYXJhbSBcdE1peGVkIFx0XHQkc3RhdGUtb3ItbWluLXdpZHRoIFx0XHRUaGUgc3RhdGUgbmFtZSBvZiB0aGUgbWluIHdpdGhcbiAqIEBwYXJhbSBcdE1peGVkIFx0XHQkbWF4LXdpZHRoIFx0XHRcdFRoZSBtYXggd2lkdGggaWYgZmlyc3QgcGFyYW0gaXMgYSBtaW4gd2lkdGhcbiAqIEByZXR1cm4gXHRTdHJpbmcgXHRcdFx0XHRcdFx0VGhlIG1lZGlhIHF1ZXJ5IHN0cmluZyB3aXRob3V0IHRoZSBAbWVkaWFcbiAqL1xuQGZ1bmN0aW9uIF9ncmlkbGVfZ2V0X21lZGlhX3F1ZXJ5KFxuXHQkc3RhdGUtb3Itc2V0dGluZ3Ncbikge1xuXHQvLyBjaGVjayBpZiBpcyBhIHN0cmluZyA6XG5cdCRzdGF0ZSA6IG51bGw7XG5cdEBpZiB0eXBlLW9mKCRzdGF0ZS1vci1zZXR0aW5ncykgPT0gc3RyaW5nXG5cdHtcblx0XHQkc3RhdGUgOiBfZ3JpZGxlX2dldF9zdGF0ZSgkc3RhdGUtb3Itc2V0dGluZ3MpO1xuXHR9XG5cdEBlbHNlIGlmICRzdGF0ZS1vci1zZXR0aW5ncyA9PSBudWxsXG5cdHtcblx0XHQkc3RhdGUgOiAkX2dyaWRsZS1zZXR0aW5ncztcblx0fVxuXHRAZWxzZVxuXHR7XG5cdFx0JHN0YXRlIDogbWFwLW1lcmdlKCRfZ3JpZGxlLXNldHRpbmdzLCAkc3RhdGUtb3Itc2V0dGluZ3MpO1xuXHR9XG5cblx0Ly8gaWYgaXQncyBzb21lIHNldHRpbmdzIG9yIGEgc3RhdGUgOlxuXHRAaWYgJHN0YXRlIHtcblxuXHRcdC8vIGdldCB2YXJzIDpcblx0XHQkbmFtZSA6IG1hcC1nZXQoJHN0YXRlLCBuYW1lKTtcblx0XHQkbWluLXdpZHRoIDogbWFwLWdldCgkc3RhdGUsIG1pbi13aWR0aCk7XG5cdFx0JG1heC13aWR0aCA6IG1hcC1nZXQoJHN0YXRlLCBtYXgtd2lkdGgpO1xuXHRcdCRxdWVyeSA6IG1hcC1nZXQoJHN0YXRlLCBxdWVyeSk7XG5cblx0XHQvLyBkaXJlY3QgcXVlcnkgOlxuXHRcdEBpZiAkcXVlcnlcblx0XHR7XG5cdFx0XHRAcmV0dXJuICRxdWVyeTtcblx0XHR9IFxuXHRcdEBlbHNlIGlmICRtaW4td2lkdGggYW5kICRtYXgtd2lkdGhcblx0XHR7XG5cdFx0XHRAcmV0dXJuIFwic2NyZWVuIGFuZCAobWluLXdpZHRoOiAjeyRtaW4td2lkdGh9KSBhbmQgKG1heC13aWR0aDogI3skbWF4LXdpZHRofSlcIjtcblx0XHR9XG5cdFx0QGVsc2UgaWYgJG1pbi13aWR0aFxuXHRcdHtcblx0XHRcdEByZXR1cm4gXCJzY3JlZW4gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pXCI7XG5cdFx0fVxuXHRcdEBlbHNlIGlmICRtYXgtd2lkdGhcblx0XHR7XG5cdFx0XHRAcmV0dXJuIFwic2NyZWVuIGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KVwiO1xuXHRcdH1cblx0XHRAZWxzZVxuXHRcdHtcblx0XHRcdEByZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0fSBcblx0QGVsc2Vcblx0e1xuXHRcdEByZXR1cm4gbnVsbDtcblx0fVxufVxuXG5cbi8qKlxuICogR2V0IHN0YXRlcyBjb3VudFxuICogXG4gKiBAcmV0dXJuIFx0aW50IFx0VGhlIG51bWJlciBvZiBzdGF0ZXMgZGVmaW5lZFxuICovXG5AZnVuY3Rpb24gX2dyaWRsZV9nZXRfc3RhdGVzX2NvdW50KCkge1xuXHRAcmV0dXJuIGxlbmd0aCgkX2dyaWRsZV9zdGF0ZXMpIC8gbGVuZ3RoKCRfZ3JpZGxlX3N0YXRlc192YXJzX3BhdHRlcm4pO1xufSIsIi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHwgU2V0dGluZ3MgbWl4aW5zXG4vLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogU2V0dXBcbiAqL1xuQG1peGluIGdyaWRsZV9zZXR1cChcblx0JHNldHRpbmdzIDogKClcbikge1xuXHQkX2dyaWRsZS1zZXR0aW5ncyA6IG1hcC1tZXJnZSgoXG5cdFx0bmFtZSA6IGRlZmF1bHQsXG5cdFx0bWluLXdpZHRoIDogbnVsbCxcblx0XHRtYXgtd2lkdGggOiBudWxsLFxuXHRcdHF1ZXJ5IDogbnVsbCxcblx0XHRjbGFzc2VzIDogdHJ1ZSxcblx0XHRjb250ZXh0IDogMTIsXG5cdFx0Z3V0dGVyLXdpZHRoIDogMjBweCxcblx0XHRkaXJlY3Rpb24gOiBsdHIsXG5cdFx0bmFtZS1tdWx0aXBsaWNhdG9yIDogMSxcblx0XHRkZWJ1ZyA6IGZhbHNlLFxuXHRcdGRlYnVnLXNob3ctY2xhc3MtbmFtZXMgOiB0cnVlLFxuXHRcdGllNy1zdXBwb3J0IDogZmFsc2UsXG5cdFx0aHRtbC1zdGF0ZXMtY2xhc3NlcyA6IGZhbHNlLFxuXHRcdGdlbmVyYXRlLXB1c2gtY2xhc3NlcyA6IHRydWUsXG5cdFx0Z2VuZXJhdGUtcHVsbC1jbGFzc2VzIDogdHJ1ZSxcblx0XHRnZW5lcmF0ZS1wcmVmaXgtY2xhc3NlcyA6IHRydWUsXG5cdFx0Z2VuZXJhdGUtc3VmZml4LWNsYXNzZXMgOiB0cnVlLFxuXHRcdGdlbmVyYXRlLWhlbHBlcnMtY2xhc3NlcyA6IHRydWVcblx0KSwgJHNldHRpbmdzKSAhZ2xvYmFsO1xuXG5cdC8vIHJlZ2lzdGVyIGRlZmF1bHQgc3RhdGUgOlxuXHRAaW5jbHVkZSBncmlkbGVfcmVnaXN0ZXJfc3RhdGUoZGVmYXVsdCwgJF9ncmlkbGUtc2V0dGluZ3MpO1xuXG59XG5cbi8vIFJlZ2lzdGVyIGFuIHN0YXRlIDpcbkBtaXhpbiBncmlkbGVfcmVnaXN0ZXJfc3RhdGUoXG5cdCRuYW1lLFxuXHQkc2V0dGluZ3Ncbikge1xuXHQvLyBzZXR0aW5ncyA6XG5cdCRzZXR0aW5ncyA6IG1hcC1tZXJnZSgkX2dyaWRsZS1zZXR0aW5ncywgJHNldHRpbmdzKTtcblxuXHQvLyBzZXQgbmFtZSA6XG5cdCRzZXR0aW5ncyA6IG1hcC1zZXQoJHNldHRpbmdzLCBuYW1lLCAkbmFtZSk7XG5cblx0Ly8gYWRkIHN0YXRlIGluIG1hcHMgOlxuXHQkX2dyaWRsZV9zdGF0ZXMgOiBtYXAtc2V0KCRfZ3JpZGxlX3N0YXRlcywgJG5hbWUsICRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuXG4vKipcbiAqICBSZWdpc3RlciBhIGNsZWFyIGVhY2ggY2xhc3NcbiAqL1xuQG1peGluIGdyaWRsZV9yZWdpc3Rlcl9jbGVhcl9lYWNoKFxuXHQkY291bnQsXG5cdCRjbGVhcldoYXRcbikge1xuXHQvLyBjcmVhdGUgdGhlIGNsZWFyIG1hcCA6XG5cdCRjbGFzc01hcCA6IChcblx0XHRjbGVhckVhY2ggOiAkY291bnQsXG5cdFx0Y2xlYXJXaGF0IDogJGNsZWFyV2hhdFxuXHQpO1xuXG5cdC8vIGFwcGVuZCB0byBtYXAgOlxuXHQkX2dyaWRsZV9jbGVhcl9jbGFzc2VzIDogbWFwLXNldCgkX2dyaWRsZV9jbGVhcl9jbGFzc2VzLCAkY291bnQsICRjbGFzc01hcCkgIWdsb2JhbDtcbn1cblxuXG4vKipcbiAqIFJlZ2lzdGVyIGEgc3BlY2lhbCBjbGFzc1xuICovXG5AbWl4aW4gZ3JpZGxlX3JlZ2lzdGVyX2NvbHVtbihcblx0JG5hbWUsXG5cdCRjb2x1bW5zLFxuXHQkY29udGV4dFxuKSB7XG5cdC8vIGNyZWF0ZSBhIGNvbHVtbiA6XG5cdCRjb2wgOiBfZ3JpZGxlX2NyZWF0ZV9jb2x1bW4oJG5hbWUsICRjb2x1bW5zLCAkY29udGV4dCk7XG5cblx0Ly8gYWRkIGNvbHVtbiBpbiBtYXBzIDpcblx0JF9ncmlkbGVfY29sdW1ucyA6IG1hcC1zZXQoJF9ncmlkbGVfY29sdW1ucywgJG5hbWUsICRjb2wpICFnbG9iYWw7XG59XG5cblxuLyoqXG4gKiBSZWdpc3RlciBkZWZhdWx0IHN0YXRlc1xuICovXG5AbWl4aW4gZ3JpZGxlX3JlZ2lzdGVyX2RlZmF1bHRfc3RhdGVzKCkge1xuXHRAaW5jbHVkZSBncmlkbGVfcmVnaXN0ZXJfc3RhdGUobW9iaWxlLCAoXG5cdFx0bWF4LXdpZHRoIDogNDgwcHhcblx0KSk7XG5cdEBpbmNsdWRlIGdyaWRsZV9yZWdpc3Rlcl9zdGF0ZSh0YWJsZXQsIChcblx0XHRtaW4td2lkdGggOiA0ODFweCxcblx0XHRtYXgtd2lkdGggOiAxMDI0cHhcblx0KSk7XG59XG5cblxuLyoqXG4gKiBSZWdpc3RlciBkZWZhdWx0IG1vYmlsZSBmaXJzdCBzdGF0ZXMgOlxuICovXG5AbWl4aW4gZ3JpZGxlX3JlZ2lzdGVyX2RlZmF1bHRfbW9iaWxlX2ZpcnN0X3N0YXRlcygpIHtcblx0QGluY2x1ZGUgZ3JpZGxlX3JlZ2lzdGVyX3N0YXRlKHhzLCAoXG5cdFx0bWF4LXdpZHRoIDogNzY4cHhcblx0KSk7XG5cdEBpbmNsdWRlIGdyaWRsZV9yZWdpc3Rlcl9zdGF0ZShzbSwgKFxuXHRcdG1pbi13aWR0aCA6IDc2OHB4XG5cdCkpO1xuXHRAaW5jbHVkZSBncmlkbGVfcmVnaXN0ZXJfc3RhdGUobWQsIChcblx0XHRtaW4td2lkdGggOiA5OTJweFxuXHQpKTtcblx0QGluY2x1ZGUgZ3JpZGxlX3JlZ2lzdGVyX3N0YXRlKGxnLCAoXG5cdFx0bWluLXdpZHRoIDogMTIwMHB4XG5cdCkpO1xufVxuXG5cbi8qKlxuICogU2V0IHRoZSBkZWJ1ZyBkZXZpY2UgKG5vdCB1c2VkIGZvciBub3cpXG4gKiBcbiAqIEBwYXJhbSBcdFN0cmluZyBcdFx0JHN0YXRlIFx0XHRUaGUgc3RhdGUgdG8gdXBkYXRlXG4gKiBAcGFyYSBtIFx0U3RyaW5nIFx0XHQkZGV2aWNlIFx0VGhlIGRldmljZSB0byB1c2UgKGlwaG9uZSwgZXRjLi4uKVxuICovXG5AbWl4aW4gZ3JpZGxlX3NldF9kZWJ1Z19kZXZpY2UoXG5cdCRzdGF0ZSA6IGRlZmF1bHQsXG5cdCRkZXZpY2UgOiBudWxsXG4pIHtcblxuXHQvLyBjaGVjayBwYXJhbXMgOlxuXHRAaWYgJHN0YXRlIGFuZCAkZGV2aWNlIHtcblx0XHQvLyBzZXQgdGhlIHN0YXRlIGRldmljZSA6XG5cdFx0JF9ncmlkbGVfc3RhdGVzX2RlYnVnX2RldmljZXMgOiBhcHBlbmQoJF9ncmlkbGVfc3RhdGVzX2RlYnVnX2RldmljZXMsIHVucXVvdGUoXCJcXFwiI3skc3RhdGV9XFxcIiA6IFxcXCIjeyRkZXZpY2V9XFxcIlwiKSwgY29tbWEpO1xuXHR9XG5cbn0iLCIvLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8IE1peGluc1xuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBIZWxwZXIgdG8gYXBwbHkgbXVsdGlwbGUgY29uZmlnIGZvciBhIGNlcnRhaW4gc3RhdGUgd2l0aCBvbmUgbWl4aW5cbkBtaXhpbiBncmlkbGVfc2V0KFxuXHQkc2V0dGluZ3MsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHRcblx0Ly8gbG9vcCBvbiBlYWNoIHNldHRpbmdzXG5cdEBlYWNoICRzZXR0aW5nTmFtZSwgJHNldHRpbmdWYWx1ZSBpbiAkc2V0dGluZ3Ncblx0e1xuXHRcdCRzbiA6IHVucXVvdGUoXCIjeyRzZXR0aW5nTmFtZX1cIik7XG5cdFx0JHN2IDogJHNldHRpbmdWYWx1ZTtcblxuXHRcdC8vIGNoZWNrIGlmIHNldHRpbmcgbmFtZSBpcyBhIHN0YXRlIDpcblx0XHRAaWYgX2dyaWRsZV9oYXNfc3RhdGUoJHNuKSB7XG5cdFx0XHQvLyBwcm9jZXNzIHRoZSBzdGF0ZVxuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX3NldCgkc3YsICRzbik7XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHRAaWYgJHNuID09IGNvbnRhaW5lciB7XG5cdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9jb250YWluZXIoJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IGdyaWQge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGUoJHN2LCAkc3RhdGUpO1xuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gcHVzaCB7XG5cdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9wdXNoKCRzdiwgJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHB1bGwge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfcHVsbCgkc3YsICRzdGF0ZSk7XG5cdFx0XHR9IEBlbHNlIGlmICRzbiA9PSBwcmVmaXgge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfcHJlZml4KCRzdiwgJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHN1ZmZpeCB7XG5cdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9zdWZmaXgoJHN2LCAkc3RhdGUpO1xuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gcHVsbCB7XG5cdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9wdWxsKCRzdiwgJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IGNsZWFyX2VhY2gge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfY2xlYXJfZWFjaChudGgoJHN2LDEpLCBudGgoJHN2LDIpLCAkc3RhdGUpO1xuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gY2VudGVyZWQge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfY2VudGVyZWQoJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHBhcmVudCB7XG5cdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9wYXJlbnQoJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHZlcnRpY2FsX2FsaWduIHtcblx0XHRcdFx0QGluY2x1ZGUgZ3JpZGxlX3ZlcnRpY2FsX2FsaWduKCRzdiwgJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IGhpZGUge1xuXHRcdFx0XHRAaWYgJHN2ID09IHRydWUge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9oaWRlKCRzdGF0ZSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9zaG93KCRzdGF0ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHNob3cge1xuXHRcdFx0XHRAaWYgJHN2ID09IHRydWUge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9zaG93KCRzdGF0ZSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9oaWRlKCRzdGF0ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHZpc2libGUge1xuXHRcdFx0XHRAaWYgJHN2ID09IHRydWUge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV92aXNpYmxlKCRzdGF0ZSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV9ub3RfdmlzaWJsZSgkc3RhdGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IEBlbHNlIGlmICRzbiA9PSBub3RfdmlzaWJsZSB7XG5cdFx0XHRcdEBpZiAkc3YgPT0gdHJ1ZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgZ3JpZGxlX25vdF92aXNpYmxlKCRzdGF0ZSk7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdEBpbmNsdWRlIGdyaWRsZV92aXNpYmxlKCRzdGF0ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IHNob3dfaW5saW5lIHtcblx0XHRcdFx0QGlmICRzdiA9PSB0cnVlIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfc2hvd19pbmxpbmUoJHN0YXRlKTtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2hpZGUoJHN0YXRlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gZmxvYXQge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfZmxvYXQoJHN2LCAkc3RhdGUpO1xuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gY2xlYXIge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfY2xlYXIoJHN2LCAkc3RhdGUpO1xuXHRcdFx0fSBAZWxzZSBpZiAkc24gPT0gbm9fZ3V0dGVyXG5cdFx0XHRcdG9yICRzbiA9PSBub19tYXJnaW4ge1xuXHRcdFx0XHRAaW5jbHVkZSBncmlkbGVfbm9fZ3V0dGVyKCRzdiwgJHN0YXRlKTtcblx0XHRcdH0gQGVsc2UgaWYgJHNuID09IGd1dHRlclxuXHRcdFx0XHRvciAkc24gPT0gbWFyZ2luIHtcblx0XHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2d1dHRlcigkc3YsICRzdGF0ZSk7XG5cdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0Ly8gd2UgZG8gbm90aGluZ1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vLyBSZXNwb25zaXZlIGhlbHBlcnMgbWl4aW5zIDpcbkBtaXhpbiBncmlkbGVfc3RhdGUoXG5cdCRzdGF0ZXMsXG5cdCRoYXMtcGFyZW50IDogdHJ1ZVxuKSB7XG5cblx0Ly8gY2hlY2sgZmlyc3QgcGFyYW0gaWYgaXMgYSBzdGF0ZSA6XG5cdCRmaXJzdFN0YXRlIDogbnRoKCRzdGF0ZXMsMSk7XG5cdEBpZiBfZ3JpZGxlX2hhc19zdGF0ZSgkZmlyc3RTdGF0ZSkge1xuXG5cdFx0Ly8gbG9vcCBvbiBlYWNoIHN0YXRlcyA6XG5cdFx0QGVhY2ggJHN0YXRlIGluICRzdGF0ZXNcblx0XHR7XG5cdFx0XHQvLyB2YXJpYWJsZXMgOlxuXHRcdFx0JGh0bWwtc3RhdGVzLWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoaHRtbC1zdGF0ZXMtY2xhc3NlcywgJHN0YXRlKTtcblx0XHRcdCRkZWJ1ZyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1ZywgJHN0YXRlKTtcblx0XHRcdCRzdGF0ZU5hbWUgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUobmFtZSwgJHN0YXRlKTtcblxuXHRcdFx0Ly8gY2hlY2sgaWYgaXMgYSBzdGF0ZSA6XG5cdFx0XHRAaWYgKCRodG1sLXN0YXRlcy1jbGFzc2VzIG9yICRkZWJ1Zylcblx0XHRcdFx0YW5kICRzdGF0ZU5hbWUge1xuXHRcdFx0XHQvLyBodG1sIGNsYXNzIDpcblx0XHRcdFx0QGlmICRoYXMtcGFyZW50IHtcblx0XHRcdFx0XHRodG1sI3tfZ3JpZGxlX2NsYXNzbmFtZShcIiN7JHN0YXRlTmFtZX1cIil9ICYgeyBAY29udGVudDsgfVxuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRodG1sI3tfZ3JpZGxlX2NsYXNzbmFtZShcIiN7JHN0YXRlTmFtZX1cIil9IHsgQGNvbnRlbnQ7IH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBnZXQgdGhlIG1lZGlhIHF1ZXJ5IDpcblx0XHRcdCRxIDogX2dyaWRsZV9nZXRfbWVkaWFfcXVlcnkoJHN0YXRlKTtcblxuXHRcdFx0Ly8gbWFrZSB0aGUgbWVkaWEgcXVlcnkgaWYgYSBxdWVyeSBleGlzdCA6XG5cdFx0XHRAaWYgJHEge1xuXHRcdFx0XHRAbWVkaWEgI3skcX0ge1xuXHRcdFx0XHRcdEBjb250ZW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRAZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHRAY29udGVudDtcblx0XHRcdH1cblx0XHR9XG5cblx0fSBAZWxzZSB7XG5cblx0XHQvLyB2YXJpYWJsZXMgOlxuXHRcdCRodG1sLXN0YXRlcy1jbGFzc2VzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGh0bWwtc3RhdGVzLWNsYXNzZXMsICRzdGF0ZXMpO1xuXHRcdCRkZWJ1ZyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1ZywgJHN0YXRlcyk7XG5cdFx0JHN0YXRlTmFtZSA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShuYW1lLCAkc3RhdGVzKTtcblxuXHRcdC8vIGNoZWNrIGlmIGlzIGEgc3RhdGUgOlxuXHRcdEBpZiAoJGh0bWwtc3RhdGVzLWNsYXNzZXMgb3IgJGRlYnVnKVxuXHRcdFx0YW5kICRzdGF0ZU5hbWUge1xuXHRcdFx0Ly8gaHRtbCBjbGFzcyA6XG5cdFx0XHRAaWYgJGhhcy1wYXJlbnQge1xuXHRcdFx0XHRodG1sI3tfZ3JpZGxlX2NsYXNzbmFtZShcIiN7JHN0YXRlTmFtZX1cIil9ICYgeyBAY29udGVudDsgfVxuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdGh0bWwje19ncmlkbGVfY2xhc3NuYW1lKFwiI3skc3RhdGVOYW1lfVwiKX0geyBAY29udGVudDsgfVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIGdldCB0aGUgbWVkaWEgcXVlcnkgOlxuXHRcdCRxIDogX2dyaWRsZV9nZXRfbWVkaWFfcXVlcnkoJHN0YXRlcyk7XG5cblx0XHQvLyBtYWtlIHRoZSBtZWRpYSBxdWVyeSBpZiBhIHF1ZXJ5IGV4aXN0IDpcblx0XHRAaWYgJHEge1xuXHRcdFx0QG1lZGlhICN7JHF9IHtcblx0XHRcdFx0QGNvbnRlbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdEBlbHNlXG5cdFx0e1xuXHRcdFx0QGNvbnRlbnQ7XG5cdFx0fVxuXG5cdH1cbn1cblxuXG5cbi8vIENvbnRhaW5lciBtaXhpbiA6XG5AbWl4aW4gZ3JpZGxlX2NvbnRhaW5lcihcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdEBpbmNsdWRlIF9ncmlkbGVfY29udGFpbmVyX2NvbW1vbigkc3RhdGUpO1xufVxuXG5cbi8vIEdyaWQgbWl4aW4gOlxuLy8gU2V0IHRoZSB3aWR0aCBvZiB0aGUgc3BlY2lmaWVkIGdyaWQgY29sdW1uIDpcbkBtaXhpbiBncmlkbGUoXG5cdCRjb2x1bW5zLFxuXHQkc3RhdGUtb3ItY29udGV4dCA6IGRlZmF1bHQsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBtYW5hZ2Ugc3RhdGUgYW5kIGNvbnRleHQgOlxuXHQkY29udGV4dCA6IG51bGw7XG5cdEBpZiB0eXBlLW9mKCRzdGF0ZS1vci1jb250ZXh0KSA9PSBudW1iZXIge1xuXHRcdCRjb250ZXh0IDogJHN0YXRlLW9yLWNvbnRleHQ7XG5cdH0gQGVsc2Uge1xuXHRcdCRzdGF0ZSA6ICRzdGF0ZS1vci1jb250ZXh0O1xuXHR9XG5cblx0Ly8gY29tbW9uIDpcblx0QGluY2x1ZGUgX2dyaWRsZV9ncmlkX2NvbW1vbigpO1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZSgkY29sdW1ucywgJHN0YXRlLCAkY29udGV4dCk7XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRAaW5jbHVkZSBfZ3JpZGxlKCRjb2x1bW5zLCAkc3RhdGUsICRjb250ZXh0KTtcblx0fVxufVxuQG1peGluIF9ncmlkbGUoXG5cdCRjb2x1bW5zLFxuXHQkc3RhdGUgOiBkZWZhdWx0LFxuXHQkY29udGV4dCA6IG51bGxcbikge1xuXHQvLyB2YXJzIDpcblx0JG5hbWUgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUobmFtZSwgJHN0YXRlKTtcblx0QGlmIHR5cGUtb2YoJGNvbnRleHQpICE9IG51bWJlciB7XG5cdFx0JGNvbnRleHQgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoY29udGV4dCwgJHN0YXRlKTtcblx0fVxuXHQkbmFtZS1tdWx0aXBsaWNhdG9yIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKG5hbWUtbXVsdGlwbGljYXRvciwgJHN0YXRlKTtcblx0JGd1dHRlci13aWR0aCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShndXR0ZXItd2lkdGgsICRzdGF0ZSk7XG5cdCRpZTctc3VwcG9ydCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShpZTctc3VwcG9ydCwgJHN0YXRlKTtcblx0JGRlYnVnIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLCAkc3RhdGUpO1xuXHQkZGVidWctc2hvdy1jbGFzcy1uYW1lcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzLCAkc3RhdGUpO1xuXG5cdC8vIG1hbmFnZSBjb2x1bW5zXG5cdEBpZiB0eXBlLW9mKCRjb2x1bW5zKSAhPSBudW1iZXIgYW5kIG1hcC1oYXMta2V5KCRfZ3JpZGxlX2NvbHVtbnMsICRjb2x1bW5zKSB7XG5cdFx0Ly8gdGhlIGNvbHVtbnMgaXMgYSBzYXZlZCBvbmUsIGdldCB0aGUgY29udGV4dCBhbmQgY29sdW1uIHZhbHVlXG5cdFx0JGNvbHVtbiA6IG1hcC1nZXQoJF9ncmlkbGVfY29sdW1ucywgJGNvbHVtbnMpO1xuXHRcdCRjb250ZXh0IDogbWFwLWdldCgkY29sdW1uLCBjb250ZXh0KTtcblx0XHQkY29sdW1ucyA6IG1hcC1nZXQoJGNvbHVtbiwgY29sdW1ucyk7XG5cdH0gQGVsc2UgaWYgdHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyIHtcblx0XHQkY29sdW1ucyA6ICRjb2x1bW5zIC8gJG5hbWUtbXVsdGlwbGljYXRvcjtcblx0fSBAZWxzZSB7XG5cdFx0QGVycm9yIFwidGhlIGNvbHVtbiAjeyRjb2x1bW5zfSBkb2VzIG5vdCBleGlzdC4uLlwiO1xuXHR9XG5cblx0Ly8gdmFycyA6XG5cdCR3aWR0aCA6IHBlcmNlbnRhZ2UoMSAvICRjb250ZXh0ICogJGNvbHVtbnMpO1xuXG5cdC8vIHNldCB2YWx1ZSA6XG5cdHdpZHRoOiR3aWR0aDtcblx0XG5cdC8vIGllNyBzdXBwb3J0IDpcblx0QGlmICRpZTctc3VwcG9ydCA9PSB0cnVlIHtcblx0XHQqd2lkdGg6IGV4cHJlc3Npb24oKHRoaXMucGFyZW50Tm9kZS5jbGllbnRXaWR0aC8jeyRjb250ZXh0fSojeygkY29sdW1ucyAvICRuYW1lLW11bHRpcGxpY2F0b3IpfSAtIHBhcnNlSW50KHRoaXMuY3VycmVudFN0eWxlWydwYWRkaW5nTGVmdCddKSAtIHBhcnNlSW50KHRoaXMuY3VycmVudFN0eWxlWydwYWRkaW5nUmlnaHQnXSkpICsgJ3B4Jyk7XG5cdH1cblx0XG5cdC8vIGRlYnVnIDpcblx0QGlmICRkZWJ1ZyA9PSB0cnVlIGFuZCAkZGVidWctc2hvdy1jbGFzcy1uYW1lcyA9PSB0cnVlIHtcblx0XHQjeyRncmlkbGUtZGVidWctc2VsZWN0b3J9IHtcblx0XHRcdCY6YmVmb3JlIHtcblx0XHRcdFx0QGlmICRuYW1lID09IGRlZmF1bHQge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJncmlkLSN7JG5hbWV9LSN7JGNvbHVtbnN9XCI7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJncmlkLSN7JG5hbWV9LSN7JGNvbHVtbnN9XCIgIWltcG9ydGFudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ji5wYXJlbnQ6YmVmb3JlIHtcblx0XHRcdFx0QGlmICRuYW1lID09IGRlZmF1bHQge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJncmlkLXBhcmVudC0jeyRuYW1lfS0jeyRjb2x1bW5zfVwiO1xuXHRcdFx0XHR9IEBlbHNlIHtcblx0XHRcdFx0XHRjb250ZW50OlwiZ3JpZC1wYXJlbnQtI3skbmFtZX0tI3skY29sdW1uc31cIiAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLy8gcHVzaCA6XG4vLyBQdXNoIHRoZSBlbGVtZW50IG9mIHRoZSBjb3VudCBvZiBjb2x1bW4gd2FudGVkXG5AbWl4aW4gZ3JpZGxlX3B1c2goXG5cdCRjb2x1bW5zLFxuXHQkc3RhdGUtb3ItY29udGV4dCA6IGRlZmF1bHQsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBtYW5hZ2Ugc3RhdGUgYW5kIGNvbnRleHRcblx0JGNvbnRleHQgOiBudWxsO1xuXHRAaWYgdHlwZS1vZigkc3RhdGUtb3ItY29udGV4dCkgPT0gbnVtYmVyIHtcblx0XHQkY29udGV4dCA6ICRzdGF0ZS1vci1jb250ZXh0O1xuXHR9IEBlbHNlIHtcblx0XHQkc3RhdGUgOiAkc3RhdGUtb3ItY29udGV4dDtcblx0fVxuXG5cdC8vIGNvbW1vbiA6XG5cdEBpbmNsdWRlIF9ncmlkbGVfcHVzaF9jb21tb24oJHN0YXRlKTtcblxuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wdXNoKCRjb2x1bW5zLCAkc3RhdGUsICRjb250ZXh0KTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfcHVzaCgkY29sdW1ucywgJHN0YXRlLCAkY29udGV4dCk7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX3B1c2goXG5cdCRjb2x1bW5zLFxuXHQkc3RhdGUgOiBkZWZhdWx0LFxuXHQkY29udGV4dCA6IG51bGxcbikge1xuXHQvLyB2YXJpYWJsZXMgOlxuXHQkbmFtZSA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShuYW1lLCAkc3RhdGUpO1xuXHRAaWYgdHlwZS1vZigkY29udGV4dCkgIT0gbnVtYmVyIHtcblx0XHQkY29udGV4dCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjb250ZXh0LCAkc3RhdGUpO1xuXHR9XG5cdCRkaXJlY3Rpb24gOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGlyZWN0aW9uLCAkc3RhdGUpO1xuXHQkbmFtZS1tdWx0aXBsaWNhdG9yIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKG5hbWUtbXVsdGlwbGljYXRvciwgJHN0YXRlKTtcblx0JGRlYnVnIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLCAkc3RhdGUpO1xuXHQkZGVidWctc2hvdy1jbGFzcy1uYW1lcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzLCAkc3RhdGUpO1xuXG5cdC8vIHZhcnMgOlxuXHQkd2lkdGggOiBwZXJjZW50YWdlKDEgLyAkY29udGV4dCkgKiAoJGNvbHVtbnMgLyAkbmFtZS1tdWx0aXBsaWNhdG9yKTtcblx0QGlmICRkaXJlY3Rpb24gPT0gcnRsIHsgJHdpZHRoIDogJHdpZHRoKi0xOyB9XG5cdGxlZnQ6JHdpZHRoO1xuXG5cdC8vIGRlYnVnIGNzcyA6XG5cdEBpZiAkZGVidWcgPT0gdHJ1ZSBhbmQgJGRlYnVnLXNob3ctY2xhc3MtbmFtZXMgPT0gdHJ1ZSB7XG5cdFx0I3skZ3JpZGxlLWRlYnVnLXNlbGVjdG9yfSB7XG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0QGlmICRuYW1lID09IGRlZmF1bHQge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJwdXNoLSN7JG5hbWV9LSN7JGNvbHVtbnN9XCI7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJwdXNoLSN7JG5hbWV9LSN7JGNvbHVtbnN9XCIgIWltcG9ydGFudDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG59XG5cblxuLy8gcHVsbCA6XG4vLyBQdWxsIHRoZSBlbGVtZW50IG9mIHRoZSBjb3VudCBvZiBjb2x1bW4gd2FudGVkXG5AbWl4aW4gZ3JpZGxlX3B1bGwoXG5cdCRjb2x1bW5zLFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0Ly8gY29tbW9uIDpcblx0QGluY2x1ZGUgX2dyaWRsZV9wdWxsX2NvbW1vbigkc3RhdGUpO1xuXG5cdC8vIGNoZWNrIGlmIG5lZWQgbWVkaWEgcXVlcnkgOlxuXHRAaWYgJHN0YXRlIHtcblx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3B1bGwoJGNvbHVtbnMsJHN0YXRlKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfcHVsbCgkY29sdW1ucywkc3RhdGUpO1xuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9wdWxsKFxuXHQkY29sdW1ucyxcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIHZhcnMgOlxuXHQkbmFtZSA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShuYW1lLCAkc3RhdGUpO1xuXHQkY29udGV4dCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjb250ZXh0LCAkc3RhdGUpO1xuXHQkZGlyZWN0aW9uIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRpcmVjdGlvbiwgJHN0YXRlKTtcblx0JG5hbWUtbXVsdGlwbGljYXRvciA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShuYW1lLW11bHRpcGxpY2F0b3IsICRzdGF0ZSk7XG5cdCRkZWJ1ZyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1ZywgJHN0YXRlKTtcblx0JGRlYnVnLXNob3ctY2xhc3MtbmFtZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGVidWctc2hvdy1jbGFzcy1uYW1lcywgJHN0YXRlKTtcblxuXHQvLyB2YXJzIDpcblx0JHdpZHRoIDogcGVyY2VudGFnZSgxIC8gJGNvbnRleHQpICogKCRjb2x1bW5zIC8gJG5hbWUtbXVsdGlwbGljYXRvcik7XG5cdEBpZiAkZGlyZWN0aW9uID09IHJ0bCB7ICR3aWR0aCA6ICR3aWR0aCotMTsgfVxuXHRyaWdodDokd2lkdGg7XG5cblx0Ly8gZGVidWcgY3NzIDpcblx0QGlmICRkZWJ1ZyA9PSB0cnVlIGFuZCAkZGVidWctc2hvdy1jbGFzcy1uYW1lcyA9PSB0cnVlIHtcblx0XHQjeyRncmlkbGUtZGVidWctc2VsZWN0b3J9IHtcblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRAaWYgJG5hbWUgPT0gZGVmYXVsdCB7XG5cdFx0XHRcdFx0Y29udGVudDpcInB1bGwtI3skbmFtZX0tI3skY29sdW1uc31cIjtcblx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0Y29udGVudDpcInB1bGwtI3skbmFtZX0tI3skY29sdW1uc31cIiAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLy8gcHVzaCA6XG4vLyBQdXNoIHRoZSBlbGVtZW50IG9mIHRoZSBjb3VudCBvZiBjb2x1bW4gd2FudGVkXG5AbWl4aW4gZ3JpZGxlX3ByZWZpeChcblx0JGNvbHVtbnMsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjb21tb24gOlxuXHRAaW5jbHVkZSBfZ3JpZGxlX3ByZWZpeF9jb21tb24oJHN0YXRlKTtcblx0XG5cdC8vIGNoZWNrIGlmIG5lZWQgbWVkaWEgcXVlcnkgOlxuXHRAaWYgJHN0YXRlIHtcblx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3ByZWZpeCgkY29sdW1ucywkc3RhdGUpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9wcmVmaXgoJGNvbHVtbnMsJHN0YXRlKTtcblx0fVxufVxuQG1peGluIF9ncmlkbGVfcHJlZml4KFxuXHQkY29sdW1ucyxcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIHZhcnMgOlxuXHQkbmFtZSA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShuYW1lLCAkc3RhdGUpO1xuXHQkY29udGV4dCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjb250ZXh0LCAkc3RhdGUpO1xuXHQkZGlyZWN0aW9uIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRpcmVjdGlvbiwgJHN0YXRlKTtcblx0JGd1dHRlci13aWR0aCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShndXR0ZXItd2lkdGgsICRzdGF0ZSk7XG5cdCRuYW1lLW11bHRpcGxpY2F0b3IgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUobmFtZS1tdWx0aXBsaWNhdG9yLCAkc3RhdGUpO1xuXHQkZGVidWcgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGVidWcsICRzdGF0ZSk7XG5cdCRkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLXNob3ctY2xhc3MtbmFtZXMsICRzdGF0ZSk7XG5cblx0Ly8gdmFycyA6XG5cdCR3aWR0aCA6IHBlcmNlbnRhZ2UoMSAvICRjb250ZXh0KSAqICgkY29sdW1ucyAvICRuYW1lLW11bHRpcGxpY2F0b3IpO1xuXG5cdC8vIHNldCB2YWx1ZSA6XG5cdEBpZiAkZGlyZWN0aW9uID09IHJ0bCB7IG1hcmdpbi1yaWdodDokd2lkdGg7IH1cblx0QGVsc2UgeyBtYXJnaW4tbGVmdDokd2lkdGg7IH1cblxuXHQvLyBkZWJ1ZyBjc3MgOlxuXHRAaWYgJGRlYnVnID09IHRydWUgYW5kICRkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzID09IHRydWUge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdEBpZiAkbmFtZSA9PSBkZWZhdWx0IHtcblx0XHRcdFx0XHRjb250ZW50OlwicHJlZml4LSN7JG5hbWV9LSN7JGNvbHVtbnN9XCI7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJwcmVmaXgtI3skbmFtZX0tI3skY29sdW1uc31cIiAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLy8gcHVsbCA6XG4vLyBQdWxsIHRoZSBlbGVtZW50IG9mIHRoZSBjb3VudCBvZiBjb2x1bW4gd2FudGVkXG5AbWl4aW4gZ3JpZGxlX3N1ZmZpeChcblx0JGNvbHVtbnMsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjb21tb24gOlxuXHRAaW5jbHVkZSBfZ3JpZGxlX3N1ZmZpeF9jb21tb24oJHN0YXRlKTtcblxuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9zdWZmaXgoJGNvbHVtbnMsJHN0YXRlKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfc3VmZml4KCRjb2x1bW5zLCRzdGF0ZSk7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX3N1ZmZpeChcblx0JGNvbHVtbnMsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyB2YXJzIDpcblx0JG5hbWUgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUobmFtZSwgJHN0YXRlKTtcblx0JGNvbnRleHQgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoY29udGV4dCwgJHN0YXRlKTtcblx0JGRpcmVjdGlvbiA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkaXJlY3Rpb24sICRzdGF0ZSk7XG5cdCRndXR0ZXItd2lkdGggOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ3V0dGVyLXdpZHRoLCAkc3RhdGUpO1xuXHQkbmFtZS1tdWx0aXBsaWNhdG9yIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKG5hbWUtbXVsdGlwbGljYXRvciwgJHN0YXRlKTtcblx0JGRlYnVnIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLCAkc3RhdGUpO1xuXHQkZGVidWctc2hvdy1jbGFzcy1uYW1lcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzLCAkc3RhdGUpO1xuXG5cdC8vIHZhcnMgOlxuXHQkd2lkdGggOiBwZXJjZW50YWdlKDEgLyAkY29udGV4dCkgKiAoJGNvbHVtbnMgLyAkbmFtZS1tdWx0aXBsaWNhdG9yKTtcblx0XG5cdC8vIHNldCB2YWx1ZSA6XG5cdEBpZiAkZGlyZWN0aW9uID09IHJ0bCB7IG1hcmdpbi1sZWZ0OiR3aWR0aDsgfVxuXHRAZWxzZSB7IG1hcmdpbi1yaWdodDokd2lkdGg7IH1cblxuXHQvLyBkZWJ1ZyBjc3MgOlxuXHRAaWYgJGRlYnVnID09IHRydWUgYW5kICRkZWJ1Zy1zaG93LWNsYXNzLW5hbWVzID09IHRydWUge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0JjphZnRlciB7XG5cdFx0XHRcdEBpZiAkbmFtZSA9PSBkZWZhdWx0IHtcblx0XHRcdFx0XHRjb250ZW50Olwic3VmZml4LSN7JG5hbWV9LSN7JGNvbHVtbnN9XCI7XG5cdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRlbnQ6XCJzdWZmaXgtI3skbmFtZX0tI3skY29sdW1uc31cIiAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuLy8gZ3JpZCBiYWNrZ3JvdW5kIDpcbi8vIERpc3BsYXkgdGhlIGdyaWQgYmFja2dyb3VuZCBkZWJ1Z1xuQG1peGluIGdyaWRsZV9ncmlkX2JhY2tncm91bmQoXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9ncmlkX2JhY2tncm91bmQoJHN0YXRlKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfZ3JpZF9iYWNrZ3JvdW5kKCRzdGF0ZSk7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX2dyaWRfYmFja2dyb3VuZChcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdFxuXHQvLyB2YXJpYWJsZXMgOlxuXHQkY29udGV4dCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjb250ZXh0LCAkc3RhdGUpO1xuXG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHR6LWluZGV4Ojk5OTk7XG5cdCY6YmVmb3JlIHtcblx0XHRjb250ZW50OicnO1xuXHRcdHBvc2l0aW9uOmFic29sdXRlO1xuXHRcdHRvcDowOyBsZWZ0OjA7XG5cdFx0d2lkdGg6MTAwJTsgaGVpZ2h0OjEwMCUgIWltcG9ydGFudDtcblx0XHQvLyB2YXJzIDpcblx0XHQkd2lkdGggOiBwZXJjZW50YWdlKDEgLyAkY29udGV4dCk7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDAsMCwwLC4wMSkgNTAlICwgcmdiYSgwLDAsMCwuMDQpIDUwJSk7IC8qIFN0YW5kYXJkIHN5bnRheCAqL1xuXHRcdGJhY2tncm91bmQtc2l6ZTooJHdpZHRoKjIpIDEwMCU7XG5cdFx0Ly8gYmFja2dyb3VuZC1wb3NpdGlvbjokZ3JpZGxlLWd1dHRlci13aWR0aC8yIDA7XG5cdH1cbn1cblxuXG4vKipcbiAqIFBhcmVudCBjbGVhciBlYWNoXG4gKi9cbi8vIEdyaWQgbWl4aW4gOlxuLy8gU2V0IHRoZSB3aWR0aCBvZiB0aGUgc3BlY2lmaWVkIGdyaWQgY29sdW1uIDpcbkBtaXhpbiBncmlkbGVfY2xlYXJfZWFjaChcblx0JGNsZWFyRWFjaCxcblx0JGNsZWFyV2hhdCA6IGJvdGgsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9jbGVhcl9lYWNoKCRjbGVhckVhY2gsICRjbGVhcldoYXQpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9jbGVhcl9lYWNoKCRjbGVhckVhY2gsICRjbGVhcldoYXQpO1xuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9jbGVhcl9lYWNoKFxuXHQkY2xlYXJFYWNoLFxuXHQkY2xlYXJXaGF0XG4pIHtcblx0PiAqOm50aC1jaGlsZCgjeyRjbGVhckVhY2h9bisxKSB7XG5cdFx0Y2xlYXIgOiAkY2xlYXJXaGF0O1xuXHR9XG59XG5cblxuLy8gR3JpZCBjZW50ZXJlZCA6XG5AbWl4aW4gZ3JpZGxlX2NlbnRlcmVkKFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0Ly8gY2hlY2sgaWYgbmVlZCBtZWRpYSBxdWVyeSA6XG5cdEBpZiAkc3RhdGUge1xuXHRcdEBpbmNsdWRlIGdyaWRsZV9zdGF0ZSgkc3RhdGUpIHtcblx0XHRcdEBpbmNsdWRlIF9ncmlkbGVfY2VudGVyZWQoKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfY2VudGVyZWQoKTtcblx0fVxufVxuQG1peGluIF9ncmlkbGVfY2VudGVyZWQoKSB7XG5cdGRpc3BsYXk6YmxvY2sgIWltcG9ydGFudDtcblx0ZmxvYXQ6bm9uZSAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDphdXRvICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDphdXRvICFpbXBvcnRhbnQ7XG5cdGNsZWFyOmJvdGggIWltcG9ydGFudDtcbn1cblxuXG4vLyBHcmlkIHBhcmVudCA6XG5AbWl4aW4gZ3JpZGxlX3BhcmVudChcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIGNvbW1vbiA6XG5cdEBpbmNsdWRlIF9ncmlkbGVfcGFyZW50X2NvbW1vbigpO1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wYXJlbnQoKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfcGFyZW50KCk7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX3BhcmVudCgpIHtcblx0QGluY2x1ZGUgZ3JpZGxlX25vX2d1dHRlcigpO1xufVxuXG5cbi8qKlxuICogVmVydGljYWwgYWxpZ24gOlxuICovXG5AbWl4aW4gZ3JpZGxlX3ZlcnRpY2FsX2FsaWduKFxuXHQkYWxpZ24gOiBtaWRkbGUsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV92ZXJ0aWNhbF9hbGlnbigkYWxpZ24pO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV92ZXJ0aWNhbF9hbGlnbigkYWxpZ24pO1xuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV92ZXJ0aWNhbF9hbGlnbihcblx0JGFsaWduIDogbWlkZGxlXG4pIHtcblx0Zm9udC1zaXplOjA7XG5cdGNsZWFyOmJvdGg7XG5cblx0PiAqIHtcblx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0XHRmbG9hdDpub25lICFpbXBvcnRhbnQ7XG5cdFx0dmVydGljYWwtYWxpZ246JGFsaWduO1xuXHRcdGZvbnQtc2l6ZToxcmVtO1xuXHR9XG59XG5cblxuLy8gSGlkZSBvbiA6XG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkbWVkaWEgIE9uIHdoYXQgc3RhdGVcbkBtaXhpbiBncmlkbGVfaGlkZShcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIGNoZWNrIGlmIG5lZWQgbWVkaWEgcXVlcnkgOlxuXHRAaWYgJHN0YXRlIHtcblx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX2hpZGUoKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfaGlkZSgpO1xuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9oaWRlKCkge1xuXHRkaXNwbGF5Om5vbmU7XG59XG5cblxuLy8gTm90IHZpc2libGUgb24gOlxuLy8gQHBhcmFtIFx0U3RyaW5nIFx0JG1lZGlhIFx0V2hhdCB0byBoaWRlIChvbmUgb2YgdGhlIDMgc3RhdGUgY2xhc3NlcyBuYW1lKVxuQG1peGluIGdyaWRsZV9ub3RfdmlzaWJsZShcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIGNoZWNrIGlmIG5lZWQgbWVkaWEgcXVlcnkgOlxuXHRAaWYgJHN0YXRlIHtcblx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX25vdF92aXNpYmxlKCk7XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRAaW5jbHVkZSBfZ3JpZGxlX25vdF92aXNpYmxlKCk7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX25vdF92aXNpYmxlKCkge1xuXHR2aXNpYmlsaXR5OmhpZGRlbjtcbn1cblxuXG4vLyBTaG93IG9uXG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkbWVkaWEgXHRXaGF0IHRvIGhpZGUgKG9uZSBvZiB0aGUgMyBzdGF0ZSBjbGFzc2VzIG5hbWUpXG5AbWl4aW4gZ3JpZGxlX3Nob3coXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9zaG93KCk7XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRAaW5jbHVkZSBfZ3JpZGxlX3Nob3coKTtcblx0fVxufVxuQG1peGluIF9ncmlkbGVfc2hvdygpIHtcblx0ZGlzcGxheTpibG9jaztcbn1cblxuXG4vKipcbiAqIFNob3cgaW5saW5lXG4gKlxuICogQHBhcmFtIFx0U3RyaW5nIFx0XHQkc3RhdGUgXHRcdFRoZSBzdGF0ZSBuYW1lXG4gKi9cbkBtaXhpbiBncmlkbGVfc2hvd19pbmxpbmUoXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9zaG93X2lubGluZSgpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9zaG93X2lubGluZSgpO1xuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9zaG93X2lubGluZSgpIHtcblx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG59XG5cblxuLy8gVmlzaWJsZSBvbiA6XG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkbWVkaWEgXHRPbiB3aGF0IHN0YXRlXG5AbWl4aW4gZ3JpZGxlX3Zpc2libGUoXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV92aXNpYmxlKCk7XG5cdFx0fVxuXHR9IEBlbHNlIHtcblx0XHRAaW5jbHVkZSBfZ3JpZGxlX3Zpc2libGUoKTtcblx0fVxufVxuQG1peGluIF9ncmlkbGVfdmlzaWJsZSgpIHtcblx0dmlzaWJpbGl0eTp2aXNpYmxlO1xufVxuXG5cbi8vIEdyaWRsZSBSaWdodCA6XG5AbWl4aW4gZ3JpZGxlX2Zsb2F0KFxuXHQkZmxvYXQtZGlyZWN0aW9uIDogbGVmdCxcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdC8vIGNoZWNrIGlmIG5lZWQgbWVkaWEgcXVlcnkgOlxuXHRAaWYgJHN0YXRlIHtcblx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX2Zsb2F0KCRmbG9hdC1kaXJlY3Rpb24pO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9mbG9hdCgkZmxvYXQtZGlyZWN0aW9uKTtcblx0fVxufVxuQG1peGluIF9ncmlkbGVfZmxvYXQoXG5cdCRmbG9hdC1kaXJlY3Rpb24gOiBsZWZ0XG4pIHtcblx0ZmxvYXQ6I3skZmxvYXQtZGlyZWN0aW9ufTtcbn1cblxuXG4vLyBHcmlkbGUgY2xlYXIgOlxuLy8gQHBhcmFtIFx0U3RyaW5nIFx0JGNsZWFyLWRpcmVjdGlvbiBcdFRoZSBkaXJlY3Rpb24gdG8gY2xlYXJcbi8vIEBwYXJhbSBcdFN0cmluZyBcdCRzdGF0ZSBcdFx0XHRcdFRoZSBzdGF0ZVxuQG1peGluIGdyaWRsZV9jbGVhcihcblx0JGNsZWFyLWRpcmVjdGlvbiA6IGJvdGgsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9jbGVhcigkY2xlYXItZGlyZWN0aW9uKTtcblx0XHR9XG5cdH0gQGVsc2Uge1xuXHRcdEBpbmNsdWRlIF9ncmlkbGVfY2xlYXIoJGNsZWFyLWRpcmVjdGlvbik7XG5cdH1cbn1cbkBtaXhpbiBfZ3JpZGxlX2NsZWFyKFxuXHQkY2xlYXItZGlyZWN0aW9uIDogYm90aFxuKSB7XG5cdGNsZWFyOiN7JGNsZWFyLWRpcmVjdGlvbn07XG59XG5cblxuLy8gR3JpZGxlIG5vIGd1dHRlciA6XG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkc2lkZSBcdFx0XHRcdFRoZSBzaWRlIHRvIGNsZWFyXG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkc3RhdGUgXHRcdFx0XHRUaGUgc3RhdGVcbkBtaXhpbiBncmlkbGVfbm9fZ3V0dGVyKFxuXHQkc2lkZSA6IGxlZnQgcmlnaHQsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9ub19ndXR0ZXIoJHNpZGUpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9ub19ndXR0ZXIoJHNpZGUpO1xuXHR9XG59XG5AbWl4aW4gZ3JpZGxlX25vX21hcmdpbihcblx0JHNpZGUgOiBsZWZ0IHJpZ2h0LFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0QGluY2x1ZGUgZ3JpZGxlX25vX2d1dHRlcigkc2lkZSwgJHN0YXRlKTtcbn1cbkBtaXhpbiBfZ3JpZGxlX25vX2d1dHRlcihcblx0JHNpZGUgOiBsZWZ0IHJpZ2h0XG4pIHtcblx0QGVhY2ggJHMgaW4gJHNpZGUge1xuXHRcdHBhZGRpbmctI3skc30gOiAwO1xuXHR9XG59XG5cblxuLy8gR3JpZGxlIGd1dHRlciA6XG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkc2lkZSBcdFx0XHRcdFRoZSBzaWRlIHRvIGNsZWFyXG4vLyBAcGFyYW0gXHRTdHJpbmcgXHQkc3RhdGUgXHRcdFx0XHRUaGUgc3RhdGVcbkBtaXhpbiBncmlkbGVfZ3V0dGVyKFxuXHQkc2lkZSA6IGxlZnQgcmlnaHQsXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQvLyBjaGVjayBpZiBuZWVkIG1lZGlhIHF1ZXJ5IDpcblx0QGlmICRzdGF0ZSB7XG5cdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZSkge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9ndXR0ZXIoJHNpZGUpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0QGluY2x1ZGUgX2dyaWRsZV9ndXR0ZXIoJHNpZGUpO1xuXHR9XG59XG4vLyBzaG9ydGN1dCA6XG5AbWl4aW4gZ3JpZGxlX21hcmdpbihcblx0JHNpZGUgOiBsZWZ0IHJpZ2h0LFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0QGluY2x1ZGUgZ3JpZGxlX2d1dHRlcigkc2lkZSwgJHN0YXRlKTtcbn1cbkBtaXhpbiBfZ3JpZGxlX2d1dHRlcihcblx0JHNpZGUgOiBsZWZ0IHJpZ2h0LFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0JGd1dHRlci13aWR0aCA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShndXR0ZXItd2lkdGgsICRzdGF0ZSk7XG5cdEBlYWNoICRzIGluICRzaWRlIHtcblx0XHRwYWRkaW5nLSN7JHN9IDogJGd1dHRlci13aWR0aCAvIDI7XG5cdH1cbn0iLCIvLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8IEdlbmVyYXRlIG1peGluc1xuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8qKlxuICogR2VuZXJhdGUgYSBjdXN0b20gY2xhc3MgZm9yIGFsbCB0aGUgc3RhdGVzXG4gKlxuICogQHBhcmFtIFx0bGlzdCBcdCRwYXR0ZXJuIFx0XHRUaGUgbmFtZSBwYXR0ZXJuIG9mIHRoZSBjbGFzc1xuICogQHBhcmFtIFx0bGlzdCBcdCRzdGF0ZXNOYW1lcyBcdFx0VGhlIHN0YXRlcyBuYW1lcyB0byBnZW5lcmF0ZVxuICovXG5AbWl4aW4gZ3JpZGxlX2dlbmVyYXRlX2N1c3RvbV9jbGFzcyhcblx0JHBhdHRlcm4sXG5cdCRzdGF0ZXNOYW1lcyA6IG51bGxcbikge1xuXHQvLyBtYW5hZ2Ugc3RhdGVzIHRvIGdlbmVyYXRlIDpcblx0JHN0YXRlcyA6ICgpO1xuXHRAaWYgJHN0YXRlc05hbWVzID09IG51bGwge1xuXHRcdC8vIGxvb3Agb24gZWFjaCBzdGF0ZXMgdG8gZ2VuZXJhdGUgbmFtZXMgbGlzdCA6XG5cdFx0QGVhY2ggJHN0YXRlTmFtZSwgJHN0YXRlIGluICRfZ3JpZGxlX3N0YXRlcyB7XG5cdFx0XHQkc3RhdGVzIDogYXBwZW5kKCRzdGF0ZXMsICRzdGF0ZU5hbWUpO1xuXHRcdH1cblx0fSBAZWxzZSB7XG5cdFx0JHN0YXRlcyA6ICRzdGF0ZXNOYW1lcztcblx0fVxuXG5cdC8vIGxvb3Agb24gZWFjaCBzdGF0ZXMgOlxuXHRAZWFjaCAkc3RhdGVOYW1lIGluICRzdGF0ZXNcblx0e1xuXHRcdC8vIG1hbmFnZSBzdGF0ZW5hbWUgOlxuXHRcdEBpZiB0eXBlLW9mKCRzdGF0ZU5hbWUpICE9IHN0cmluZyB7XG5cdFx0XHQkc3RhdGVOYW1lIDogbWFwLWdldCgkc3RhdGVOYW1lLCBuYW1lKTtcblx0XHR9XG5cblx0XHQvLyBjbGFzc2VzIDpcblx0XHQkY2xhc3NlcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjbGFzc2VzLCAkc3RhdGVOYW1lKTtcblxuXHRcdC8vIGdlbnJhdGUgdGhlIGNsYXNzbmFtZSA6XG5cdFx0QGlmICRjbGFzc2VzXG5cdFx0e1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX3N0YXRlKCRzdGF0ZU5hbWUsIGZhbHNlKSB7XG5cdFx0XHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJHBhdHRlcm4sICRzdGF0ZU5hbWUpfSB7XG5cdFx0XHRcdFx0QGNvbnRlbnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8gR2VuZXJhdGUgYWxsIGhlbHBlcnMgY2xhc3Nlc1xuLy8gQWxsIHRoZSBjbGFzc2VzIGdlbmVyYXRlZCBhcmUgbm90IHdyYXBwZXIgaW4gZ3JpZGxlX3N0YXRlXG4vLyBpbiB0aGlzIG1peGluLi4uIEp1c3QgdGhlIG5hbWVzIGFyZSBnZW5lcmF0ZWQgYWNjb3JkaW5nbHkgdG8gdGhlXG4vLyByZXF1ZXN0ZWQgc3RhdGVcbkBtaXhpbiBfZ3JpZGxlX2dlbmVyYXRlX2hlbHBlcl9jbGFzc2VzIChcblx0JHN0YXRlIDogbnVsbCxcblx0JHdoYXQgOiBudWxsXG4pIHtcblx0Ly8gaGVscGVycyA6XG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBmbG9hdCkgb3IgaW5kZXgoJHdoYXQsIGhlbHBlcnMpIHtcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZmxvYXQtbGVmdC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9mbG9hdChsZWZ0KTtcblx0XHR9XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWZsb2F0LXJpZ2h0LW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2Zsb2F0KHJpZ2h0KTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgY2xlYXIpIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWNsZWFyLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2NsZWFyKGJvdGgpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtY2xlYXItbGVmdC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9jbGVhcihsZWZ0KTtcblx0XHR9XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWNsZWFyLXJpZ2h0LW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2NsZWFyKHJpZ2h0KTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgbm9fZ3V0dGVyKSBvciBpbmRleCgkd2hhdCwgbm9fbWFyZ2luKSBvciBpbmRleCgkd2hhdCwgaGVscGVycykge1xuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1uby1ndXR0ZXItbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSxcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tbWFyZ2luLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX25vX21hcmdpbigpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tZ3V0dGVyLWxlZnQtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSxcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tbWFyZ2luLWxlZnQtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBncmlkbGVfbm9fbWFyZ2luKGxlZnQpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tZ3V0dGVyLXJpZ2h0LW5hbWUtcGF0dGVybiwgJHN0YXRlKX0sXG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLW5vLW1hcmdpbi1yaWdodC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9ub19tYXJnaW4ocmlnaHQpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tZ3V0dGVyLXRvcC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9LFxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1uby1tYXJnaW4tdG9wLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX25vX21hcmdpbih0b3ApO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbm8tZ3V0dGVyLWJvdHRvbS1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9LFxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1uby1tYXJnaW4tYm90dG9tLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX25vX21hcmdpbihib3R0b20pO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBndXR0ZXIpIG9yIGluZGV4KCR3aGF0LCBtYXJnaW4pIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWd1dHRlci1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9LFxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1tYXJnaW4tbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBncmlkbGVfbWFyZ2luKGxlZnQgcmlnaHQpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZ3V0dGVyLWxlZnQtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSxcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtbWFyZ2luLWxlZnQtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBncmlkbGVfbWFyZ2luKGxlZnQpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZ3V0dGVyLXJpZ2h0LW5hbWUtcGF0dGVybiwgJHN0YXRlKX0sXG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLW1hcmdpbi1yaWdodC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9tYXJnaW4ocmlnaHQpO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZ3V0dGVyLXRvcC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9LFxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1tYXJnaW4tdG9wLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX21hcmdpbih0b3ApO1xuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZ3V0dGVyLWJvdHRvbS1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9LFxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1tYXJnaW4tYm90dG9tLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX21hcmdpbihib3R0b20pO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBhdXRvX2hlaWdodCkgb3IgaW5kZXgoJHdoYXQsIGhlbHBlcnMpIHtcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtYXV0by1oZWlnaHQtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRoZWlnaHQ6aW5oZXJpdDtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgY2VudGVyZWQpIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWNlbnRlcmVkLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2NlbnRlcmVkKG51bGwpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBwYXJlbnQpIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXBhcmVudC1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIF9ncmlkbGVfcGFyZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0QGlmICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHZlcnRpY2FsX2FsaWduKSBvciBpbmRleCgkd2hhdCwgaGVscGVycykge1xuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS12ZXJ0aWNhbC1hbGlnbi1taWRkbGUtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3ZlcnRpY2FsX2FsaWduKCk7XG5cdFx0fVxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS12ZXJ0aWNhbC1hbGlnbi10b3AtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3ZlcnRpY2FsX2FsaWduKHRvcCk7XG5cdFx0fVxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS12ZXJ0aWNhbC1hbGlnbi1ib3R0b20tbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3ZlcnRpY2FsX2FsaWduKGJvdHRvbSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFZpc2libGUsIGhpZGUsIGV0Yy4uLlxuXHQgKi9cblx0QGlmICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIGhpZGUpIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWhpZGUtbmFtZS1wYXR0ZXJuLCAkc3RhdGUpfSB7XG5cdFx0XHRAaW5jbHVkZSBncmlkbGVfaGlkZShudWxsKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgbm90X3Zpc2libGUpIG9yIGluZGV4KCR3aGF0LCBoZWxwZXJzKSB7XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLW5vdC12aXNpYmxlLW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX25vdF92aXNpYmxlKG51bGwpO1xuXHRcdH1cblx0fVxuXG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBzaG93KSBvciBpbmRleCgkd2hhdCwgaGVscGVycykge1xuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1zaG93LW5hbWUtcGF0dGVybiwgJHN0YXRlKX0ge1xuXHRcdFx0QGluY2x1ZGUgZ3JpZGxlX3Nob3cobnVsbCk7XG5cdFx0fVxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1zaG93LWlubGluZS1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9zaG93X2lubGluZShudWxsKTtcblx0XHR9XG5cdH1cblxuXHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgdmlzaWJsZSkgb3IgaW5kZXgoJHdoYXQsIGhlbHBlcnMpIHtcblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtdmlzaWJsZS1uYW1lLXBhdHRlcm4sICRzdGF0ZSl9IHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV92aXNpYmxlKG51bGwpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDbGVhciBlYWNoIGNsYXNzIDpcblx0ICovXG5cdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBjbGVhcl9lYWNoKSBvciBpbmRleCgkd2hhdCwgaGVscGVycykge1xuXHRcdEBlYWNoICRjbGVhck5hbWUsICRjbGVhck1hcCBpbiAkX2dyaWRsZV9jbGVhcl9jbGFzc2VzIHtcblx0XHRcdC8vIGdldCBjb3VudCA6XG5cdFx0XHQkY2xlYXJDb3VudCA6IG1hcC1nZXQoJGNsZWFyTWFwLCBjbGVhckVhY2gpO1xuXHRcdFx0Ly8gd2hhdCB0byBjbGVhciA6XG5cdFx0XHQkY2xlYXJXaGF0IDogbWFwLWdldCgkY2xlYXJNYXAsIGNsZWFyV2hhdCk7XG5cdFx0XHQvLyBnZW5lcmF0ZSB0aGUgY2xhc3MgOlxuXHRcdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWNsZWFyLWVhY2gtcGF0dGVybiwgJHN0YXRlLCAkY2xlYXJDb3VudCl9IHtcblx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9jbGVhcl9lYWNoKCRjbGVhckNvdW50LCAkY2xlYXJXaGF0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBkZWJ1ZyBjb2xvcnMgOlxuXHQkZGVidWcgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGVidWcsICRzdGF0ZSk7XG5cdEBpZiAkZGVidWcgYW5kICggJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgZGVidWdfY29sb3JzKSBvciBpbmRleCgkd2hhdCwgaGVscGVycykgKSB7XG5cdFx0Ly8gZGVidWcgY29sb3IgY2xhc3NlcyA6XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWRlYnVnLWNvbG9yLW5hbWUtcGF0dGVybiwgJHN0YXRlLCAxKX0ge1xuXHRcdFx0I3skZ3JpZGxlLWRlYnVnLXNlbGVjdG9yfSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3IgOiAjZWRlZWIyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZGVidWctY29sb3ItbmFtZS1wYXR0ZXJuLCAkc3RhdGUsIDIpfSB7XG5cdFx0XHQjeyRncmlkbGUtZGVidWctc2VsZWN0b3J9IHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvciA6ICNmYWU0YTc7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1kZWJ1Zy1jb2xvci1uYW1lLXBhdHRlcm4sICRzdGF0ZSwgMyl9IHtcblx0XHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yIDogI2Y1ZWFjYztcblx0XHRcdH1cblx0XHR9XG5cdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLWRlYnVnLWNvbG9yLW5hbWUtcGF0dGVybiwgJHN0YXRlLCA0KX0ge1xuXHRcdFx0I3skZ3JpZGxlLWRlYnVnLXNlbGVjdG9yfSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3IgOiAjZWViZGIyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZGVidWctY29sb3ItbmFtZS1wYXR0ZXJuLCAkc3RhdGUsIDUpfSB7XG5cdFx0XHQjeyRncmlkbGUtZGVidWctc2VsZWN0b3J9IHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvciA6ICNkNGIyZWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1kZWJ1Zy1jb2xvci1uYW1lLXBhdHRlcm4sICRzdGF0ZSwgNil9IHtcblx0XHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yIDogI2IyZDhlZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuXG4vLyBnZW5lcmF0ZSBzZXR0aW5ncyBqc29uIDpcbkBtaXhpbiBncmlkbGVfZ2VuZXJhdGVfanNvbl9zZXR0aW5ncygpIHtcblxuXHQvLyBzZXR0aW5ncyBjb250ZW50IDpcblx0JGdyaWRsZS1zZXR0aW5ncy1zdGF0ZXMgOiBcIntcIjtcblxuXHQvLyBnZW5lcmF0ZSBhbGwgY2xhc3NlcyBmb3IgZGlmZmVyZW50cyBtZWRpYSBxdWVyaWVzIDpcblx0JHN0YXRlc0NvdW50IDogbGVuZ3RoKCRfZ3JpZGxlX3N0YXRlcyk7XG5cdCRpIDogMDtcblx0QGVhY2ggJHN0YXRlTmFtZSwgJHN0YXRlIGluICRfZ3JpZGxlX3N0YXRlcyB7XG5cdFxuXHRcdCRuYW1lIDogJHN0YXRlTmFtZTtcblxuXHRcdCRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzIDogXCIjeyRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzfSBcXFwiI3skbmFtZX1cXFwiOntcIjtcblx0XG5cdFx0QGVhY2ggJHZhck5hbWUsICR2YXIgaW4gJHN0YXRlIHtcblxuXHRcdFx0JHZhbHVlIDogbnVsbDtcblx0XHRcdEBpZiAkdmFyTmFtZSA9PSBcInF1ZXJ5XCIge1xuXHRcdFx0XHQkdmFsdWUgOiBfZ3JpZGxlX2dldF9tZWRpYV9xdWVyeSgkc3RhdGVOYW1lKTtcblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHQkdmFsdWUgOiBtYXAtZ2V0KCRzdGF0ZSwkdmFyTmFtZSk7XG5cdFx0XHR9XG5cblx0XHRcdEBpZiAkdmFsdWUgPT0gbnVsbCB7XG5cdFx0XHRcdCRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzIDogXCIjeyRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzfSBcXFwiI3skdmFyTmFtZX1cXFwiIDogbnVsbCxcIjtcblx0XHRcdH0gQGVsc2VpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gYm9vbCB7XG5cdFx0XHRcdCRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzIDogXCIjeyRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzfSBcXFwiI3skdmFyTmFtZX1cXFwiIDogI3skdmFsdWV9LFwiO1xuXHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdCRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzIDogXCIjeyRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzfSBcXFwiI3skdmFyTmFtZX1cXFwiIDogXFxcIiN7JHZhbHVlfVxcXCIsXCI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0JGdyaWRsZS1zZXR0aW5ncy1zdGF0ZXMgOiBcIiN7JGdyaWRsZS1zZXR0aW5ncy1zdGF0ZXN9IFxcXCJfZ3JpZGxlXFxcIiA6IHRydWVcIjtcblxuXHRcdEBpZiAkaSA+PSAkc3RhdGVzQ291bnQgLSAxIHtcblx0XHRcdCRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzIDogXCIjeyRncmlkbGUtc2V0dGluZ3Mtc3RhdGVzfSB9XCI7XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQkZ3JpZGxlLXNldHRpbmdzLXN0YXRlcyA6IFwiI3skZ3JpZGxlLXNldHRpbmdzLXN0YXRlc30gfSxcIjtcblx0XHR9XG5cdFxuXHRcdC8vIHVwZGF0ZSBpIDpcblx0XHQkaSA6ICRpICsgMTtcblxuXHR9XG5cblx0IC8vIGdlbmVyYXRlIHNldHRpbmdzIGpzb24gOlxuXHQkZ3JpZGxlLXNldHRpbmdzLXN0YXRlcyA6IFwiI3skZ3JpZGxlLXNldHRpbmdzLXN0YXRlc319XCI7XG5cdCRncmlkbGUtc2V0dGluZ3MgOiBcIntcIjtcblx0JGdyaWRsZS1zZXR0aW5ncyA6IFwiI3skZ3JpZGxlLXNldHRpbmdzfSBcXFwidmVyc2lvblxcXCIgOiBcXFwiI3skX2dyaWRsZS12ZXJzaW9ufVxcXCJcIjtcblx0XG5cdC8vIHN0YXRlcyA6XG5cdCRncmlkbGUtc2V0dGluZ3MgOiBcIiN7JGdyaWRsZS1zZXR0aW5nc30sIFxcXCJzdGF0ZXNcXFwiIDogI3skZ3JpZGxlLXNldHRpbmdzLXN0YXRlc31cIjtcblx0XG5cdC8vIGRlYnVnIGRldmljZXMgOlxuXHQkZGVidWdfZGV2aWNlcyA6ICRfZ3JpZGxlX3N0YXRlc19kZWJ1Z19kZXZpY2VzO1xuXHRAaWYgbGVuZ3RoKCRfZ3JpZGxlX3N0YXRlc19kZWJ1Z19kZXZpY2VzKSA8PSAwIHtcblx0XHQkZGVidWdfZGV2aWNlcyA6IG51bGw7XG5cdH1cblx0Ly8gJGdyaWRsZS1zZXR0aW5ncyA6IFwiI3skZ3JpZGxlLXNldHRpbmdzfSwgXFxcImRlYnVnRGV2aWNlc1xcXCIgOiB7ICN7JGRlYnVnX2RldmljZXN9IH1cIjtcblxuXHQvLyBzZXR0aW5ncyA6XG5cdC8vICRncmlkbGUtc2V0dGluZ3MgOiBcIiN7JGdyaWRsZS1zZXR0aW5nc30sIFxcXCJjbGFzc1ByZWZpeFxcXCIgOiBcXFwiI3skZ3JpZGxlLWNsYXNzLXByZWZpeH1cXFwiXCI7XG5cdCRncmlkbGUtc2V0dGluZ3MgOiBcIiN7JGdyaWRsZS1zZXR0aW5nc30gfVwiO1xuXHQjZ3JpZGxlLXNldHRpbmdzIHtcblx0XHRjb250ZW50IDogJGdyaWRsZS1zZXR0aW5ncztcblx0fVxufVxuXG5cbi8vIGdyaWRsZSBtaXhpbiA6XG4vLyBHZW5lcmF0ZSBhbGwgdGhlIGNsYXNzZXMgbmVlZGVkIGZvciBhIGdyaWRcbkBtaXhpbiBncmlkbGVfZ2VuZXJhdGVfY2xhc3Nlcyhcblx0JHN0YXRlTmFtZSA6IG51bGwsXG5cdCR3aGF0IDogbnVsbCxcblx0JHNjb3BlIDogbnVsbFxuKSB7XG5cdC8vIGlmIHRoZSB3aGF0IHBhcmFtZXRlciBpcyBub3QgbnVsbCwgbWVhbiB0aGF0IHdlIG5lZWQgdG8gZ2VuZXJhdGUgb25seSBjZXJ0YWluIGNsYXNzZXMgaW4gYSBjZXJ0YWluIG9yZGVyIDpcblx0QGlmICR3aGF0XG5cdHtcblx0XHQvLyBsb29wIG9uIGVhY2ggd2hhdCBpdGVtIHRvIGdlbmVyYXRlIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzZXMgOlxuXHRcdEBlYWNoICR3IGluICR3aGF0XG5cdFx0e1xuXHRcdFx0Ly8gY2hlY2sgaWYgYSBzY29wZSBleGlzdCA6XG5cdFx0XHRAaWYgJHNjb3BlIHtcblx0XHRcdFx0Ly8gd3JhcHAgZ3JpZCBpbnRvIHNjb3BlIDpcblx0XHRcdFx0LiN7JHNjb3BlfSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9nZW5lcmF0ZV9jbGFzc2VzKCRzdGF0ZU5hbWUsICggJHcgKSwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHQvLyBnZW5lcmF0ZSBjbGFzc2VzIDpcblx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9nZW5lcmF0ZV9jbGFzc2VzKCRzdGF0ZU5hbWUsICggJHcgKSwgZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRAZWxzZVxuXHR7XG5cdFx0Ly8gZG9uJ3QgaGF2ZSBhbnkgXCJ3aGF0XCIgcGFyYW1ldGVyIHNvIGdlbmVyYXRlIGFsbCB0aGUgY2xhc3Nlc1xuXHRcdC8vIGNoZWNrIGlmIGEgc2NvcGUgZXhpc3QgOlxuXHRcdEBpZiAkc2NvcGUge1xuXHRcdFx0Ly8gd3JhcHAgZ3JpZCBpbnRvIHNjb3BlIDpcblx0XHRcdC4jeyRzY29wZX0ge1xuXHRcdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX2dlbmVyYXRlX2NsYXNzZXMoJHN0YXRlTmFtZSwgbnVsbCwgdHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fSBAZWxzZSB7XG5cdFx0XHQvLyBnZW5lcmF0ZSBjbGFzc2VzIDpcblx0XHRcdEBpbmNsdWRlIF9ncmlkbGVfZ2VuZXJhdGVfY2xhc3Nlcygkc3RhdGVOYW1lLCBudWxsLCBmYWxzZSk7XG5cdFx0fVxuXHR9XG59XG4kX2dyaWRsZV9nZW5lcmF0ZU9ubHlPbmNlIDogdHJ1ZTsgLy8ga2VlcCB0cmFjayBvZiBnZW5lcmF0ZSBvbmNlIGNsYXNzZXNcbkBtaXhpbiBfZ3JpZGxlX2dlbmVyYXRlX2NsYXNzZXMoXG5cdCRzdGF0ZU5hbWUgOiBudWxsLFxuXHQkd2hhdCA6IG51bGwsXG5cdCRoYXMtcGFyZW50IDogZmFsc2Vcbikge1xuIFxuXHQvLyBnZW5lcmF0ZSB0aGVzZSBjbGFzc2VzIG9ubHkgb25jZSA6XG5cdEBpZiAkX2dyaWRsZV9nZW5lcmF0ZU9ubHlPbmNlXG5cdHtcblxuXHRcdC8vIHVwZGF0ZSBzdGF0dXMgOlxuXHRcdCRfZ3JpZGxlX2dlbmVyYXRlT25seU9uY2UgOiBmYWxzZTtcblxuXHRcdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdFx0Ly8gfCBXaW5kb3dzIDggZml4XG5cdFx0Ly8gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHRcblx0XHQvLyBXaW5kb3dzIDggZml4IGZvciBzbmFwIG1vZGUgOlxuXHRcdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQwMHB4KSB7XG5cdFx0XHRALW1zLXZpZXdwb3J0IHsgd2lkdGg6IGRldmljZS13aWR0aDsgfVxuXHRcdH1cblxuXG5cdFx0Ly8gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHQvLyB8IENvbnRhaW5lclxuXHRcdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdCBcblx0XHQvLyBnZW5lcmF0ZSBjb250YWluZXIgY2xhc3MgOlxuXHRcdEBpZiAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBjb250YWluZXIpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KVxuXHRcdHtcblx0XHRcdCRjb250YWluZXItc2VsZWN0b3IgOiAoKTtcblx0XHRcdCRjb250YWluZXItc2VsZWN0b3IgOiBhcHBlbmQoICRjb250YWluZXItc2VsZWN0b3IsIHVucXVvdGUoXCIje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtY29udGFpbmVyLW5hbWUtcGF0dGVybil9XCIpLCBjb21tYSk7XG5cdFx0XHQjeyRjb250YWluZXItc2VsZWN0b3J9IHtcblx0XHRcdFx0QGluY2x1ZGUgZ3JpZGxlX2NvbnRhaW5lcigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXG5cdFx0Ly8gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHQvLyB8IFBhcmVudCBzZWxlY3RvclxuXHRcdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0XHQvLyBwYXJlbnQgY29tbW9uIGNzcyA6XG5cdFx0QGlmICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHBhcmVudCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpXG5cdFx0e1xuXHRcdFx0JHBhcmVudFNlbGVjdG9yIDogX2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1wYXJlbnQtbmFtZS1wYXR0ZXJuLG51bGwsbnVsbCk7XG5cdFx0XHQjeyRwYXJlbnRTZWxlY3Rvcn0ge1xuXHRcdFx0XHRAZXh0ZW5kICVncmlkbGUtY2xlYXJmaXg7XG5cdFx0XHRcdEBleHRlbmQgJWdyaWRsZS1wYXJlbnQtY29tbW9uO1xuXHRcdFx0fVxuXHRcdH1cblxuXG5cdFx0Ly8gLy8gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0XHQvLyAvLyB8IEpTT04gU2V0dGluZ3Ncblx0XHQvLyAvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQgXG5cdFx0Ly8gLy8gZ2VuZXJhdGUganNvbiBzZXR0aW5ncyA6XG5cdFx0QGlmICRncmlkbGUtZ2VuZXJhdGUtanNvbi1zZXR0aW5nc1xuXHRcdHtcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9nZW5lcmF0ZV9qc29uX3NldHRpbmdzKCk7XG5cdFx0fVxuXG5cdH1cblxuXG5cdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vIHwgU2V0IHRoZSBsaXN0IG9mIHN0YXRlcyB0byBnZW5lcmF0ZVxuXHQvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQkc3RhdGVzIDogJF9ncmlkbGVfc3RhdGVzO1xuXHRAaWYgJHN0YXRlTmFtZSBhbmQgX2dyaWRsZV9oYXNfc3RhdGUoJHN0YXRlTmFtZSkge1xuXHRcdCRzdGF0ZXMgOiBtYXAtc2V0KCgpLCAkc3RhdGVOYW1lLCBfZ3JpZGxlX2dldF9zdGF0ZSgkc3RhdGVOYW1lKSk7XG5cdH1cblxuXG5cdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vIHwgU3RvcmUgYWxsIHRoZSBnZW5lcmF0ZWQgY29tbW9uIHNlbGVjdG9yc1xuXHQvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdC8vIGdlbmVyYXRlIGFsbCBzZWxlY3RvciBmb3IgZXh0ZW5kcyA6XG5cdCRncmlkLWNvbW1vbi1zZWxlY3RvciA6ICgpO1xuXHQkcHVzaC1jb21tb24tc2VsZWN0b3IgOiAoKTtcblx0JHB1bGwtY29tbW9uLXNlbGVjdG9yIDogKCk7XG5cdCRwcmVmaXgtY29tbW9uLXNlbGVjdG9yIDogKCk7XG5cdCRzdWZmaXgtY29tbW9uLXNlbGVjdG9yIDogKCk7XG5cblxuXHQvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyB8IE1lZGlhIHF1ZXJpZXMgY2xhc3NlcyBjb21tb24gc2VsZWN0b3JzXG5cdC8vIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Ly8gZ2VuZXJhdGUgYWxsIGNsYXNzZXMgZm9yIG1lZGlhIHF1ZXJpZXMgOlxuXHRAZWFjaCAkc3RhdGVOYW1lLCAkc3RhdGUgaW4gJHN0YXRlcyB7XG5cdFxuXHRcdC8vIHNldHVwIHZhcnMgOlxuXHRcdCRtZWRpYSA6ICRzdGF0ZU5hbWU7XG5cdFx0JGNsYXNzZXMgOiBtYXAtZ2V0KCRzdGF0ZSwgY2xhc3Nlcyk7XG5cdFx0JGNvbnRleHQgOiBtYXAtZ2V0KCRzdGF0ZSwgY29udGV4dCk7XG5cdFx0JG5hbWUtbXVsdGlwbGljYXRvciA6IG1hcC1nZXQoJHN0YXRlLCBuYW1lLW11bHRpcGxpY2F0b3IpO1xuXHRcdCRnZW5lcmF0ZS1wdXNoLWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ2VuZXJhdGUtcHVzaC1jbGFzc2VzLCAkc3RhdGUpO1xuXHRcdCRnZW5lcmF0ZS1wdWxsLWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ2VuZXJhdGUtcHVsbC1jbGFzc2VzLCAkc3RhdGUpO1xuXHRcdCRnZW5lcmF0ZS1wcmVmaXgtY2xhc3NlcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShnZW5lcmF0ZS1wcmVmaXgtY2xhc3NlcywgJHN0YXRlKTtcblx0XHQkZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ2VuZXJhdGUtc3VmZml4LWNsYXNzZXMsICRzdGF0ZSk7XG5cblx0XHQvLyBnZW5lcmF0ZSBjbGFzc2VzIDogICBcblx0XHRAaWYgJGNsYXNzZXMgPT0gdHJ1ZSBhbmQgJGNvbnRleHQge1xuXG5cdFx0XHQvLyBnZXQgc3BlY2lhbHMgY29sdW1ucyA6XG5cdFx0XHQkY29sdW1uc01hcCA6IG1hcC1tZXJnZSgoKSwgJF9ncmlkbGVfY29sdW1ucyk7XG5cblx0XHRcdC8vIHJlZ2lzdGVyIGVhY2ggZGVmYXVsdCBjb2x1bW5zIDpcblx0XHRcdEBmb3IgJGogZnJvbSAwIHRocm91Z2ggJGNvbnRleHQge1xuXHRcdFx0XHRcblx0XHRcdFx0Ly8gbmFtZSA6XG5cdFx0XHRcdCRjb2x1bW5OYW1lIDogXCIjeyRqKiRuYW1lLW11bHRpcGxpY2F0b3J9XCI7XG5cdFx0XHRcdCRjb2x1bW5XaWR0aCA6ICRqICogJG5hbWUtbXVsdGlwbGljYXRvcjtcblxuXHRcdFx0XHQvLyAvLyBjcmVhdGUgYSBjb2x1bW4gOlxuXHRcdFx0XHQkY29sIDogX2dyaWRsZV9jcmVhdGVfY29sdW1uKCRjb2x1bW5OYW1lLCAkY29sdW1uV2lkdGgsICRjb250ZXh0LCAkbmFtZS1tdWx0aXBsaWNhdG9yKTtcblxuXHRcdFx0XHQvLyAvLyBhZGQgY29sdW1uIGluIGNvbHVtbnMgbWFwIDpcblx0XHRcdFx0JGNvbHVtbnNNYXAgOiBtYXAtc2V0KCRjb2x1bW5zTWFwLCAkY29sdW1uTmFtZSwgICRjb2wpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBsb29wIG9uIGVhY2ggY29sdW1ucyB0byBnZW5lcmF0ZSBjb21tb24gc2VsZWN0b3IgOlxuXHRcdFx0QGVhY2ggJGNvbHVtbk5hbWUsICRjb2x1bW4gaW4gJGNvbHVtbnNNYXAge1xuXHRcdCBcdFxuXHRcdFx0XHQvLyBhZGQgc2VsZWN0b3IgOlxuXHRcdFx0XHRAaWYgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgZ3JpZCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpIHtcblx0XHRcdFx0XHQkZ3JpZC1jb21tb24tc2VsZWN0b3IgOiBhcHBlbmQoICRncmlkLWNvbW1vbi1zZWxlY3RvciwgdW5xdW90ZShcIiN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1ncmlkLW5hbWUtcGF0dGVybiwgJG1lZGlhLCAkY29sdW1uTmFtZSl9XCIpLCBjb21tYSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAkZ2VuZXJhdGUtcHVzaC1jbGFzc2VzIGFuZCAoJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgcHVzaCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpKSB7XG5cdFx0XHRcdFx0JHB1c2gtY29tbW9uLXNlbGVjdG9yIDogYXBwZW5kKCAkcHVzaC1jb21tb24tc2VsZWN0b3IsIHVucXVvdGUoXCIje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtcHVzaC1uYW1lLXBhdHRlcm4sICRtZWRpYSwgJGNvbHVtbk5hbWUpfVwiKSwgY29tbWEgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgJGdlbmVyYXRlLXB1bGwtY2xhc3NlcyBhbmQgKCR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHB1bGwpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSkge1xuXHRcdFx0XHRcdCRwdWxsLWNvbW1vbi1zZWxlY3RvciA6IGFwcGVuZCggJHB1bGwtY29tbW9uLXNlbGVjdG9yLCB1bnF1b3RlKFwiI3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXB1bGwtbmFtZS1wYXR0ZXJuLCAkbWVkaWEsICRjb2x1bW5OYW1lKX1cIiksIGNvbW1hICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0QGlmICRnZW5lcmF0ZS1wcmVmaXgtY2xhc3NlcyBhbmQgKCR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHByZWZpeCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpKSB7XG5cdFx0XHRcdFx0JHByZWZpeC1jb21tb24tc2VsZWN0b3IgOiBhcHBlbmQoICRwcmVmaXgtY29tbW9uLXNlbGVjdG9yLCB1bnF1b3RlKFwiI3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXByZWZpeC1uYW1lLXBhdHRlcm4sICRtZWRpYSwgJGNvbHVtbk5hbWUpfVwiKSwgY29tbWEgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRAaWYgJGdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzIGFuZCAoJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgc3VmZml4KSBvciBpbmRleCgkd2hhdCwgZGVmYXVsdCkpIHtcblx0XHRcdFx0XHQkc3VmZml4LWNvbW1vbi1zZWxlY3RvciA6IGFwcGVuZCggJHN1ZmZpeC1jb21tb24tc2VsZWN0b3IsIHVucXVvdGUoXCIje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtc3VmZml4LW5hbWUtcGF0dGVybiwgJG1lZGlhLCAkY29sdW1uTmFtZSl9XCIpLCBjb21tYSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG4gXG5cdC8vIGNvbW1vbiBjc3MgOlxuXHRAaWYgICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIGdyaWQpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSB7XG5cdFx0I3skZ3JpZC1jb21tb24tc2VsZWN0b3J9IHtcblx0XHRcdEBpbmNsdWRlIF9ncmlkbGVfZ3JpZF9jb21tb24oKTtcblx0XHR9XG5cdH1cblx0QGlmICAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBwdXNoKSBvciBpbmRleCgkd2hhdCwgZGVmYXVsdCkge1xuXHRcdCN7JHB1c2gtY29tbW9uLXNlbGVjdG9yfSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3B1c2hfY29tbW9uKCk7XG5cdFx0fVxuXHR9XG5cdEBpZiAgJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgcHVsbCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpIHtcblx0XHQjeyRwdWxsLWNvbW1vbi1zZWxlY3Rvcn0ge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wdWxsX2NvbW1vbigpO1xuXHRcdH1cblx0fVxuXHRAaWYgICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHByZWZpeCkgb3IgaW5kZXgoJHdoYXQsIGRlZmF1bHQpIHtcblx0XHQjeyRwcmVmaXgtY29tbW9uLXNlbGVjdG9yfSB7XG5cdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3ByZWZpeF9jb21tb24oKTtcblx0XHR9XG5cdH1cblx0QGlmICAkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBzdWZmaXgpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSB7XG5cdFx0I3skc3VmZml4LWNvbW1vbi1zZWxlY3Rvcn0ge1xuXHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9zdWZmaXhfY29tbW9uKCk7XG5cdFx0fVxuXHR9XG5cblxuXHQvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyB8IE1lZGlhIHF1ZXJpZXMgY2xhc3Nlc1xuXHQvLyB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIFxuXHQvLyBnZW5lcmF0ZSBhbGwgY2xhc3NlcyBmb3IgZGlmZmVyZW50cyBtZWRpYSBxdWVyaWVzIDpcblx0QGVhY2ggJHN0YXRlTmFtZSwgJHN0YXRlIGluICRzdGF0ZXMge1xuXHRcdFxuXHRcdC8vIHNldHVwIHZhcnMgOlxuXHRcdCRjbGFzc2VzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGNsYXNzZXMsICRzdGF0ZSk7XG5cdFx0JGNvbnRleHQgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoY29udGV4dCwgJHN0YXRlKTtcblx0XHQkbmFtZS1tdWx0aXBsaWNhdG9yIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKG5hbWUtbXVsdGlwbGljYXRvciwgJHN0YXRlKTtcblx0XHQkZ2VuZXJhdGUtcHVzaC1jbGFzc2VzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGdlbmVyYXRlLXB1c2gtY2xhc3NlcywgJHN0YXRlKTtcblx0XHQkZ2VuZXJhdGUtcHVsbC1jbGFzc2VzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGdlbmVyYXRlLXB1bGwtY2xhc3NlcywgJHN0YXRlKTtcblx0XHQkZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ2VuZXJhdGUtcHJlZml4LWNsYXNzZXMsICRzdGF0ZSk7XG5cdFx0JGdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzLCAkc3RhdGUpO1xuXHRcdCRnZW5lcmF0ZS1oZWxwZXJzLWNsYXNzZXMgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ2VuZXJhdGUtaGVscGVycy1jbGFzc2VzLCAkc3RhdGUpO1xuXG5cdFx0Ly8gZ2VuZXJhdGUgYWxsIG1lZGlhIHF1ZXJpZXMgZ3JpZCBjbGFzc2VzIDpcblx0XHRAaWYgJGNsYXNzZXMgPT0gdHJ1ZSB7XG5cblx0XHRcdC8vIHBhcmVudCBjb21tb24gY3NzIDpcblx0XHRcdCRwYXJlbnRTZWxlY3RvciA6IF9ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtcGFyZW50LW5hbWUtcGF0dGVybiwkc3RhdGVOYW1lLG51bGwpO1xuXHRcdFx0I3skcGFyZW50U2VsZWN0b3J9IHtcblx0XHRcdFx0QGV4dGVuZCAlZ3JpZGxlLWNsZWFyZml4O1xuXHRcdFx0XHRAZXh0ZW5kICVncmlkbGUtcGFyZW50LWNvbW1vbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gZ2VuZXJhdGUgYWxsIHRoZSBjbGFzc2VzIDpcblx0XHRcdEBpbmNsdWRlIGdyaWRsZV9zdGF0ZSgkc3RhdGVOYW1lLCAkaGFzLXBhcmVudCkge1xuXHRcdCBcblx0XHRcdFx0Ly8gZ2V0IHNwZWNpYWxzIGNvbHVtbnMgOlxuXHRcdFx0XHQkY29sdW1uc01hcCA6IG1hcC1tZXJnZSgoKSwgJF9ncmlkbGVfY29sdW1ucyk7XG5cblx0XHRcdFx0Ly8gcmVnaXN0ZXIgZWFjaCBkZWZhdWx0IGNvbHVtbnMgOlxuXHRcdFx0XHRAZm9yICRqIGZyb20gMCB0aHJvdWdoICRjb250ZXh0IHtcblx0XHRcdFx0XHRcblx0XHRcdFx0XHQvLyBuYW1lIDpcblx0XHRcdFx0XHQkY29sdW1uTmFtZSA6IFwiI3skaiokbmFtZS1tdWx0aXBsaWNhdG9yfVwiO1xuXHRcdFx0XHRcdCRjb2x1bW5XaWR0aCA6ICRqICogJG5hbWUtbXVsdGlwbGljYXRvcjtcblxuXHRcdFx0XHRcdC8vIC8vIGNyZWF0ZSBhIGNvbHVtbiA6XG5cdFx0XHRcdFx0JGNvbCA6IF9ncmlkbGVfY3JlYXRlX2NvbHVtbigkY29sdW1uTmFtZSwgJGNvbHVtbldpZHRoLCAkY29udGV4dCwgJG5hbWUtbXVsdGlwbGljYXRvcik7XG5cblx0XHRcdFx0XHQvLyAvLyBhZGQgY29sdW1uIGluIGNvbHVtbnMgbWFwIDpcblx0XHRcdFx0XHQkY29sdW1uc01hcCA6IG1hcC1zZXQoJGNvbHVtbnNNYXAsICRjb2x1bW5OYW1lLCAgJGNvbCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBnZW5lcmF0ZSBhbGwgY2xhc3NlcyBmb3IgY29sdW1ucyA6XG5cdFx0XHRcdEBlYWNoICRjb2x1bW5OYW1lLCAkY29sdW1uIGluICRjb2x1bW5zTWFwIHtcblxuXHRcdFx0XHRcdC8vIHZhcmlhYmxlcyA6XG5cdFx0XHRcdFx0JGNvbHVtbnNDb3VudCA6IG1hcC1nZXQoJGNvbHVtbiwgY29sdW1ucyk7XG5cdFx0XHRcdFx0JGNvbHVtbnNDb250ZXh0IDogbWFwLWdldCgkY29sdW1uLCBjb250ZXh0KTtcblx0XHRcdFx0XHQkY29sdW1uc05hbWVNdWx0aXBsaWNhdG9yIDogbWFwLWdldCgkY29sdW1uLCBuYW1lLW11bHRpcGxpY2F0b3IpO1xuXG5cdFx0XHRcdFx0Ly8gZXh0ZW5kIGNvbnRleHQgaW4gc3RhdGUgKGZvciBjb2x1bW5zKSA6XG5cdFx0XHRcdFx0JGV4dGVuZGVkU3RhdGUgOiBtYXAtbWVyZ2UoJHN0YXRlLCAoXG5cdFx0XHRcdFx0XHRjb250ZXh0IDogJGNvbHVtbnNDb250ZXh0LFxuXHRcdFx0XHRcdFx0bmFtZS1tdWx0aXBsaWNhdG9yIDogJGNvbHVtbnNOYW1lTXVsdGlwbGljYXRvciAvLyBpbmplY3QgdGhlIG5hbWUgbXVsdGlwbGljYXRvciBoZXJlIGdldHRlZCBmcm9tIGNvbHVtbiB0byBoYW5kbGUgY3VzdG9tIHJlZ2lzdGVyZWQgY29sdW1uc1xuXHRcdFx0XHRcdCkpO1xuXG5cdFx0XHRcdFx0Ly8gY2xhc3NlcyA6XG5cdFx0XHRcdFx0QGlmICR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIGdyaWQpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSB7XG5cdFx0XHRcdFx0XHQje19ncmlkbGVfY2xhc3NuYW1lKCRncmlkbGUtZ3JpZC1uYW1lLXBhdHRlcm4sICRzdGF0ZU5hbWUsICRjb2x1bW5OYW1lKX0ge1xuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBfZ3JpZGxlKCRjb2x1bW5zQ291bnQsICRleHRlbmRlZFN0YXRlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0QGlmICRnZW5lcmF0ZS1wdXNoLWNsYXNzZXMgPT0gdHJ1ZSBhbmQgKCR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHB1c2gpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSkge1xuXHRcdFx0XHRcdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXB1c2gtbmFtZS1wYXR0ZXJuLCAkc3RhdGVOYW1lLCAkY29sdW1uTmFtZSl9IHtcblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wdXNoKCRjb2x1bW5zQ291bnQsICRleHRlbmRlZFN0YXRlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0QGlmICRnZW5lcmF0ZS1wdWxsLWNsYXNzZXMgPT0gdHJ1ZSBhbmQgKCR3aGF0ID09IG51bGwgb3IgaW5kZXgoJHdoYXQsIHB1bGwpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSkge1xuXHRcdFx0XHRcdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXB1bGwtbmFtZS1wYXR0ZXJuLCAkc3RhdGVOYW1lLCAkY29sdW1uTmFtZSl9IHtcblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wdWxsKCRjb2x1bW5zQ291bnQsICRleHRlbmRlZFN0YXRlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0QGlmICRnZW5lcmF0ZS1wcmVmaXgtY2xhc3NlcyA9PSB0cnVlIGFuZCAoJHdoYXQgPT0gbnVsbCBvciBpbmRleCgkd2hhdCwgcHJlZml4KSBvciBpbmRleCgkd2hhdCwgZGVmYXVsdCkpIHtcblx0XHRcdFx0XHRcdCN7X2dyaWRsZV9jbGFzc25hbWUoJGdyaWRsZS1wcmVmaXgtbmFtZS1wYXR0ZXJuLCAkc3RhdGVOYW1lLCAkY29sdW1uTmFtZSl9IHtcblx0XHRcdFx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9wcmVmaXgoJGNvbHVtbnNDb3VudCwgJGV4dGVuZGVkU3RhdGUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRAaWYgJGdlbmVyYXRlLXN1ZmZpeC1jbGFzc2VzID09IHRydWUgYW5kICgkd2hhdCA9PSBudWxsIG9yIGluZGV4KCR3aGF0LCBzdWZmaXgpIG9yIGluZGV4KCR3aGF0LCBkZWZhdWx0KSkge1xuXHRcdFx0XHRcdFx0I3tfZ3JpZGxlX2NsYXNzbmFtZSgkZ3JpZGxlLXN1ZmZpeC1uYW1lLXBhdHRlcm4sICRzdGF0ZU5hbWUsICRjb2x1bW5OYW1lKX0ge1xuXHRcdFx0XHRcdFx0XHRAaW5jbHVkZSBfZ3JpZGxlX3N1ZmZpeCgkY29sdW1uc0NvdW50LCAkZXh0ZW5kZWRTdGF0ZSk7XG5cdFx0XHRcdFx0XHR9ICAgXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG4gXG5cdFx0XHRcdC8vIG1lZGlhIHF1ZXJpZXMgaGVscGVycyBjbGFzc2VzIDpcblx0XHRcdFx0QGlmICRnZW5lcmF0ZS1oZWxwZXJzLWNsYXNzZXMgPT0gdHJ1ZSB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgX2dyaWRsZV9nZW5lcmF0ZV9oZWxwZXJfY2xhc3Nlcygkc3RhdGVOYW1lLCAkd2hhdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn0iLCIvLyBpbXBvcnQgZ3JpZGxlXG5AaW1wb3J0ICcuLi9ncmlkbGUvZ3JpZGxlJztcblxuLy8gc2V0dXAgdGhlIGdyaWRcbkBpbmNsdWRlIGdyaWRsZV9zZXR1cCgoXG4gIGNvbnRleHQgOiAxNixcbiAgZ3V0dGVyLXdpZHRoIDogMjBweCxcbikpO1xuXG4vKipcbiAqIFN0YXRlIHdpdGggY2FuIGFsc28gaW5jbHVkZSBtZWRpYSBxdWVyaWVzOlxuICovXG5AaW5jbHVkZSBncmlkbGVfcmVnaXN0ZXJfc3RhdGUoc20gLCAoXG4gIHF1ZXJ5IDogJHNtYWxsLW9ubHksXG4gIGNvbnRleHQgOiAxMlxuKSk7XG5cbkBpbmNsdWRlIGdyaWRsZV9yZWdpc3Rlcl9zdGF0ZShtZCAsIChcbiAgcXVlcnkgOiAkbWVkaXVtLW9ubHlcbikpO1xuXG5AaW5jbHVkZSBncmlkbGVfcmVnaXN0ZXJfc3RhdGUobGcgLCAoXG4gIHF1ZXJ5IDogJGxhcmdlLW9ubHlcbikpO1xuXG4vLyBVbnVzZWRcbi8vIEBpbmNsdWRlIGdyaWRsZV9yZWdpc3Rlcl9zdGF0ZShtZCAsIChcbi8vICAgcXVlcnkgOiAkbWVkaXVtLW9ubHlcbi8vICkpO1xuLy9cbi8vIEBpbmNsdWRlIGdyaWRsZV9yZWdpc3Rlcl9zdGF0ZShsZyAsIChcbi8vICAgcXVlcnkgOiAkbGFyZ2Utb25seVxuLy8gKSk7XG4vL1xuLy8gQGluY2x1ZGUgZ3JpZGxlX3JlZ2lzdGVyX3N0YXRlKHhsICwgKFxuLy8gICBxdWVyeSA6ICR4bGFyZ2Utb25seVxuLy8gKSk7XG4vL1xuLy8gQGluY2x1ZGUgZ3JpZGxlX3JlZ2lzdGVyX3N0YXRlKHh4bCAsIChcbi8vICAgcXVlcnkgOiAkeHhsYXJnZS1vbmx5XG4vLyApKTtcblxuQGluY2x1ZGUgZ3JpZGxlX2dlbmVyYXRlX2NsYXNzZXMoYWxsLCBncmlkIHB1c2gpO1xuXG4vLyBZb3UgZG9uJ3QgaGF2ZSB0byB0ZWxsIHlvdXIgZ3JpZCBpdGVtcyB0byB0YWtlIHRoZSBmdWxsIHdpdGggb24gc21hbGwgc3RhdGUgd2l0aCB0aGlzXG4vLyBUaGlzIGRvZXMgbWFrZSBncmlkLXNtLTEyLCBwdXNoLXNtLTAsIGdyaWQtbWQtMTIsIHB1c2gtbWQtMCB1bm5lZWRlZFxuW2NsYXNzKj1cImdyaWQtXCJdIHtcbiAgQGluY2x1ZGUgZ3JpZGxlX3N0YXRlKHNtKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgfVxuICBAaW5jbHVkZSBncmlkbGVfc3RhdGUobWQpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICB9XG59XG4iLCIvLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyB8IENvbW1vbiBtaXhpbnNcbi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIF9ncmlkbGVfY29udGFpbmVyX2NvbW1vbihcblx0JHN0YXRlIDogZGVmYXVsdFxuKSB7XG5cdEBleHRlbmQgJWdyaWRsZS1zaW1wbGUtY2xlYXJmaXg7XG5cdEBleHRlbmQgJWdyaWRsZS1jb250YWluZXItY29tbW9uO1xuXHQvLyBkZWJ1ZyBwYXJ0XG5cdCRkZWJ1ZyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1ZywgJHN0YXRlKTtcblx0QGlmICgkZGVidWcgPT0gdHJ1ZSkge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0QGV4dGVuZCAlZ3JpZGxlLWNvbnRhaW5lci1kZWJ1Zy1jb21tb247XG5cdFx0fVxuXHR9XG59XG4kX2dyaWRsZS1hbHJlYWR5LWdlbmVyYXRlZCA6ICgpO1xuQG1peGluIF9ncmlkbGVfZ3JpZF9jb21tb24oKSB7XG5cdEBleHRlbmQgJWdyaWRsZS1ncmlkLWNvbW1vbjtcblxuXHQvLyBkZWZhdWx0IHZhbHVlc1xuXHQkZGVmYXVsdC1ndXR0ZXItd2lkdGggOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ3V0dGVyLXdpZHRoLCBkZWZhdWx0KTtcblx0JGRlZmF1bHQtZGlyZWN0aW9uIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRpcmVjdGlvbiwgZGVmYXVsdCk7XG5cblx0Ly8gbG9vcCBvbiBlYWNoIHN0YXRlcyA6XG5cdEBlYWNoICRzdGF0ZU5hbWUsICRzdGF0ZSBpbiAkX2dyaWRsZS1zdGF0ZXNcblx0e1xuXHRcdC8vIHNlbGVjdG9yIGtleSB0byBiZSB1c2VkIGluIG1hcFxuXHRcdCRrZXkgOiBcIiN7JHN0YXRlTmFtZX0gI3smfVwiO1xuXG5cdFx0Ly8gY2hlY2sgaWYgYWxyZWFkeSBnZW5lcmF0ZWQgY2xhc3Nlc1xuXHRcdCRhbHJlYWR5LWdlbmVyYXRlZCA6IG1hcC1oYXMta2V5KCRfZ3JpZGxlLWFscmVhZHktZ2VuZXJhdGVkLCAka2V5KTtcblxuXHRcdC8vIHZhcnNcblx0XHQkZGlyZWN0aW9uIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRpcmVjdGlvbiwgJHN0YXRlKTtcblx0XHQkY2xhc3NlcyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShjbGFzc2VzLCAkc3RhdGUpO1xuXHRcdCRndXR0ZXItd2lkdGggOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZ3V0dGVyLXdpZHRoLCAkc3RhdGUpO1xuXHRcdCRkZWJ1ZyA6IF9ncmlkbGVfZ2V0X3Zhcl92YWx1ZShkZWJ1ZywgJHN0YXRlKTtcblxuXHRcdEBpZiAkYWxyZWFkeS1nZW5lcmF0ZWQgIT0gdHJ1ZSBhbmQgJGNsYXNzZXMgYW5kICggKCRkZWZhdWx0LWRpcmVjdGlvbiAhPSAkZGlyZWN0aW9uIG9yICRkZWZhdWx0LWd1dHRlci13aWR0aCAhPSAkZ3V0dGVyLXdpZHRoKSBvciAkc3RhdGVOYW1lID09IGRlZmF1bHQpXG5cdFx0e1xuXHRcdFx0Ly8gc2V0IHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGdlbmVyYXRlZCBjc3MgZm9yIHRoaXMgc2VsZWN0b3Jcblx0XHRcdCRfZ3JpZGxlLWFscmVhZHktZ2VuZXJhdGVkIDogbWFwLXNldCgkX2dyaWRsZS1hbHJlYWR5LWdlbmVyYXRlZCwgJGtleSwgdHJ1ZSkgIWdsb2JhbDtcblx0XHRcdFxuXHRcdFx0Ly8gZ2VuZXJhdGUgdGhlIGNzcyBmb3IgdGhpcyBlbGVtZW50XG5cdFx0XHRAaW5jbHVkZSBncmlkbGVfc3RhdGUoJHN0YXRlKSB7XG5cdFx0XHRcdEBpZiAkZGlyZWN0aW9uICE9ICRkZWZhdWx0LWRpcmVjdGlvbiBvciAkc3RhdGVOYW1lID09IGRlZmF1bHQge1xuXHRcdFx0XHRcdC8vIGNvbnRlbnQgOiBcIiN7JGtleX1cIjtcblx0XHRcdFx0XHRAaWYgJGRpcmVjdGlvbiA9PSBydGwge1xuXHRcdFx0XHRcdFx0ZmxvYXQ6cmlnaHQ7XG5cdFx0XHRcdFx0XHRkaXJlY3Rpb246cnRsO1xuXHRcdFx0XHRcdH0gQGVsc2Uge1xuXHRcdFx0XHRcdFx0ZmxvYXQ6bGVmdDtcblx0XHRcdFx0XHRcdGRpcmVjdGlvbjpsdHI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdEBpZiAkZ3V0dGVyLXdpZHRoICE9ICRkZWZhdWx0LWd1dHRlci13aWR0aCBvciAkc3RhdGVOYW1lID09IGRlZmF1bHQge1xuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDokZ3V0dGVyLXdpZHRoLzI7XG5cdFx0XHRcdFx0cGFkZGluZy1yaWdodDokZ3V0dGVyLXdpZHRoLzI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0QGlmICRkZWJ1ZyA9PSB0cnVlIHtcblx0XHRcdFx0I3skZ3JpZGxlLWRlYnVnLXNlbGVjdG9yfSB7XG5cdFx0XHRcdFx0QGV4dGVuZCAlZ3JpZGxlLWdyaWQtZGVidWctY29tbW9uO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9wYXJlbnRfY29tbW9uKCkge1xuXHRAZXh0ZW5kICVncmlkbGUtY2xlYXJmaXg7XG5cdEBleHRlbmQgJWdyaWRsZS1wYXJlbnQtY29tbW9uO1xufVxuQG1peGluIF9ncmlkbGVfcHVzaF9jb21tb24oXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQkZGVidWcgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGVidWcsICRzdGF0ZSk7XG5cblx0Ly8gZXh0ZW5kIGNvbW1vbiA6XG5cdEBleHRlbmQgJWdyaWRsZS1wdXNoLXB1bGwtY29tbW9uO1xuXHRAaWYgJGRlYnVnID09IHRydWUge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0QGV4dGVuZCAlZ3JpZGxlLXB1c2gtcHVsbC1kZWJ1Zy1iYWNrZ3JvdW5kLWNvbW1vbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6I2Y0ZWZkZiAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxufVxuQG1peGluIF9ncmlkbGVfcHVsbF9jb21tb24oXG5cdCRzdGF0ZSA6IGRlZmF1bHRcbikge1xuXHQkZGVidWcgOiBfZ3JpZGxlX2dldF92YXJfdmFsdWUoZGVidWcsICRzdGF0ZSk7XG5cblx0QGV4dGVuZCAlZ3JpZGxlLXB1c2gtcHVsbC1jb21tb247XG5cdEBpZiAkZGVidWcgPT0gdHJ1ZSB7XG5cdFx0I3skZ3JpZGxlLWRlYnVnLXNlbGVjdG9yfSB7XG5cdFx0XHRAZXh0ZW5kICVncmlkbGUtcHVzaC1wdWxsLWRlYnVnLWJhY2tncm91bmQtY29tbW9uO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjojY2ZlNGQ1ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9wcmVmaXhfY29tbW9uKFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0JGRlYnVnIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLCAkc3RhdGUpO1xuXHRAaWYgJGRlYnVnID09IHRydWUge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0QGV4dGVuZCAlZ3JpZGxlLXByZWZpeC1kZWJ1Zy1jb21tb247XG5cdFx0fVxuXHR9XG59XG5AbWl4aW4gX2dyaWRsZV9zdWZmaXhfY29tbW9uKFxuXHQkc3RhdGUgOiBkZWZhdWx0XG4pIHtcblx0JGRlYnVnIDogX2dyaWRsZV9nZXRfdmFyX3ZhbHVlKGRlYnVnLCAkc3RhdGUpO1xuXHRAaWYgJGRlYnVnID09IHRydWUge1xuXHRcdCN7JGdyaWRsZS1kZWJ1Zy1zZWxlY3Rvcn0ge1xuXHRcdFx0QGV4dGVuZCAlZ3JpZGxlLXN1ZmZpeC1kZWJ1Zy1jb21tb247XG5cdFx0fVxuXHR9XG59IiwiQGZvbnQtZmFjZXtcbiAgZm9udC1mYW1pbHk6ICdBc3RvcmlhJztcbiAgc3JjOiB1cmwoJy4uL2ZvbnRzL0FzdG9yaWEtRXh0cmFMaWdodC13ZWJmb250LmVvdCcpO1xuICBzcmM6IHVybCgnLi4vZm9udHMvQXN0b3JpYS1FeHRyYUxpZ2h0LXdlYmZvbnQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgIHVybCgnLi4vZm9udHMvQXN0b3JpYS1FeHRyYUxpZ2h0LXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksXG4gICAgICB1cmwoJy4uL2ZvbnRzL0FzdG9yaWEtRXh0cmFMaWdodC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgIHVybCgnLi4vZm9udHMvQXN0b3JpYS1FeHRyYUxpZ2h0LXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgICAgdXJsKCcuLi9mb250cy9Bc3RvcmlhLUV4dHJhTGlnaHQtd2ViZm9udC5zdmcjYXN0b3JpYUV4dHJhTGlnaHQnKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2V7XG4gIGZvbnQtZmFtaWx5OiAnQXN0b3JpYSc7XG4gIHNyYzogdXJsKCcuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LmVvdCcpO1xuICBzcmM6IHVybCgnLi4vZm9udHMvQXN0b3JpYS1NZWRpdW0td2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgdXJsKCcuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLFxuICAgICAgdXJsKCcuLi9mb250cy9Bc3RvcmlhLU1lZGl1bS13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgIHVybCgnLi4vZm9udHMvQXN0b3JpYS1NZWRpdW0td2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICB1cmwoJy4uL2ZvbnRzL0FzdG9yaWEtTWVkaXVtLXdlYmZvbnQuc3ZnI2FzdG9yaWFNZWRpdW0nKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS4xO1xuICBtYXJnaW46IDA7XG59XG5cbmgxIHtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgZm9udC1zaXplOiByZW0tY2FsYyg2NCk7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG5oMiB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktcmVndWxhcjtcbiAgZm9udC1zaXplOiByZW0tY2FsYygyMCk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG5oMyB7XG4gIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbGlnaHQ7XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xufVxuXG5zcGFuLndoby1pcy1yb3NhLTIwMTYge1xuICBjb2xvcjogJHBpbms7XG4gIGZvbnQtc2l6ZTogcmVtLWNhbGMoMTAwKTtcbiAgbGluZS1oZWlnaHQ6IDAuOTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICBAbWVkaWEgI3skbWluaS1vbmx5fSB7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYyg3Mik7XG4gIH1cbn1cbiIsIi8vIFRoZSBkZWZhdWx0IGZvbnQtc2l6ZSBpcyBzZXQgdG8gMTAwJSBvZiB0aGUgYnJvd3NlciBzdHlsZSBzaGVldCAodXN1YWxseSAxNnB4KVxuLy8gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBicm93c2VyLWJhc2VkIHRleHQgem9vbSBvciB1c2VyLXNldCBkZWZhdWx0cy5cblxuLy8gU2luY2UgdGhlIHR5cGljYWwgZGVmYXVsdCBicm93c2VyIGZvbnQtc2l6ZSBpcyAxNnB4LCB0aGF0IG1ha2VzIHRoZSBjYWxjdWxhdGlvbiBmb3IgZ3JpZCBzaXplLlxuLy8gSWYgeW91IHdhbnQgeW91ciBiYXNlIGZvbnQtc2l6ZSB0byBiZSBkaWZmZXJlbnQgYW5kIG5vdCBoYXZlIGl0IGFmZmVjdCB0aGUgZ3JpZCBicmVha3BvaW50cyxcbi8vIHNldCAkcmVtLWJhc2UgdG8gJGJhc2UtZm9udC1zaXplIGFuZCBtYWtlIHN1cmUgJGJhc2UtZm9udC1zaXplIGlzIGEgcHggdmFsdWUuXG4kYmFzZS1mb250LXNpemU6IDEwMCUgIWRlZmF1bHQ7XG5cbi8vICRiYXNlLWxpbmUtaGVpZ2h0IGlzIDI0cHggd2hpbGUgJGJhc2UtZm9udC1zaXplIGlzIDE2cHhcbiRiYXNlLWxpbmUtaGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cblxuLy8gTWVkaWEgUXVlcnkgUmFuZ2VzXG4kbWluaS1icmVha3BvaW50OiBlbS1jYWxjKDM4MCkgIWRlZmF1bHQ7XG4kc21hbGwtYnJlYWtwb2ludDogZW0tY2FsYyg2NDApICFkZWZhdWx0O1xuJG1lZGl1bS1icmVha3BvaW50OiAgZW0tY2FsYyg4MzApICAhZGVmYXVsdDtcbi8vICRsYXJnZS1icmVha3BvaW50OiAgZW0tY2FsYygxNDQwKSAhZGVmYXVsdDtcbi8vICR4bGFyZ2UtYnJlYWtwb2ludDogZW0tY2FsYygxOTIwKSAhZGVmYXVsdDtcblxuJG1pbmktcmFuZ2U6ICAgKDAsICRtaW5pLWJyZWFrcG9pbnQpICFkZWZhdWx0O1xuJHNtYWxsLXJhbmdlOiAgICgkbWluaS1icmVha3BvaW50ICArIGVtLWNhbGMoMSksICRzbWFsbC1icmVha3BvaW50KSAhZGVmYXVsdDtcbiRtZWRpdW0tcmFuZ2U6ICAoJHNtYWxsLWJyZWFrcG9pbnQgICsgZW0tY2FsYygxKSwgJG1lZGl1bS1icmVha3BvaW50KSAhZGVmYXVsdDtcbiRsYXJnZS1yYW5nZTogICAoJG1lZGl1bS1icmVha3BvaW50ICsgZW0tY2FsYygxKSwgZW0tY2FsYyg5OTk5OTk5OSkpICAhZGVmYXVsdDtcbi8vICRsYXJnZS1yYW5nZTogICAoJG1lZGl1bS1icmVha3BvaW50ICsgZW0tY2FsYygxKSwgJGxhcmdlLWJyZWFrcG9pbnQpICAhZGVmYXVsdDtcbi8vICR4bGFyZ2UtcmFuZ2U6ICAoJGxhcmdlLWJyZWFrcG9pbnQgICsgZW0tY2FsYygxKSwgJHhsYXJnZS1icmVha3BvaW50KSAhZGVmYXVsdDtcbi8vICR4eGxhcmdlLXJhbmdlOiAoJHhsYXJnZS1icmVha3BvaW50ICsgZW0tY2FsYygxKSwgZW0tY2FsYyg5OTk5OTk5OSkpICFkZWZhdWx0O1xuXG4kc2NyZWVuOiBcIm9ubHkgc2NyZWVuXCIgIWRlZmF1bHQ7XG5cbiRsYW5kc2NhcGU6IFwiI3skc2NyZWVufSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpXCIgIWRlZmF1bHQ7XG4kcG9ydHJhaXQ6IFwiI3skc2NyZWVufSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcIiAhZGVmYXVsdDtcblxuJG1pbmktb25seTogXCIjeyRzY3JlZW59IGFuZCAobWluLXdpZHRoOiN7bG93ZXItYm91bmQoJG1pbmktcmFuZ2UpfSkgYW5kIChtYXgtd2lkdGg6ICN7dXBwZXItYm91bmQoJG1pbmktcmFuZ2UpfSlcIiAhZGVmYXVsdDtcblxuJHNtYWxsLXVwOiAkc2NyZWVuICFkZWZhdWx0O1xuJHNtYWxsLW9ubHk6IFwiI3skc2NyZWVufSBhbmQgKG1heC13aWR0aDogI3t1cHBlci1ib3VuZCgkc21hbGwtcmFuZ2UpfSlcIiAhZGVmYXVsdDtcblxuJG1lZGl1bS11cDogXCIjeyRzY3JlZW59IGFuZCAobWluLXdpZHRoOiN7bG93ZXItYm91bmQoJG1lZGl1bS1yYW5nZSl9KVwiICFkZWZhdWx0O1xuJG1lZGl1bS1vbmx5OiBcIiN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6I3tsb3dlci1ib3VuZCgkbWVkaXVtLXJhbmdlKX0pIGFuZCAobWF4LXdpZHRoOiN7dXBwZXItYm91bmQoJG1lZGl1bS1yYW5nZSl9KVwiICFkZWZhdWx0O1xuXG4kbGFyZ2UtdXA6IFwiI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDoje2xvd2VyLWJvdW5kKCRsYXJnZS1yYW5nZSl9KVwiICFkZWZhdWx0O1xuJGxhcmdlLW9ubHk6IFwiI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDoje2xvd2VyLWJvdW5kKCRsYXJnZS1yYW5nZSl9KSBhbmQgKG1heC13aWR0aDoje3VwcGVyLWJvdW5kKCRsYXJnZS1yYW5nZSl9KVwiICFkZWZhdWx0O1xuXG4vLyAkeGxhcmdlLXVwOiBcIiN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6I3tsb3dlci1ib3VuZCgkeGxhcmdlLXJhbmdlKX0pXCIgIWRlZmF1bHQ7XG4vLyAkeGxhcmdlLW9ubHk6IFwiI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDoje2xvd2VyLWJvdW5kKCR4bGFyZ2UtcmFuZ2UpfSkgYW5kIChtYXgtd2lkdGg6I3t1cHBlci1ib3VuZCgkeGxhcmdlLXJhbmdlKX0pXCIgIWRlZmF1bHQ7XG4vL1xuLy8gJHh4bGFyZ2UtdXA6IFwiI3skc2NyZWVufSBhbmQgKG1pbi13aWR0aDoje2xvd2VyLWJvdW5kKCR4eGxhcmdlLXJhbmdlKX0pXCIgIWRlZmF1bHQ7XG4vLyAkeHhsYXJnZS1vbmx5OiBcIiN7JHNjcmVlbn0gYW5kIChtaW4td2lkdGg6I3tsb3dlci1ib3VuZCgkeHhsYXJnZS1yYW5nZSl9KSBhbmQgKG1heC13aWR0aDoje3VwcGVyLWJvdW5kKCR4eGxhcmdlLXJhbmdlKX0pXCIgIWRlZmF1bHQ7XG5cbiRyZXRpbmE6IChcbiAgXCIjeyRzY3JlZW59IGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKVwiLFxuICBcIiN7JHNjcmVlbn0gYW5kIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpXCIsXG4gIFwiI3skc2NyZWVufSBhbmQgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIvMSlcIixcbiAgXCIjeyRzY3JlZW59IGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbzogMilcIixcbiAgXCIjeyRzY3JlZW59IGFuZCAobWluLXJlc29sdXRpb246IDE5MmRwaSlcIixcbiAgXCIjeyRzY3JlZW59IGFuZCAobWluLXJlc29sdXRpb246IDJkcHB4KVwiXG4pO1xuXG5cbi8vIFR5cG9ncmFwaHlcbiRmb250LWZhbWlseS1yZWd1bGFyOiAnQXN0b3JpYScsIHNhbnM7XG4kZm9udC1mYW1pbHktbGlnaHQ6ICdBc3RvcmlhJywgc2FucztcblxuLy8gQW5pbWF0aW9uc1xuLy8gaHR0cDovL2Vhc2luZ3MubmV0L1xuJGVhc2VPdXRRdWFkOiBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4kZWFzZUluUXVhZDogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDg1LCAwLjY4LCAwLjUzKTtcbiRlYXNlSW5PdXRRdWFkOiBjdWJpYy1iZXppZXIoMC40NTUsIDAuMDMsIDAuNTE1LCAwLjk1NSk7XG5cbiRlYXNlT3V0U2luZTogY3ViaWMtYmV6aWVyKDAuMzksIDAuNTc1LCAwLjU2NSwgMSk7XG4kZWFzZUluU2luZTogY3ViaWMtYmV6aWVyKDAuNDcsIDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZUluT3V0U2luZTogY3ViaWMtYmV6aWVyKDAuNDQ1LCAwLjA1LCAwLjU1LCAwLjk1KTtcbiIsIi8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgaHRtbCBhbmQgYm9keSBmb250LXNpemUgZm9yIHRoZSBiYXNlIHJlbSB2YWx1ZS5cbiRyZW0tYmFzZTogMTZweCAhZGVmYXVsdDtcblxuXG4vLyBSQU5HRVNcbi8vIFdlIHVzZSB0aGVzZSBmdW5jdGlvbnMgdG8gZGVmaW5lIHJhbmdlcyBmb3IgdmFyaW91cyB0aGluZ3MsIGxpa2UgbWVkaWEgcXVlcmllcy5cbkBmdW5jdGlvbiBsb3dlci1ib3VuZCgkcmFuZ2UpIHtcbiAgQGlmIGxlbmd0aCgkcmFuZ2UpIDw9IDAge1xuICAgIEByZXR1cm4gMDtcbiAgfVxuICBAcmV0dXJuIG50aCgkcmFuZ2UsIDEpO1xufVxuXG5AZnVuY3Rpb24gdXBwZXItYm91bmQoJHJhbmdlKSB7XG4gIEBpZiBsZW5ndGgoJHJhbmdlKSA8IDIge1xuICAgIEByZXR1cm4gOTk5OTk5OTk5OTk5O1xuICB9XG4gIEByZXR1cm4gbnRoKCRyYW5nZSwgMik7XG59XG5cbi8vIFNUUklQIFVOSVRcbi8vIEl0IHN0cmlwcyB0aGUgdW5pdCBvZiBtZWFzdXJlIGFuZCByZXR1cm5zIGl0XG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtKSB7XG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xufVxuXG4vLyBDT05WRVJUIFRPIFJFTVxuQGZ1bmN0aW9uIGNvbnZlcnQtdG8tcmVtKCR2YWx1ZSwgJGJhc2UtdmFsdWU6ICRyZW0tYmFzZSkge1xuICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAvIHN0cmlwLXVuaXQoJGJhc2UtdmFsdWUpICogMXJlbTtcbiAgQGlmICgkdmFsdWUgPT0gMHJlbSkgeyAkdmFsdWU6IDA7IH0gLy8gVHVybiAwcmVtIGludG8gMFxuICBAcmV0dXJuICR2YWx1ZTtcbn1cblxuLy8gUkVNIENBTENcblxuLy8gTmV3IFN5bnRheCwgYWxsb3dzIHRvIG9wdGlvbmFsbHkgY2FsY3VsYXRlIG9uIGEgZGlmZmVyZW50IGJhc2UgdmFsdWUgdG8gY291bnRlciBjb21wb3VuZGluZyBlZmZlY3Qgb2YgcmVtJ3MuXG4vLyBDYWxsIHdpdGggMSwgMiwgMyBvciA0IHBhcmFtZXRlcnMsICdweCcgaXMgbm90IHJlcXVpcmVkIGJ1dCBzdXBwb3J0ZWQ6XG4vL1xuLy8gICByZW0oMTAgMjAgMzBweCA0MCk7XG4vL1xuLy8gU3BhY2UgZGVsaW1pdGVkLCBpZiB5b3Ugd2FudCB0byBkZWxpbWl0IHVzaW5nIGNvbW1hJ3MsIHdyYXAgaXQgaW4gYW5vdGhlciBwYWlyIG9mIGJyYWNrZXRzXG4vL1xuLy8gICByZW0oKDEwLCAyMCwgMzAsIDQwcHgpKTtcbi8vXG4vLyBPcHRpb25hbGx5IGNhbGwgd2l0aCBhIGRpZmZlcmVudCBiYXNlIChlZzogOHB4KSB0byBjYWxjdWxhdGUgcmVtLlxuLy9cbi8vICAgcmVtKDE2cHggMzJweCA0OHB4LCA4cHgpO1xuLy9cbi8vIElmIHlvdSByZXF1aXJlIHRvIGNvbW1hIHNlcGFyYXRlIHlvdXIgbGlzdFxuLy9cbi8vICAgcmVtKCgxNnB4LCAzMnB4LCA0OCksIDhweCk7XG5cbkBmdW5jdGlvbiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKSB7XG4gICRtYXg6IGxlbmd0aCgkdmFsdWVzKTtcblxuICBAaWYgJG1heCA9PSAxIHsgQHJldHVybiBjb252ZXJ0LXRvLXJlbShudGgoJHZhbHVlcywgMSksICRiYXNlLXZhbHVlKTsgfVxuXG4gICRyZW1WYWx1ZXM6ICgpO1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgICRyZW1WYWx1ZXM6IGFwcGVuZCgkcmVtVmFsdWVzLCBjb252ZXJ0LXRvLXJlbShudGgoJHZhbHVlcywgJGkpLCAkYmFzZS12YWx1ZSkpO1xuICB9XG4gIEByZXR1cm4gJHJlbVZhbHVlcztcbn1cblxuQGZ1bmN0aW9uIGVtLWNhbGMoJHZhbHVlcywgJGJhc2UtdmFsdWU6ICRyZW0tYmFzZSkge1xuICAkcmVtVmFsdWVzOiByZW0tY2FsYygkdmFsdWVzLCAkYmFzZS12YWx1ZTogJHJlbS1iYXNlKTtcblxuICAkbWF4OiBsZW5ndGgoJHJlbVZhbHVlcyk7XG5cbiAgQGlmICRtYXggPT0gMSB7IEByZXR1cm4gc3RyaXAtdW5pdChudGgoJHJlbVZhbHVlcywgMSkpICogMWVtOyB9XG5cbiAgJGVtVmFsdWVzOiAoKTtcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbWF4IHtcbiAgICAkZW1WYWx1ZXM6IGFwcGVuZCgkZW1WYWx1ZXMsIHN0cmlwLXVuaXQobnRoKCRyZW1WYWx1ZXMsICRpKSkgKiAxZW0pO1xuICB9XG4gIEByZXR1cm4gJGVtVmFsdWVzO1xufVxuIiwiJHBpbms6ICNmZjNlYjU7XG5cbiRicm93bjogIzdkNzI2NjtcbiRtaWQtZ3JleTogIzkxOTE5MTtcblxuJHdoaXRlOiAjRkZGO1xuIiwiJGNvdW50RGVmYXVsdDogMTtcbiRkdXJhdGlvbkRlZmF1bHQ6IDFzICFkZWZhdWx0O1xuJGRlbGF5RGVmYXVsdDogMHM7XG4kZnVuY3Rpb25EZWZhdWx0OiBlYXNlO1xuJGRpcmVjdGlvbkRlZmF1bHQ6IG5vcm1hbDtcbiRmaWxsTW9kZURlZmF1bHQ6IGJvdGg7XG5cbkBrZXlmcmFtZXMgc2xpZGVJblVwIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cbkBtaXhpbiBzbGlkZUluVXAoJGR1cmF0aW9uOiAkZHVyYXRpb25EZWZhdWx0LCAgJGZ1bmN0aW9uOiAkZnVuY3Rpb25EZWZhdWx0LCAkZGVsYXk6ICRkZWxheURlZmF1bHQsICRjb3VudDogJGNvdW50RGVmYXVsdCwgJGRpcmVjdGlvbjogJGRpcmVjdGlvbkRlZmF1bHQsICRmaWxsTW9kZTogJGZpbGxNb2RlRGVmYXVsdCkge1xuICBhbmltYXRpb246IHNsaWRlSW5VcCAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSAkY291bnQgJGRpcmVjdGlvbiAkZmlsbE1vZGU7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cbkBtaXhpbiBzbGlkZUluRG93bigkZHVyYXRpb246ICRkdXJhdGlvbkRlZmF1bHQsICAkZnVuY3Rpb246ICRmdW5jdGlvbkRlZmF1bHQsICRkZWxheTogJGRlbGF5RGVmYXVsdCwgJGNvdW50OiAkY291bnREZWZhdWx0LCAkZGlyZWN0aW9uOiAkZGlyZWN0aW9uRGVmYXVsdCwgJGZpbGxNb2RlOiAkZmlsbE1vZGVEZWZhdWx0KSB7XG4gIGFuaW1hdGlvbjogc2xpZGVJbkRvd24gJGR1cmF0aW9uICRmdW5jdGlvbiAkZGVsYXkgJGNvdW50ICRkaXJlY3Rpb24gJGZpbGxNb2RlO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG5AbWl4aW4gc2xpZGVJbkxlZnQoJGR1cmF0aW9uOiAkZHVyYXRpb25EZWZhdWx0LCAgJGZ1bmN0aW9uOiAkZnVuY3Rpb25EZWZhdWx0LCAkZGVsYXk6ICRkZWxheURlZmF1bHQsICRjb3VudDogJGNvdW50RGVmYXVsdCwgJGRpcmVjdGlvbjogJGRpcmVjdGlvbkRlZmF1bHQsICRmaWxsTW9kZTogJGZpbGxNb2RlRGVmYXVsdCkge1xuICBhbmltYXRpb246IHNsaWRlSW5MZWZ0ICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5ICRjb3VudCAkZGlyZWN0aW9uICRmaWxsTW9kZTtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxufVxuQG1peGluIHNsaWRlSW5SaWdodCgkZHVyYXRpb246ICRkdXJhdGlvbkRlZmF1bHQsICAkZnVuY3Rpb246ICRmdW5jdGlvbkRlZmF1bHQsICRkZWxheTogJGRlbGF5RGVmYXVsdCwgJGNvdW50OiAkY291bnREZWZhdWx0LCAkZGlyZWN0aW9uOiAkZGlyZWN0aW9uRGVmYXVsdCwgJGZpbGxNb2RlOiAkZmlsbE1vZGVEZWZhdWx0KSB7XG4gIGFuaW1hdGlvbjogc2xpZGVJblJpZ2h0ICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5ICRjb3VudCAkZGlyZWN0aW9uICRmaWxsTW9kZTtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICBmcm9tIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG5cbiAgdG8ge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cbkBtaXhpbiBmYWRlSW4oJGR1cmF0aW9uOiAkZHVyYXRpb25EZWZhdWx0LCAgJGZ1bmN0aW9uOiAkZnVuY3Rpb25EZWZhdWx0LCAkZGVsYXk6ICRkZWxheURlZmF1bHQsICRjb3VudDogJGNvdW50RGVmYXVsdCwgJGRpcmVjdGlvbjogJGRpcmVjdGlvbkRlZmF1bHQsICRmaWxsTW9kZTogJGZpbGxNb2RlRGVmYXVsdCkge1xuICBhbmltYXRpb246IGZhZGVJbiAkZHVyYXRpb24gJGZ1bmN0aW9uICRkZWxheSAkY291bnQgJGRpcmVjdGlvbiAkZmlsbE1vZGU7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlIHtcbiAgMCUsXG4gIDE1JSxcbiAgMzAlLFxuICA0NSUsXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuICAyMi41JSxcbiAgMzcuNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCk7XG4gIH1cbn1cblxuQG1peGluIGJvdW5jZSgkZHVyYXRpb246ICRkdXJhdGlvbkRlZmF1bHQsICAkZnVuY3Rpb246ICRmdW5jdGlvbkRlZmF1bHQsICRkZWxheTogJGRlbGF5RGVmYXVsdCwgJGNvdW50OiAkY291bnREZWZhdWx0LCAkZGlyZWN0aW9uOiAkZGlyZWN0aW9uRGVmYXVsdCwgJGZpbGxNb2RlOiAkZmlsbE1vZGVEZWZhdWx0KSB7XG4gIGFuaW1hdGlvbjogYm91bmNlICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5ICRjb3VudCAkZGlyZWN0aW9uICRmaWxsTW9kZTtcbn1cbiIsIi8vXG4vLyBGb3VuZGF0aW9uIFZpc2liaWxpdHkgQ2xhc3Nlc1xuLy9cblxuLy9cbi8vIE1lZGlhIENsYXNzIE5hbWVzXG4vL1xuLy8gVmlzaWJpbGl0eSBCcmVha3BvaW50c1xuJHZpc2liaWxpdHktYnJlYWtwb2ludC1zaXplczpcbiAgc21hbGwsXG4gIG1lZGl1bTtcbiAgLy8gbGFyZ2UsXG4gIC8vIHhsYXJnZSxcbiAgLy8geHhsYXJnZTtcblxuJHZpc2liaWxpdHktYnJlYWtwb2ludC1xdWVyaWVzOlxuICB1bnF1b3RlKCRzbWFsbC11cCksXG4gIHVucXVvdGUoJG1lZGl1bS11cCk7XG4gIC8vIHVucXVvdGUoJGxhcmdlLXVwKSxcbiAgLy8gdW5xdW90ZSgkeGxhcmdlLXVwKSxcbiAgLy8gdW5xdW90ZSgkeHhsYXJnZS11cCk7XG5cbkBtaXhpbiB2aXNpYmlsaXR5LWxvb3Age1xuICBAZWFjaCAkY3VycmVudC12aXNpYmlsaXR5LWJyZWFrcG9pbnQgaW4gJHZpc2liaWxpdHktYnJlYWtwb2ludC1zaXplcyB7XG4gICAgJHZpc2liaWxpdHktaW5oZXJpdC1saXN0OiAoKTtcbiAgICAkdmlzaWJpbGl0eS1ub25lLWxpc3Q6ICgpO1xuXG4gICAgJHZpc2liaWxpdHktdmlzaWJsZS1saXN0OiAoKTtcbiAgICAkdmlzaWJpbGl0eS1oaWRkZW4tbGlzdDogKCk7XG5cbiAgICAkdmlzaWJpbGl0eS10YWJsZS1saXN0OiAoKTtcbiAgICAkdmlzaWJpbGl0eS10YWJsZS1oZWFkZXItZ3JvdXAtbGlzdDogKCk7XG4gICAgJHZpc2liaWxpdHktdGFibGUtcm93LWdyb3VwLWxpc3Q6ICgpO1xuICAgICR2aXNpYmlsaXR5LXRhYmxlLXJvdy1saXN0OiAoKTtcbiAgICAkdmlzaWJpbGl0eS10YWJsZS1jZWxsLWxpc3Q6ICgpO1xuXG4gICAgQGVhY2ggJHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50IGluICR2aXNpYmlsaXR5LWJyZWFrcG9pbnQtc2l6ZXMge1xuICAgICAgQGlmIGluZGV4KCR2aXNpYmlsaXR5LWJyZWFrcG9pbnQtc2l6ZXMsICR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludCkgPCBpbmRleCgkdmlzaWJpbGl0eS1icmVha3BvaW50LXNpemVzLCAkY3VycmVudC12aXNpYmlsaXR5LWJyZWFrcG9pbnQpIHtcbiAgICAgICAgLy8gU21hbGxlciB0aGFuIGN1cnJlbnQgYnJlYWtwb2ludFxuXG4gICAgICAgICR2aXNpYmlsaXR5LWluaGVyaXQtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LWluaGVyaXQtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCAuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LW5vbmUtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LW5vbmUtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCAuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXZpc2libGUtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXZpc2libGUtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLmhpZGRlbi1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIC52aXNpYmxlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktaGlkZGVuLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS1oaWRkZW4tbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLnZpc2libGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCAuaGlkZGVuLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdGFibGUtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXRhYmxlLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJ3RhYmxlLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0YWJsZS5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdGFibGUtaGVhZGVyLWdyb3VwLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS10YWJsZS1oZWFkZXItZ3JvdXAtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAndGhlYWQuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRoZWFkLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS10YWJsZS1yb3ctZ3JvdXAtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXRhYmxlLXJvdy1ncm91cC1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICd0Ym9keS5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdGJvZHkuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXRhYmxlLXJvdy1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdGFibGUtcm93LWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJ3RyLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0ci5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdGFibGUtY2VsbC1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdGFibGUtY2VsbC1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICd0aC5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdGQuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRoLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCwgdGQuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG5cbiAgICAgIH0gQGVsc2UgaWYgaW5kZXgoJHZpc2liaWxpdHktYnJlYWtwb2ludC1zaXplcywgJHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50KSA+IGluZGV4KCR2aXNpYmlsaXR5LWJyZWFrcG9pbnQtc2l6ZXMsICRjdXJyZW50LXZpc2liaWxpdHktYnJlYWtwb2ludCkge1xuICAgICAgICAvLyBMYXJnZXIgdGhhbiBjdXJyZW50IGJyZWFrcG9pbnRcblxuICAgICAgICAkdmlzaWJpbGl0eS1pbmhlcml0LWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS1pbmhlcml0LWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJy5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS1ub25lLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS1ub25lLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJy5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS12aXNpYmxlLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS12aXNpYmxlLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJy5oaWRkZW4tZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCAuaGlkZGVuLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktaGlkZGVuLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS1oaWRkZW4tbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLnZpc2libGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCAudmlzaWJsZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXRhYmxlLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS10YWJsZS1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICd0YWJsZS5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdGFibGUuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXRhYmxlLWhlYWRlci1ncm91cC1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdGFibGUtaGVhZGVyLWdyb3VwLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJ3RoZWFkLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0aGVhZC5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdGFibGUtcm93LWdyb3VwLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS10YWJsZS1yb3ctZ3JvdXAtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAndGJvZHkuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRib2R5LmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS10YWJsZS1yb3ctbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXRhYmxlLXJvdy1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICd0ci5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdHIuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXRhYmxlLWNlbGwtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXRhYmxlLWNlbGwtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAndGguaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRkLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0aC5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAsIHRkLmhpZGUtZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuXG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLy8gQ3VycmVudCBicmVha3BvaW50XG5cbiAgICAgICAgJHZpc2liaWxpdHktaW5oZXJpdC1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktaW5oZXJpdC1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICcuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIC5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktbm9uZS1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktbm9uZS1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICcuaGlkZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIC5oaWRlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdmlzaWJsZS1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdmlzaWJsZS1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICcudmlzaWJsZS1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIC52aXNpYmxlLWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktaGlkZGVuLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS1oaWRkZW4tbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAnLmhpZGRlbi1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIC5oaWRkZW4tZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS10YWJsZS1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdGFibGUtbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAndGFibGUuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRhYmxlLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS10YWJsZS1oZWFkZXItZ3JvdXAtbGlzdDogYXBwZW5kKCR2aXNpYmlsaXR5LXRhYmxlLWhlYWRlci1ncm91cC1saXN0LCB1bnF1b3RlKFxuICAgICAgICAgICd0aGVhZC5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdGhlYWQuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwJ1xuICAgICAgICApLCBjb21tYSk7XG4gICAgICAgICR2aXNpYmlsaXR5LXRhYmxlLXJvdy1ncm91cC1saXN0OiBhcHBlbmQoJHZpc2liaWxpdHktdGFibGUtcm93LWdyb3VwLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJ3Rib2R5LnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0Ym9keS5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgICAgJHZpc2liaWxpdHktdGFibGUtcm93LWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS10YWJsZS1yb3ctbGlzdCwgdW5xdW90ZShcbiAgICAgICAgICAndHIuc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LW9ubHksIHRyLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS11cCdcbiAgICAgICAgKSwgY29tbWEpO1xuICAgICAgICAkdmlzaWJpbGl0eS10YWJsZS1jZWxsLWxpc3Q6IGFwcGVuZCgkdmlzaWJpbGl0eS10YWJsZS1jZWxsLWxpc3QsIHVucXVvdGUoXG4gICAgICAgICAgJ3RoLnNob3ctZm9yLSN7JHZpc2liaWxpdHktY29tcGFyaXNvbi1icmVha3BvaW50fS1vbmx5LCB0ZC5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tb25seSwgdGguc2hvdy1mb3ItI3skdmlzaWJpbGl0eS1jb21wYXJpc29uLWJyZWFrcG9pbnR9LXVwLCB0ZC5zaG93LWZvci0jeyR2aXNpYmlsaXR5LWNvbXBhcmlzb24tYnJlYWtwb2ludH0tdXAnXG4gICAgICAgICksIGNvbW1hKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiAjeyRjdXJyZW50LXZpc2liaWxpdHktYnJlYWtwb2ludH0gZGlzcGxheXMgKi9cbiAgICBAbWVkaWEgI3tudGgoJHZpc2liaWxpdHktYnJlYWtwb2ludC1xdWVyaWVzLCBpbmRleCgkdmlzaWJpbGl0eS1icmVha3BvaW50LXNpemVzLCAkY3VycmVudC12aXNpYmlsaXR5LWJyZWFrcG9pbnQpKX0ge1xuICAgICAgI3skdmlzaWJpbGl0eS1pbmhlcml0LWxpc3R9IHtcbiAgICAgICAgZGlzcGxheTogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgI3skdmlzaWJpbGl0eS1ub25lLWxpc3R9IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AaW5jbHVkZSB2aXNpYmlsaXR5LWxvb3A7XG4iLCIvLyBAaW5jbHVkZSBmb250LWZhY2UoT3BlblNhbnMsICcuLi9mb250cy9PcGVuU2Fucy1SZWd1bGFyLXdlYmZvbnQnKTtcbi8vIEBpbmNsdWRlIGZvbnQtZmFjZShPcGVuU2FucywgJy4uL2ZvbnRzL09wZW5TYW5zLUJvbGQtd2ViZm9udCcsIGJvbGQpO1xuXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLy8gQmV0dGVyIGJveCBzaXppbmdcbiAgY29sb3I6ICRicm93bjtcbiAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgZm9udC1zaXplOiAxZW07XG4gIGxpbmUtaGVpZ2h0OiAkYmFzZS1saW5lLWhlaWdodDsgLy8gU2V0IHRvICRiYXNlLWxpbmUtaGVpZ2h0IHRvIHRha2Ugb24gYnJvd3NlciBkZWZhdWx0IG9mIDE1MCVcbn1cblxuLy8gQmV0dGVyIGJveCBzaXppbmdcbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLy8gR2V0IGltYWdlcyB0byB3b3JrIHByb3Blcmx5XG5pbWcgeyBtYXgtd2lkdGg6IDEwMCU7IGhlaWdodDogYXV0bzsgfVxuaW1nIHsgLW1zLWludGVycG9sYXRpb24tbW9kZTogYmljdWJpYzsgfVxuXG4vLyBMb2FkaW5nIG9yIG5vLWpzIGV4cGVyaWFuY2VcbiNmdWxscGFnZSA+IC5zZWN0aW9uIHtcbiAgLy8gbWluLWhlaWdodDogMTAwdmg7XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBtaW4taGVpZ2h0OiBpbmhlcml0O1xuICB9XG5cbiAgJi5mcC1hdXRvLWhlaWdodCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXQ7XG4gIH1cbn1cblxuXG4vKlxuICogUmVtb3ZlIHRoZSBnYXAgYmV0d2VlbiBhdWRpbywgY2FudmFzLCBpZnJhbWVzLFxuICogaW1hZ2VzLCB2aWRlb3MgYW5kIHRoZSBib3R0b20gb2YgdGhlaXIgY29udGFpbmVyczpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9oNWJwL2h0bWw1LWJvaWxlcnBsYXRlL2lzc3Vlcy80NDBcbiAqL1xuYXVkaW8sXG5jYW52YXMsXG5pZnJhbWUsXG5zdmcsXG52aWRlbyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8vIEdldCByaWQgb2YgZ2FwIHVuZGVyIGltYWdlcyBieSBtYWtpbmcgdGhlbSBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJ5IGRlZmF1bHRcbmltZyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLypcbiAqIFJlbW92ZSBkZWZhdWx0IGZpZWxkc2V0IHN0eWxlcy5cbiAqL1xuZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLypcbiAqIEFsbG93IG9ubHkgdmVydGljYWwgcmVzaXppbmcgb2YgdGV4dGFyZWFzLlxuICovXG50ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cblxuLypcbiAqIE91ciBzcHJpdGVzaGVldCBkZXNpZ25cbiAqL1xuXG4uc3ByaXRlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG5cbiAgc3ZnIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLmZ1bGxwYWdlLXdyYXBwZXIge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5mcC1lbmFibGVkIC5mdWxscGFnZS13cmFwcGVyIHtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbn1cblxuLmNvbnRlbnQtd3JhcHBlciB7XG4gIG1heC13aWR0aDogOTgwcHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG59XG5cbmEge1xuICBjb2xvcjogJHBpbms7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogJHBpbms7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG59XG4iLCIvKiBNYWduaWZpYyBQb3B1cCBDU1MgKi9cblxuQGltcG9ydCBcInNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy9cbi8vIENvbnRlbnRzOlxuLy9cbi8vIDEuIEdlbmVyYWwgc3R5bGVzXG4vLyAgICAtIFRyYW5zbHVzY2VudCBvdmVybGF5XG4vLyAgICAtIENvbnRhaW5lcnMsIHdyYXBwZXJzXG4vLyAgICAtIEN1cnNvcnNcbi8vICAgIC0gSGVscGVyIGNsYXNzZXNcbi8vIDIuIEFwcGVhcmFuY2Vcbi8vICAgIC0gUHJlbG9hZGVyICYgdGV4dCB0aGF0IGRpc3BsYXlzIGVycm9yIG1lc3NhZ2VzXG4vLyAgICAtIENTUyByZXNldCBmb3IgYnV0dG9uc1xuLy8gICAgLSBDbG9zZSBpY29uXG4vLyAgICAtIFwiMSBvZiBYXCIgY291bnRlclxuLy8gICAgLSBOYXZpZ2F0aW9uIChsZWZ0L3JpZ2h0KSBhcnJvd3Ncbi8vICAgIC0gSWZyYW1lIGNvbnRlbnQgdHlwZSBzdHlsZXNcbi8vICAgIC0gSW1hZ2UgY29udGVudCB0eXBlIHN0eWxlc1xuLy8gICAgLSBNZWRpYSBxdWVyeSB3aGVyZSBzaXplIG9mIGFycm93cyBpcyByZWR1Y2VkXG4vLyAgICAtIElFNyBzdXBwb3J0XG4vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIDEuIEdlbmVyYWwgc3R5bGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8gVHJhbnNsdXNjZW50IG92ZXJsYXlcbi5tZnAtYmcge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6ICRtZnAtei1pbmRleC1iYXNlICsgMjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IGZpeGVkO1xuXG4gIGJhY2tncm91bmQ6ICRtZnAtb3ZlcmxheS1jb2xvcjtcbiAgb3BhY2l0eTogJG1mcC1vdmVybGF5LW9wYWNpdHk7XG59XG5cbi8vIFdyYXBwZXIgZm9yIHBvcHVwXG4ubWZwLXdyYXAge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHotaW5kZXg6ICRtZnAtei1pbmRleC1iYXNlICsgMztcbiAgcG9zaXRpb246IGZpeGVkO1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuOyAvLyBmaXhlcyB3ZWJraXQgYnVnIHRoYXQgY2FuIGNhdXNlIFwiZmFsc2VcIiBzY3JvbGxiYXJcbn1cblxuLy8gUm9vdCBjb250YWluZXJcbi5tZnAtY29udGFpbmVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgcGFkZGluZzogMCAkbWZwLXBvcHVwLXBhZGRpbmctbGVmdDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLy8gVmVydGljYWwgY2VudGVyZXIgaGVscGVyXG4ubWZwLWNvbnRhaW5lciB7XG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbn1cblxuLy8gUmVtb3ZlIHZlcnRpY2FsIGNlbnRlcmluZyB3aGVuIHBvcHVwIGhhcyBjbGFzcyBgbWZwLWFsaWduLXRvcGBcbi5tZnAtYWxpZ24tdG9wIHtcbiAgLm1mcC1jb250YWluZXIge1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG5cbi8vIFBvcHVwIGNvbnRlbnQgaG9sZGVyXG4ubWZwLWNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHotaW5kZXg6ICRtZnAtei1pbmRleC1iYXNlICsgNTtcbn1cbi5tZnAtaW5saW5lLWhvbGRlcixcbi5tZnAtYWpheC1ob2xkZXIge1xuICAubWZwLWNvbnRlbnQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGN1cnNvcjogYXV0bztcbiAgfVxufVxuXG4vLyBDdXJzb3JzXG4ubWZwLWFqYXgtY3VyIHtcbiAgY3Vyc29yOiBwcm9ncmVzcztcbn1cbi5tZnAtem9vbS1vdXQtY3VyIHtcbiAgJiwgLm1mcC1pbWFnZS1ob2xkZXIgLm1mcC1jbG9zZSB7XG4gICAgY3Vyc29yOiAtbW96LXpvb20tb3V0O1xuICAgIGN1cnNvcjogLXdlYmtpdC16b29tLW91dDtcbiAgICBjdXJzb3I6IHpvb20tb3V0O1xuICB9XG59XG4ubWZwLXpvb20ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGN1cnNvcjogLXdlYmtpdC16b29tLWluO1xuICBjdXJzb3I6IC1tb3otem9vbS1pbjtcbiAgY3Vyc29yOiB6b29tLWluO1xufVxuLm1mcC1hdXRvLWN1cnNvciB7XG4gIC5tZnAtY29udGVudCB7XG4gICAgY3Vyc29yOiBhdXRvO1xuICB9XG59XG5cbi5tZnAtY2xvc2UsXG4ubWZwLWFycm93LFxuLm1mcC1wcmVsb2FkZXIsXG4ubWZwLWNvdW50ZXIge1xuICAtd2Via2l0LXVzZXItc2VsZWN0Om5vbmU7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vLyBIaWRlIHRoZSBpbWFnZSBkdXJpbmcgdGhlIGxvYWRpbmdcbi5tZnAtbG9hZGluZyB7XG4gICYubWZwLWZpZ3VyZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBIZWxwZXIgY2xhc3MgdGhhdCBoaWRlcyBzdHVmZlxuQGlmICRtZnAtdXNlLXZpc3VhbGx5aGlkZGVuIHtcbiAgLy8gRnJvbSBIVE1MNSBCb2lsZXJwbGF0ZSBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL3Y0LjIuMC9kb2MvY3NzLm1kI3Zpc3VhbGx5aGlkZGVuXG4gIC5tZnAtaGlkZSB7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7XG4gIH1cbn0gQGVsc2Uge1xuICAubWZwLWhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gMi4gQXBwZWFyYW5jZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vIFByZWxvYWRlciBhbmQgdGV4dCB0aGF0IGRpc3BsYXlzIGVycm9yIG1lc3NhZ2VzXG4ubWZwLXByZWxvYWRlciB7XG4gIGNvbG9yOiAkbWZwLWNvbnRyb2xzLXRleHQtY29sb3I7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHdpZHRoOiBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IC0wLjhlbTtcbiAgbGVmdDogOHB4O1xuICByaWdodDogOHB4O1xuICB6LWluZGV4OiAkbWZwLXotaW5kZXgtYmFzZSArIDQ7XG4gIGEge1xuICAgIGNvbG9yOiAkbWZwLWNvbnRyb2xzLXRleHQtY29sb3I7XG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogJG1mcC1jb250cm9scy10ZXh0LWNvbG9yLWhvdmVyO1xuICAgIH1cbiAgfVxufVxuXG4vLyBIaWRlIHByZWxvYWRlciB3aGVuIGNvbnRlbnQgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuLm1mcC1zLXJlYWR5IHtcbiAgLm1mcC1wcmVsb2FkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gSGlkZSBjb250ZW50IHdoZW4gaXQgd2FzIG5vdCBsb2FkZWRcbi5tZnAtcy1lcnJvciB7XG4gIC5tZnAtY29udGVudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBDU1MtcmVzZXQgZm9yIGJ1dHRvbnNcbmJ1dHRvbiB7XG4gICYubWZwLWNsb3NlLFxuICAmLm1mcC1hcnJvdyB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHotaW5kZXg6ICRtZnAtei1pbmRleC1iYXNlICsgNjtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICB9XG4gICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMFxuICB9XG59XG5cblxuLy8gQ2xvc2UgaWNvblxuLm1mcC1jbG9zZSB7XG4gIHdpZHRoOiA0NHB4O1xuICBoZWlnaHQ6IDQ0cHg7XG4gIGxpbmUtaGVpZ2h0OiA0NHB4O1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIHRvcDogMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG9wYWNpdHk6ICRtZnAtY29udHJvbHMtb3BhY2l0eTtcbiAgcGFkZGluZzogMCAwIDE4cHggMTBweDtcbiAgY29sb3I6ICRtZnAtY29udHJvbHMtY29sb3I7XG5cbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDI4cHg7XG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgQmFza2VydmlsbGUsIG1vbm9zcGFjZTtcblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIHRvcDogMXB4O1xuICB9XG59XG4ubWZwLWNsb3NlLWJ0bi1pbiB7XG4gIC5tZnAtY2xvc2Uge1xuICAgIGNvbG9yOiAkbWZwLWlubmVyLWNsb3NlLWljb24tY29sb3I7XG4gIH1cbn1cbi5tZnAtaW1hZ2UtaG9sZGVyLFxuLm1mcC1pZnJhbWUtaG9sZGVyIHtcbiAgLm1mcC1jbG9zZSB7XG4gICAgY29sb3I6ICRtZnAtY29udHJvbHMtY29sb3I7XG4gICAgcmlnaHQ6IC02cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZy1yaWdodDogNnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi8vIFwiMSBvZiBYXCIgY291bnRlclxuLm1mcC1jb3VudGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBjb2xvcjogJG1mcC1jb250cm9scy10ZXh0LWNvbG9yO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vLyBOYXZpZ2F0aW9uIGFycm93c1xuQGlmICRtZnAtaW5jbHVkZS1hcnJvd3Mge1xuICAubWZwLWFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3BhY2l0eTogJG1mcC1jb250cm9scy1vcGFjaXR5O1xuICAgIG1hcmdpbjogMDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAtNTVweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiA5MHB4O1xuICAgIGhlaWdodDogMTEwcHg7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsMCwwLDApO1xuICAgICY6YWN0aXZlIHtcbiAgICAgIG1hcmdpbi10b3A6IC01NHB4O1xuICAgIH1cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgJjpiZWZvcmUsXG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgbWFyZ2luLXRvcDogMzVweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAzNXB4O1xuICAgICAgYm9yZGVyOiBtZWRpdW0gaW5zZXQgdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG5cbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDEzcHg7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxM3B4O1xuICAgICAgdG9wOjhweDtcbiAgICB9XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAyMXB4O1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMjFweDtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgfVxuXG4gIC5tZnAtYXJyb3ctbGVmdCB7XG4gICAgbGVmdDogMDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGJvcmRlci1yaWdodDogMTdweCBzb2xpZCAkbWZwLWNvbnRyb2xzLWNvbG9yO1xuICAgICAgbWFyZ2luLWxlZnQ6IDMxcHg7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICAgICAgYm9yZGVyLXJpZ2h0OiAyN3B4IHNvbGlkICRtZnAtY29udHJvbHMtYm9yZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxuXG4gIC5tZnAtYXJyb3ctcmlnaHQge1xuICAgIHJpZ2h0OiAwO1xuICAgICY6YWZ0ZXIge1xuICAgICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgJG1mcC1jb250cm9scy1jb2xvcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiAzOXB4XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAyN3B4IHNvbGlkICRtZnAtY29udHJvbHMtYm9yZGVyLWNvbG9yO1xuICAgIH1cbiAgfVxufVxuXG5cblxuLy8gSWZyYW1lIGNvbnRlbnQgdHlwZVxuQGlmICRtZnAtaW5jbHVkZS1pZnJhbWUtdHlwZSB7XG4gIC5tZnAtaWZyYW1lLWhvbGRlciB7XG4gICAgcGFkZGluZy10b3A6ICRtZnAtaWZyYW1lLXBhZGRpbmctdG9wO1xuICAgIHBhZGRpbmctYm90dG9tOiAkbWZwLWlmcmFtZS1wYWRkaW5nLXRvcDtcbiAgICAubWZwLWNvbnRlbnQge1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC13aWR0aDogJG1mcC1pZnJhbWUtbWF4LXdpZHRoO1xuICAgIH1cbiAgICAubWZwLWNsb3NlIHtcbiAgICAgIHRvcDogLTQwcHg7XG4gICAgfVxuICB9XG4gIC5tZnAtaWZyYW1lLXNjYWxlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZy10b3A6ICRtZnAtaWZyYW1lLXJhdGlvICogMTAwJTtcbiAgICBpZnJhbWUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICBib3gtc2hhZG93OiAkbWZwLXNoYWRvdztcbiAgICAgIGJhY2tncm91bmQ6ICRtZnAtaWZyYW1lLWJhY2tncm91bmQ7XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBJbWFnZSBjb250ZW50IHR5cGVcbkBpZiAkbWZwLWluY2x1ZGUtaW1hZ2UtdHlwZSB7XG5cbiAgLyogTWFpbiBpbWFnZSBpbiBwb3B1cCAqL1xuICBpbWcge1xuICAgICYubWZwLWltZyB7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgcGFkZGluZzogJG1mcC1pbWFnZS1wYWRkaW5nLXRvcCAwICRtZnAtaW1hZ2UtcGFkZGluZy1ib3R0b207XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxuICAvKiBUaGUgc2hhZG93IGJlaGluZCB0aGUgaW1hZ2UgKi9cbiAgLm1mcC1maWd1cmUge1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAkbWZwLWltYWdlLXBhZGRpbmctdG9wO1xuICAgICAgYm90dG9tOiAkbWZwLWltYWdlLXBhZGRpbmctYm90dG9tO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICByaWdodDogMDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgICBib3gtc2hhZG93OiAkbWZwLXNoYWRvdztcbiAgICAgIGJhY2tncm91bmQ6ICRtZnAtaW1hZ2UtYmFja2dyb3VuZDtcbiAgICB9XG4gICAgc21hbGwge1xuICAgICAgY29sb3I6ICRtZnAtY2FwdGlvbi1zdWJ0aXRsZS1jb2xvcjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgfVxuICAgIGZpZ3VyZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG4gIC5tZnAtYm90dG9tLWJhciB7XG4gICAgbWFyZ2luLXRvcDogLSRtZnAtaW1hZ2UtcGFkZGluZy1ib3R0b20gKyA0O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cbiAgLm1mcC10aXRsZSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICBjb2xvcjogJG1mcC1jYXB0aW9uLXRpdGxlLWNvbG9yO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4OyAvLyBsZWF2ZSBzb21lIHNwYWNlIGZvciBjb3VudGVyIGF0IHJpZ2h0IHNpZGVcbiAgfVxuXG4gIC5tZnAtaW1hZ2UtaG9sZGVyIHtcbiAgICAubWZwLWNvbnRlbnQge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5tZnAtZ2FsbGVyeSB7XG4gICAgLm1mcC1pbWFnZS1ob2xkZXIge1xuICAgICAgLm1mcC1maWd1cmUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBAaWYgJG1mcC1pbmNsdWRlLW1vYmlsZS1sYXlvdXQtZm9yLWltYWdlIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChvcmllbnRhdGlvbjpsYW5kc2NhcGUpLCBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiAzMDBweCkge1xuICAgICAgLyoqXG4gICAgICAgKiBSZW1vdmUgYWxsIHBhZGRpbmdzIGFyb3VuZCB0aGUgaW1hZ2Ugb24gc21hbGwgc2NyZWVuXG4gICAgICAgKi9cbiAgICAgIC5tZnAtaW1nLW1vYmlsZSB7XG4gICAgICAgIC5tZnAtaW1hZ2UtaG9sZGVyIHtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgfVxuICAgICAgICBpbWcge1xuICAgICAgICAgICYubWZwLWltZyB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubWZwLWZpZ3VyZSB7XG4gICAgICAgICAgLy8gVGhlIHNoYWRvdyBiZWhpbmQgdGhlIGltYWdlXG4gICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIHNtYWxsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5tZnAtYm90dG9tLWJhciB7XG4gICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjYpO1xuICAgICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgdG9wOiBhdXRvO1xuICAgICAgICAgIHBhZGRpbmc6IDNweCA1cHg7XG4gICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgJjplbXB0eSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAubWZwLWNvdW50ZXIge1xuICAgICAgICAgIHJpZ2h0OiA1cHg7XG4gICAgICAgICAgdG9wOiAzcHg7XG4gICAgICAgIH1cbiAgICAgICAgLm1mcC1jbG9zZSB7XG4gICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgIHJpZ2h0OiAwO1xuICAgICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICAgIGhlaWdodDogMzVweDtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMzVweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuXG4vLyBTY2FsZSBuYXZpZ2F0aW9uIGFycm93cyBhbmQgcmVkdWNlIHBhZGRpbmcgZnJvbSBzaWRlc1xuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLm1mcC1hcnJvdyB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIH1cbiAgLm1mcC1hcnJvdy1sZWZ0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMDtcbiAgfVxuICAubWZwLWFycm93LXJpZ2h0IHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDEwMCU7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJTtcbiAgfVxuICAubWZwLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZy1sZWZ0OiAkbWZwLXBvcHVwLXBhZGRpbmctbGVmdC1tb2JpbGU7XG4gICAgcGFkZGluZy1yaWdodDogJG1mcC1wb3B1cC1wYWRkaW5nLWxlZnQtbW9iaWxlO1xuICB9XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gICAgICBTZXR0aW5ncyAgICAgIC8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8gb3ZlcmxheVxuJG1mcC1vdmVybGF5LWNvbG9yOiAgICAgICAgICAgICAgICAgICAjMGIwYjBiICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Igb2Ygb3ZlcmxheSBzY3JlZW5cbiRtZnAtb3ZlcmxheS1vcGFjaXR5OiAgICAgICAgICAgICAgICAgMC44ICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wYWNpdHkgb2Ygb3ZlcmxheSBzY3JlZW5cbiRtZnAtc2hhZG93OiAgICAgICAgICAgICAgICAgICAgICAgICAgMCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuNikgIWRlZmF1bHQ7IC8vIFNoYWRvdyBvbiBpbWFnZSBvciBpZnJhbWVcblxuLy8gc3BhY2luZ1xuJG1mcC1wb3B1cC1wYWRkaW5nLWxlZnQ6ICAgICAgICAgICAgICA4cHggIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFkZGluZyBmcm9tIGxlZnQgYW5kIGZyb20gcmlnaHQgc2lkZVxuJG1mcC1wb3B1cC1wYWRkaW5nLWxlZnQtbW9iaWxlOiAgICAgICA2cHggIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2FtZSBhcyBhYm92ZSwgYnV0IGlzIGFwcGxpZWQgd2hlbiB3aWR0aCBvZiB3aW5kb3cgaXMgbGVzcyB0aGFuIDgwMHB4XG5cbiRtZnAtei1pbmRleC1iYXNlOiAgICAgICAgICAgICAgICAgICAgMTA0MCAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhc2Ugei1pbmRleCBvZiBwb3B1cFxuXG4vLyBjb250cm9sc1xuJG1mcC1pbmNsdWRlLWFycm93czogICAgICAgICAgICAgICAgICB0cnVlICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5jbHVkZSBzdHlsZXMgZm9yIG5hdiBhcnJvd3NcbiRtZnAtY29udHJvbHMtb3BhY2l0eTogICAgICAgICAgICAgICAgMC42NSAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIE9wYWNpdHkgb2YgY29udHJvbHNcbiRtZnAtY29udHJvbHMtY29sb3I6ICAgICAgICAgICAgICAgICAgI0ZGRiAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9mIGNvbnRyb2xzXG4kbWZwLWNvbnRyb2xzLWJvcmRlci1jb2xvcjogICAgICAgICAgICMzRjNGM0YgIWRlZmF1bHQ7IFx0ICAgICAgICAgICAgICAgICAvLyBCb3JkZXIgY29sb3Igb2YgY29udHJvbHNcbiRtZnAtaW5uZXItY2xvc2UtaWNvbi1jb2xvcjogICAgICAgICAgIzMzMyAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbG9yIG9mIGNsb3NlIGJ1dHRvbiB3aGVuIGluc2lkZVxuJG1mcC1jb250cm9scy10ZXh0LWNvbG9yOiAgICAgICAgICAgICAjQ0NDICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29sb3Igb2YgcHJlbG9hZGVyIGFuZCBcIjEgb2YgWFwiIGluZGljYXRvclxuJG1mcC1jb250cm9scy10ZXh0LWNvbG9yLWhvdmVyOiAgICAgICAjRkZGICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgLy8gSG92ZXIgY29sb3Igb2YgcHJlbG9hZGVyIGFuZCBcIjEgb2YgWFwiIGluZGljYXRvclxuXG4vLyBJZnJhbWUtdHlwZSBvcHRpb25zXG4kbWZwLWluY2x1ZGUtaWZyYW1lLXR5cGU6ICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgSWZyYW1lLXR5cGUgcG9wdXBzXG4kbWZwLWlmcmFtZS1wYWRkaW5nLXRvcDogICAgICAgICAgICAgIDQwcHggIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWUgcGFkZGluZyB0b3BcbiRtZnAtaWZyYW1lLWJhY2tncm91bmQ6ICAgICAgICAgICAgICAgIzAwMCAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIEJhY2tncm91bmQgY29sb3Igb2YgaWZyYW1lc1xuJG1mcC1pZnJhbWUtbWF4LXdpZHRoOiAgICAgICAgICAgICAgICA5MDBweCAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgLy8gTWF4aW11bSB3aWR0aCBvZiBpZnJhbWVzXG4kbWZwLWlmcmFtZS1yYXRpbzogICAgICAgICAgICAgICAgICAgIDkvMTYgIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAvLyBSYXRpbyBvZiBpZnJhbWUgKDkvMTYgPSB3aWRlc2NyZWVuLCAzLzQgPSBzdGFuZGFyZCwgZXRjLilcblxuLy8gSW1hZ2UtdHlwZSBvcHRpb25zXG4kbWZwLWluY2x1ZGUtaW1hZ2UtdHlwZTogICAgICAgICAgICAgIHRydWUgIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAvLyBFbmFibGUgSW1hZ2UtdHlwZSBwb3B1cHNcbiRtZnAtaW1hZ2UtYmFja2dyb3VuZDogICAgICAgICAgICAgICAgIzQ0NCAhZGVmYXVsdDtcbiRtZnAtaW1hZ2UtcGFkZGluZy10b3A6ICAgICAgICAgICAgICAgNDBweCAhZGVmYXVsdDsgICAgICAgICAgICAgICAgICAgICAgIC8vIEltYWdlIHBhZGRpbmcgdG9wXG4kbWZwLWltYWdlLXBhZGRpbmctYm90dG9tOiAgICAgICAgICAgIDQwcHggIWRlZmF1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAvLyBJbWFnZSBwYWRkaW5nIGJvdHRvbVxuJG1mcC1pbmNsdWRlLW1vYmlsZS1sYXlvdXQtZm9yLWltYWdlOiB0cnVlICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlcyBwYWRkaW5ncyBmcm9tIHRvcCBhbmQgYm90dG9tXG5cbi8vIEltYWdlIGNhcHRpb24gb3B0aW9uc1xuJG1mcC1jYXB0aW9uLXRpdGxlLWNvbG9yOiAgICAgICAgICAgICAjRjNGM0YzICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgLy8gQ2FwdGlvbiB0aXRsZSBjb2xvclxuJG1mcC1jYXB0aW9uLXN1YnRpdGxlLWNvbG9yOiAgICAgICAgICAjQkRCREJEICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgLy8gQ2FwdGlvbiBzdWJ0aXRsZSBjb2xvclxuXG4vLyBBMTF5XG4kbWZwLXVzZS12aXN1YWxseWhpZGRlbjogICAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIGNvbnRlbnQgZnJvbSBicm93c2VycywgYnV0IG1ha2UgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyc1xuIiwiLm5hdmlnYXRpb24tcG9wdXAubWZwLWJnIHtcbiAgYmFja2dyb3VuZDogJHBpbms7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uYXZpZ2F0aW9uLXBvcHVwIC5tZnAtY2xvc2Uge1xuICBjb2xvcjogJHBpbms7XG4gIGJvcmRlci1sZWZ0OiBub25lO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogNjJweDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogNTtcbiAgb3BhY2l0eTogMTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9jbG9zZS1waW5rLnN2ZycpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtc2l6ZTogMjVweDtcbiAgaGVpZ2h0OiA1NXB4O1xuICB3aWR0aDogNTJweDtcbiAgZm9udC1zaXplOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL2Nsb3NlLWJyb3duLnN2ZycpO1xuICB9XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgdG9wOiA4JTtcbiAgICBoZWlnaHQ6IDYycHg7XG4gICAgd2lkdGg6IDU3cHg7XG4gIH1cbn1cblxuLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCB7XG4gIEBpbmNsdWRlIGdyaWRsZSgxNSk7XG4gIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDEpO1xuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgIEBpbmNsdWRlIGdyaWRsZSgxNCk7XG4gIH1cbn1cblxuLm5hdmlnYXRpb24tcG9wdXAgLm5hdmlnYXRpb24tY29udGVudCAubmF2aWdhdGlvbi1wcmltYXJ5IHtcbiAgQGluY2x1ZGUgZ3JpZGxlKDE2KTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIGxpOm50aC1jaGlsZCgybisxKSB7XG4gICAgQGluY2x1ZGUgZ3JpZGxlX2NsZWFyO1xuICB9XG5cbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICBsaSwgYSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDI4KTtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cbiAgICBAbWVkaWEgI3skbWluaS1vbmx5fSB7XG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIyKTtcbiAgICB9XG4gIH1cblxuICBsaSB7XG4gICAgQGluY2x1ZGUgZ3JpZGxlKDgpO1xuICAgIHRyYW5zaXRpb246IGZvbnQtd2VpZ2h0IC4yNXM7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMTI1cHg7XG4gICAgcGFkZGluZzogMTRweCAwIDAgMTRweDtcbiAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgIG1hcmdpbi1yaWdodDogLTEwJTtcblxuICAgICY6OmJlZm9yZSB7XG4gICAgICB0cmFuc2l0aW9uOiB2aXNpYmlsaXR5IC4yNXMsIG9wYWNpdHkgLjI1cztcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvZG9ybmVuLXN5bWJvbC13aGl0ZS5zdmcnKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZTo6YmVmb3JlLFxuICAgICY6aG92ZXI6OmJlZm9yZSB7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgI3skbGFyZ2UtdXB9IHtcbiAgICBAaW5jbHVkZSBncmlkbGUoMTApO1xuXG4gICAgbGkge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuXG4gICAgICAmOmJlZm9yZSB7XG4gICAgICAgIGxlZnQ6IC0xNHB4O1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ubmF2aWdhdGlvbi1wb3B1cCAubmF2aWdhdGlvbi1jb250ZW50IC5uYXZpZ2F0aW9uLW1ldGEge1xuICBAaW5jbHVkZSBncmlkbGUoMTYpO1xuXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgbGkge1xuICAgIEBpbmNsdWRlIGdyaWRsZSg4KTtcbiAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgIG1hcmdpbi1yaWdodDogLTEwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAmOmhvdmVyLFxuICAgICY6aG92ZXIgYSxcbiAgICAmOmFjdGl2ZSxcbiAgICAmOmFjdGl2ZSBhIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbiAgfVxuXG4gIGxpLCBhIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjApO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgfVxuXG4gIC5sYW5ndWFnZS1zd2l0Y2gge1xuICAgIGEsIHNwYW4ge1xuICAgICAgb3BhY2l0eTogLjM7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmhvdmVyIGEsXG4gICAgJjphY3RpdmUsXG4gICAgJjphY3RpdmUgYSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgYTpob3ZlcixcbiAgICBhOmFjdGl2ZSB7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgYS5hY3RpdmU6aG92ZXIsXG4gICAgYS5hY3RpdmU6YWN0aXZlIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG5cblxuICAgIGEuYWN0aXZlLFxuICAgIHNwYW4uYWN0aXZlIHtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgQGluY2x1ZGUgZ3JpZGxlKDQpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDIpO1xuXG4gICAgbGkge1xuICAgICAgQGluY2x1ZGUgZ3JpZGxlKDE2KTtcbiAgICAgIGhlaWdodDogMTI1cHg7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG4gIH1cbn1cblxuLm5hdmlnYXRpb24tc3RpY2t5IHtcbiAgLm5hdmlnYXRpb24tY2xvc2UsXG4gIC5uYXZpZ2F0aW9uLW9wZW4ge1xuICAgIEBpbmNsdWRlIHNsaWRlSW5MZWZ0KCRkdXJhdGlvbjogMXMpO1xuICAgIGJhY2tncm91bmQ6ICRwaW5rO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdoaXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDU7XG4gICAgbGVmdDogMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAubmF2aWdhdGlvbi1vcGVuIHtcbiAgICBmb250LXNpemU6IDE5cHg7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgICBwYWRkaW5nOiAxMXB4IDAgNXB4O1xuICAgIHdpZHRoOiA1MXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0cmFuc2l0aW9uOiBmb250IC4zcztcbiAgICB0b3A6IDYycHg7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkYnJvd247XG4gICAgfVxuXG4gICAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBwYWRkaW5nOiAxM3B4IDAgN3B4O1xuICAgICAgd2lkdGg6IDUzcHg7XG4gICAgICB0b3A6IDglO1xuICAgIH1cbiAgfVxuXG4gIC5uYXZpZ2F0aW9uLWNsb3NlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvY2xvc2Utd2hpdGUuc3ZnJyk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjVweDtcbiAgICBoZWlnaHQ6IDU1cHg7XG4gICAgd2lkdGg6IDUycHg7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIHRvcDogMTBweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvY2xvc2UtYnJvd24uc3ZnJyk7XG4gICAgfVxuXG4gICAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDglO1xuICAgICAgaGVpZ2h0OiA2MnB4O1xuICAgICAgd2lkdGg6IDU3cHg7XG4gICAgfVxuICB9XG59XG4iLCIuc2VjdGlvbiB7XG4gIEBpbmNsdWRlIGdyaWRsZV9jb250YWluZXI7XG4gIEBpbmNsdWRlIGdyaWRsZV9jbGVhcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICYuaW50cm8tc2VjdGlvbiB7XG4gICAgcGFkZGluZy1ib3R0b206IDcwcHg7XG4gIH1cblxuICAmOmxhc3QtY2hpbGQge1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG5cbiAgLy8gTG9nbyBvbiB0aGUgdG9wIHJpZ2h0XG4gIC5zZWN0aW9uLWxvZ28ge1xuICAgIEBpbmNsdWRlIGdyaWRsZSgxNik7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICBtYXgtd2lkdGg6IDExMHB4O1xuICAgIHBhZGRpbmc6IDUwcHggMCAwO1xuXG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuc3ByaXRlIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA2OC4zNDg2MjM5JTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgbmFtZSBvZiB0aGUgc2VjdGlvblxuICAubWVudS10aXRsZSB7XG4gICAgQGluY2x1ZGUgZ3JpZGxlKDYsICdsZycpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDApO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDEsICdzbScpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDEsICdtZCcpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9jbGVhcignYm90aCcsICdzbScpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9jbGVhcignYm90aCcsICdtZCcpO1xuICAgIG1hcmdpbjogMjhweCAwIDEwcHggMzhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBoMSB7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGxlZnQ6IC0yOHB4O1xuICAgICAgdG9wOiAtMjhweDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGUgYmlnIFJcbiAgLnNlY3Rpb24tYnJhbmRpbmcge1xuICAgIEBpbmNsdWRlIGdyaWRsZSg2KTtcbiAgICBAaW5jbHVkZSBncmlkbGVfcHVzaCg3LCAnbGcnKTtcbiAgICBAaW5jbHVkZSBncmlkbGUoNiwgJ3NtJyk7XG4gICAgQGluY2x1ZGUgZ3JpZGxlKDYsICdtZCcpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9jbGVhcignYm90aCcsICdzbScpO1xuICAgIEBpbmNsdWRlIGdyaWRsZV9jbGVhcignYm90aCcsICdtZCcpO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHBhZGRpbmc6IDM1cHggMDtcbiAgICBtYXJnaW46IDAgMTM1cHggNDBweCAwO1xuXG4gICAgLnNwcml0ZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTA0LjA5OTM3ODg4MiU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JHNtYWxsLW9ubHl9IHtcbiAgICAubWVudS10aXRsZSBoMSB7XG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDUwKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgI3skbWluaS1vbmx5fSB7XG4gICAgLm1lbnUtdGl0bGUgaDEge1xuICAgICAgZm9udC1zaXplOiByZW0tY2FsYyg0Mik7XG4gICAgfVxuICAgICYuY29udGVudC1zZWN0aW9uIC5tZW51LXRpdGxlIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjgpO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAjeyRtZWRpdW0tb25seX0ge1xuICAgIC5tZW51LXRpdGxlIGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNTApO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgICYuaW50cm8tc2VjdGlvbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1sb2dvIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0OyAvLyBSZXRpbmEgaW1hZ2UgdG8gdGhlIHJpZ2h0XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMiU7XG4gICAgICB0b3A6IDglO1xuICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIG1heC13aWR0aDogMTMwcHg7XG4gICAgfVxuXG4gICAgLm1lbnUtdGl0bGUge1xuICAgICAgbWFyZ2luOiAyOHB4IDAgMCAzOHB4O1xuICAgICAgcGFkZGluZzogMCAxMHB4IDAgMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDYuMjUlO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWJyYW5kaW5nIHtcbiAgICAgIHBhZGRpbmc6IDAgMTBweDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cblxuICAgIC5pbnRyby1jb250YWluZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi5pbnRyby1zZWN0aW9uLFxuLmNsYWltLXNlY3Rpb24ge1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcblxuICBAbWVkaWEgI3skbGFyZ2UtdXB9IHtcbiAgICBtaW4taGVpZ2h0OiBpbmhlcml0O1xuICB9XG59XG5cbi5zZWN0aW9uLnRoZW1lLXBpbmsge1xuICBiYWNrZ3JvdW5kOiAkcGluaztcblxuICAubWVudS10aXRsZTpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtYnJvd24uc3ZnJyk7XG4gIH1cblxuICAuc2VjdGlvbi1icmFuZGluZyAuc3ByaXRlIHN2ZyxcbiAgLnNlY3Rpb24tbG9nbyAuc3ByaXRlIHN2ZyB7XG4gICAgY29sb3I6ICRicm93bjtcbiAgfVxufVxuXG4uc2VjdGlvbi50aGVtZS1icm93biB7XG4gIGJhY2tncm91bmQ6ICRicm93bjtcblxuICAubWVudS10aXRsZTpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtcGluay5zdmcnKTtcbiAgfVxuXG4gIC5zZWN0aW9uLWJyYW5kaW5nIC5zcHJpdGUgc3ZnLFxuICAuc2VjdGlvbi1sb2dvIC5zcHJpdGUgc3ZnIHtcbiAgICBjb2xvcjogJHBpbms7XG4gIH1cbn1cbiIsIi5jb250ZW50LXNlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cbiAgLnNlY3Rpb24tbG9nbyB7XG4gICAgLnNwcml0ZSBzdmcge1xuICAgICAgY29sb3I6ICRwaW5rO1xuICAgIH1cbiAgfVxuXG4gIC5tZW51LXRpdGxlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MHB4O1xuICAgIGxlZnQ6IDEyLjUlO1xuICAgIG1hcmdpbjogMDtcbiAgICBvcGFjaXR5OiAwLjE7XG5cbiAgICBoMSB7XG4gICAgICBjb2xvcjogJHBpbms7XG4gICAgfVxuICB9XG5cbiAgLmNvbnRlbnQtYm94LXdyYXBwZXI6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgfVxuXG4gIEBtZWRpYSAjeyRtZWRpdW0tb25seX0ge1xuICAgIC5jb250ZW50LWJveC13cmFwcGVyIHtcbiAgICAgIEBpbmNsdWRlIGdyaWRsZV9wdXNoKDEpO1xuICAgICAgQGluY2x1ZGUgZ3JpZGxlKDEwKTtcbiAgICAgIEBpbmNsdWRlIGdyaWRsZV9zdWZmaXgoNSk7XG4gICAgfVxuXG4gICAgLmNvbnRlbnQtYm94LXdyYXBwZXIubWQtcmlnaHQge1xuICAgICAgQGluY2x1ZGUgZ3JpZGxlX3N1ZmZpeCgwKTtcbiAgICAgIEBpbmNsdWRlIGdyaWRsZV9wcmVmaXgoNSk7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgLm1lbnUtdGl0bGUge1xuICAgICAgdG9wOiAxMi41JTtcbiAgICAgIG1hcmdpbjogMjhweCAwIDA7XG4gICAgfVxuICB9XG59XG5cbi5jb250ZW50LXNlY3Rpb24gKyAuY29udGVudC1zZWN0aW9uIHtcbiAgLnNlY3Rpb24tbG9nbyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgIC5zZWN0aW9uLWxvZ28ge1xuICAgICAgZGlzcGxheTogaW5oZXJpdDtcbiAgICB9XG4gIH1cbn1cbiIsIi5jb250ZW50LWJveC13cmFwcGVyIHtcbiAgbWFyZ2luLXRvcDogNjBweDtcblxuICBAbWVkaWEgI3skbGFyZ2UtdXB9IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbn1cblxuLnNlY3Rpb24gLmNvbnRlbnQtYm94LXdyYXBwZXI6bGFzdC1jaGlsZCAuYm94LWltYWdlIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi5jb250ZW50LWJveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWxlZnQ6IDE0cHg7IC8vIDpiZWZvcmUgb2Zmc2V0XG4gIG1hcmdpbi10b3A6IDE0cHg7IC8vIDpiZWZvcmUgb2Zmc2V0XG4gIHBhZGRpbmctcmlnaHQ6IDM0cHg7IC8vIDpiZWZvcmUgb2Zmc2V0XG4gIHdpZHRoOiAxMDAlO1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgd2lkdGg6IDE0cHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGVmdDogLTE0cHg7XG4gICAgdG9wOiAtMTRweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogdXJsKCcuLi9pbWFnZXMvZG9ybmVuLXN5bWJvbC1waW5rLnN2ZycpIG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDE0cHggMTRweDtcbiAgfVxuXG4gICYuYnJvd24tZG9ybmVuOmJlZm9yZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi9pbWFnZXMvZG9ybmVuLXN5bWJvbC1icm93bi5zdmcnKTtcbiAgfVxuXG4gIC5zdWJoZWFkbGluZSwgLmhlYWRsaW5lIHtcbiAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICBjb2xvcjogJHBpbms7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICB9XG5cbiAgLmhlYWRsaW5lIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXJlZ3VsYXI7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIH1cblxuICAuc3ViaGVhZGxpbmUge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbGlnaHQ7XG4gIH1cblxuICAvKiBUeXBlcyAqL1xuICAmLmJveC1pbWFnZSB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAmLmJveC1xdW90ZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGJsb2NrcXVvdGUge1xuICAgICAgaHlwaGVuczogYXV0bztcbiAgICAgIGNvbG9yOiAkcGluaztcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzIpO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgY29udGVudDogJ8K7JztcbiAgICB9XG5cbiAgICBibG9ja3F1b3RlOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICfCqyc7XG4gICAgfVxuXG4gICAgLmF1dGhvciB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgI3skbGFyZ2UtdXB9IHtcbiAgICAvKiBBbGlnbm1lbnQgKi9cbiAgICAmLmJveC1ib3R0b20sICYuYm94LWNlbnRlciwgJi5ib3gtdG9wIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBsZWZ0OiAtMTRweDtcbiAgICAgICAgdG9wOiAtMTBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJveC10b3Age1xuICAgICAgdG9wOiA4JTtcbiAgICAgIGJvdHRvbTogYXV0bztcbiAgICB9XG5cbiAgICAmLmJveC1ib3R0b20ge1xuICAgICAgdG9wOiBhdXRvO1xuICAgICAgYm90dG9tOiA4JTtcbiAgICB9XG5cbiAgICAmLmJveC1hcmNoaXYge1xuICAgICAgdG9wOiAxNSU7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgfVxuXG4gICAgJi5ib3gtY2VudGVyIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBib3R0b206IGF1dG87XG4gICAgfVxuICB9XG5cbiAgYm9keS5hcmNoaXZlLXBhZ2UgJiB7XG4gICAgJi5ib3gtYm90dG9tIHtcbiAgICAgIHRvcDogNDUlO1xuICAgICAgYm90dG9tOiBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIi5pbWFnZSwgLmltYWdlLW92ZXJsYXkge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLmltYWdlLW92ZXJsYXkge1xuICAub3ZlcmxheSwgLm92ZXJsYXk6OmJlZm9yZSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41cyAkZWFzZU91dFF1YWQ7XG4gIH1cblxuICAub3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgLy8gT24gYSBzZXBlcmF0ZSBsYXllciB0byBtYWtlIGl0IGFuaW1hdGUgYWxvbmVcbiAgICAmOmJlZm9yZSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKGRhcmtlbigkcGluaywgMTUpLCAwLjU1KTtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cblxuICAub3ZlcmxheS1jYXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMzIpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgICBwYWRkaW5nOiAwIDAgMTBweCAxMHB4O1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgLy8gLm92ZXJsYXkgeyAgdG8gYW5pbWF0ZSBib3RoIHRleHQgYW5kIGJhY2tncm91bmRcbiAgICAub3ZlcmxheTo6YmVmb3JlIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMDAlKTtcbiAgICB9XG4gIH1cbn1cblxuLmltYWdlLWRldGFpbHMge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogNDBweCAwIDAgMTIuNSU7IC8vIDEyLjUlIGFjY29yZGluZyB0byBncmlkIHB1c2hcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgaGVpZ2h0OiAxNHB4O1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGxlZnQ6IC0xNXB4O1xuICAgIHRvcDogLTEwcHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtcGluay5zdmcnKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zcywgdmlzaWJpbGl0eSAuM3M7XG4gIH1cbn1cbiIsIi5zY3JvbGwtZG93bi1hcnJvdyB7XG4gIGFuaW1hdGlvbjogZmFkZUluIDFzIGVhc2UgNXMgMSBib3RoO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy4uL2ltYWdlcy9hcnJvdy1kb3duLnN2ZycpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBoZWlnaHQ6IDI2cHg7XG4gIHdpZHRoOiA0M3B4O1xuICBiYWNrZ3JvdW5kLXNpemU6IDQzcHggMjZweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDEycHg7XG4gIGxlZnQ6IDUwJTtcbiAgbWFyZ2luLWxlZnQ6IC0yMXB4O1xuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgIGFuaW1hdGlvbjogZmFkZUluIDFzIGVhc2UgNXMgMSBib3RoLCBib3VuY2UgMy41cyBlYXNlIDcuNXMgaW5maW5pdGUgYm90aDtcbiAgfVxufVxuIiwiQGtleWZyYW1lcyBzbGlkZUluRG93blJvc2FTY2hhcGlyZUxvZ28ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTUwJSwgMCk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG4uaGVhZGVyLXNlY3Rpb24ge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAuYnJhbmRpbmctY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDY2LjY2NiU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy4uL2ltYWdlcy9ncmV5LWJhY2tncm91bmQuanBnJykgbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlO1xuICB9XG5cbiAgLmJyYW5kaW5nLWNvbnRhaW5lciAuY29udGVudC13cmFwcGVyLFxuICAubmF2aWdhdGlvbi1jb250ZW50IC5jb250ZW50LXdyYXBwZXIge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gIC5sb2dvLWNvbnRhaW5lciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5yb3NhLXNjaGFwaXJlLXRleHQge1xuICAgIHdpZHRoOiA0MCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7IC8vIElmIG5vIGFuaW1hdGlvblxuICAgIEBpbmNsdWRlIHNsaWRlSW5Eb3duKCRkZWxheTogMnMpO1xuICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUluRG93blJvc2FTY2hhcGlyZUxvZ287XG5cbiAgICAuc3ByaXRlIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA2OC4zNDg2MjM5JTtcblxuICAgICAgc3ZnIHtcbiAgICAgICAgY29sb3I6ICRwaW5rO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5yb3NhLXNjaGFwaXJlLXN5bWJvbCB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC01MCUpOyAvLyBJZiBubyBhbmltYXRpb25cbiAgfVxuXG4gIC5yb3NhLXNjaGFwaXJlLWxvZ28ge1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBwYWRkaW5nOiAwIDIwcHg7XG5cbiAgICAuc3ByaXRlIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiA0NS44NTAzNDAxMzYlO1xuXG4gICAgICBzdmcge1xuICAgICAgICBjb2xvcjogJGJyb3duO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5uYXZpZ2F0aW9uLWNvbnRlbnQge1xuICAgIGhlaWdodDogMzMuMzMzJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLmhlYWRlci1uYXZpZ2F0aW9uIHtcbiAgICAgIC8vIEBpbmNsdWRlIGdyaWRsZSgxNSk7XG4gICAgICAvLyBAaW5jbHVkZSBncmlkbGVfcHVzaCgxKTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICBAaW5jbHVkZSBzbGlkZUluVXAoJGRlbGF5OiAxcyk7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICBhIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwJTtcblxuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1saWdodDtcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICBjb2xvcjogJG1pZC1ncmV5O1xuICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyOCk7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIC4zcywgZmlsdGVyIC4zcztcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgIEBtZWRpYSAjeyRtaW5pLW9ubHl9IHtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygyMik7XG4gICAgICB9XG5cbiAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGxlZnQ6IC0xNHB4O1xuICAgICAgICB0b3A6IC0xNHB4O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJhY2tncm91bmQ6IHVybCgnLi4vaW1hZ2VzL2Rvcm5lbi1zeW1ib2wtcGluay5zdmcnKTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MsIHZpc2liaWxpdHkgLjNzO1xuICAgICAgfVxuXG4gICAgICAmOmhvdmVyLCAmOmFjdGl2ZSB7XG4gICAgICAgIGNvbG9yOiAkcGluaztcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmZsZXhib3guZmxleHdyYXAgJiB7XG4gICAgICB1bCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgfVxuXG4gICAgICBhIHtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgIC5yb3NhLXNjaGFwaXJlLXRleHQge1xuICAgICAgd2lkdGg6IDMwJTtcbiAgICB9XG5cbiAgICAuYnJhbmRpbmctY29udGFpbmVyIHtcbiAgICAgIGhlaWdodDogODAlO1xuXG4gICAgICBsaTpob3ZlcixcbiAgICAgIGxpOmFjdGl2ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMzJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubmF2aWdhdGlvbi1jb250ZW50IHtcbiAgICAgIGhlaWdodDogMjAlO1xuXG4gICAgICBhIHtcbiAgICAgICAgd2lkdGg6IDI1JTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICB9XG5cbiAgICAgIC5mbGV4Ym94LmZsZXh3cmFwICYge1xuICAgICAgICBhIHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLmZvb3Rlci1jb250YWluZXIge1xuICBoZWlnaHQ6IDMzcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kOiAkYnJvd247XG4gIGNvbG9yOiAkd2hpdGU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsZWFyOiBib3RoO1xuXG4gIC5mb290ZXIge1xuICAgIG1heC13aWR0aDogOTYwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cblxuICB1bCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cblxuICBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luOiAwIDEycHg7XG4gIH1cblxuICBsaSwgYSB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICBoZWlnaHQ6IDMzcHg7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxMik7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICBsaSBhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4IDA7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgYm9yZGVyLWNvbG9yOiAkd2hpdGU7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cztcbiAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yLDEsMC4zLDEpO1xuICAgICAgd2lkdGg6IDgwJTtcbiAgICAgIGxlZnQ6IDEwJTtcbiAgICAgIGhlaWdodDogODAlO1xuICAgICAgdG9wOiAycHg7XG4gICAgfVxuXG4gICAgJjpob3Zlcjo6YmVmb3JlLFxuICAgICY6YWN0aXZlOjpiZWZvcmUge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsMSwxKTtcbiAgICB9XG4gIH1cblxuICAuZmFjZWJvb2staWNvbiB7XG4gICAgd2lkdGg6IDdweDtcbiAgICBoZWlnaHQ6IDMzcHg7XG5cbiAgICAvLyBSZW1vdmUgaG92ZXIgZWZmZWN0XG4gICAgYSB7XG4gICAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgICAgIGRpc3BsYXk6IGluaGVyaXQ7XG5cbiAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLnNwcml0ZSB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjExLjExMTExJTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTtcbiAgICB9XG5cbiAgICAuc3ByaXRlIHN2ZyB7XG4gICAgICBjb2xvcjogJHBpbms7XG4gICAgICB0cmFuc2l0aW9uOiBjb2xvciAuM3M7XG4gICAgfVxuXG4gICAgJjphY3RpdmUgLnNwcml0ZSBzdmcsXG4gICAgJjpob3ZlciAuc3ByaXRlIHN2ZyB7XG4gICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbiAgfVxufVxuIiwiLmNsYWltLXNlY3Rpb24ge1xuICBAaW5jbHVkZSBncmlkbGVfY29udGFpbmVyKCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLmNsYWltLXRleHQge1xuICAgIEBpbmNsdWRlIGdyaWRsZSgxNSk7XG4gICAgQGluY2x1ZGUgZ3JpZGxlX3B1c2goMSk7XG4gICAgbWFyZ2luOiA3MHB4IDA7XG5cbiAgICBoMSB7XG4gICAgICBmb250LXNpemU6IHJlbS1jYWxjKDQwKTtcbiAgICAgIGNvbG9yOiAkcGluaztcbiAgICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktbGlnaHQ7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICAgIGh5cGhlbnM6IGF1dG87XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JG1lZGl1bS11cH0ge1xuICAgIC5jbGFpbS10ZXh0IGgxIHtcbiAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoNTApO1xuICAgIH1cbiAgfVxuXG4gIEBtZWRpYSAjeyRsYXJnZS11cH0ge1xuICAgIC5jbGFpbS10ZXh0IHtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLmltYWdlLXNvdXJjZXMge1xuICBtYXJnaW46IDEwJSAwIDEwJTtcblxuICBoMiB7XG4gICAgY29sb3I6ICRwaW5rO1xuICB9XG59XG4iLCIuY29udGFpbmVyLW1ldGEge1xuICBwYWRkaW5nLXRvcDogMTAycHg7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG5cbiAgaDEsIGgyLCBoMyB7XG4gICAgY29sb3I6ICRwaW5rO1xuICB9XG5cbiAgQG1lZGlhICN7JGxhcmdlLXVwfSB7XG4gICAgcGFkZGluZy10b3A6IDglO1xuICB9XG59XG4iLCIuYXJjaGl2IHtcblxuICAgICYtaXRlbSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICBAbWVkaWEgI3skbWVkaXVtLXVwfSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDMwKTsgfSB9XG5cbiAgICAmLXllYXIge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgY29sb3I6ICRwaW5rO1xuICAgICAgICBsaW5lLWhlaWdodDogMTsgfVxuXG4gICAgJi1ib2R5IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDUwcHg7XG4gICAgICAgIEBtZWRpYSAjeyRtZWRpdW0tdXB9IHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiA5NHB4OyB9XG5cblxuICAgICAgICBoMixcbiAgICAgICAgaDMge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIEBtZWRpYSAjeyRtZWRpdW0tdXB9IHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDI0KTsgfSB9IH0gfVxuIl19 */
