@charset "UTF-8";
/* ==========================================================================
   #BOX-SIZING
   ========================================================================== */
/**
 * More sensible default box-sizing:
 * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
 */
html {
  box-sizing: border-box; }

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

/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
/**
 * 1. Change the default font family in all browsers (opinionated).
 * 2. Correct the line height in all browsers.
 * 3. Prevent adjustments of font size after orientation changes in
 *    IE on Windows Phone and in iOS.
 */
/* Document
   ========================================================================== */
html {
  font-family: sans-serif;
  /* 1 */
  line-height: 1.15;
  /* 2 */
  -ms-text-size-adjust: 100%;
  /* 3 */
  -webkit-text-size-adjust: 100%;
  /* 3 */ }

/* Sections
   ========================================================================== */
/**
 * Remove the margin in all browsers (opinionated).
 */
body {
  margin: 0; }

/**
 * Add the correct display in IE 9-.
 */
article,
aside,
footer,
header,
nav,
section {
  display: block; }

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0; }

/* Grouping content
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 * 1. Add the correct display in IE.
 */
figcaption,
figure,
main {
  /* 1 */
  display: block; }

/**
 * Add the correct margin in IE 8.
 */
figure {
  margin: 1em 40px; }

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */
hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */ }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/* Text-level semantics
   ========================================================================== */
/**
 * 1. Remove the gray background on active links in IE 10.
 * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
 */
a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */ }

/**
 * Remove the outline on focused links when they are also active or hovered
 * in all browsers (opinionated).
 */
a:active,
a:hover {
  outline-width: 0; }

/**
 * 1. Remove the bottom border in Firefox 39-.
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */
abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
  /* 2 */ }

/**
 * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
 */
b,
strong {
  font-weight: inherit; }

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */
b,
strong {
  font-weight: bolder; }

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */
code,
kbd,
samp {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */ }

/**
 * Add the correct font style in Android 4.3-.
 */
dfn {
  font-style: italic; }

/**
 * Add the correct background and color in IE 9-.
 */
mark {
  background-color: #ff0;
  color: #000; }

/**
 * Add the correct font size in all browsers.
 */
small {
  font-size: 80%; }

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

sub {
  bottom: -0.25em; }

sup {
  top: -0.5em; }

/* Embedded content
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 */
audio,
video {
  display: inline-block; }

/**
 * Add the correct display in iOS 4-7.
 */
audio:not([controls]) {
  display: none;
  height: 0; }

/**
 * Remove the border on images inside links in IE 10-.
 */
img {
  border-style: none; }

/**
 * Hide the overflow in IE.
 */
svg:not(:root) {
  overflow: hidden; }

/* Forms
   ========================================================================== */
/**
 * 1. Change the font styles in all browsers (opinionated).
 * 2. Remove the margin in Firefox and Safari.
 */
button,
input,
optgroup,
select,
textarea {
  font-family: sans-serif;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */ }

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */
button,
input {
  /* 1 */
  overflow: visible; }

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */
button,
select {
  /* 1 */
  text-transform: none; }

/**
 * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
 *    controls in Android 4.
 * 2. Correct the inability to style clickable types in iOS and Safari.
 */
button,
html [type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */ }

/**
 * Remove the inner border and padding in Firefox.
 */
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0; }

/**
 * Restore the focus styles unset by the previous rule.
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText; }

/**
 * Change the border, margin, and padding in all browsers (opinionated).
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em; }

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */
legend {
  box-sizing: border-box;
  /* 1 */
  color: inherit;
  /* 2 */
  display: table;
  /* 1 */
  max-width: 100%;
  /* 1 */
  padding: 0;
  /* 3 */
  white-space: normal;
  /* 1 */ }

/**
 * 1. Add the correct display in IE 9-.
 * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */
progress {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Remove the default vertical scrollbar in IE.
 */
textarea {
  overflow: auto; }

/**
 * 1. Add the correct box sizing in IE 10-.
 * 2. Remove the padding in IE 10-.
 */
[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */ }

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto; }

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */
[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */ }

/**
 * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
 */
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none; }

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */
::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */ }

/* Interactive
   ========================================================================== */
/*
 * Add the correct display in IE 9-.
 * 1. Add the correct display in Edge, IE, and Firefox.
 */
details,
menu {
  display: block; }

/*
 * Add the correct display in all browsers.
 */
summary {
  display: list-item; }

/* Scripting
   ========================================================================== */
/**
 * Add the correct display in IE 9-.
 */
canvas {
  display: inline-block; }

/**
 * Add the correct display in IE.
 */
template {
  display: none; }

/* Hidden
   ========================================================================== */
/**
 * Add the correct display in IE 10-.
 */
[hidden] {
  display: none; }

/* ==========================================================================
   #RESET
   ========================================================================== */
/**
 * A very simple reset that sits on top of Normalize.css.
 */
body,
h1, h2, h3, h4, h5, h6,
blockquote, p, pre,
dl, dd, ol, ul,
figure,
hr,
fieldset, legend {
  margin: 0;
  padding: 0; }

/**
 * Remove trailing margins from nested lists.
 */
li > ol,
li > ul {
  margin-bottom: 0; }

/**
 * Remove default table spacing.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

/**
 * 1. Reset Chrome and Firefox behaviour which sets a `min-width: min-content;`
 *    on fieldsets.
 */
fieldset {
  min-width: 0;
  /* [1] */
  border: 0; }

/* ==========================================================================
   #SHARED
   ========================================================================== */
/**
 * Shared declarations for certain elements.
 */
/**
 * Always declare margins in the same direction:
 * csswizardry.com/2012/06/single-direction-margin-declarations
 */
/* stylelint-disable selector-list-comma-newline-after */
address,
h1, h2, h3, h4, h5, h6,
blockquote, p, pre,
dl, ol, ul,
figure,
hr,
table,
fieldset {
  margin-bottom: 24px;
  margin-bottom: 1.5rem; }

/**
 * Consistent indentation for lists.
 */
dd, ol, ul {
  margin-left: 24px;
  margin-left: 1.5rem; }

/* stylelint-enable selector-list-comma-newline-after */
/* ==========================================================================
   #PAGE
   ========================================================================== */
/**
 * Simple page-level setup.
 *
 * 1. Set the default `font-size` and `line-height` for the entire project,
 *    sourced from our default variables. The `font-size` is calculated to exist
 *    in ems, the `line-height` is calculated to exist unitlessly.
 * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when
 *    navigating between pages that do/do not have enough content to produce
 *    scrollbars naturally.
 * 3. Ensure the page always fills at least the entire height of the viewport.
 */
html {
  font-size: 1em;
  /* [1] */
  line-height: 1.5;
  /* [1] */
  overflow-y: scroll;
  /* [2] */
  min-height: 100%;
  /* [3] */ }

/* ==========================================================================
   #HEADINGS
   ========================================================================== */
/**
 * Simple default styles for headings 1 through 6. Anything more opinionated
 * than simple font-size changes should likely be applied via classes (see:
 * http://csswizardry.com/2016/02/managing-typography-on-large-apps/).
 */
h1 {
  font-size: 36px;
  font-size: 2.25rem;
  line-height: 1.33333; }

h2 {
  font-size: 28px;
  font-size: 1.75rem;
  line-height: 1.71429; }

h3 {
  font-size: 24px;
  font-size: 1.5rem;
  line-height: 1; }

h4 {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 1.2; }

h5 {
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.33333; }

h6 {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.5; }

/* ==========================================================================
   #IMAGES
   ========================================================================== */
/**
 * 1. Fluid images for responsive purposes.
 * 2. Offset `alt` text from surrounding copy.
 * 3. Setting `vertical-align` removes the whitespace that appears under `img`
 *    elements when they are dropped into a page as-is. Safer alternative to
 *    using `display: block;`.
 */
img {
  max-width: 100%;
  /* [1] */
  font-style: italic;
  /* [2] */
  vertical-align: middle;
  /* [3] */ }

/**
 * 1. If a `width` and/or `height` attribute have been explicitly defined, let’s
 *    not make the image fluid.
 */
img[width],
img[height] {
  /* [1] */
  max-width: none; }

/* ==========================================================================
   #TABLES
   ========================================================================== */
/**
 * 1. Ensure tables fill up as much space as possible.
 */
table {
  width: 100%;
  /* [1] */ }

html {
  font-size: 100%; }

body {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.45;
  color: #333; }

h1 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal; }

h2 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal; }

h3 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal; }

h4 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 700;
  font-style: normal; }

h5 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 700;
  font-style: normal; }

h6 {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal; }

a {
  border-bottom: 1px solid #ccdcf1;
  color: #333;
  text-decoration: none;
  box-shadow: inset 0 -3px 0 #ccdcf1;
  -webkit-transition: background 0.3s ease-out;
  transition: background 0.3s ease-out; }

a:hover {
  background: #ccdcf1; }

/* ==========================================================================
   #WRAPPERS
   ========================================================================== */
/**
 * Page-level constraining and wrapping elements.
 */
/* stylelint-disable */
/* stylelint-enable */
.o-wrapper {
  padding-right: 24px;
  padding-left: 24px;
  margin-right: auto;
  margin-left: auto;
  max-width: 1200px; }
  .o-wrapper:after {
    content: "" !important;
    display: block !important;
    clear: both !important; }

/* Size variants.
   ========================================================================== */
.o-wrapper--tiny {
  padding-right: 6px;
  padding-left: 6px; }

.o-wrapper--small {
  padding-right: 12px;
  padding-left: 12px; }

.o-wrapper--large {
  padding-right: 48px;
  padding-left: 48px; }

.o-wrapper--huge {
  padding-right: 96px;
  padding-left: 96px; }

/* ==========================================================================
   #LAYOUT
   ========================================================================== */
/**
 * Grid-like layout system.
 *
 * The layout object provides us with a column-style layout system. This file
 * contains the basic structural elements, but classes should be complemented
 * with width utilities, for example:
 *
 *   <div class="o-layout">
 *     <div class="o-layout__item  u-1/2">
 *     </div>
 *     <div class="o-layout__item  u-1/2">
 *     </div>
 *   </div>
 *
 * The above will create a two-column structure in which each column will
 * fluidly fill half of the width of the parent. We can have more complex
 * systems:
 *
 *   <div class="o-layout">
 *     <div class="o-layout__item  u-1/1  u-1/3@medium">
 *     </div>
 *     <div class="o-layout__item  u-1/2  u-1/3@medium">
 *     </div>
 *     <div class="o-layout__item  u-1/2  u-1/3@medium">
 *     </div>
 *   </div>
 *
 * The above will create a system in which the first item will be 100% width
 * until we enter our medium breakpoint, when it will become 33.333% width. The
 * second and third items will be 50% of their parent, until they also become
 * 33.333% width at the medium breakpoint.
 *
 * We can also manipulate entire layout systems by adding a series of modifiers
 * to the `.o-layout` block. For example:
 *
 *   <div class="o-layout  o-layout--reverse">
 *
 * This will reverse the displayed order of the system so that it runs in the
 * opposite order to our source, effectively flipping the system over.
 *
 *   <div class="o-layout  o-layout--[right|center]">
 *
 * This will cause the system to fill up from either the centre or the right
 * hand side. Default behaviour is to fill up the layout system from the left.
 *
 * There are plenty more options available to us: explore them below.
 */
/* Default/mandatory classes.
   ========================================================================== */
/**
 * 1. Allows us to use the layout object on any type of element.
 * 2. We need to defensively reset any box-model properties.
 * 3. Use the negative margin trick for multi-row grids:
 *    http://csswizardry.com/2011/08/building-better-grid-systems/
 */
.o-layout {
  display: block;
  /* [1] */
  margin: 0;
  /* [2] */
  padding: 0;
  /* [2] */
  list-style: none;
  /* [1] */
  margin-left: -24px;
  /* [3] */
  font-size: 0; }

/**
   * 1. Required in order to combine fluid widths with fixed gutters.
   * 2. Allows us to manipulate grids vertically, with text-level properties,
   *    etc.
   * 3. Default item alignment is with the tops of each other, like most
   *    traditional grid/layout systems.
   * 4. By default, all layout items are full-width (mobile first).
   * 5. Gutters provided by left padding:
   *    http://csswizardry.com/2011/08/building-better-grid-systems/
   * 6. Fallback for old IEs not supporting `rem` values.
   */
.o-layout__item {
  box-sizing: border-box;
  /* [1] */
  display: inline-block;
  /* [2] */
  vertical-align: top;
  /* [3] */
  width: 100%;
  /* [4] */
  padding-left: 24px;
  /* [5] */
  font-size: 16px;
  /* [6] */
  font-size: 1rem; }

/* Gutter size modifiers.
   ========================================================================== */
.o-layout--tiny {
  margin-left: -6px; }
  .o-layout--tiny > .o-layout__item {
    padding-left: 6px; }

.o-layout--small {
  margin-left: -12px; }
  .o-layout--small > .o-layout__item {
    padding-left: 12px; }

.o-layout--large {
  margin-left: -48px; }
  .o-layout--large > .o-layout__item {
    padding-left: 48px; }

.o-layout--huge {
  margin-left: -96px; }
  .o-layout--huge > .o-layout__item {
    padding-left: 96px; }

.o-layout--flush {
  margin-left: 0; }
  .o-layout--flush > .o-layout__item {
    padding-left: 0; }

/* Vertical alignment modifiers.
   ========================================================================== */
/**
 * Align all grid items to the middles of each other.
 */
.o-layout--middle > .o-layout__item {
  vertical-align: middle; }

/**
 * Align all grid items to the bottoms of each other.
 */
.o-layout--bottom > .o-layout__item {
  vertical-align: bottom; }

/* Fill order modifiers.
   ========================================================================== */
/**
 * Fill up the layout system from the centre.
 */
.o-layout--center {
  text-align: center; }
  .o-layout--center > .o-layout__item {
    text-align: left; }

/**
 * Fill up the layout system from the right-hand side.
 */
.o-layout--right {
  text-align: right; }
  .o-layout--right > .o-layout__item {
    text-align: left; }

/**
 * Reverse the rendered order of the grid system.
 */
.o-layout--reverse {
  direction: rtl; }
  .o-layout--reverse > .o-layout__item {
    direction: ltr;
    text-align: left; }

/* ==========================================================================
   #MEDIA
   ========================================================================== */
/**
 * Place any image- and text-like content side-by-side, as per:
 * http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code
 */
.o-media {
  display: block; }
  .o-media:after {
    content: "" !important;
    display: block !important;
    clear: both !important; }

.o-media__img {
  float: left;
  margin-right: 24px; }
  .o-media__img > img {
    display: block; }

.o-media__body {
  overflow: hidden;
  display: block; }
  .o-media__body,
  .o-media__body > :last-child {
    margin-bottom: 0; }

/* Size variants
   ========================================================================== */
/**
 * Modify the amount of space between our image and our text. We also have
 * reversible options for all available sizes.
 */
.o-media--tiny > .o-media__img {
  margin-right: 6px; }

.o-media--tiny.o-media--reverse > .o-media__img {
  margin-right: 0;
  margin-left: 6px; }

.o-media--small > .o-media__img {
  margin-right: 12px; }

.o-media--small.o-media--reverse > .o-media__img {
  margin-right: 0;
  margin-left: 12px; }

.o-media--large > .o-media__img {
  margin-right: 48px; }

.o-media--large.o-media--reverse > .o-media__img {
  margin-right: 0;
  margin-left: 48px; }

.o-media--huge > .o-media__img {
  margin-right: 96px; }

.o-media--huge.o-media--reverse > .o-media__img {
  margin-right: 0;
  margin-left: 96px; }

/* Reversed media objects
   ========================================================================== */
.o-media--reverse > .o-media__img {
  float: right;
  margin-right: 0;
  margin-left: 24px; }

/* Gutterless media objects
   ========================================================================== */
.o-media--flush > .o-media__img {
  margin-right: 0;
  margin-left: 0; }

/* ==========================================================================
   #FLAG
   ========================================================================== */
/**
 * The flag object is a design pattern similar to the media object, however it
 * utilises `display: table[-cell];` to give us control over the vertical
 * alignments of the text and image.
 *
 * http://csswizardry.com/2013/05/the-flag-object/
 *
 * 1. Allows us to control vertical alignments.
 * 2. Force the object to be the full width of its parent. Combined with [1],
 *    this makes the object behave in a quasi-`display: block;` manner.
 */
.o-flag {
  display: table;
  /* [1] */
  width: 100%;
  /* [2] */ }

/**
   * Items within a flag object. There should only ever be one of each.
   *
   * 1. Default to aligning content to their middles.
   */
.o-flag__img,
.o-flag__body {
  display: table-cell;
  vertical-align: middle;
  /* [1] */ }

/**
   * Flag images have a space between them and the body of the object.
   *
   * 1. Force `.flag__img` to take up as little space as possible:
   *    https://pixelsvsbytes.com/2012/02/this-css-layout-grid-is-no-holy-grail/
   */
.o-flag__img {
  width: 1px;
  /* [1] */
  padding-right: 24px;
  /**
     * 1. Fixes problem with images disappearing.
     */ }
  .o-flag__img > img {
    max-width: none;
    /* [1] */ }

/**
   * The container for the main content of the flag object.
   *
   * 1. Forces the `.flag__body` to take up all remaining space.
   */
.o-flag__body {
  width: auto;
  /* [1] */ }
  .o-flag__body,
  .o-flag__body > :last-child {
    margin-bottom: 0; }

/* Size variants.
   ========================================================================== */
.o-flag--tiny > .o-flag__img {
  padding-right: 6px; }

.o-flag--tiny.o-flag--reverse > .o-flag__img {
  padding-right: 0;
  padding-left: 6px; }

.o-flag--small > .o-flag__img {
  padding-right: 12px; }

.o-flag--small.o-flag--reverse > .o-flag__img {
  padding-right: 0;
  padding-left: 12px; }

.o-flag--large > .o-flag__img {
  padding-right: 48px; }

.o-flag--large.o-flag--reverse > .o-flag__img {
  padding-right: 0;
  padding-left: 48px; }

.o-flag--huge > .o-flag__img {
  padding-right: 96px; }

.o-flag--huge.o-flag--reverse > .o-flag__img {
  padding-right: 0;
  padding-left: 96px; }

.o-flag--flush > .o-flag__img {
  padding-right: 0;
  padding-left: 0; }

/* Reversed flag.
   ========================================================================== */
/**
 * 1. Swap the rendered direction of the object…
 * 2. …and reset it.
 * 3. Reassign margins to the correct sides.
 */
.o-flag--reverse {
  direction: rtl;
  /* [1] */ }
  .o-flag--reverse > .o-flag__img,
  .o-flag--reverse > .o-flag__body {
    direction: ltr;
    /* [2] */ }
  .o-flag--reverse > .o-flag__img {
    padding-right: 0;
    /* [3] */
    padding-left: 24px;
    /* [3] */ }

/* Alignment variants.
   ========================================================================== */
/**
 * Vertically align the image- and body-content differently. Defaults to middle.
 */
.o-flag--top > .o-flag__img,
.o-flag--top > .o-flag__body {
  vertical-align: top; }

.o-flag--bottom > .o-flag__img,
.o-flag--bottom > .o-flag__body {
  vertical-align: bottom; }

/* ==========================================================================
   #LIST-BARE
   ========================================================================== */
/**
 * Strip list-like appearance from lists by removing their bullets, and any
 * indentation.
 */
.o-list-bare {
  list-style: none;
  margin-left: 0; }

/* ==========================================================================
   #LIST-INLINE
   ========================================================================== */
/**
 * The list-inline object simply displays a list of items in one line.
 */
.o-list-inline {
  margin-left: 0;
  list-style: none; }

.o-list-inline__item {
  display: inline-block; }

/* Delimited list.
   ========================================================================== */
/**
 * By default, applying this class will comma separate your list items. You can
 * change the delimiter by predefining the following variable:
 */
/**
 * 1. Fallback for old IEs not supporting `rem` values.
 */
.o-list-inline--delimited {
  font-size: 0; }
  .o-list-inline--delimited > .o-list-inline__item {
    font-size: 16px;
    /* [1] */
    font-size: 1rem; }
  .o-list-inline--delimited > .o-list-inline__item + .o-list-inline__item:before {
    content: ", "; }

/* ==========================================================================
   #BOX
   ========================================================================== */
/**
 * The box object simply boxes off content. Extend with cosmetic styles in the
 * Components layer.
 *
 * 1. So we can apply the `.o-box` class to naturally-inline elements.
 */
.o-box {
  display: block;
  /* [1] */
  padding: 24px; }
  .o-box:after {
    content: "" !important;
    display: block !important;
    clear: both !important; }
  .o-box > :last-child {
    margin-bottom: 0; }

/* Size variants
   ========================================================================== */
.o-box--flush {
  padding: 0; }

.o-box--tiny {
  padding: 6px; }

.o-box--small {
  padding: 12px; }

.o-box--large {
  padding: 48px; }

.o-box--huge {
  padding: 96px; }

/* ==========================================================================
   #BLOCK
   ========================================================================== */
/**
 * Stacked image-with-text object. A simple abstraction to cover a very commonly
 * occurring design pattern.
 */
.o-block {
  display: block;
  text-align: center; }

.o-block__img {
  margin-bottom: 24px;
  /* Size variants.
       ====================================================================== */ }
  .o-block--flush > .o-block__img {
    margin-bottom: 0; }
  .o-block--tiny > .o-block__img {
    margin-bottom: 6px; }
  .o-block--small > .o-block__img {
    margin-bottom: 12px; }
  .o-block--large > .o-block__img {
    margin-bottom: 48px; }
  .o-block--huge > .o-block__img {
    margin-bottom: 96px; }

.o-block__body {
  display: block; }

/* Alignment variants.
   ========================================================================== */
.o-block--right {
  text-align: right; }

.o-block--left {
  text-align: left; }

/* ==========================================================================
   #RATIO
   ========================================================================== */
/**
 * Create ratio-bound content blocks, to keep media (e.g. images, videos) in
 * their correct aspect ratios.
 *
 * http://alistapart.com/article/creating-intrinsic-ratios-for-video
 *
 * 1. Default cropping is a 1:1 ratio (i.e. a perfect square).
 */
.o-ratio {
  position: relative;
  display: block;
  overflow: hidden; }
  .o-ratio:before {
    content: "";
    display: block;
    width: 100%;
    padding-bottom: 100%;
    /* [1] */ }

.o-ratio__content,
.o-ratio > iframe,
.o-ratio > embed,
.o-ratio > object {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  height: 100%;
  width: 100%; }

/* stylelint-disable */
/* Ratio variants.
   ========================================================================== */
/**
 * Generate a series of ratio classes to be used like so:
 *
 *   <div class="o-ratio  o-ratio--16:9">
 *
 */
.o-ratio--2\:1:before {
  padding-bottom: 50%; }

.o-ratio--4\:3:before {
  padding-bottom: 75%; }

.o-ratio--16\:9:before {
  padding-bottom: 56.25%; }

/* stylelint-enable */
/* ==========================================================================
   #CROP
   ========================================================================== */
/**
 * Provide a cropping container in order to display media (usually images)
 * cropped to certain ratios.
 *
 * 1. Set up a positioning context in which the image can sit.
 * 2. This is the crucial part: where the cropping happens.
 */
.o-crop {
  position: relative;
  /* [1] */
  display: block;
  overflow: hidden;
  /* [2] */ }

/**
   * Apply this class to the content (usually `img`) that needs cropping.
   *
   * 1. Image’s default positioning is top-left in the cropping box.
   * 2. Make sure the media doesn’t stop itself too soon.
   */
.o-crop__content {
  position: absolute;
  top: 0;
  /* [1] */
  left: 0;
  /* [1] */
  max-width: none;
  /* [2] */ }

/**
   * We can position the media in different locations within the cropping area.
   */
.o-crop__content--right {
  right: 0;
  left: auto; }

.o-crop__content--bottom {
  top: auto;
  bottom: 0; }

.o-crop__content--center {
  top: 50%;
  left: 50%;
  -webkit-transform: translate(-50%, -50%);
          transform: translate(-50%, -50%); }

/* stylelint-disable */
/* Crop-ratio variants.
   ========================================================================== */
/**
 * Generate a series of crop classes to be used like so:
 *
 *   <div class="o-crop  o-crop--16:9">
 *
 */
.o-crop--2\:1 {
  padding-bottom: 50%; }

.o-crop--4\:3 {
  padding-bottom: 75%; }

.o-crop--16\:9 {
  padding-bottom: 56.25%; }

/* stylelint-enable */
/* ==========================================================================
   #TABLES
   ========================================================================== */
/**
 * A simple object for manipulating the structure of HTML `table`s.
 */
.o-table {
  width: 100%; }

/* Equal-width table cells.
   ========================================================================== */
/**
 * `table-layout: fixed` forces all cells within a table to occupy the same
 * width as each other. This also has performance benefits: because the browser
 * does not need to (re)calculate cell dimensions based on content it discovers,
 * the table can be rendered very quickly. Further reading:
 * https://developer.mozilla.org/en-US/docs/Web/CSS/table-layout#Values
 */
.o-table--fixed {
  table-layout: fixed; }

/* Size variants.
   ========================================================================== */
.o-table--tiny th,
.o-table--tiny td {
  padding: 6px; }

.o-table--small th,
.o-table--small td {
  padding: 12px; }

.o-table--large th,
.o-table--large td {
  padding: 48px; }

.o-table--huge th,
.o-table--huge td {
  padding: 96px; }

/* ==========================================================================
   #PACK
   ========================================================================== */
/**
 * The pack object simply causes any number of elements pack up horizontally to
 * automatically fill an equal, fluid width of their parent.
 *
 * 1. Fill all available space.
 * 2. Remove any leftover styling from lists.
 * 3. Cause children to be automatically equally sized.
 */
.o-pack {
  width: 100%;
  /* [1] */
  margin-left: 0;
  /* [2] */
  display: table;
  table-layout: fixed;
  /* [3] */ }

/**
   * 1. Cause children to adopt table-like structure.
   */
.o-pack__item {
  display: table-cell;
  /* [1] */
  /* Vertical alignment variants.
       ====================================================================== */ }
  .o-pack--middle > .o-pack__item {
    vertical-align: middle; }
  .o-pack--bottom > .o-pack__item {
    vertical-align: bottom; }

/* Unequal-width items.
   ========================================================================== */
.o-pack--auto {
  table-layout: auto; }

/* Size variants.
   ========================================================================== */
.o-pack--tiny {
  border-spacing: 6px; }

.o-pack--small {
  border-spacing: 12px; }

.o-pack--large {
  border-spacing: 48px; }

.o-pack--huge {
  border-spacing: 96px; }

/* Reversed order packs
   ========================================================================== */
.o-pack--rev {
  direction: rtl; }
  .o-pack--rev > .o-pack__item {
    direction: ltr; }

.svg-icon {
  display: -webkit-inline-box;
  display: inline-flex;
  align-self: center;
  position: relative;
  height: 1em;
  width: 1em; }

.svg-icon svg {
  height: 1em;
  width: 1em;
  fill: currentColor; }

.svg-icon.svg-baseline svg {
  bottom: -0.14em;
  position: absolute; }

.svg-icon--left {
  margin-right: 0.5em; }

.svg-icon--jira {
  width: 2.6em; }
  .svg-icon--jira svg {
    width: 2.574052813em; }

.svg-icon--jira.svg-baseline svg {
  bottom: -0.06em;
  position: absolute; }

.comma-list {
  display: inline;
  list-style: none;
  margin-left: 0; }

.comma-list li {
  display: inline; }

.comma-list li:after {
  content: ", "; }

.comma-list li:last-child:after {
  content: ""; }

.comma-list li:nth-last-child(2):after {
  content: " and "; }

.comma-list li:nth-last-child(3) ~ li:nth-last-child(2):after {
  content: ", and "; }

.universal-header {
  background-color: #0c5c85;
  color: #fff; }
  .universal-header a {
    color: #fff;
    border-bottom: unset;
    box-shadow: unset; }
  .universal-header a:hover {
    background: #0099cc; }

.universal-header--dashboard {
  margin: auto;
  padding-left: 6px;
  padding-right: 6px;
  max-width: 40em; }

.lander-page {
  font-size: 16px;
  font-size: 1rem; }

.universal-header--lander {
  margin: auto;
  padding-left: 10px;
  padding-right: 10px;
  max-width: 70em; }

.lander-container {
  margin: 0 auto;
  max-width: 70em;
  margin-top: 1em;
  padding-left: 10px;
  padding-right: 10px; }

.lander-container--content {
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
          flex-direction: row;
  flex-wrap: nowrap;
  -webkit-box-pack: justify;
          justify-content: space-between;
  -webkit-box-align: stretch;
          align-items: stretch;
  min-height: 90vh; }

.lander-container--footer {
  padding-top: 4em; }

.lander-footer {
  margin-top: 1em;
  margin-bottom: 1em;
  margin-left: 20em;
  padding-left: 20px;
  padding-right: 10px; }

.lander-info-item {
  -webkit-box-flex: 0;
          flex: 0 1 20em;
  margin-right: 20px; }

.lander-pdf-item {
  -webkit-box-flex: 1;
          flex: 1; }

.pdfobject-container {
  height: 90vh; }

.lander-subsection-header {
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 700;
  font-style: normal;
  font-size: 1rem;
  margin-bottom: 0; }

.lander-info-header {
  margin-bottom: 1.63125rem; }

.lander-info-header__logo {
  margin-bottom: 2rem;
  width: 10rem; }

.lander-info-header__handle {
  display: block;
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 700;
  font-style: normal;
  font-size: 1rem;
  letter-spacing: 0.0625em; }
  .lander-info-header__handle a {
    color: #0c5c85; }

.lander-info-header__product-name {
  margin-bottom: 1rem;
  font-family: 'source-sans-pro', 'Helvetica Neue', 'Helvetica', 'Verdana';
  font-weight: 400;
  font-style: normal;
  font-size: 2rem;
  line-height: 1.05; }

.c-lander-btn-row {
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
          flex-flow: row nowrap;
  -webkit-box-align: baseline;
          align-items: baseline;
  -webkit-box-pack: start;
          justify-content: flex-start; }

.c-lander-btn-row__item {
  margin-right: 1em; }

.lander-info-authors {
  margin-bottom: 1rem; }

/* ==========================================================================
   #BUTTONS
   ========================================================================== */
/**
 * This is an example component. Extend inuitcss by building your own components
 * that make up your UI. Component classes are prefixed with a `c-`.
 */
/**
 * 1. Allow us to style box model properties.
 * 2. Line different sized buttons up a little nicer.
 * 3. Make buttons inherit font styles (often necessary when styling `input`s as
 *    buttons).
 * 4. Reset/normalize some styles.
 * 5. Force all button-styled elements to appear clickable.
 */
.c-btn {
  display: inline-block;
  /* [1] */
  vertical-align: middle;
  /* [2] */
  font: inherit;
  /* [3] */
  text-align: center;
  /* [4] */
  margin: 0;
  /* [4] */
  cursor: pointer;
  /* [5] */
  padding: 12px 24px;
  -webkit-transition: 0.33333s;
  transition: 0.33333s;
  border-radius: 3px;
  box-shadow: unset; }

/* Style variants
   ========================================================================== */
.c-btn--primary {
  background-color: #4a8ec2; }
  .c-btn--primary, .c-btn--primary:hover, .c-btn--primary:active, .c-btn--primary:focus {
    text-decoration: none;
    /* [4] */
    color: #fff; }
  .c-btn--primary:hover, .c-btn--primary:focus {
    background-color: #3774a2; }

.c-btn--secondary {
  background-color: #2f4054; }
  .c-btn--secondary, .c-btn--secondary:hover, .c-btn--secondary:active, .c-btn--secondary:focus {
    text-decoration: none;
    color: #fff; }
  .c-btn--secondary:hover, .c-btn--secondary:focus {
    background-color: #1d2733; }

.c-btn--tertiary {
  background-color: #fff;
  color: #4a8ec2; }
  .c-btn--tertiary, .c-btn--tertiary:hover, .c-btn--tertiary:active, .c-btn--tertiary:focus {
    text-decoration: none;
    color: #4a8ec2; }
  .c-btn--tertiary:hover, .c-btn--tertiary:focus {
    color: #3774a2; }

/* Size variants
   ========================================================================== */
.c-btn--small {
  padding: 6px 12px; }

.c-btn--large {
  padding: 24px 48px; }

/* Ghost buttons
   ========================================================================== */
/**
 * Ghost buttons have see-through backgrounds and are bordered.
 */
.c-btn--ghost {
  border: 2px solid currentColor;
  padding: 10px 22px;
  -webkit-transition: background 0.3s ease-out;
  transition: background 0.3s ease-out; }
  .c-btn--ghost, .c-btn--ghost:active, .c-btn--ghost:focus {
    background: none; }
  .c-btn--ghost:hover {
    background: #ccdcf1; }
  .c-btn--ghost.c-btn--small {
    padding: 4px 10px; }
  .c-btn--ghost.c-btn--large {
    padding: 22px 46px; }
  .c-btn--ghost.c-btn--primary {
    color: #4a8ec2; }
    .c-btn--ghost.c-btn--primary:hover, .c-btn--ghost.c-btn--primary:focus {
      color: #3774a2; }
  .c-btn--ghost.c-btn--secondary {
    color: #2f4054; }
    .c-btn--ghost.c-btn--secondary:hover, .c-btn--ghost.c-btn--secondary:focus {
      color: #1d2733; }
  .c-btn--ghost.c-btn--tertiary {
    color: #fff; }
    .c-btn--ghost.c-btn--tertiary:hover, .c-btn--ghost.c-btn--tertiary:focus {
      color: #fff; }

.c-btn--ghost-faint {
  border: 1px solid #ddd; }

/* ==========================================================================
   #CLEARFIX
   ========================================================================== */
/**
 * Attach our clearfix mixin to a utility class.
 */
.u-clearfix:after {
  content: "" !important;
  display: block !important;
  clear: both !important; }

/* ==========================================================================
   #WIDTHS
   ========================================================================== */
/**
 * inuitcss generates a series of utility classes that give a fluid width to
 * whichever element they’re applied, e.g.:
 *
 *   <img src="" alt="" class="u-1/2" />
 *
 * These classes are most commonly used in conjunction with our layout system,
 * e.g.:
 *
 *   <div class="o-layout__item  u-1/2">
 *
 * By default, inuitcss will also generate responsive variants of each of these
 * classes by using your Sass MQ configuration, e.g.:
 *
 *   <div class="o-layout__item  u-1/1  u-1/2@tablet  u-1/3@desktop">
 *
 * Optionally, inuitcss can generate offset classes which can push and pull
 * elements left and right by a specified amount, e.g.:
 *
 *   <div class="o-layout__item  u-2/3  u-pull-1/3">
 *
 * This is useful for making very granular changes to the rendered order of
 * items in a layout.
 *
 * N.B. This option is turned off by default.
 */
/**
 * A series of width helper classes that you can use to size things like grid
 * systems. Classes take a fraction-like format (e.g. `.u-2/3`). Use these in
 * your markup:
 *
 * <div class="u-7/12">
 *
 * The following will generate widths helper classes based on the fractions
 * defined in the `$inuit-fractions` list.
 */
.u-1\/1 {
  width: 100% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-1\/1 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 100% !important; }

.u-pull-1\/1 {
  position: relative !important;
  right: 100% !important;
  left: auto !important;
  /* [1] */ }

.u-1\/2 {
  width: 50% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-1\/2 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 50% !important; }

.u-pull-1\/2 {
  position: relative !important;
  right: 50% !important;
  left: auto !important;
  /* [1] */ }

.u-2\/2 {
  width: 100% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-2\/2 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 100% !important; }

.u-pull-2\/2 {
  position: relative !important;
  right: 100% !important;
  left: auto !important;
  /* [1] */ }

.u-1\/3 {
  width: 33.33333% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-1\/3 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 33.33333% !important; }

.u-pull-1\/3 {
  position: relative !important;
  right: 33.33333% !important;
  left: auto !important;
  /* [1] */ }

.u-2\/3 {
  width: 66.66667% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-2\/3 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 66.66667% !important; }

.u-pull-2\/3 {
  position: relative !important;
  right: 66.66667% !important;
  left: auto !important;
  /* [1] */ }

.u-3\/3 {
  width: 100% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-3\/3 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 100% !important; }

.u-pull-3\/3 {
  position: relative !important;
  right: 100% !important;
  left: auto !important;
  /* [1] */ }

.u-1\/4 {
  width: 25% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-1\/4 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 25% !important; }

.u-pull-1\/4 {
  position: relative !important;
  right: 25% !important;
  left: auto !important;
  /* [1] */ }

.u-2\/4 {
  width: 50% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-2\/4 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 50% !important; }

.u-pull-2\/4 {
  position: relative !important;
  right: 50% !important;
  left: auto !important;
  /* [1] */ }

.u-3\/4 {
  width: 75% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-3\/4 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 75% !important; }

.u-pull-3\/4 {
  position: relative !important;
  right: 75% !important;
  left: auto !important;
  /* [1] */ }

.u-4\/4 {
  width: 100% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-4\/4 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 100% !important; }

.u-pull-4\/4 {
  position: relative !important;
  right: 100% !important;
  left: auto !important;
  /* [1] */ }

.u-1\/5 {
  width: 20% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-1\/5 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 20% !important; }

.u-pull-1\/5 {
  position: relative !important;
  right: 20% !important;
  left: auto !important;
  /* [1] */ }

.u-2\/5 {
  width: 40% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-2\/5 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 40% !important; }

.u-pull-2\/5 {
  position: relative !important;
  right: 40% !important;
  left: auto !important;
  /* [1] */ }

.u-3\/5 {
  width: 60% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-3\/5 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 60% !important; }

.u-pull-3\/5 {
  position: relative !important;
  right: 60% !important;
  left: auto !important;
  /* [1] */ }

.u-4\/5 {
  width: 80% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-4\/5 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 80% !important; }

.u-pull-4\/5 {
  position: relative !important;
  right: 80% !important;
  left: auto !important;
  /* [1] */ }

.u-5\/5 {
  width: 100% !important; }

/**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
.u-push-5\/5 {
  position: relative !important;
  right: auto !important;
  /* [1] */
  left: 100% !important; }

.u-pull-5\/5 {
  position: relative !important;
  right: 100% !important;
  left: auto !important;
  /* [1] */ }

/**
 * If we’re using Sass-MQ, automatically generate grid system(s) for each of our
 * defined breakpoints, and give them a Responsive Suffix, e.g.:
 *
 * <div class="u-3/12@mobile">
 */
@media (min-width: 20em) {
  .u-1\/1\@mobile {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/1\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-1\/1\@mobile {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/2\@mobile {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/2\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-1\/2\@mobile {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/2\@mobile {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/2\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-2\/2\@mobile {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/3\@mobile {
    width: 33.33333% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/3\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 33.33333% !important; }
  .u-pull-1\/3\@mobile {
    position: relative !important;
    right: 33.33333% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/3\@mobile {
    width: 66.66667% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/3\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 66.66667% !important; }
  .u-pull-2\/3\@mobile {
    position: relative !important;
    right: 66.66667% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/3\@mobile {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/3\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-3\/3\@mobile {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/4\@mobile {
    width: 25% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/4\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 25% !important; }
  .u-pull-1\/4\@mobile {
    position: relative !important;
    right: 25% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/4\@mobile {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/4\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-2\/4\@mobile {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/4\@mobile {
    width: 75% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/4\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 75% !important; }
  .u-pull-3\/4\@mobile {
    position: relative !important;
    right: 75% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/4\@mobile {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/4\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-4\/4\@mobile {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/5\@mobile {
    width: 20% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/5\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 20% !important; }
  .u-pull-1\/5\@mobile {
    position: relative !important;
    right: 20% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/5\@mobile {
    width: 40% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/5\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 40% !important; }
  .u-pull-2\/5\@mobile {
    position: relative !important;
    right: 40% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/5\@mobile {
    width: 60% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/5\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 60% !important; }
  .u-pull-3\/5\@mobile {
    position: relative !important;
    right: 60% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/5\@mobile {
    width: 80% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/5\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 80% !important; }
  .u-pull-4\/5\@mobile {
    position: relative !important;
    right: 80% !important;
    left: auto !important;
    /* [1] */ }
  .u-5\/5\@mobile {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-5\/5\@mobile {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-5\/5\@mobile {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ } }

@media (min-width: 46.25em) {
  .u-1\/1\@tablet {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/1\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-1\/1\@tablet {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/2\@tablet {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/2\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-1\/2\@tablet {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/2\@tablet {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/2\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-2\/2\@tablet {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/3\@tablet {
    width: 33.33333% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/3\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 33.33333% !important; }
  .u-pull-1\/3\@tablet {
    position: relative !important;
    right: 33.33333% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/3\@tablet {
    width: 66.66667% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/3\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 66.66667% !important; }
  .u-pull-2\/3\@tablet {
    position: relative !important;
    right: 66.66667% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/3\@tablet {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/3\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-3\/3\@tablet {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/4\@tablet {
    width: 25% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/4\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 25% !important; }
  .u-pull-1\/4\@tablet {
    position: relative !important;
    right: 25% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/4\@tablet {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/4\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-2\/4\@tablet {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/4\@tablet {
    width: 75% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/4\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 75% !important; }
  .u-pull-3\/4\@tablet {
    position: relative !important;
    right: 75% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/4\@tablet {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/4\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-4\/4\@tablet {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/5\@tablet {
    width: 20% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/5\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 20% !important; }
  .u-pull-1\/5\@tablet {
    position: relative !important;
    right: 20% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/5\@tablet {
    width: 40% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/5\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 40% !important; }
  .u-pull-2\/5\@tablet {
    position: relative !important;
    right: 40% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/5\@tablet {
    width: 60% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/5\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 60% !important; }
  .u-pull-3\/5\@tablet {
    position: relative !important;
    right: 60% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/5\@tablet {
    width: 80% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/5\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 80% !important; }
  .u-pull-4\/5\@tablet {
    position: relative !important;
    right: 80% !important;
    left: auto !important;
    /* [1] */ }
  .u-5\/5\@tablet {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-5\/5\@tablet {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-5\/5\@tablet {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ } }

@media (min-width: 61.25em) {
  .u-1\/1\@desktop {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/1\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-1\/1\@desktop {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/2\@desktop {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/2\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-1\/2\@desktop {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/2\@desktop {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/2\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-2\/2\@desktop {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/3\@desktop {
    width: 33.33333% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/3\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 33.33333% !important; }
  .u-pull-1\/3\@desktop {
    position: relative !important;
    right: 33.33333% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/3\@desktop {
    width: 66.66667% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/3\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 66.66667% !important; }
  .u-pull-2\/3\@desktop {
    position: relative !important;
    right: 66.66667% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/3\@desktop {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/3\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-3\/3\@desktop {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/4\@desktop {
    width: 25% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/4\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 25% !important; }
  .u-pull-1\/4\@desktop {
    position: relative !important;
    right: 25% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/4\@desktop {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/4\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-2\/4\@desktop {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/4\@desktop {
    width: 75% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/4\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 75% !important; }
  .u-pull-3\/4\@desktop {
    position: relative !important;
    right: 75% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/4\@desktop {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/4\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-4\/4\@desktop {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/5\@desktop {
    width: 20% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/5\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 20% !important; }
  .u-pull-1\/5\@desktop {
    position: relative !important;
    right: 20% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/5\@desktop {
    width: 40% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/5\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 40% !important; }
  .u-pull-2\/5\@desktop {
    position: relative !important;
    right: 40% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/5\@desktop {
    width: 60% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/5\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 60% !important; }
  .u-pull-3\/5\@desktop {
    position: relative !important;
    right: 60% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/5\@desktop {
    width: 80% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/5\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 80% !important; }
  .u-pull-4\/5\@desktop {
    position: relative !important;
    right: 80% !important;
    left: auto !important;
    /* [1] */ }
  .u-5\/5\@desktop {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-5\/5\@desktop {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-5\/5\@desktop {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ } }

@media (min-width: 81.25em) {
  .u-1\/1\@wide {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/1\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-1\/1\@wide {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/2\@wide {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/2\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-1\/2\@wide {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/2\@wide {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/2\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-2\/2\@wide {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/3\@wide {
    width: 33.33333% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/3\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 33.33333% !important; }
  .u-pull-1\/3\@wide {
    position: relative !important;
    right: 33.33333% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/3\@wide {
    width: 66.66667% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/3\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 66.66667% !important; }
  .u-pull-2\/3\@wide {
    position: relative !important;
    right: 66.66667% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/3\@wide {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/3\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-3\/3\@wide {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/4\@wide {
    width: 25% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/4\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 25% !important; }
  .u-pull-1\/4\@wide {
    position: relative !important;
    right: 25% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/4\@wide {
    width: 50% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/4\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 50% !important; }
  .u-pull-2\/4\@wide {
    position: relative !important;
    right: 50% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/4\@wide {
    width: 75% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/4\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 75% !important; }
  .u-pull-3\/4\@wide {
    position: relative !important;
    right: 75% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/4\@wide {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/4\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-4\/4\@wide {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ }
  .u-1\/5\@wide {
    width: 20% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-1\/5\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 20% !important; }
  .u-pull-1\/5\@wide {
    position: relative !important;
    right: 20% !important;
    left: auto !important;
    /* [1] */ }
  .u-2\/5\@wide {
    width: 40% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-2\/5\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 40% !important; }
  .u-pull-2\/5\@wide {
    position: relative !important;
    right: 40% !important;
    left: auto !important;
    /* [1] */ }
  .u-3\/5\@wide {
    width: 60% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-3\/5\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 60% !important; }
  .u-pull-3\/5\@wide {
    position: relative !important;
    right: 60% !important;
    left: auto !important;
    /* [1] */ }
  .u-4\/5\@wide {
    width: 80% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-4\/5\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 80% !important; }
  .u-pull-4\/5\@wide {
    position: relative !important;
    right: 80% !important;
    left: auto !important;
    /* [1] */ }
  .u-5\/5\@wide {
    width: 100% !important; }
  /**
        * 1. Reset any leftover or conflicting `left`/`right` values.
        */
  .u-push-5\/5\@wide {
    position: relative !important;
    right: auto !important;
    /* [1] */
    left: 100% !important; }
  .u-pull-5\/5\@wide {
    position: relative !important;
    right: 100% !important;
    left: auto !important;
    /* [1] */ } }

/* ==========================================================================
   #HEADINGS
   ========================================================================== */
/**
 * Redefine all of our basic heading styles against utility classes so as to
 * allow for double stranded heading hierarchy, e.g. we semantically need an H2,
 * but we want it to be sized like an H1:
 *
 *   <h2 class="u-h1"></h2>
 *
 */
.u-h1 {
  font-size: 36px !important;
  font-size: 2.25rem !important;
  line-height: 1.33333 !important; }

.u-h2 {
  font-size: 28px !important;
  font-size: 1.75rem !important;
  line-height: 1.71429 !important; }

.u-h3 {
  font-size: 24px !important;
  font-size: 1.5rem !important;
  line-height: 1 !important; }

.u-h4 {
  font-size: 20px !important;
  font-size: 1.25rem !important;
  line-height: 1.2 !important; }

.u-h5 {
  font-size: 18px !important;
  font-size: 1.125rem !important;
  line-height: 1.33333 !important; }

.u-h6 {
  font-size: 16px !important;
  font-size: 1rem !important;
  line-height: 1.5 !important; }

/* ==========================================================================
   #SPACING
   ========================================================================== */
/**
 * Utility classes to put specific spacing values onto elements. The below loop
 * will generate us a suite of classes like:
 *
 *   .u-margin-top {}
 *   .u-padding-left-large {}
 *   .u-margin-right-small {}
 *   .u-padding {}
 *   .u-padding-right-none {}
 */
/* stylelint-disable string-quotes */
.u-padding {
  padding: 24px !important; }

.u-padding-tiny {
  padding: 6px !important; }

.u-padding-small {
  padding: 12px !important; }

.u-padding-large {
  padding: 48px !important; }

.u-padding-huge {
  padding: 96px !important; }

.u-padding-none {
  padding: 0 !important; }

.u-padding-top {
  padding-top: 24px !important; }

.u-padding-top-tiny {
  padding-top: 6px !important; }

.u-padding-top-small {
  padding-top: 12px !important; }

.u-padding-top-large {
  padding-top: 48px !important; }

.u-padding-top-huge {
  padding-top: 96px !important; }

.u-padding-top-none {
  padding-top: 0 !important; }

.u-padding-right {
  padding-right: 24px !important; }

.u-padding-right-tiny {
  padding-right: 6px !important; }

.u-padding-right-small {
  padding-right: 12px !important; }

.u-padding-right-large {
  padding-right: 48px !important; }

.u-padding-right-huge {
  padding-right: 96px !important; }

.u-padding-right-none {
  padding-right: 0 !important; }

.u-padding-bottom {
  padding-bottom: 24px !important; }

.u-padding-bottom-tiny {
  padding-bottom: 6px !important; }

.u-padding-bottom-small {
  padding-bottom: 12px !important; }

.u-padding-bottom-large {
  padding-bottom: 48px !important; }

.u-padding-bottom-huge {
  padding-bottom: 96px !important; }

.u-padding-bottom-none {
  padding-bottom: 0 !important; }

.u-padding-left {
  padding-left: 24px !important; }

.u-padding-left-tiny {
  padding-left: 6px !important; }

.u-padding-left-small {
  padding-left: 12px !important; }

.u-padding-left-large {
  padding-left: 48px !important; }

.u-padding-left-huge {
  padding-left: 96px !important; }

.u-padding-left-none {
  padding-left: 0 !important; }

.u-margin {
  margin: 24px !important; }

.u-margin-tiny {
  margin: 6px !important; }

.u-margin-small {
  margin: 12px !important; }

.u-margin-large {
  margin: 48px !important; }

.u-margin-huge {
  margin: 96px !important; }

.u-margin-none {
  margin: 0 !important; }

.u-margin-top {
  margin-top: 24px !important; }

.u-margin-top-tiny {
  margin-top: 6px !important; }

.u-margin-top-small {
  margin-top: 12px !important; }

.u-margin-top-large {
  margin-top: 48px !important; }

.u-margin-top-huge {
  margin-top: 96px !important; }

.u-margin-top-none {
  margin-top: 0 !important; }

.u-margin-right {
  margin-right: 24px !important; }

.u-margin-right-tiny {
  margin-right: 6px !important; }

.u-margin-right-small {
  margin-right: 12px !important; }

.u-margin-right-large {
  margin-right: 48px !important; }

.u-margin-right-huge {
  margin-right: 96px !important; }

.u-margin-right-none {
  margin-right: 0 !important; }

.u-margin-bottom {
  margin-bottom: 24px !important; }

.u-margin-bottom-tiny {
  margin-bottom: 6px !important; }

.u-margin-bottom-small {
  margin-bottom: 12px !important; }

.u-margin-bottom-large {
  margin-bottom: 48px !important; }

.u-margin-bottom-huge {
  margin-bottom: 96px !important; }

.u-margin-bottom-none {
  margin-bottom: 0 !important; }

.u-margin-left {
  margin-left: 24px !important; }

.u-margin-left-tiny {
  margin-left: 6px !important; }

.u-margin-left-small {
  margin-left: 12px !important; }

.u-margin-left-large {
  margin-left: 48px !important; }

.u-margin-left-huge {
  margin-left: 96px !important; }

.u-margin-left-none {
  margin-left: 0 !important; }

/* stylelint-enable string-quotes */
/* ==========================================================================
   #PRINT
   ========================================================================== */
/**
 * Very crude, reset-like styles taken from the HTML5 Boilerplate:
 * https://github.com/h5bp/html5-boilerplate/blob/5.3.0/dist/doc/css.md#print-styles
 * https://github.com/h5bp/html5-boilerplate/blob/master/dist/css/main.css#L205-L282
 */
@media print {
  /**
   * 1. Black prints faster: http://www.sanbeiji.com/archives/953
   */
  *,
  *:before,
  *:after,
  *:first-letter,
  *:first-line {
    background: transparent !important;
    color: #000 !important;
    /* [1] */
    box-shadow: none !important;
    text-shadow: none !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  /**
   * Don't show links that are fragment identifiers, or use the `javascript:`
   * pseudo protocol.
   */
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: ""; }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  /**
   * Printing Tables: http://css-discuss.incutio.com/wiki/Printing_Tables
   */
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

/* ==========================================================================
   #HIDE
   ========================================================================== */
/**
 * Hide only visually, but have it available for screen readers:
 * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 */
.u-hidden-visually {
  border: 0 !important;
  clip: rect(0 0 0 0) !important;
  height: 1px !important;
  margin: -1px !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: absolute !important;
  width: 1px !important; }

/**
 * Hide visually and from screen readers.
 */
.u-hidden {
  display: none !important; }

a.hidden-link {
  box-shadow: unset !important;
  border-bottom: unset !important; }

a.hidden-link--no-hover {
  background: unset !important; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5jc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvZ2VuZXJpYy9fZ2VuZXJpYy5ib3gtc2l6aW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvZ2VuZXJpYy9fZ2VuZXJpYy5ub3JtYWxpemUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9nZW5lcmljL19nZW5lcmljLnJlc2V0LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvZ2VuZXJpYy9fZ2VuZXJpYy5zaGFyZWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy90b29scy9fdG9vbHMucmVtLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvc2V0dGluZ3MvX3NldHRpbmdzLmNvcmUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9lbGVtZW50cy9fZWxlbWVudHMucGFnZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL2VsZW1lbnRzL19lbGVtZW50cy5oZWFkaW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL3Rvb2xzL190b29scy5mb250LXNpemUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9lbGVtZW50cy9fZWxlbWVudHMuaW1hZ2VzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvZWxlbWVudHMvX2VsZW1lbnRzLnRhYmxlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3NxdWFyZWQvc2Nzcy9lbGVtZW50cy9fcGFnZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3NxdWFyZWQvc2Nzcy9zZXR0aW5ncy9fdHlwb2dyYXBoeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3NxdWFyZWQvc2Nzcy9zZXR0aW5ncy9fZm9udHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3Mvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3NxdWFyZWQvc2Nzcy9lbGVtZW50cy9faGVhZGluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3MvZWxlbWVudHMvX2xpbmtzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy53cmFwcGVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvdG9vbHMvX3Rvb2xzLmNsZWFyZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5sYXlvdXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9vYmplY3RzL19vYmplY3RzLm1lZGlhLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5mbGFnLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5saXN0LWJhcmUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9vYmplY3RzL19vYmplY3RzLmxpc3QtaW5saW5lLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5ib3guc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy9vYmplY3RzL19vYmplY3RzLmJsb2NrLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5yYXRpby5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL29iamVjdHMvX29iamVjdHMuY3JvcC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL29iamVjdHMvX29iamVjdHMudGFibGVzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3Mvb2JqZWN0cy9fb2JqZWN0cy5wYWNrLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3F1YXJlZC9zY3NzL29iamVjdHMvX2ljb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3Mvb2JqZWN0cy9fY29tbWEtbGlzdC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL3NxdWFyZWQvc2Nzcy9jb21wb25lbnRzL191bml2ZXJzYWwtaGVhZGVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3F1YXJlZC9zY3NzL3NldHRpbmdzL19sYXlvdXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3MvY29tcG9uZW50cy9fbGFuZGVyLXBhZ2Uuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3MvY29tcG9uZW50cy9fbGFuZGVyLWluZm8tcGFuZWwuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9zcXVhcmVkL3Njc3MvY29tcG9uZW50cy9fYnV0dG9ucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL3NldHRpbmdzL19leGFtcGxlLnNldHRpbmdzLmdsb2JhbC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL3V0aWxpdGllcy9fdXRpbGl0aWVzLmNsZWFyZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvaW51aXRjc3MvdXRpbGl0aWVzL191dGlsaXRpZXMud2lkdGhzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc2Fzcy1tcS9fbXEuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy91dGlsaXRpZXMvX3V0aWxpdGllcy5oZWFkaW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL3V0aWxpdGllcy9fdXRpbGl0aWVzLnNwYWNpbmcuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy91dGlsaXRpZXMvX3V0aWxpdGllcy5wcmludC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2ludWl0Y3NzL3V0aWxpdGllcy9fdXRpbGl0aWVzLmhpZGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9pbnVpdGNzcy90b29scy9fdG9vbHMuaGlkZGVuLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvc3F1YXJlZC9zY3NzL3V0aWxpdGllcy9fbGlua3Muc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0I7QUNBaEI7OytFREcrRTtBQ0MvRTs7O0VER0U7QUNFRjtFQUNFLHNCQUFzQixFQUFBOztBQUd4QjtFQUtJLG1CQUFtQixFQUFBOztBQ2xCdkIsMkVBQUE7QUFFQTs7Ozs7RUZrQkU7QUVYRjsrRUZhK0U7QUVWL0U7RUFDRSx1QkFBdUI7RUFBRSxNQUFBO0VBQ3pCLGlCQUFpQjtFQUFFLE1BQUE7RUFDbkIsMEJBQTBCO0VBQUUsTUFBQTtFQUM1Qiw4QkFBOEI7RUFBRSxNQUFBLEVBQU87O0FBR3pDOytFRmUrRTtBRVovRTs7RUZlRTtBRVhGO0VBQ0UsU0FBUyxFQUFBOztBQUdYOztFRmFFO0FFVEY7Ozs7OztFQU1FLGNBQWMsRUFBQTs7QUFHaEI7OztFRllFO0FFUEY7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBR2xCOytFRlErRTtBRUwvRTs7O0VGU0U7QUVKRjs7O0VBRU8sTUFBQTtFQUNMLGNBQWMsRUFBQTs7QUFHaEI7O0VGT0U7QUVIRjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjs7O0VGTUU7QUVERjtFQUNFLHVCQUF1QjtFQUFFLE1BQUE7RUFDekIsU0FBUztFQUFFLE1BQUE7RUFDWCxpQkFBaUI7RUFBRSxNQUFBLEVBQU87O0FBRzVCOzs7RUZPRTtBRUZGO0VBQ0UsaUNBQWlDO0VBQUUsTUFBQTtFQUNuQyxjQUFjO0VBQUUsTUFBQSxFQUFPOztBQUd6QjsrRUZLK0U7QUVGL0U7OztFRk1FO0FFREY7RUFDRSw2QkFBNkI7RUFBRSxNQUFBO0VBQy9CLHFDQUFxQztFQUFFLE1BQUEsRUFBTzs7QUFHaEQ7OztFRk1FO0FFREY7O0VBRUUsZ0JBQWdCLEVBQUE7O0FBR2xCOzs7RUZJRTtBRUNGO0VBQ0UsbUJBQW1CO0VBQUUsTUFBQTtFQUNyQiwwQkFBMEI7RUFBRSxNQUFBO0VBQzVCLHlDQUFpQztVQUFqQyxpQ0FBaUM7RUFBRSxNQUFBLEVBQU87O0FBRzVDOztFRklFO0FFQUY7O0VBRUUsb0JBQW9CLEVBQUE7O0FBR3RCOztFRkVFO0FFRUY7O0VBRUUsbUJBQW1CLEVBQUE7O0FBR3JCOzs7RUZDRTtBRUlGOzs7RUFHRSxpQ0FBaUM7RUFBRSxNQUFBO0VBQ25DLGNBQWM7RUFBRSxNQUFBLEVBQU87O0FBR3pCOztFRkFFO0FFSUY7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7O0VGRkU7QUVNRjtFQUNFLHNCQUFzQjtFQUN0QixXQUFXLEVBQUE7O0FBR2I7O0VGSkU7QUVRRjtFQUNFLGNBQWMsRUFBQTs7QUFHaEI7OztFRkxFO0FFVUY7O0VBRUUsY0FBYztFQUNkLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsd0JBQXdCLEVBQUE7O0FBRzFCO0VBQ0UsZUFBZSxFQUFBOztBQUdqQjtFQUNFLFdBQVcsRUFBQTs7QUFHYjsrRUZYK0U7QUVjL0U7O0VGWEU7QUVlRjs7RUFFRSxxQkFBcUIsRUFBQTs7QUFHdkI7O0VGYkU7QUVpQkY7RUFDRSxhQUFhO0VBQ2IsU0FBUyxFQUFBOztBQUdYOztFRmZFO0FFbUJGO0VBQ0Usa0JBQWtCLEVBQUE7O0FBR3BCOztFRmpCRTtBRXFCRjtFQUNFLGdCQUFnQixFQUFBOztBQUdsQjsrRUZwQitFO0FFdUIvRTs7O0VGbkJFO0FFd0JGOzs7OztFQUtFLHVCQUF1QjtFQUFFLE1BQUE7RUFDekIsZUFBZTtFQUFFLE1BQUE7RUFDakIsaUJBQWlCO0VBQUUsTUFBQTtFQUNuQixTQUFTO0VBQUUsTUFBQSxFQUFPOztBQUdwQjs7O0VGakJFO0FFc0JGOztFQUNRLE1BQUE7RUFDTixpQkFBaUIsRUFBQTs7QUFHbkI7OztFRmxCRTtBRXVCRjs7RUFDUyxNQUFBO0VBQ1Asb0JBQW9CLEVBQUE7O0FBR3RCOzs7O0VGbEJFO0FFd0JGOzs7O0VBSUUsMEJBQTBCO0VBQUUsTUFBQSxFQUFPOztBQUdyQzs7RUZyQkU7QUV5QkY7Ozs7RUFJRSxrQkFBa0I7RUFDbEIsVUFBVSxFQUFBOztBQUdaOztFRnZCRTtBRTJCRjs7OztFQUlFLDhCQUE4QixFQUFBOztBQUdoQzs7RUZ6QkU7QUU2QkY7RUFDRSx5QkFBeUI7RUFDekIsYUFBYTtFQUNiLDhCQUE4QixFQUFBOztBQUdoQzs7Ozs7RUZ4QkU7QUUrQkY7RUFDRSxzQkFBc0I7RUFBRSxNQUFBO0VBQ3hCLGNBQWM7RUFBRSxNQUFBO0VBQ2hCLGNBQWM7RUFBRSxNQUFBO0VBQ2hCLGVBQWU7RUFBRSxNQUFBO0VBQ2pCLFVBQVU7RUFBRSxNQUFBO0VBQ1osbUJBQW1CO0VBQUUsTUFBQSxFQUFPOztBQUc5Qjs7O0VGdEJFO0FFMkJGO0VBQ0UscUJBQXFCO0VBQUUsTUFBQTtFQUN2Qix3QkFBd0I7RUFBRSxNQUFBLEVBQU87O0FBR25DOztFRnZCRTtBRTJCRjtFQUNFLGNBQWMsRUFBQTs7QUFHaEI7OztFRnhCRTtBQUNGOztFRThCRSxzQkFBc0I7RUFBRSxNQUFBO0VBQ3hCLFVBQVU7RUFBRSxNQUFBLEVBQU87O0FBR3JCOztFRnpCRTtBQUNGOztFRThCRSxZQUFZLEVBQUE7O0FBR2Q7OztFRjFCRTtBQUNGO0VFK0JFLDZCQUE2QjtFQUFFLE1BQUE7RUFDL0Isb0JBQW9CO0VBQUUsTUFBQSxFQUFPOztBQUcvQjs7RUYzQkU7QUFDRjs7RUVnQ0Usd0JBQXdCLEVBQUE7O0FBRzFCOzs7RUY1QkU7QUVpQ0Y7RUFDRSwwQkFBMEI7RUFBRSxNQUFBO0VBQzVCLGFBQWE7RUFBRSxNQUFBLEVBQU87O0FBR3hCOytFRjlCK0U7QUVpQy9FOzs7RUY3QkU7QUVrQ0Y7O0VBRUUsY0FBYyxFQUFBOztBQUdoQjs7RUZoQ0U7QUVvQ0Y7RUFDRSxrQkFBa0IsRUFBQTs7QUFHcEI7K0VGbkMrRTtBRXNDL0U7O0VGbkNFO0FFdUNGO0VBQ0UscUJBQXFCLEVBQUE7O0FBR3ZCOztFRnJDRTtBRXlDRjtFQUNFLGFBQWEsRUFBQTs7QUFHZjsrRUZ4QytFO0FFMkMvRTs7RUZ4Q0U7QUFDRjtFRTRDRSxhQUFhLEVBQUE7O0FDM2NmOzsrRUhvYStFO0FHaGEvRTs7RUhtYUU7QUcvWkY7Ozs7Ozs7RUFPRSxTQUFVO0VBQ1YsVUFBVSxFQUFBOztBQUlaOztFSGdhRTtBRzVaRjs7RUFJSSxnQkFBZ0IsRUFBQTs7QUFNcEI7O0VIeVpFO0FHclpGO0VBQ0UseUJBQXlCO0VBQ3pCLGlCQUFpQixFQUFBOztBQUluQjs7O0VIdVpFO0FHbFpGO0VBQ0UsWUFBWTtFQUFFLFFBQUE7RUFDZCxTQUFTLEVBQUE7O0FDbkRYOzsrRUoyYytFO0FJdmMvRTs7RUowY0U7QUl0Y0Y7OztFSjBjRTtBSXJjRix3REFBQTtBQUVBOzs7Ozs7OztFQzRCRSxtQkNwQjBEO0VEc0IxRCxxQkEzQitDLEVBQUE7O0FEU2pEOztFSnNjRTtBSWxjRjtFQ1lFLGlCQ3BCMEQ7RURzQjFELG1CQTNCK0MsRUFBQTs7QURpQmpELHVEQUFBO0FHbkNBOzsrRVB5ZStFO0FPcmUvRTs7Ozs7Ozs7OztFUGdmRTtBT3BlRjtFQUNFLGNBQWlEO0VBQUUsUUFBQTtFQUNuRCxnQkFBZ0U7RUFBRSxRQUFBO0VBQ2xFLGtCQUFrQjtFQUFFLFFBQUE7RUFDcEIsZ0JBQWdCO0VBQUUsUUFBQSxFQUFTOztBQ3BCN0I7OytFUmlnQitFO0FRN2YvRTs7OztFUmtnQkU7QVE5ZUY7RUNBRSxlRFJ3QjtFQ1N4QixrQkFBd0Q7RUFHdEQsb0JBQWlCLEVBQUE7O0FEQXJCO0VDSkUsZURQd0I7RUNReEIsa0JBQXdEO0VBR3RELG9CQUFpQixFQUFBOztBRElyQjtFQ1JFLGVETndCO0VDT3hCLGlCQUF3RDtFQUd0RCxjQUFpQixFQUFBOztBRFFyQjtFQ1pFLGVETHdCO0VDTXhCLGtCQUF3RDtFQUd0RCxnQkFBaUIsRUFBQTs7QURZckI7RUNoQkUsZURKd0I7RUNLeEIsbUJBQXdEO0VBR3RELG9CQUFpQixFQUFBOztBRGdCckI7RUNwQkUsZURId0I7RUNJeEIsZUFBd0Q7RUFHdEQsZ0JBQWlCLEVBQUE7O0FDNUJyQjs7K0VWdWlCK0U7QVVuaUIvRTs7Ozs7O0VWMGlCRTtBVWxpQkY7RUFDRSxlQUFlO0VBQUUsUUFBQTtFQUNqQixrQkFBa0I7RUFBRSxRQUFBO0VBQ3BCLHNCQUFzQjtFQUFFLFFBQUEsRUFBUzs7QUFJbkM7OztFVnVpQkU7QVVsaUJGOztFQUNlLFFBQUE7RUFDYixlQUFlLEVBQUE7O0FDMUJqQjs7K0VYa2tCK0U7QVc5akIvRTs7RVhpa0JFO0FXN2pCRjtFQUNFLFdBQVc7RUFBRSxRQUFBLEVBQVM7O0FDUHhCO0VBQ0UsZUNBbUIsRUFBQTs7QURHckI7RUVMRSx3RUFBd0U7RUFDeEUsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtFRHlCbEIsZUFmc0I7RUFnQnRCLG1CQUE2QztFRHBCN0MsaUJDT3FCO0VETnJCLFdHTWUsRUFBQTs7QUNiakI7RUZGRSx3RUFBd0U7RUFDeEUsZ0JBQWdCO0VBQ2hCLGtCQUFrQixFQUFBOztBRVFwQjtFRlZFLHdFQUF3RTtFQUN4RSxnQkFBZ0I7RUFDaEIsa0JBQWtCLEVBQUE7O0FFZ0JwQjtFRmxCRSx3RUFBd0U7RUFDeEUsZ0JBQWdCO0VBQ2hCLGtCQUFrQixFQUFBOztBRXdCcEI7RUZwQkUsd0VBQXdFO0VBQ3hFLGdCQUFnQjtFQUNoQixrQkFBa0IsRUFBQTs7QUUwQnBCO0VGNUJFLHdFQUF3RTtFQUN4RSxnQkFBZ0I7RUFDaEIsa0JBQWtCLEVBQUE7O0FFa0NwQjtFRjFDRSx3RUFBd0U7RUFDeEUsZ0JBQWdCO0VBQ2hCLGtCQUFrQixFQUFBOztBR0FwQjtFQUNFLGdDRkVjO0VFRGQsV0ZXZTtFRVZmLHFCQUFxQjtFQUVyQixrQ0ZGYztFRUdkLDRDQUFvQztFQUFwQyxvQ0FBb0MsRUFBQTs7QUFJdEM7RUFDRSxtQkZSYyxFQUFBOztBR05oQjs7K0VsQmdvQitFO0FrQjVuQi9FOztFbEIrbkJFO0FrQnpuQkYsc0JBQUE7QUFJQSxxQkFBQTtBQUVBO0VBRUUsbUJaSzBEO0VZSjFELGtCWkkwRDtFWUgxRCxrQkFBa0I7RUFDbEIsaUJBQWtCO0VBQ2xCLGlCQWQwQixFQUFBO0VDSTFCO0lBQ0Usc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixzQkFBc0IsRUFBQTs7QURjMUI7K0VsQnFuQitFO0FrQmxuQi9FO0VBQ0Usa0Jad0QwRztFWXZEMUcsaUJadUQwRyxFQUFBOztBWXBENUc7RUFDRSxtQlpvRDJHO0VZbkQzRyxrQlptRDJHLEVBQUE7O0FZaEQ3RztFQUNFLG1CWmdEMkc7RVkvQzNHLGtCWitDMkcsRUFBQTs7QVk1QzdHO0VBQ0UsbUJaNEMwRztFWTNDMUcsa0JaMkMwRyxFQUFBOztBYzVGNUc7OytFcEJxcUIrRTtBb0JqcUIvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFcEJndEJFO0FvQnZwQkY7K0VwQnlwQitFO0FvQnRwQi9FOzs7OztFcEI0cEJFO0FvQnJwQkY7RUFDRSxjQUFjO0VBQUUsUUFBQTtFQUNoQixTQUFVO0VBQUUsUUFBQTtFQUNaLFVBQVU7RUFBRSxRQUFBO0VBQ1osZ0JBQWdCO0VBQUUsUUFBQTtFQUNsQixrQmRyRDBEO0VjcURoQixRQUFBO0VBR3hDLFlBQVksRUFBQTs7QUFNZDs7Ozs7Ozs7OztJcEIrcEJFO0FvQm5wQkY7RUFDRSxzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFxQjtFQUFFLFFBQUE7RUFDdkIsbUJBQW1CO0VBQUUsUUFBQTtFQUNyQixXQUFXO0VBQUUsUUFBQTtFQUNiLGtCZC9Fd0Q7RWMrRWQsUUFBQTtFQUd4QyxlZDdGMEI7RWM2RlUsUUFBQTtFQUNwQyxlQUFlLEVBQUE7O0FBU3JCOytFcEJrcEIrRTtBb0Ivb0IvRTtFQUNFLGlCZDlCMEcsRUFBQTtFYzZCNUc7SUFJSSxpQmRqQ3dHLEVBQUE7O0FjdUM1RztFQUNFLGtCZHZDMkcsRUFBQTtFY3NDN0c7SUFJSSxrQmQxQ3lHLEVBQUE7O0FjZ0Q3RztFQUNFLGtCZGhEMkcsRUFBQTtFYytDN0c7SUFJSSxrQmRuRHlHLEVBQUE7O0FjeUQ3RztFQUNFLGtCZHpEMEcsRUFBQTtFY3dENUc7SUFJSSxrQmQ1RHdHLEVBQUE7O0Fja0U1RztFQUNFLGNBQWMsRUFBQTtFQURoQjtJQUlJLGVBQWUsRUFBQTs7QUFTbkI7K0VwQnFuQitFO0FvQmxuQi9FOztFcEJxbkJFO0FvQmpuQkY7RUFHSSxzQkFBc0IsRUFBQTs7QUFNMUI7O0VwQjhtQkU7QW9CMW1CRjtFQUdJLHNCQUFzQixFQUFBOztBQVMxQjsrRXBCbW1CK0U7QW9CaG1CL0U7O0VwQm1tQkU7QW9CL2xCRjtFQUNFLGtCQUFrQixFQUFBO0VBRHBCO0lBSUksZ0JBQWdCLEVBQUE7O0FBTXBCOztFcEI2bEJFO0FvQnpsQkY7RUFDRSxpQkFBaUIsRUFBQTtFQURuQjtJQUlJLGdCQUFnQixFQUFBOztBQU1wQjs7RXBCdWxCRTtBb0JubEJGO0VBQ0UsY0FBYyxFQUFBO0VBRGhCO0lBSUksY0FBYztJQUNkLGdCQUFnQixFQUFBOztBQ25QcEI7OytFckIwMEIrRTtBcUJ0MEIvRTs7O0VyQjAwQkU7QXFCcjBCRjtFQUVFLGNBQWMsRUFBQTtFRkNkO0lBQ0Usc0JBQXNCO0lBQ3RCLHlCQUF5QjtJQUN6QixzQkFBc0IsRUFBQTs7QUVBeEI7RUFDRSxXQUFXO0VBQ1gsa0JmTXdELEVBQUE7RWVSMUQ7SUFLSSxjQUFjLEVBQUE7O0FBTWxCO0VBQ0UsZ0JBQWdCO0VBQ2hCLGNBQWMsRUFBQTtFQUZoQjs7SUFNSSxnQkFBZ0IsRUFBQTs7QUFTdEI7K0VyQjJ6QitFO0FxQnh6Qi9FOzs7RXJCNHpCRTtBcUJ2ekJGO0VBR0ksaUJmcUN3RyxFQUFBOztBZXhDNUc7RUFTTSxlQUFlO0VBQ2YsZ0JmOEJzRyxFQUFBOztBZXRCNUc7RUFHSSxrQmZvQnlHLEVBQUE7O0FldkI3RztFQVNNLGVBQWU7RUFDZixpQmZhdUcsRUFBQTs7QWVMN0c7RUFHSSxrQmZHeUcsRUFBQTs7QWVON0c7RUFTTSxlQUFlO0VBQ2YsaUJmSnVHLEVBQUE7O0FlWTdHO0VBR0ksa0JmZHdHLEVBQUE7O0FlVzVHO0VBU00sZUFBZTtFQUNmLGlCZnJCc0csRUFBQTs7QWVnQzVHOytFckIwd0IrRTtBcUJ2d0IvRTtFQUdJLFlBQVk7RUFDWixlQUFlO0VBQ2YsaUJmN0d3RCxFQUFBOztBZXNINUQ7K0VyQmd3QitFO0FxQjd2Qi9FO0VBR0ksZUFBZTtFQUNmLGNBQWUsRUFBQTs7QUNwSm5COzsrRXRCbzVCK0U7QXNCaDVCL0U7Ozs7Ozs7Ozs7RXRCMjVCRTtBc0IvNEJGO0VBQ0UsY0FBYztFQUFFLFFBQUE7RUFDaEIsV0FBVztFQUFFLFFBQUEsRUFBUzs7QUFJdEI7Ozs7SXRCbzVCRTtBc0I5NEJGOztFQUVFLG1CQUFtQjtFQUNuQixzQkFBc0I7RUFBRSxRQUFBLEVBQVM7O0FBSW5DOzs7OztJdEJtNUJFO0FzQjU0QkY7RUFDRSxVQUFVO0VBQUUsUUFBQTtFQUNaLG1CaEJyQndEO0VnQndCeEQ7O010Qjg0QkUsRXNCNTRCQztFQVBMO0lBVUksZUFBZTtJQUFFLFFBQUEsRUFBUzs7QUFNOUI7Ozs7SXRCNDRCRTtBc0J0NEJGO0VBQ0UsV0FBVztFQUFFLFFBQUEsRUFBUztFQUR4Qjs7SUFLSSxnQkFBZ0IsRUFBQTs7QUFTdEI7K0V0Qmk0QitFO0FzQjkzQi9FO0VBR0ksa0JoQkt3RyxFQUFBOztBZ0JSNUc7RUFTTSxnQkFBZ0I7RUFDaEIsaUJoQkZzRyxFQUFBOztBZ0JTNUc7RUFHSSxtQmhCWHlHLEVBQUE7O0FnQlE3RztFQVNNLGdCQUFnQjtFQUNoQixrQmhCbEJ1RyxFQUFBOztBZ0J5QjdHO0VBR0ksbUJoQjNCeUcsRUFBQTs7QWdCd0I3RztFQVNNLGdCQUFnQjtFQUNoQixrQmhCbEN1RyxFQUFBOztBZ0J5QzdHO0VBR0ksbUJoQjNDd0csRUFBQTs7QWdCd0M1RztFQVNNLGdCQUFnQjtFQUNoQixrQmhCbERzRyxFQUFBOztBZ0J5RDVHO0VBR0ksZ0JBQWdCO0VBQ2hCLGVBQWdCLEVBQUE7O0FBU3BCOytFdEIrMEIrRTtBc0I1MEIvRTs7OztFdEJpMUJFO0FzQjMwQkY7RUFDRSxjQUFjO0VBQUUsUUFBQSxFQUFTO0VBRDNCOztJQUtJLGNBQWM7SUFBRSxRQUFBLEVBQVM7RUFMN0I7SUFTSSxnQkFBZ0I7SUFBRSxRQUFBO0lBQ2xCLGtCaEI5SndEO0lnQjhKZCxRQUFBLEVBQVM7O0FBU3ZEOytFdEJ1MEIrRTtBc0JwMEIvRTs7RXRCdTBCRTtBc0JuMEJGOztFQUlJLG1CQUFtQixFQUFBOztBQUt2Qjs7RUFJSSxzQkFBc0IsRUFBQTs7QUNsTjFCOzsrRXZCbWhDK0U7QXVCL2dDL0U7OztFdkJtaENFO0F1QjlnQ0Y7RUFDRSxnQkFBZ0I7RUFDaEIsY0FBYyxFQUFBOztBQ1hoQjs7K0V4QjhoQytFO0F3QjFoQy9FOztFeEI2aENFO0F3QnpoQ0Y7RUFDRSxjQUFjO0VBQ2QsZ0JBQWdCLEVBQUE7O0FBSWhCO0VBQ0UscUJBQXFCLEVBQUE7O0FBT3pCOytFeEJvaEMrRTtBd0JqaEMvRTs7O0V4QnFoQ0U7QXdCOWdDRjs7RXhCaWhDRTtBd0I3Z0NGO0VBQ0UsWUFBWSxFQUFBO0VBRGQ7SUFJSSxlbEI1QjRCO0lrQjRCUSxRQUFBO0lBQ3BDLGVBQWUsRUFBQTtFQUxuQjtJQVdNLGFBQTBDLEVBQUE7O0FDL0NoRDs7K0V6QjZqQytFO0F5QnpqQy9FOzs7OztFekIrakNFO0F5QnhqQ0Y7RUFFRSxjQUFjO0VBQUUsUUFBQTtFQUNoQixhbkJTMEQsRUFBQTtFYVgxRDtJQUNFLHNCQUFzQjtJQUN0Qix5QkFBeUI7SUFDekIsc0JBQXNCLEVBQUE7RU1KMUI7SUFNSSxnQkFBZ0IsRUFBQTs7QUFTcEI7K0V6QnNqQytFO0F5Qm5qQy9FO0VBQ0UsVUFBVSxFQUFBOztBQUdaO0VBQ0UsWW5CdUQwRyxFQUFBOztBbUJwRDVHO0VBQ0UsYW5Cb0QyRyxFQUFBOztBbUJqRDdHO0VBQ0UsYW5CaUQyRyxFQUFBOztBbUI5QzdHO0VBQ0UsYW5COEMwRyxFQUFBOztBb0I1RjVHOzsrRTFCa21DK0U7QTBCOWxDL0U7OztFMUJrbUNFO0EwQjdsQ0Y7RUFDRSxjQUFjO0VBQ2Qsa0JBQWtCLEVBQUE7O0FBSWxCO0VBQ0UsbUJwQk93RDtFb0JKeEQ7K0UxQjJsQzJFLEUwQjFsQ0M7RUFFNUU7SUFDRSxnQkFBZ0IsRUFBQTtFQUdsQjtJQUNFLGtCcEI4RHNHLEVBQUE7RW9CM0R4RztJQUNFLG1CcEIyRHVHLEVBQUE7RW9CeER6RztJQUNFLG1CcEJ3RHVHLEVBQUE7RW9CckR6RztJQUNFLG1CcEJxRHNHLEVBQUE7O0FvQi9DMUc7RUFDRSxjQUFjLEVBQUE7O0FBT2xCOytFMUJ5a0MrRTtBMEJ0a0MvRTtFQUNFLGlCQUFpQixFQUFBOztBQUduQjtFQUNFLGdCQUFnQixFQUFBOztBQzdEbEI7OytFM0J1b0MrRTtBMkJ6bkMvRTs7Ozs7OztFM0Jpb0NFO0EyQnhuQ0Y7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLGdCQUFnQixFQUFBO0VBSGxCO0lBTUksV0FBVztJQUNYLGNBQWM7SUFDZCxXQUFXO0lBQ1gsb0JBQW9CO0lBQUUsUUFBQSxFQUFTOztBQU1qQzs7OztFQUlFLGtCQUFrQjtFQUNsQixNQUFTO0VBQ1QsU0FBUztFQUNULE9BQVM7RUFDVCxZQUFZO0VBQ1osV0FBWSxFQUFBOztBQUtoQixzQkFBQTtBQUVBOytFM0JrbkMrRTtBMkIvbUMvRTs7Ozs7RTNCcW5DRTtBMkJsbUNFO0VBQ0UsbUJBQWdELEVBQUE7O0FBRGxEO0VBQ0UsbUJBQWdELEVBQUE7O0FBRGxEO0VBQ0Usc0JBQWdELEVBQUE7O0FBT3RELHFCQUFBO0FDcEZBOzsrRTVCMnJDK0U7QTRCN3FDL0U7Ozs7OztFNUJvckNFO0E0QjVxQ0Y7RUFDRSxrQkFBa0I7RUFBRSxRQUFBO0VBQ3BCLGNBQWM7RUFDZCxnQkFBZ0I7RUFBRSxRQUFBLEVBQVM7O0FBSTNCOzs7OztJNUJrckNFO0E0QjNxQ0Y7RUFDRSxrQkFBa0I7RUFDbEIsTUFBTztFQUFFLFFBQUE7RUFDVCxPQUFPO0VBQUUsUUFBQTtFQUNULGVBQWU7RUFBRSxRQUFBLEVBQVM7O0FBSTVCOztJNUIrcUNFO0E0QjNxQ0Y7RUFDRSxRQUFRO0VBQ1IsVUFBVSxFQUFBOztBQUdaO0VBQ0UsU0FBUztFQUNULFNBQVMsRUFBQTs7QUFHWDtFQUNFLFFBQVM7RUFDVCxTQUFTO0VBQ1Qsd0NBQWdDO1VBQWhDLGdDQUFnQyxFQUFBOztBQUtwQyxzQkFBQTtBQUVBOytFNUJ1cUMrRTtBNEJwcUMvRTs7Ozs7RTVCMHFDRTtBNEJ2cENFO0VBQ0UsbUJBQWdELEVBQUE7O0FBRGxEO0VBQ0UsbUJBQWdELEVBQUE7O0FBRGxEO0VBQ0Usc0JBQWdELEVBQUE7O0FBT3RELHFCQUFBO0FDbEdBOzsrRTdCOHZDK0U7QTZCMXZDL0U7O0U3QjZ2Q0U7QTZCenZDRjtFQUNFLFdBQVcsRUFBQTs7QUFRYjsrRTdCcXZDK0U7QTZCbHZDL0U7Ozs7OztFN0J5dkNFO0E2Qmp2Q0Y7RUFDRSxtQkFBbUIsRUFBQTs7QUFPckI7K0U3Qjh1QytFO0E2QjN1Qy9FOztFQUlJLFl2QjhDd0csRUFBQTs7QXVCekM1Rzs7RUFJSSxhdkJzQ3lHLEVBQUE7O0F1QmpDN0c7O0VBSUksYXZCOEJ5RyxFQUFBOztBdUJ6QjdHOztFQUlJLGF2QnNCd0csRUFBQTs7QXdCNUY1Rzs7K0U5QnF5QytFO0E4Qmp5Qy9FOzs7Ozs7O0U5Qnl5Q0U7QThCaHlDRjtFQUNFLFdBQVc7RUFBRSxRQUFBO0VBQ2IsY0FBYztFQUFFLFFBQUE7RUFDaEIsY0FBYztFQUNkLG1CQUFtQjtFQUFFLFFBQUEsRUFBUzs7QUFJOUI7O0k5Qm95Q0U7QThCanlDRjtFQUNFLG1CQUFtQjtFQUFFLFFBQUE7RUFHckI7K0U5Qmt5QzJFLEU4Qmp5Q0M7RUFFNUU7SUFDRSxzQkFBc0IsRUFBQTtFQUd4QjtJQUNFLHNCQUFzQixFQUFBOztBQVM1QjsrRTlCd3hDK0U7QThCcnhDL0U7RUFDRSxrQkFBa0IsRUFBQTs7QUFPcEI7K0U5Qmt4QytFO0E4Qi93Qy9FO0VBQ0UsbUJ4QjZCMEcsRUFBQTs7QXdCMUI1RztFQUNFLG9CeEIwQjJHLEVBQUE7O0F3QnZCN0c7RUFDRSxvQnhCdUIyRyxFQUFBOztBd0JwQjdHO0VBQ0Usb0J4Qm9CMEcsRUFBQTs7QXdCYjVHOytFOUJ5d0MrRTtBOEJ0d0MvRTtFQUNFLGNBQWMsRUFBQTtFQURoQjtJQUlJLGNBQWMsRUFBQTs7QUNwRmxCO0VBQ0UsMkJBQW9CO0VBQXBCLG9CQUFvQjtFQUNwQixrQkFBa0I7RUFDbEIsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxVQUFVLEVBQUE7O0FBSVo7RUFDRSxXQUFXO0VBQ1gsVUFBVTtFQUNWLGtCQUFrQixFQUFBOztBQUlwQjtFQUNFLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUFJcEI7RUFDRSxtQkFBbUIsRUFBQTs7QUFLckI7RUFDRSxZQUFZLEVBQUE7RUFEZDtJQUlJLG9CQUFvQixFQUFBOztBQUt4QjtFQUNFLGVBQWU7RUFDZixrQkFBa0IsRUFBQTs7QUM5QnBCO0VBQ0UsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixjQUFjLEVBQUE7O0FBSWhCO0VBQ0UsZUFBZSxFQUFBOztBQUtqQjtFQUNFLGFBQWEsRUFBQTs7QUFLZjtFQUNFLFdBQVcsRUFBQTs7QUFLYjtFQUNFLGdCQUFnQixFQUFBOztBQU1sQjtFQUNJLGlCQUFpQixFQUFBOztBQzFDckI7RUFDRSx5QmxCUTRCO0VrQlA1QixXQUFXLEVBQUE7RUFGYjtJQUtJLFdBQVc7SUFDWCxvQkFBb0I7SUFDcEIsaUJBQWlCLEVBQUE7RUFQckI7SUFXSSxtQmxCRHNCLEVBQUE7O0FrQksxQjtFQUNFLFlBQVk7RUFDWixpQkNqQnVCO0VEa0J2QixrQkNsQnVCO0VEbUJ2QixlQ3JCc0IsRUFBQTs7QUNJeEI7RXRCd0JFLGVzQnZCdUI7RXRCd0J2QixlQUE2QyxFQUFBOztBc0JwQi9DO0VBQ0UsWUFBWTtFQUNaLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsZUFBZSxFQUFBOztBQUlqQjtFQUNFLGNBQWM7RUFDZCxlQUFlO0VBQ2YsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixtQkFBbUIsRUFBQTs7QUFJckI7RUFDRSxvQkFBYTtFQUFiLGFBQWE7RUFDYiw4QkFBbUI7RUFBbkIsNkJBQW1CO1VBQW5CLG1CQUFtQjtFQUNuQixpQkFBaUI7RUFDakIseUJBQThCO1VBQTlCLDhCQUE4QjtFQUM5QiwwQkFBb0I7VUFBcEIsb0JBQW9CO0VBQ3BCLGdCQUFnQixFQUFBOztBQUlsQjtFQUNFLGdCQUFnQixFQUFBOztBQUlsQjtFQUNFLGVBQWU7RUFDZixrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixtQkFBbUIsRUFBQTs7QUFJckI7RUFDRSxtQkFBYztVQUFkLGNBQWM7RUFFZCxrQkFBa0IsRUFBQTs7QUFJcEI7RUFDRSxtQkFBTztVQUFQLE9BQU8sRUFBQTs7QUFLVDtFQUNFLFlBQVksRUFBQTs7QUFLZDtFckI5REUsd0VBQXdFO0VBQ3hFLGdCQUFnQjtFQUNoQixrQkFBa0I7RXFCOERsQixlQUFlO0VBQ2YsZ0JBQWdCLEVBQUE7O0FDckVsQjtFQUNFLHlCdkJrQmlGLEVBQUE7O0F1QmZuRjtFQUNFLG1CQUFtQjtFQUNuQixZQUFZLEVBQUE7O0FBSWQ7RUFDRSxjQUFjO0V0QlBkLHdFQUF3RTtFQUN4RSxnQkFBZ0I7RUFDaEIsa0JBQWtCO0VzQlFsQixlQUFlO0VBQ2Ysd0JBQXdCLEVBQUE7RUFMMUI7SUFRSSxjckJWMEIsRUFBQTs7QXFCZTlCO0VBQ0UsbUJBQW1CO0V0QjFCbkIsd0VBQXdFO0VBQ3hFLGdCQUFnQjtFQUNoQixrQkFBa0I7RXNCMEJsQixlQUFlO0VBQ2YsaUJBQWlCLEVBQUE7O0FBSW5CO0VBQ0Usb0JBQWE7RUFBYixhQUFhO0VBQ2IsOEJBQXFCO0VBQXJCLDZCQUFxQjtVQUFyQixxQkFBcUI7RUFDckIsMkJBQXFCO1VBQXJCLHFCQUFxQjtFQUNyQix1QkFBMkI7VUFBM0IsMkJBQTJCLEVBQUE7O0FBRzdCO0VBQ0UsaUJBQWlCLEVBQUE7O0FBSW5CO0VBQ0UsbUJBQW1CLEVBQUE7O0FDL0NyQjs7K0VyQ3kvQytFO0FxQ3IvQy9FOzs7RXJDeS9DRTtBcUNwL0NGOzs7Ozs7O0VyQzQvQ0U7QXFDbi9DRjtFQUNFLHFCQUFxQjtFQUFFLFFBQUE7RUFDdkIsc0JBQXNCO0VBQUUsUUFBQTtFQUN4QixhQUFhO0VBQUUsUUFBQTtFQUNmLGtCQUFrQjtFQUFFLFFBQUE7RUFDcEIsU0FBUztFQUFFLFFBQUE7RUFDWCxlQUFlO0VBQUUsUUFBQTtFQUNqQixrQi9CRjBEO0UrQkcxRCw0QkNsQjJCO0VEa0IzQixvQkNsQjJCO0VEbUIzQixrQkNwQmlCO0VEcUJqQixpQkFBaUIsRUFBQTs7QUFPbkI7K0VyQ3MvQytFO0FxQ24vQy9FO0VBQ0UseUJBQXlCLEVBQUE7RUFEM0I7SUFPSSxxQkFBcUI7SUFBRSxRQUFBO0lBQ3ZCLFdBQVcsRUFBQTtFQVJmO0lBYUkseUJBQXlCLEVBQUE7O0FBSzdCO0VBQ0UseUJBQXlCLEVBQUE7RUFEM0I7SUFPSSxxQkFBcUI7SUFDckIsV0FBVyxFQUFBO0VBUmY7SUFhSSx5QkFBeUIsRUFBQTs7QUFLN0I7RUFDRSxzQkFBc0I7RUFDdEIsY0FBYyxFQUFBO0VBRmhCO0lBUUkscUJBQXFCO0lBQ3JCLGNBQWMsRUFBQTtFQVRsQjtJQWNJLGNBQWMsRUFBQTs7QUFTbEI7K0VyQ285QytFO0FxQ2o5Qy9FO0VBQ0UsaUIvQlgyRyxFQUFBOztBK0JjN0c7RUFDRSxrQi9CZDJHLEVBQUE7O0ErQnFCN0c7K0VyQzY4QytFO0FxQzE4Qy9FOztFckM2OENFO0FxQ3Y4Q0Y7RUFDRSw4QkFBa0Q7RUFDbEQsa0JBQTRIO0VBQzVILDRDQUFvQztFQUFwQyxvQ0FBb0MsRUFBQTtFQUh0QztJQVFJLGdCQUFnQixFQUFBO0VBUnBCO0lBYUksbUJ0QmhJWSxFQUFBO0VzQm1IaEI7SUFpQkksaUJBQWlJLEVBQUE7RUFqQnJJO0lBcUJJLGtCQUE0SCxFQUFBO0VBckJoSTtJQXlCSSxjQUFjLEVBQUE7SUF6QmxCO01BNkJNLGNBQWMsRUFBQTtFQTdCcEI7SUFtQ0ksY0FBYyxFQUFBO0lBbkNsQjtNQXVDTSxjQUFjLEVBQUE7RUF2Q3BCO0lBNkNJLFdBQVcsRUFBQTtJQTdDZjtNQWlETSxXQUFXLEVBQUE7O0FBUWpCO0VBQ0Usc0JBQXNCLEVBQUE7O0FFbkx4Qjs7K0V2QytsRCtFO0F1QzNsRC9FOztFdkM4bERFO0FtQnRsREE7RUFDRSxzQkFBc0I7RUFDdEIseUJBQXlCO0VBQ3pCLHNCQUFzQixFQUFBOztBcUJmMUI7OytFeEMwbUQrRTtBd0N0bUQvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFeENnb0RFO0F3Qy8vQ0Y7Ozs7Ozs7OztFeEN5Z0RFO0F3QzVpREk7RUFDRSxzQkFBb0QsRUFBQTs7QUFLcEQ7O1N4QzRpREM7QXdDdmlERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4QzhqREM7QXdDempERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxzQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q2dsREM7QXdDM2tERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSwyQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q2ttREM7QXdDN2xERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLDBCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QiwyQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSwyQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q29uREM7QXdDL21ERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLDBCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QiwyQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxzQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q3NvREM7QXdDam9ERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q3dwREM7QXdDbnBERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4QzBxREM7QXdDcnFERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4QzRyREM7QXdDdnJERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxzQkFBb0QsRUFBQTs7QUFLcEQ7O1N4QzhzREM7QXdDenNERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q2d1REM7QXdDM3RERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q2t2REM7QXdDN3VERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q293REM7QXdDL3ZERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxxQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q3N4REM7QXdDanhERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLG9CQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixxQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQXJCcEM7RUFDRSxzQkFBb0QsRUFBQTs7QUFLcEQ7O1N4Q3d5REM7QXdDbnlERDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBc0I7RUFBRSxRQUFBO0VBQ3hCLHFCQUFtRCxFQUFBOztBQUlyRDtFQUNFLDZCQUE2QjtFQUM3QixzQkFBb0Q7RUFDcEQscUJBQXFCO0VBQUUsUUFBQSxFQUFTOztBQThCMUM7Ozs7O0V4QzZ3REU7QXlDbHNETTtFRDlIRjtJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENnMERDO0V3QzN6REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMrMERDO0V3QzEwREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEM4MURDO0V3Q3oxREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeEM2MkRDO0V3Q3gyREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeEM0M0RDO0V3Q3YzREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEMyNERDO0V3Q3Q0REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMwNURDO0V3Q3I1REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN5NkRDO0V3Q3A2REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN3N0RDO0V3Q243REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEN1OERDO0V3Q2w4REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENzOURDO0V3Q2o5REQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENxK0RDO0V3Q2grREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENvL0RDO0V3Qy8rREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENtZ0VDO0V3QzkvREQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENraEVDO0V3QzdnRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTLEVBQ2pDOztBQ3dHRDtFRDlIRjtJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENtaUVDO0V3QzloRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENrakVDO0V3QzdpRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENpa0VDO0V3QzVqRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeENnbEVDO0V3QzNrRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeEMrbEVDO0V3QzFsRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEM4bUVDO0V3Q3ptRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM2bkVDO0V3Q3huRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM0b0VDO0V3Q3ZvRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMycEVDO0V3Q3RwRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEMwcUVDO0V3Q3JxRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN5ckVDO0V3Q3ByRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN3c0VDO0V3Q25zRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN1dEVDO0V3Q2x0RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENzdUVDO0V3Q2p1RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENxdkVDO0V3Q2h2RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTLEVBQ2pDOztBQ3dHRDtFRDlIRjtJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENzd0VDO0V3Q2p3RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENxeEVDO0V3Q2h4RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENveUVDO0V3Qy94RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeENtekVDO0V3Qzl5RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeENrMEVDO0V3Qzd6RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENpMUVDO0V3QzUwRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENnMkVDO0V3QzMxRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMrMkVDO0V3QzEyRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM4M0VDO0V3Q3ozRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEM2NEVDO0V3Q3g0RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM0NUVDO0V3Q3Y1RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMyNkVDO0V3Q3Q2RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMwN0VDO0V3Q3I3RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN5OEVDO0V3Q3A4RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEN3OUVDO0V3Q245RUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTLEVBQ2pDOztBQ3dHRDtFRDlIRjtJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEN5K0VDO0V3Q3ArRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEN3L0VDO0V3Q24vRUQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEN1Z0ZDO0V3Q2xnRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeENzaEZDO0V3Q2poRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLDJCQUFvRCxFQUFBO0VBS3BEOztTeENxaUZDO0V3Q2hpRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QiwwQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QiwyQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENvakZDO0V3Qy9pRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENta0ZDO0V3QzlqRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENrbEZDO0V3QzdrRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeENpbUZDO0V3QzVsRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeENnbkZDO0V3QzNtRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEMrbkZDO0V3QzFuRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM4b0ZDO0V3Q3pvRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM2cEZDO0V3Q3hwRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHFCQUFvRCxFQUFBO0VBS3BEOztTeEM0cUZDO0V3Q3ZxRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixvQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixxQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTO0VBckJwQztJQUNFLHNCQUFvRCxFQUFBO0VBS3BEOztTeEMyckZDO0V3Q3RyRkQ7SUFDRSw2QkFBNkI7SUFDN0Isc0JBQXNCO0lBQUUsUUFBQTtJQUN4QixxQkFBbUQsRUFBQTtFQUlyRDtJQUNFLDZCQUE2QjtJQUM3QixzQkFBb0Q7SUFDcEQscUJBQXFCO0lBQUUsUUFBQSxFQUFTLEVBQ2pDOztBRXhIVDs7K0UxQ2l6RitFO0EwQzd5Ri9FOzs7Ozs7O0UxQ3F6RkU7QTBDNXlGRjtFakNXRSwwQkFSd0I7RUFTeEIsNkJBVHdCO0VBWXRCLCtCQVpzQixFQUFBOztBaUNDMUI7RWpDT0UsMEJBUndCO0VBU3hCLDZCQVR3QjtFQVl0QiwrQkFac0IsRUFBQTs7QWlDSzFCO0VqQ0dFLDBCQVJ3QjtFQVN4Qiw0QkFUd0I7RUFZdEIseUJBWnNCLEVBQUE7O0FpQ1MxQjtFakNERSwwQkFSd0I7RUFTeEIsNkJBVHdCO0VBWXRCLDJCQVpzQixFQUFBOztBaUNhMUI7RWpDTEUsMEJBUndCO0VBU3hCLDhCQVR3QjtFQVl0QiwrQkFac0IsRUFBQTs7QWlDaUIxQjtFakNURSwwQkFSd0I7RUFTeEIsMEJBVHdCO0VBWXRCLDJCQVpzQixFQUFBOztBa0NoQjFCOzsrRTNDMDFGK0U7QTJDdDFGL0U7Ozs7Ozs7OztFM0NnMkZFO0EyQ3IxRkYsb0NBQUE7QUErQk07RUFDRSx3QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx1QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx3QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx3QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx3QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSxxQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx5QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwrQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwrQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwrQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwrQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwwQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx1QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSxzQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx1QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx1QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx1QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSxvQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwwQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx3QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwwQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw2QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw4QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSwyQkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSw0QkFBNEMsRUFBQTs7QUFEOUM7RUFDRSx5QkFBNEMsRUFBQTs7QUFTcEQsbUNBQUE7QUN4REE7OytFNUM2aEcrRTtBNEN6aEcvRTs7OztFNUM4aEdFO0E0Q3hoR0Y7RUFFRTs7STVDMGhHRTtFNEN0aEdGOzs7OztJQUtFLGtDQUFrQztJQUNsQyxzQkFBc0I7SUFBRSxRQUFBO0lBQ3hCLDJCQUEyQjtJQUMzQiw0QkFBNEIsRUFBQTtFQUk5Qjs7SUFFRSwwQkFBMEIsRUFBQTtFQUc1QjtJQUNFLDRCQUE0QixFQUFBO0VBRzlCO0lBQ0UsNkJBQTZCLEVBQUE7RUFJL0I7OztJNUNpaEdFO0U0QzVnR0Y7O0lBRUUsV0FBVyxFQUFBO0VBR2I7O0lBRUUsc0JBQXNCO0lBQ3RCLHdCQUF3QixFQUFBO0VBSTFCOztJNUMwZ0dFO0U0Q3RnR0Y7SUFDRSwyQkFBMkIsRUFBQTtFQUc3Qjs7SUFFRSx3QkFBd0IsRUFBQTtFQUkxQjtJQUNFLDBCQUEwQixFQUFBO0VBRzVCOzs7SUFHRSxVQUFVO0lBQ1YsU0FBUyxFQUFBO0VBR1g7O0lBRUUsdUJBQXVCLEVBQUEsRUFDeEI7O0FDdkZIOzsrRTdDd2xHK0U7QTZDcGxHL0U7OztFN0N3bEdFO0E2Q25sR0Y7RUNIRSxvQkFBb0I7RUFDcEIsOEJBQThCO0VBQzlCLHNCQUFzQjtFQUN0Qix1QkFBdUI7RUFDdkIsMkJBQTJCO0VBQzNCLHFCQUFxQjtFQUNyQiw2QkFBNkI7RUFDN0IscUJBQXFCLEVBQUE7O0FEQ3ZCOztFN0MybEdFO0E2Q3ZsR0Y7RUFDRSx3QkFBd0IsRUFBQTs7QUVqQjFCO0VBRUUsNEJBQTRCO0VBQzVCLCtCQUErQixFQUFBOztBQUlqQztFQUNFLDRCQUE0QixFQUFBIiwiZmlsZSI6ImFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0JPWC1TSVpJTkdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIE1vcmUgc2Vuc2libGUgZGVmYXVsdCBib3gtc2l6aW5nOlxuICogY3NzLXRyaWNrcy5jb20vaW5oZXJpdGluZy1ib3gtc2l6aW5nLXByb2JhYmx5LXNsaWdodGx5LWJldHRlci1iZXN0LXByYWN0aWNlXG4gKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDsgfVxuXG4vKiEgbm9ybWFsaXplLmNzcyB2NS4wLjAgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDMuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW5cbiAqICAgIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbiAqL1xuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC8qIDIgKi9cbiAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDMgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAzICovIH1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5ib2R5IHtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cbmFydGljbGUsXG5hc2lkZSxcbmZvb3RlcixcbmhlYWRlcixcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7IH1cblxuLyogR3JvdXBpbmcgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbm1haW4ge1xuICAvKiAxICovXG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5maWd1cmUge1xuICBtYXJnaW46IDFlbSA0MHB4OyB9XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuICAvKiAxICovXG4gIGhlaWdodDogMDtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtO1xuICAvKiAyICovIH1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqIDIuIFJlbW92ZSBnYXBzIGluIGxpbmtzIHVuZGVybGluZSBpbiBpT1MgOCsgYW5kIFNhZmFyaSA4Ky5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgb3V0bGluZSBvbiBmb2N1c2VkIGxpbmtzIHdoZW4gdGhleSBhcmUgYWxzbyBhY3RpdmUgb3IgaG92ZXJlZFxuICogaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cbmE6YWN0aXZlLFxuYTpob3ZlciB7XG4gIG91dGxpbmUtd2lkdGg6IDA7IH1cblxuLyoqXG4gKiAxLiBSZW1vdmUgdGhlIGJvdHRvbSBib3JkZXIgaW4gRmlyZWZveCAzOS0uXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBQcmV2ZW50IHRoZSBkdXBsaWNhdGUgYXBwbGljYXRpb24gb2YgYGJvbGRlcmAgYnkgdGhlIG5leHQgcnVsZSBpbiBTYWZhcmkgNi5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0OyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTtcbiAgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc3R5bGUgaW4gQW5kcm9pZCA0LjMtLlxuICovXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7IH1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgYmFja2dyb3VuZCBhbmQgY29sb3IgaW4gSUUgOS0uXG4gKi9cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwO1xuICBjb2xvcjogIzAwMDsgfVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlOyB9XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtOyB9XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtOyB9XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5hdWRpbyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAqL1xuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTsgfVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuYnV0dG9uLFxuaW5wdXQge1xuICAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbixcbnNlbGVjdCB7XG4gIC8qIDEgKi9cbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IH1cblxuLyoqXG4gKiAxLiBQcmV2ZW50IGEgV2ViS2l0IGJ1ZyB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2AgYW5kIGB2aWRlb2BcbiAqICAgIGNvbnRyb2xzIGluIEFuZHJvaWQgNC5cbiAqIDIuIENvcnJlY3QgdGhlIGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgdHlwZXMgaW4gaU9TIGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmh0bWwgW3R5cGU9XCJidXR0b25cIl0sXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbiAgLyogMiAqLyB9XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0OyB9XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBib3JkZXIsIG1hcmdpbiwgYW5kIHBhZGRpbmcgaW4gYWxsIGJyb3dzZXJzIChvcGluaW9uYXRlZCkuXG4gKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtOyB9XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgdGV4dCB3cmFwcGluZyBpbiBFZGdlIGFuZCBJRS5cbiAqIDIuIENvcnJlY3QgdGhlIGNvbG9yIGluaGVyaXRhbmNlIGZyb20gYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBJRS5cbiAqIDMuIFJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXRcbiAqICAgIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0O1xuICAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTtcbiAgLyogMSAqL1xuICBwYWRkaW5nOiAwO1xuICAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIC8qIDEgKi8gfVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMi4gQWRkIHRoZSBjb3JyZWN0IHZlcnRpY2FsIGFsaWdubWVudCBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBPcGVyYS5cbiAqL1xucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xuICAvKiAyICovIH1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGRlZmF1bHQgdmVydGljYWwgc2Nyb2xsYmFyIGluIElFLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvOyB9XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAtLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLS5cbiAqL1xuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bzsgfVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuICogMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC8qIDIgKi8gfVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBhbmQgY2FuY2VsIGJ1dHRvbnMgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqLyB9XG5cbi8qIEludGVyYWN0aXZlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICovXG5kZXRhaWxzLFxubWVudSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07IH1cblxuLyogU2NyaXB0aW5nXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqL1xuY2FudmFzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUuXG4gKi9cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4vKiBIaWRkZW5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqL1xuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjUkVTRVRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEEgdmVyeSBzaW1wbGUgcmVzZXQgdGhhdCBzaXRzIG9uIHRvcCBvZiBOb3JtYWxpemUuY3NzLlxuICovXG5ib2R5LFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbmJsb2NrcXVvdGUsIHAsIHByZSxcbmRsLCBkZCwgb2wsIHVsLFxuZmlndXJlLFxuaHIsXG5maWVsZHNldCwgbGVnZW5kIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi8qKlxuICogUmVtb3ZlIHRyYWlsaW5nIG1hcmdpbnMgZnJvbSBuZXN0ZWQgbGlzdHMuXG4gKi9cbmxpID4gb2wsXG5saSA+IHVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHRhYmxlIHNwYWNpbmcuXG4gKi9cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLyoqXG4gKiAxLiBSZXNldCBDaHJvbWUgYW5kIEZpcmVmb3ggYmVoYXZpb3VyIHdoaWNoIHNldHMgYSBgbWluLXdpZHRoOiBtaW4tY29udGVudDtgXG4gKiAgICBvbiBmaWVsZHNldHMuXG4gKi9cbmZpZWxkc2V0IHtcbiAgbWluLXdpZHRoOiAwO1xuICAvKiBbMV0gKi9cbiAgYm9yZGVyOiAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjU0hBUkVEXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBTaGFyZWQgZGVjbGFyYXRpb25zIGZvciBjZXJ0YWluIGVsZW1lbnRzLlxuICovXG4vKipcbiAqIEFsd2F5cyBkZWNsYXJlIG1hcmdpbnMgaW4gdGhlIHNhbWUgZGlyZWN0aW9uOlxuICogY3Nzd2l6YXJkcnkuY29tLzIwMTIvMDYvc2luZ2xlLWRpcmVjdGlvbi1tYXJnaW4tZGVjbGFyYXRpb25zXG4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlciAqL1xuYWRkcmVzcyxcbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsXG5ibG9ja3F1b3RlLCBwLCBwcmUsXG5kbCwgb2wsIHVsLFxuZmlndXJlLFxuaHIsXG50YWJsZSxcbmZpZWxkc2V0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9XG5cbi8qKlxuICogQ29uc2lzdGVudCBpbmRlbnRhdGlvbiBmb3IgbGlzdHMuXG4gKi9cbmRkLCBvbCwgdWwge1xuICBtYXJnaW4tbGVmdDogMjRweDtcbiAgbWFyZ2luLWxlZnQ6IDEuNXJlbTsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlciAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNQQUdFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBTaW1wbGUgcGFnZS1sZXZlbCBzZXR1cC5cbiAqXG4gKiAxLiBTZXQgdGhlIGRlZmF1bHQgYGZvbnQtc2l6ZWAgYW5kIGBsaW5lLWhlaWdodGAgZm9yIHRoZSBlbnRpcmUgcHJvamVjdCxcbiAqICAgIHNvdXJjZWQgZnJvbSBvdXIgZGVmYXVsdCB2YXJpYWJsZXMuIFRoZSBgZm9udC1zaXplYCBpcyBjYWxjdWxhdGVkIHRvIGV4aXN0XG4gKiAgICBpbiBlbXMsIHRoZSBgbGluZS1oZWlnaHRgIGlzIGNhbGN1bGF0ZWQgdG8gZXhpc3QgdW5pdGxlc3NseS5cbiAqIDIuIEZvcmNlIHNjcm9sbGJhcnMgdG8gYWx3YXlzIGJlIHZpc2libGUgdG8gcHJldmVudCBhd2t3YXJkIOKAmGp1bXBz4oCZIHdoZW5cbiAqICAgIG5hdmlnYXRpbmcgYmV0d2VlbiBwYWdlcyB0aGF0IGRvL2RvIG5vdCBoYXZlIGVub3VnaCBjb250ZW50IHRvIHByb2R1Y2VcbiAqICAgIHNjcm9sbGJhcnMgbmF0dXJhbGx5LlxuICogMy4gRW5zdXJlIHRoZSBwYWdlIGFsd2F5cyBmaWxscyBhdCBsZWFzdCB0aGUgZW50aXJlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuXG4gKi9cbmh0bWwge1xuICBmb250LXNpemU6IDFlbTtcbiAgLyogWzFdICovXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIC8qIFsxXSAqL1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIC8qIFsyXSAqL1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICAvKiBbM10gKi8gfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0hFQURJTkdTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBTaW1wbGUgZGVmYXVsdCBzdHlsZXMgZm9yIGhlYWRpbmdzIDEgdGhyb3VnaCA2LiBBbnl0aGluZyBtb3JlIG9waW5pb25hdGVkXG4gKiB0aGFuIHNpbXBsZSBmb250LXNpemUgY2hhbmdlcyBzaG91bGQgbGlrZWx5IGJlIGFwcGxpZWQgdmlhIGNsYXNzZXMgKHNlZTpcbiAqIGh0dHA6Ly9jc3N3aXphcmRyeS5jb20vMjAxNi8wMi9tYW5hZ2luZy10eXBvZ3JhcGh5LW9uLWxhcmdlLWFwcHMvKS5cbiAqL1xuaDEge1xuICBmb250LXNpemU6IDM2cHg7XG4gIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMzMzMzM7IH1cblxuaDIge1xuICBmb250LXNpemU6IDI4cHg7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNzE0Mjk7IH1cblxuaDMge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtc2l6ZTogMS41cmVtO1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG5oNCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4yOyB9XG5cbmg1IHtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBsaW5lLWhlaWdodDogMS4zMzMzMzsgfVxuXG5oNiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS41OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjSU1BR0VTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiAxLiBGbHVpZCBpbWFnZXMgZm9yIHJlc3BvbnNpdmUgcHVycG9zZXMuXG4gKiAyLiBPZmZzZXQgYGFsdGAgdGV4dCBmcm9tIHN1cnJvdW5kaW5nIGNvcHkuXG4gKiAzLiBTZXR0aW5nIGB2ZXJ0aWNhbC1hbGlnbmAgcmVtb3ZlcyB0aGUgd2hpdGVzcGFjZSB0aGF0IGFwcGVhcnMgdW5kZXIgYGltZ2BcbiAqICAgIGVsZW1lbnRzIHdoZW4gdGhleSBhcmUgZHJvcHBlZCBpbnRvIGEgcGFnZSBhcy1pcy4gU2FmZXIgYWx0ZXJuYXRpdmUgdG9cbiAqICAgIHVzaW5nIGBkaXNwbGF5OiBibG9jaztgLlxuICovXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIC8qIFsxXSAqL1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIC8qIFsyXSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAvKiBbM10gKi8gfVxuXG4vKipcbiAqIDEuIElmIGEgYHdpZHRoYCBhbmQvb3IgYGhlaWdodGAgYXR0cmlidXRlIGhhdmUgYmVlbiBleHBsaWNpdGx5IGRlZmluZWQsIGxldOKAmXNcbiAqICAgIG5vdCBtYWtlIHRoZSBpbWFnZSBmbHVpZC5cbiAqL1xuaW1nW3dpZHRoXSxcbmltZ1toZWlnaHRdIHtcbiAgLyogWzFdICovXG4gIG1heC13aWR0aDogbm9uZTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1RBQkxFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gRW5zdXJlIHRhYmxlcyBmaWxsIHVwIGFzIG11Y2ggc3BhY2UgYXMgcG9zc2libGUuXG4gKi9cbnRhYmxlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC8qIFsxXSAqLyB9XG5cbmh0bWwge1xuICBmb250LXNpemU6IDEwMCU7IH1cblxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiAnc291cmNlLXNhbnMtcHJvJywgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdWZXJkYW5hJztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMS4xMjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICBjb2xvcjogIzMzMzsgfVxuXG5oMSB7XG4gIGZvbnQtZmFtaWx5OiAnc291cmNlLXNhbnMtcHJvJywgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdWZXJkYW5hJztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbmgyIHtcbiAgZm9udC1mYW1pbHk6ICdzb3VyY2Utc2Fucy1wcm8nLCAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ1ZlcmRhbmEnO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuaDMge1xuICBmb250LWZhbWlseTogJ3NvdXJjZS1zYW5zLXBybycsICdIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnVmVyZGFuYSc7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5oNCB7XG4gIGZvbnQtZmFtaWx5OiAnc291cmNlLXNhbnMtcHJvJywgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdWZXJkYW5hJztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbmg1IHtcbiAgZm9udC1mYW1pbHk6ICdzb3VyY2Utc2Fucy1wcm8nLCAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ1ZlcmRhbmEnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7IH1cblxuaDYge1xuICBmb250LWZhbWlseTogJ3NvdXJjZS1zYW5zLXBybycsICdIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnVmVyZGFuYSc7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDsgfVxuXG5hIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2RjZjE7XG4gIGNvbG9yOiAjMzMzO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgLTNweCAwICNjY2RjZjE7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcyBlYXNlLW91dDsgfVxuXG5hOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogI2NjZGNmMTsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1dSQVBQRVJTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBQYWdlLWxldmVsIGNvbnN0cmFpbmluZyBhbmQgd3JhcHBpbmcgZWxlbWVudHMuXG4gKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4uby13cmFwcGVyIHtcbiAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXgtd2lkdGg6IDEyMDBweDsgfVxuICAuby13cmFwcGVyOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBjbGVhcjogYm90aCAhaW1wb3J0YW50OyB9XG5cbi8qIFNpemUgdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLm8td3JhcHBlci0tdGlueSB7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgcGFkZGluZy1sZWZ0OiA2cHg7IH1cblxuLm8td3JhcHBlci0tc21hbGwge1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xuICBwYWRkaW5nLWxlZnQ6IDEycHg7IH1cblxuLm8td3JhcHBlci0tbGFyZ2Uge1xuICBwYWRkaW5nLXJpZ2h0OiA0OHB4O1xuICBwYWRkaW5nLWxlZnQ6IDQ4cHg7IH1cblxuLm8td3JhcHBlci0taHVnZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDk2cHg7XG4gIHBhZGRpbmctbGVmdDogOTZweDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0xBWU9VVFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogR3JpZC1saWtlIGxheW91dCBzeXN0ZW0uXG4gKlxuICogVGhlIGxheW91dCBvYmplY3QgcHJvdmlkZXMgdXMgd2l0aCBhIGNvbHVtbi1zdHlsZSBsYXlvdXQgc3lzdGVtLiBUaGlzIGZpbGVcbiAqIGNvbnRhaW5zIHRoZSBiYXNpYyBzdHJ1Y3R1cmFsIGVsZW1lbnRzLCBidXQgY2xhc3NlcyBzaG91bGQgYmUgY29tcGxlbWVudGVkXG4gKiB3aXRoIHdpZHRoIHV0aWxpdGllcywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRfX2l0ZW0gIHUtMS8yXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMlwiPlxuICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqXG4gKiBUaGUgYWJvdmUgd2lsbCBjcmVhdGUgYSB0d28tY29sdW1uIHN0cnVjdHVyZSBpbiB3aGljaCBlYWNoIGNvbHVtbiB3aWxsXG4gKiBmbHVpZGx5IGZpbGwgaGFsZiBvZiB0aGUgd2lkdGggb2YgdGhlIHBhcmVudC4gV2UgY2FuIGhhdmUgbW9yZSBjb21wbGV4XG4gKiBzeXN0ZW1zOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0XCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMSAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMiAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMiAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIFRoZSBhYm92ZSB3aWxsIGNyZWF0ZSBhIHN5c3RlbSBpbiB3aGljaCB0aGUgZmlyc3QgaXRlbSB3aWxsIGJlIDEwMCUgd2lkdGhcbiAqIHVudGlsIHdlIGVudGVyIG91ciBtZWRpdW0gYnJlYWtwb2ludCwgd2hlbiBpdCB3aWxsIGJlY29tZSAzMy4zMzMlIHdpZHRoLiBUaGVcbiAqIHNlY29uZCBhbmQgdGhpcmQgaXRlbXMgd2lsbCBiZSA1MCUgb2YgdGhlaXIgcGFyZW50LCB1bnRpbCB0aGV5IGFsc28gYmVjb21lXG4gKiAzMy4zMzMlIHdpZHRoIGF0IHRoZSBtZWRpdW0gYnJlYWtwb2ludC5cbiAqXG4gKiBXZSBjYW4gYWxzbyBtYW5pcHVsYXRlIGVudGlyZSBsYXlvdXQgc3lzdGVtcyBieSBhZGRpbmcgYSBzZXJpZXMgb2YgbW9kaWZpZXJzXG4gKiB0byB0aGUgYC5vLWxheW91dGAgYmxvY2suIEZvciBleGFtcGxlOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0ICBvLWxheW91dC0tcmV2ZXJzZVwiPlxuICpcbiAqIFRoaXMgd2lsbCByZXZlcnNlIHRoZSBkaXNwbGF5ZWQgb3JkZXIgb2YgdGhlIHN5c3RlbSBzbyB0aGF0IGl0IHJ1bnMgaW4gdGhlXG4gKiBvcHBvc2l0ZSBvcmRlciB0byBvdXIgc291cmNlLCBlZmZlY3RpdmVseSBmbGlwcGluZyB0aGUgc3lzdGVtIG92ZXIuXG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXQgIG8tbGF5b3V0LS1bcmlnaHR8Y2VudGVyXVwiPlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgc3lzdGVtIHRvIGZpbGwgdXAgZnJvbSBlaXRoZXIgdGhlIGNlbnRyZSBvciB0aGUgcmlnaHRcbiAqIGhhbmQgc2lkZS4gRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZmlsbCB1cCB0aGUgbGF5b3V0IHN5c3RlbSBmcm9tIHRoZSBsZWZ0LlxuICpcbiAqIFRoZXJlIGFyZSBwbGVudHkgbW9yZSBvcHRpb25zIGF2YWlsYWJsZSB0byB1czogZXhwbG9yZSB0aGVtIGJlbG93LlxuICovXG4vKiBEZWZhdWx0L21hbmRhdG9yeSBjbGFzc2VzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQWxsb3dzIHVzIHRvIHVzZSB0aGUgbGF5b3V0IG9iamVjdCBvbiBhbnkgdHlwZSBvZiBlbGVtZW50LlxuICogMi4gV2UgbmVlZCB0byBkZWZlbnNpdmVseSByZXNldCBhbnkgYm94LW1vZGVsIHByb3BlcnRpZXMuXG4gKiAzLiBVc2UgdGhlIG5lZ2F0aXZlIG1hcmdpbiB0cmljayBmb3IgbXVsdGktcm93IGdyaWRzOlxuICogICAgaHR0cDovL2Nzc3dpemFyZHJ5LmNvbS8yMDExLzA4L2J1aWxkaW5nLWJldHRlci1ncmlkLXN5c3RlbXMvXG4gKi9cbi5vLWxheW91dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICAvKiBbMV0gKi9cbiAgbWFyZ2luOiAwO1xuICAvKiBbMl0gKi9cbiAgcGFkZGluZzogMDtcbiAgLyogWzJdICovXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIC8qIFsxXSAqL1xuICBtYXJnaW4tbGVmdDogLTI0cHg7XG4gIC8qIFszXSAqL1xuICBmb250LXNpemU6IDA7IH1cblxuLyoqXG4gICAqIDEuIFJlcXVpcmVkIGluIG9yZGVyIHRvIGNvbWJpbmUgZmx1aWQgd2lkdGhzIHdpdGggZml4ZWQgZ3V0dGVycy5cbiAgICogMi4gQWxsb3dzIHVzIHRvIG1hbmlwdWxhdGUgZ3JpZHMgdmVydGljYWxseSwgd2l0aCB0ZXh0LWxldmVsIHByb3BlcnRpZXMsXG4gICAqICAgIGV0Yy5cbiAgICogMy4gRGVmYXVsdCBpdGVtIGFsaWdubWVudCBpcyB3aXRoIHRoZSB0b3BzIG9mIGVhY2ggb3RoZXIsIGxpa2UgbW9zdFxuICAgKiAgICB0cmFkaXRpb25hbCBncmlkL2xheW91dCBzeXN0ZW1zLlxuICAgKiA0LiBCeSBkZWZhdWx0LCBhbGwgbGF5b3V0IGl0ZW1zIGFyZSBmdWxsLXdpZHRoIChtb2JpbGUgZmlyc3QpLlxuICAgKiA1LiBHdXR0ZXJzIHByb3ZpZGVkIGJ5IGxlZnQgcGFkZGluZzpcbiAgICogICAgaHR0cDovL2Nzc3dpemFyZHJ5LmNvbS8yMDExLzA4L2J1aWxkaW5nLWJldHRlci1ncmlkLXN5c3RlbXMvXG4gICAqIDYuIEZhbGxiYWNrIGZvciBvbGQgSUVzIG5vdCBzdXBwb3J0aW5nIGByZW1gIHZhbHVlcy5cbiAgICovXG4uby1sYXlvdXRfX2l0ZW0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAvKiBbMV0gKi9cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvKiBbMl0gKi9cbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgLyogWzNdICovXG4gIHdpZHRoOiAxMDAlO1xuICAvKiBbNF0gKi9cbiAgcGFkZGluZy1sZWZ0OiAyNHB4O1xuICAvKiBbNV0gKi9cbiAgZm9udC1zaXplOiAxNnB4O1xuICAvKiBbNl0gKi9cbiAgZm9udC1zaXplOiAxcmVtOyB9XG5cbi8qIEd1dHRlciBzaXplIG1vZGlmaWVycy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby1sYXlvdXQtLXRpbnkge1xuICBtYXJnaW4tbGVmdDogLTZweDsgfVxuICAuby1sYXlvdXQtLXRpbnkgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogNnB4OyB9XG5cbi5vLWxheW91dC0tc21hbGwge1xuICBtYXJnaW4tbGVmdDogLTEycHg7IH1cbiAgLm8tbGF5b3V0LS1zbWFsbCA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4OyB9XG5cbi5vLWxheW91dC0tbGFyZ2Uge1xuICBtYXJnaW4tbGVmdDogLTQ4cHg7IH1cbiAgLm8tbGF5b3V0LS1sYXJnZSA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiA0OHB4OyB9XG5cbi5vLWxheW91dC0taHVnZSB7XG4gIG1hcmdpbi1sZWZ0OiAtOTZweDsgfVxuICAuby1sYXlvdXQtLWh1Z2UgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogOTZweDsgfVxuXG4uby1sYXlvdXQtLWZsdXNoIHtcbiAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgLm8tbGF5b3V0LS1mbHVzaCA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwOyB9XG5cbi8qIFZlcnRpY2FsIGFsaWdubWVudCBtb2RpZmllcnMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBBbGlnbiBhbGwgZ3JpZCBpdGVtcyB0byB0aGUgbWlkZGxlcyBvZiBlYWNoIG90aGVyLlxuICovXG4uby1sYXlvdXQtLW1pZGRsZSA+IC5vLWxheW91dF9faXRlbSB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLyoqXG4gKiBBbGlnbiBhbGwgZ3JpZCBpdGVtcyB0byB0aGUgYm90dG9tcyBvZiBlYWNoIG90aGVyLlxuICovXG4uby1sYXlvdXQtLWJvdHRvbSA+IC5vLWxheW91dF9faXRlbSB7XG4gIHZlcnRpY2FsLWFsaWduOiBib3R0b207IH1cblxuLyogRmlsbCBvcmRlciBtb2RpZmllcnMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBGaWxsIHVwIHRoZSBsYXlvdXQgc3lzdGVtIGZyb20gdGhlIGNlbnRyZS5cbiAqL1xuLm8tbGF5b3V0LS1jZW50ZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbiAgLm8tbGF5b3V0LS1jZW50ZXIgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLyoqXG4gKiBGaWxsIHVwIHRoZSBsYXlvdXQgc3lzdGVtIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAqL1xuLm8tbGF5b3V0LS1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0OyB9XG4gIC5vLWxheW91dC0tcmlnaHQgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLyoqXG4gKiBSZXZlcnNlIHRoZSByZW5kZXJlZCBvcmRlciBvZiB0aGUgZ3JpZCBzeXN0ZW0uXG4gKi9cbi5vLWxheW91dC0tcmV2ZXJzZSB7XG4gIGRpcmVjdGlvbjogcnRsOyB9XG4gIC5vLWxheW91dC0tcmV2ZXJzZSA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI01FRElBXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBQbGFjZSBhbnkgaW1hZ2UtIGFuZCB0ZXh0LWxpa2UgY29udGVudCBzaWRlLWJ5LXNpZGUsIGFzIHBlcjpcbiAqIGh0dHA6Ly93d3cuc3R1YmJvcm5lbGxhLm9yZy9jb250ZW50LzIwMTAvMDYvMjUvdGhlLW1lZGlhLW9iamVjdC1zYXZlcy1odW5kcmVkcy1vZi1saW5lcy1vZi1jb2RlXG4gKi9cbi5vLW1lZGlhIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cbiAgLm8tbWVkaWE6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCIgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7IH1cblxuLm8tbWVkaWFfX2ltZyB7XG4gIGZsb2F0OiBsZWZ0O1xuICBtYXJnaW4tcmlnaHQ6IDI0cHg7IH1cbiAgLm8tbWVkaWFfX2ltZyA+IGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cblxuLm8tbWVkaWFfX2JvZHkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBkaXNwbGF5OiBibG9jazsgfVxuICAuby1tZWRpYV9fYm9keSxcbiAgLm8tbWVkaWFfX2JvZHkgPiA6bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4vKiBTaXplIHZhcmlhbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBNb2RpZnkgdGhlIGFtb3VudCBvZiBzcGFjZSBiZXR3ZWVuIG91ciBpbWFnZSBhbmQgb3VyIHRleHQuIFdlIGFsc28gaGF2ZVxuICogcmV2ZXJzaWJsZSBvcHRpb25zIGZvciBhbGwgYXZhaWxhYmxlIHNpemVzLlxuICovXG4uby1tZWRpYS0tdGlueSA+IC5vLW1lZGlhX19pbWcge1xuICBtYXJnaW4tcmlnaHQ6IDZweDsgfVxuXG4uby1tZWRpYS0tdGlueS5vLW1lZGlhLS1yZXZlcnNlID4gLm8tbWVkaWFfX2ltZyB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDZweDsgfVxuXG4uby1tZWRpYS0tc21hbGwgPiAuby1tZWRpYV9faW1nIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9XG5cbi5vLW1lZGlhLS1zbWFsbC5vLW1lZGlhLS1yZXZlcnNlID4gLm8tbWVkaWFfX2ltZyB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDEycHg7IH1cblxuLm8tbWVkaWEtLWxhcmdlID4gLm8tbWVkaWFfX2ltZyB7XG4gIG1hcmdpbi1yaWdodDogNDhweDsgfVxuXG4uby1tZWRpYS0tbGFyZ2Uuby1tZWRpYS0tcmV2ZXJzZSA+IC5vLW1lZGlhX19pbWcge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIG1hcmdpbi1sZWZ0OiA0OHB4OyB9XG5cbi5vLW1lZGlhLS1odWdlID4gLm8tbWVkaWFfX2ltZyB7XG4gIG1hcmdpbi1yaWdodDogOTZweDsgfVxuXG4uby1tZWRpYS0taHVnZS5vLW1lZGlhLS1yZXZlcnNlID4gLm8tbWVkaWFfX2ltZyB7XG4gIG1hcmdpbi1yaWdodDogMDtcbiAgbWFyZ2luLWxlZnQ6IDk2cHg7IH1cblxuLyogUmV2ZXJzZWQgbWVkaWEgb2JqZWN0c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5vLW1lZGlhLS1yZXZlcnNlID4gLm8tbWVkaWFfX2ltZyB7XG4gIGZsb2F0OiByaWdodDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMjRweDsgfVxuXG4vKiBHdXR0ZXJsZXNzIG1lZGlhIG9iamVjdHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby1tZWRpYS0tZmx1c2ggPiAuby1tZWRpYV9faW1nIHtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0ZMQUdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFRoZSBmbGFnIG9iamVjdCBpcyBhIGRlc2lnbiBwYXR0ZXJuIHNpbWlsYXIgdG8gdGhlIG1lZGlhIG9iamVjdCwgaG93ZXZlciBpdFxuICogdXRpbGlzZXMgYGRpc3BsYXk6IHRhYmxlWy1jZWxsXTtgIHRvIGdpdmUgdXMgY29udHJvbCBvdmVyIHRoZSB2ZXJ0aWNhbFxuICogYWxpZ25tZW50cyBvZiB0aGUgdGV4dCBhbmQgaW1hZ2UuXG4gKlxuICogaHR0cDovL2Nzc3dpemFyZHJ5LmNvbS8yMDEzLzA1L3RoZS1mbGFnLW9iamVjdC9cbiAqXG4gKiAxLiBBbGxvd3MgdXMgdG8gY29udHJvbCB2ZXJ0aWNhbCBhbGlnbm1lbnRzLlxuICogMi4gRm9yY2UgdGhlIG9iamVjdCB0byBiZSB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgcGFyZW50LiBDb21iaW5lZCB3aXRoIFsxXSxcbiAqICAgIHRoaXMgbWFrZXMgdGhlIG9iamVjdCBiZWhhdmUgaW4gYSBxdWFzaS1gZGlzcGxheTogYmxvY2s7YCBtYW5uZXIuXG4gKi9cbi5vLWZsYWcge1xuICBkaXNwbGF5OiB0YWJsZTtcbiAgLyogWzFdICovXG4gIHdpZHRoOiAxMDAlO1xuICAvKiBbMl0gKi8gfVxuXG4vKipcbiAgICogSXRlbXMgd2l0aGluIGEgZmxhZyBvYmplY3QuIFRoZXJlIHNob3VsZCBvbmx5IGV2ZXIgYmUgb25lIG9mIGVhY2guXG4gICAqXG4gICAqIDEuIERlZmF1bHQgdG8gYWxpZ25pbmcgY29udGVudCB0byB0aGVpciBtaWRkbGVzLlxuICAgKi9cbi5vLWZsYWdfX2ltZyxcbi5vLWZsYWdfX2JvZHkge1xuICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAvKiBbMV0gKi8gfVxuXG4vKipcbiAgICogRmxhZyBpbWFnZXMgaGF2ZSBhIHNwYWNlIGJldHdlZW4gdGhlbSBhbmQgdGhlIGJvZHkgb2YgdGhlIG9iamVjdC5cbiAgICpcbiAgICogMS4gRm9yY2UgYC5mbGFnX19pbWdgIHRvIHRha2UgdXAgYXMgbGl0dGxlIHNwYWNlIGFzIHBvc3NpYmxlOlxuICAgKiAgICBodHRwczovL3BpeGVsc3ZzYnl0ZXMuY29tLzIwMTIvMDIvdGhpcy1jc3MtbGF5b3V0LWdyaWQtaXMtbm8taG9seS1ncmFpbC9cbiAgICovXG4uby1mbGFnX19pbWcge1xuICB3aWR0aDogMXB4O1xuICAvKiBbMV0gKi9cbiAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgLyoqXG4gICAgICogMS4gRml4ZXMgcHJvYmxlbSB3aXRoIGltYWdlcyBkaXNhcHBlYXJpbmcuXG4gICAgICovIH1cbiAgLm8tZmxhZ19faW1nID4gaW1nIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgLyogWzFdICovIH1cblxuLyoqXG4gICAqIFRoZSBjb250YWluZXIgZm9yIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIGZsYWcgb2JqZWN0LlxuICAgKlxuICAgKiAxLiBGb3JjZXMgdGhlIGAuZmxhZ19fYm9keWAgdG8gdGFrZSB1cCBhbGwgcmVtYWluaW5nIHNwYWNlLlxuICAgKi9cbi5vLWZsYWdfX2JvZHkge1xuICB3aWR0aDogYXV0bztcbiAgLyogWzFdICovIH1cbiAgLm8tZmxhZ19fYm9keSxcbiAgLm8tZmxhZ19fYm9keSA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qIFNpemUgdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLm8tZmxhZy0tdGlueSA+IC5vLWZsYWdfX2ltZyB7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDsgfVxuXG4uby1mbGFnLS10aW55Lm8tZmxhZy0tcmV2ZXJzZSA+IC5vLWZsYWdfX2ltZyB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogNnB4OyB9XG5cbi5vLWZsYWctLXNtYWxsID4gLm8tZmxhZ19faW1nIHtcbiAgcGFkZGluZy1yaWdodDogMTJweDsgfVxuXG4uby1mbGFnLS1zbWFsbC5vLWZsYWctLXJldmVyc2UgPiAuby1mbGFnX19pbWcge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IDEycHg7IH1cblxuLm8tZmxhZy0tbGFyZ2UgPiAuby1mbGFnX19pbWcge1xuICBwYWRkaW5nLXJpZ2h0OiA0OHB4OyB9XG5cbi5vLWZsYWctLWxhcmdlLm8tZmxhZy0tcmV2ZXJzZSA+IC5vLWZsYWdfX2ltZyB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogNDhweDsgfVxuXG4uby1mbGFnLS1odWdlID4gLm8tZmxhZ19faW1nIHtcbiAgcGFkZGluZy1yaWdodDogOTZweDsgfVxuXG4uby1mbGFnLS1odWdlLm8tZmxhZy0tcmV2ZXJzZSA+IC5vLWZsYWdfX2ltZyB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogOTZweDsgfVxuXG4uby1mbGFnLS1mbHVzaCA+IC5vLWZsYWdfX2ltZyB7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuXG4vKiBSZXZlcnNlZCBmbGFnLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gU3dhcCB0aGUgcmVuZGVyZWQgZGlyZWN0aW9uIG9mIHRoZSBvYmplY3TigKZcbiAqIDIuIOKApmFuZCByZXNldCBpdC5cbiAqIDMuIFJlYXNzaWduIG1hcmdpbnMgdG8gdGhlIGNvcnJlY3Qgc2lkZXMuXG4gKi9cbi5vLWZsYWctLXJldmVyc2Uge1xuICBkaXJlY3Rpb246IHJ0bDtcbiAgLyogWzFdICovIH1cbiAgLm8tZmxhZy0tcmV2ZXJzZSA+IC5vLWZsYWdfX2ltZyxcbiAgLm8tZmxhZy0tcmV2ZXJzZSA+IC5vLWZsYWdfX2JvZHkge1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICAgIC8qIFsyXSAqLyB9XG4gIC5vLWZsYWctLXJldmVyc2UgPiAuby1mbGFnX19pbWcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgLyogWzNdICovXG4gICAgcGFkZGluZy1sZWZ0OiAyNHB4O1xuICAgIC8qIFszXSAqLyB9XG5cbi8qIEFsaWdubWVudCB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFZlcnRpY2FsbHkgYWxpZ24gdGhlIGltYWdlLSBhbmQgYm9keS1jb250ZW50IGRpZmZlcmVudGx5LiBEZWZhdWx0cyB0byBtaWRkbGUuXG4gKi9cbi5vLWZsYWctLXRvcCA+IC5vLWZsYWdfX2ltZyxcbi5vLWZsYWctLXRvcCA+IC5vLWZsYWdfX2JvZHkge1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9XG5cbi5vLWZsYWctLWJvdHRvbSA+IC5vLWZsYWdfX2ltZyxcbi5vLWZsYWctLWJvdHRvbSA+IC5vLWZsYWdfX2JvZHkge1xuICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjTElTVC1CQVJFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBTdHJpcCBsaXN0LWxpa2UgYXBwZWFyYW5jZSBmcm9tIGxpc3RzIGJ5IHJlbW92aW5nIHRoZWlyIGJ1bGxldHMsIGFuZCBhbnlcbiAqIGluZGVudGF0aW9uLlxuICovXG4uby1saXN0LWJhcmUge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0xJU1QtSU5MSU5FXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBUaGUgbGlzdC1pbmxpbmUgb2JqZWN0IHNpbXBseSBkaXNwbGF5cyBhIGxpc3Qgb2YgaXRlbXMgaW4gb25lIGxpbmUuXG4gKi9cbi5vLWxpc3QtaW5saW5lIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLm8tbGlzdC1pbmxpbmVfX2l0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH1cblxuLyogRGVsaW1pdGVkIGxpc3QuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBCeSBkZWZhdWx0LCBhcHBseWluZyB0aGlzIGNsYXNzIHdpbGwgY29tbWEgc2VwYXJhdGUgeW91ciBsaXN0IGl0ZW1zLiBZb3UgY2FuXG4gKiBjaGFuZ2UgdGhlIGRlbGltaXRlciBieSBwcmVkZWZpbmluZyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlOlxuICovXG4vKipcbiAqIDEuIEZhbGxiYWNrIGZvciBvbGQgSUVzIG5vdCBzdXBwb3J0aW5nIGByZW1gIHZhbHVlcy5cbiAqL1xuLm8tbGlzdC1pbmxpbmUtLWRlbGltaXRlZCB7XG4gIGZvbnQtc2l6ZTogMDsgfVxuICAuby1saXN0LWlubGluZS0tZGVsaW1pdGVkID4gLm8tbGlzdC1pbmxpbmVfX2l0ZW0ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAvKiBbMV0gKi9cbiAgICBmb250LXNpemU6IDFyZW07IH1cbiAgLm8tbGlzdC1pbmxpbmUtLWRlbGltaXRlZCA+IC5vLWxpc3QtaW5saW5lX19pdGVtICsgLm8tbGlzdC1pbmxpbmVfX2l0ZW06YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIizCoFwiOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjQk9YXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBUaGUgYm94IG9iamVjdCBzaW1wbHkgYm94ZXMgb2ZmIGNvbnRlbnQuIEV4dGVuZCB3aXRoIGNvc21ldGljIHN0eWxlcyBpbiB0aGVcbiAqIENvbXBvbmVudHMgbGF5ZXIuXG4gKlxuICogMS4gU28gd2UgY2FuIGFwcGx5IHRoZSBgLm8tYm94YCBjbGFzcyB0byBuYXR1cmFsbHktaW5saW5lIGVsZW1lbnRzLlxuICovXG4uby1ib3gge1xuICBkaXNwbGF5OiBibG9jaztcbiAgLyogWzFdICovXG4gIHBhZGRpbmc6IDI0cHg7IH1cbiAgLm8tYm94OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiICFpbXBvcnRhbnQ7XG4gICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICBjbGVhcjogYm90aCAhaW1wb3J0YW50OyB9XG4gIC5vLWJveCA+IDpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi8qIFNpemUgdmFyaWFudHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby1ib3gtLWZsdXNoIHtcbiAgcGFkZGluZzogMDsgfVxuXG4uby1ib3gtLXRpbnkge1xuICBwYWRkaW5nOiA2cHg7IH1cblxuLm8tYm94LS1zbWFsbCB7XG4gIHBhZGRpbmc6IDEycHg7IH1cblxuLm8tYm94LS1sYXJnZSB7XG4gIHBhZGRpbmc6IDQ4cHg7IH1cblxuLm8tYm94LS1odWdlIHtcbiAgcGFkZGluZzogOTZweDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0JMT0NLXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBTdGFja2VkIGltYWdlLXdpdGgtdGV4dCBvYmplY3QuIEEgc2ltcGxlIGFic3RyYWN0aW9uIHRvIGNvdmVyIGEgdmVyeSBjb21tb25seVxuICogb2NjdXJyaW5nIGRlc2lnbiBwYXR0ZXJuLlxuICovXG4uby1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLm8tYmxvY2tfX2ltZyB7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIC8qIFNpemUgdmFyaWFudHMuXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLyB9XG4gIC5vLWJsb2NrLS1mbHVzaCA+IC5vLWJsb2NrX19pbWcge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgLm8tYmxvY2stLXRpbnkgPiAuby1ibG9ja19faW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7IH1cbiAgLm8tYmxvY2stLXNtYWxsID4gLm8tYmxvY2tfX2ltZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDsgfVxuICAuby1ibG9jay0tbGFyZ2UgPiAuby1ibG9ja19faW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0OHB4OyB9XG4gIC5vLWJsb2NrLS1odWdlID4gLm8tYmxvY2tfX2ltZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogOTZweDsgfVxuXG4uby1ibG9ja19fYm9keSB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbi8qIEFsaWdubWVudCB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby1ibG9jay0tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4uby1ibG9jay0tbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNSQVRJT1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQ3JlYXRlIHJhdGlvLWJvdW5kIGNvbnRlbnQgYmxvY2tzLCB0byBrZWVwIG1lZGlhIChlLmcuIGltYWdlcywgdmlkZW9zKSBpblxuICogdGhlaXIgY29ycmVjdCBhc3BlY3QgcmF0aW9zLlxuICpcbiAqIGh0dHA6Ly9hbGlzdGFwYXJ0LmNvbS9hcnRpY2xlL2NyZWF0aW5nLWludHJpbnNpYy1yYXRpb3MtZm9yLXZpZGVvXG4gKlxuICogMS4gRGVmYXVsdCBjcm9wcGluZyBpcyBhIDE6MSByYXRpbyAoaS5lLiBhIHBlcmZlY3Qgc3F1YXJlKS5cbiAqL1xuLm8tcmF0aW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5vLXJhdGlvOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgICAvKiBbMV0gKi8gfVxuXG4uby1yYXRpb19fY29udGVudCxcbi5vLXJhdGlvID4gaWZyYW1lLFxuLm8tcmF0aW8gPiBlbWJlZCxcbi5vLXJhdGlvID4gb2JqZWN0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTsgfVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogUmF0aW8gdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlcmllcyBvZiByYXRpbyBjbGFzc2VzIHRvIGJlIHVzZWQgbGlrZSBzbzpcbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJvLXJhdGlvICBvLXJhdGlvLS0xNjo5XCI+XG4gKlxuICovXG4uby1yYXRpby0tMlxcOjE6YmVmb3JlIHtcbiAgcGFkZGluZy1ib3R0b206IDUwJTsgfVxuXG4uby1yYXRpby0tNFxcOjM6YmVmb3JlIHtcbiAgcGFkZGluZy1ib3R0b206IDc1JTsgfVxuXG4uby1yYXRpby0tMTZcXDo5OmJlZm9yZSB7XG4gIHBhZGRpbmctYm90dG9tOiA1Ni4yNSU7IH1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNDUk9QXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBQcm92aWRlIGEgY3JvcHBpbmcgY29udGFpbmVyIGluIG9yZGVyIHRvIGRpc3BsYXkgbWVkaWEgKHVzdWFsbHkgaW1hZ2VzKVxuICogY3JvcHBlZCB0byBjZXJ0YWluIHJhdGlvcy5cbiAqXG4gKiAxLiBTZXQgdXAgYSBwb3NpdGlvbmluZyBjb250ZXh0IGluIHdoaWNoIHRoZSBpbWFnZSBjYW4gc2l0LlxuICogMi4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0OiB3aGVyZSB0aGUgY3JvcHBpbmcgaGFwcGVucy5cbiAqL1xuLm8tY3JvcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgLyogWzFdICovXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAvKiBbMl0gKi8gfVxuXG4vKipcbiAgICogQXBwbHkgdGhpcyBjbGFzcyB0byB0aGUgY29udGVudCAodXN1YWxseSBgaW1nYCkgdGhhdCBuZWVkcyBjcm9wcGluZy5cbiAgICpcbiAgICogMS4gSW1hZ2XigJlzIGRlZmF1bHQgcG9zaXRpb25pbmcgaXMgdG9wLWxlZnQgaW4gdGhlIGNyb3BwaW5nIGJveC5cbiAgICogMi4gTWFrZSBzdXJlIHRoZSBtZWRpYSBkb2VzbuKAmXQgc3RvcCBpdHNlbGYgdG9vIHNvb24uXG4gICAqL1xuLm8tY3JvcF9fY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICAvKiBbMV0gKi9cbiAgbGVmdDogMDtcbiAgLyogWzFdICovXG4gIG1heC13aWR0aDogbm9uZTtcbiAgLyogWzJdICovIH1cblxuLyoqXG4gICAqIFdlIGNhbiBwb3NpdGlvbiB0aGUgbWVkaWEgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyB3aXRoaW4gdGhlIGNyb3BwaW5nIGFyZWEuXG4gICAqL1xuLm8tY3JvcF9fY29udGVudC0tcmlnaHQge1xuICByaWdodDogMDtcbiAgbGVmdDogYXV0bzsgfVxuXG4uby1jcm9wX19jb250ZW50LS1ib3R0b20ge1xuICB0b3A6IGF1dG87XG4gIGJvdHRvbTogMDsgfVxuXG4uby1jcm9wX19jb250ZW50LS1jZW50ZXIge1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuLyogQ3JvcC1yYXRpbyB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEdlbmVyYXRlIGEgc2VyaWVzIG9mIGNyb3AgY2xhc3NlcyB0byBiZSB1c2VkIGxpa2Ugc286XG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1jcm9wICBvLWNyb3AtLTE2OjlcIj5cbiAqXG4gKi9cbi5vLWNyb3AtLTJcXDoxIHtcbiAgcGFkZGluZy1ib3R0b206IDUwJTsgfVxuXG4uby1jcm9wLS00XFw6MyB7XG4gIHBhZGRpbmctYm90dG9tOiA3NSU7IH1cblxuLm8tY3JvcC0tMTZcXDo5IHtcbiAgcGFkZGluZy1ib3R0b206IDU2LjI1JTsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1RBQkxFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQSBzaW1wbGUgb2JqZWN0IGZvciBtYW5pcHVsYXRpbmcgdGhlIHN0cnVjdHVyZSBvZiBIVE1MIGB0YWJsZWBzLlxuICovXG4uby10YWJsZSB7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi8qIEVxdWFsLXdpZHRoIHRhYmxlIGNlbGxzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogYHRhYmxlLWxheW91dDogZml4ZWRgIGZvcmNlcyBhbGwgY2VsbHMgd2l0aGluIGEgdGFibGUgdG8gb2NjdXB5IHRoZSBzYW1lXG4gKiB3aWR0aCBhcyBlYWNoIG90aGVyLiBUaGlzIGFsc28gaGFzIHBlcmZvcm1hbmNlIGJlbmVmaXRzOiBiZWNhdXNlIHRoZSBicm93c2VyXG4gKiBkb2VzIG5vdCBuZWVkIHRvIChyZSljYWxjdWxhdGUgY2VsbCBkaW1lbnNpb25zIGJhc2VkIG9uIGNvbnRlbnQgaXQgZGlzY292ZXJzLFxuICogdGhlIHRhYmxlIGNhbiBiZSByZW5kZXJlZCB2ZXJ5IHF1aWNrbHkuIEZ1cnRoZXIgcmVhZGluZzpcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy90YWJsZS1sYXlvdXQjVmFsdWVzXG4gKi9cbi5vLXRhYmxlLS1maXhlZCB7XG4gIHRhYmxlLWxheW91dDogZml4ZWQ7IH1cblxuLyogU2l6ZSB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby10YWJsZS0tdGlueSB0aCxcbi5vLXRhYmxlLS10aW55IHRkIHtcbiAgcGFkZGluZzogNnB4OyB9XG5cbi5vLXRhYmxlLS1zbWFsbCB0aCxcbi5vLXRhYmxlLS1zbWFsbCB0ZCB7XG4gIHBhZGRpbmc6IDEycHg7IH1cblxuLm8tdGFibGUtLWxhcmdlIHRoLFxuLm8tdGFibGUtLWxhcmdlIHRkIHtcbiAgcGFkZGluZzogNDhweDsgfVxuXG4uby10YWJsZS0taHVnZSB0aCxcbi5vLXRhYmxlLS1odWdlIHRkIHtcbiAgcGFkZGluZzogOTZweDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1BBQ0tcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFRoZSBwYWNrIG9iamVjdCBzaW1wbHkgY2F1c2VzIGFueSBudW1iZXIgb2YgZWxlbWVudHMgcGFjayB1cCBob3Jpem9udGFsbHkgdG9cbiAqIGF1dG9tYXRpY2FsbHkgZmlsbCBhbiBlcXVhbCwgZmx1aWQgd2lkdGggb2YgdGhlaXIgcGFyZW50LlxuICpcbiAqIDEuIEZpbGwgYWxsIGF2YWlsYWJsZSBzcGFjZS5cbiAqIDIuIFJlbW92ZSBhbnkgbGVmdG92ZXIgc3R5bGluZyBmcm9tIGxpc3RzLlxuICogMy4gQ2F1c2UgY2hpbGRyZW4gdG8gYmUgYXV0b21hdGljYWxseSBlcXVhbGx5IHNpemVkLlxuICovXG4uby1wYWNrIHtcbiAgd2lkdGg6IDEwMCU7XG4gIC8qIFsxXSAqL1xuICBtYXJnaW4tbGVmdDogMDtcbiAgLyogWzJdICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAvKiBbM10gKi8gfVxuXG4vKipcbiAgICogMS4gQ2F1c2UgY2hpbGRyZW4gdG8gYWRvcHQgdGFibGUtbGlrZSBzdHJ1Y3R1cmUuXG4gICAqL1xuLm8tcGFja19faXRlbSB7XG4gIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gIC8qIFsxXSAqL1xuICAvKiBWZXJ0aWNhbCBhbGlnbm1lbnQgdmFyaWFudHMuXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLyB9XG4gIC5vLXBhY2stLW1pZGRsZSA+IC5vLXBhY2tfX2l0ZW0ge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbiAgLm8tcGFjay0tYm90dG9tID4gLm8tcGFja19faXRlbSB7XG4gICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgfVxuXG4vKiBVbmVxdWFsLXdpZHRoIGl0ZW1zLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5vLXBhY2stLWF1dG8ge1xuICB0YWJsZS1sYXlvdXQ6IGF1dG87IH1cblxuLyogU2l6ZSB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uby1wYWNrLS10aW55IHtcbiAgYm9yZGVyLXNwYWNpbmc6IDZweDsgfVxuXG4uby1wYWNrLS1zbWFsbCB7XG4gIGJvcmRlci1zcGFjaW5nOiAxMnB4OyB9XG5cbi5vLXBhY2stLWxhcmdlIHtcbiAgYm9yZGVyLXNwYWNpbmc6IDQ4cHg7IH1cblxuLm8tcGFjay0taHVnZSB7XG4gIGJvcmRlci1zcGFjaW5nOiA5NnB4OyB9XG5cbi8qIFJldmVyc2VkIG9yZGVyIHBhY2tzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLm8tcGFjay0tcmV2IHtcbiAgZGlyZWN0aW9uOiBydGw7IH1cbiAgLm8tcGFjay0tcmV2ID4gLm8tcGFja19faXRlbSB7XG4gICAgZGlyZWN0aW9uOiBsdHI7IH1cblxuLnN2Zy1pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDFlbTtcbiAgd2lkdGg6IDFlbTsgfVxuXG4uc3ZnLWljb24gc3ZnIHtcbiAgaGVpZ2h0OiAxZW07XG4gIHdpZHRoOiAxZW07XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjsgfVxuXG4uc3ZnLWljb24uc3ZnLWJhc2VsaW5lIHN2ZyB7XG4gIGJvdHRvbTogLTAuMTRlbTtcbiAgcG9zaXRpb246IGFic29sdXRlOyB9XG5cbi5zdmctaWNvbi0tbGVmdCB7XG4gIG1hcmdpbi1yaWdodDogMC41ZW07IH1cblxuLnN2Zy1pY29uLS1qaXJhIHtcbiAgd2lkdGg6IDIuNmVtOyB9XG4gIC5zdmctaWNvbi0tamlyYSBzdmcge1xuICAgIHdpZHRoOiAyLjU3NDA1MjgxM2VtOyB9XG5cbi5zdmctaWNvbi0tamlyYS5zdmctYmFzZWxpbmUgc3ZnIHtcbiAgYm90dG9tOiAtMC4wNmVtO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IH1cblxuLmNvbW1hLWxpc3Qge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi5jb21tYS1saXN0IGxpIHtcbiAgZGlzcGxheTogaW5saW5lOyB9XG5cbi5jb21tYS1saXN0IGxpOmFmdGVyIHtcbiAgY29udGVudDogXCIsIFwiOyB9XG5cbi5jb21tYS1saXN0IGxpOmxhc3QtY2hpbGQ6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiOyB9XG5cbi5jb21tYS1saXN0IGxpOm50aC1sYXN0LWNoaWxkKDIpOmFmdGVyIHtcbiAgY29udGVudDogXCIgYW5kIFwiOyB9XG5cbi5jb21tYS1saXN0IGxpOm50aC1sYXN0LWNoaWxkKDMpIH4gbGk6bnRoLWxhc3QtY2hpbGQoMik6YWZ0ZXIge1xuICBjb250ZW50OiBcIiwgYW5kIFwiOyB9XG5cbi51bml2ZXJzYWwtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzBjNWM4NTtcbiAgY29sb3I6ICNmZmY7IH1cbiAgLnVuaXZlcnNhbC1oZWFkZXIgYSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyLWJvdHRvbTogdW5zZXQ7XG4gICAgYm94LXNoYWRvdzogdW5zZXQ7IH1cbiAgLnVuaXZlcnNhbC1oZWFkZXIgYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogIzAwOTljYzsgfVxuXG4udW5pdmVyc2FsLWhlYWRlci0tZGFzaGJvYXJkIHtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgcGFkZGluZy1yaWdodDogNnB4O1xuICBtYXgtd2lkdGg6IDQwZW07IH1cblxuLmxhbmRlci1wYWdlIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXNpemU6IDFyZW07IH1cblxuLnVuaXZlcnNhbC1oZWFkZXItLWxhbmRlciB7XG4gIG1hcmdpbjogYXV0bztcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xuICBtYXgtd2lkdGg6IDcwZW07IH1cblxuLmxhbmRlci1jb250YWluZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgbWF4LXdpZHRoOiA3MGVtO1xuICBtYXJnaW4tdG9wOiAxZW07XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDsgfVxuXG4ubGFuZGVyLWNvbnRhaW5lci0tY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICBtaW4taGVpZ2h0OiA5MHZoOyB9XG5cbi5sYW5kZXItY29udGFpbmVyLS1mb290ZXIge1xuICBwYWRkaW5nLXRvcDogNGVtOyB9XG5cbi5sYW5kZXItZm9vdGVyIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG4gIG1hcmdpbi1sZWZ0OiAyMGVtO1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7IH1cblxuLmxhbmRlci1pbmZvLWl0ZW0ge1xuICBmbGV4OiAwIDEgMjBlbTtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4OyB9XG5cbi5sYW5kZXItcGRmLWl0ZW0ge1xuICBmbGV4OiAxOyB9XG5cbi5wZGZvYmplY3QtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiA5MHZoOyB9XG5cbi5sYW5kZXItc3Vic2VjdGlvbi1oZWFkZXIge1xuICBmb250LWZhbWlseTogJ3NvdXJjZS1zYW5zLXBybycsICdIZWx2ZXRpY2EgTmV1ZScsICdIZWx2ZXRpY2EnLCAnVmVyZGFuYSc7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwOyB9XG5cbi5sYW5kZXItaW5mby1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjYzMTI1cmVtOyB9XG5cbi5sYW5kZXItaW5mby1oZWFkZXJfX2xvZ28ge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICB3aWR0aDogMTByZW07IH1cblxuLmxhbmRlci1pbmZvLWhlYWRlcl9faGFuZGxlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAnc291cmNlLXNhbnMtcHJvJywgJ0hlbHZldGljYSBOZXVlJywgJ0hlbHZldGljYScsICdWZXJkYW5hJztcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXNpemU6IDFyZW07XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2MjVlbTsgfVxuICAubGFuZGVyLWluZm8taGVhZGVyX19oYW5kbGUgYSB7XG4gICAgY29sb3I6ICMwYzVjODU7IH1cblxuLmxhbmRlci1pbmZvLWhlYWRlcl9fcHJvZHVjdC1uYW1lIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1mYW1pbHk6ICdzb3VyY2Utc2Fucy1wcm8nLCAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ1ZlcmRhbmEnO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMDU7IH1cblxuLmMtbGFuZGVyLWJ0bi1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9XG5cbi5jLWxhbmRlci1idG4tcm93X19pdGVtIHtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07IH1cblxuLmxhbmRlci1pbmZvLWF1dGhvcnMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjQlVUVE9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogVGhpcyBpcyBhbiBleGFtcGxlIGNvbXBvbmVudC4gRXh0ZW5kIGludWl0Y3NzIGJ5IGJ1aWxkaW5nIHlvdXIgb3duIGNvbXBvbmVudHNcbiAqIHRoYXQgbWFrZSB1cCB5b3VyIFVJLiBDb21wb25lbnQgY2xhc3NlcyBhcmUgcHJlZml4ZWQgd2l0aCBhIGBjLWAuXG4gKi9cbi8qKlxuICogMS4gQWxsb3cgdXMgdG8gc3R5bGUgYm94IG1vZGVsIHByb3BlcnRpZXMuXG4gKiAyLiBMaW5lIGRpZmZlcmVudCBzaXplZCBidXR0b25zIHVwIGEgbGl0dGxlIG5pY2VyLlxuICogMy4gTWFrZSBidXR0b25zIGluaGVyaXQgZm9udCBzdHlsZXMgKG9mdGVuIG5lY2Vzc2FyeSB3aGVuIHN0eWxpbmcgYGlucHV0YHMgYXNcbiAqICAgIGJ1dHRvbnMpLlxuICogNC4gUmVzZXQvbm9ybWFsaXplIHNvbWUgc3R5bGVzLlxuICogNS4gRm9yY2UgYWxsIGJ1dHRvbi1zdHlsZWQgZWxlbWVudHMgdG8gYXBwZWFyIGNsaWNrYWJsZS5cbiAqL1xuLmMtYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAvKiBbMV0gKi9cbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgLyogWzJdICovXG4gIGZvbnQ6IGluaGVyaXQ7XG4gIC8qIFszXSAqL1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC8qIFs0XSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIFs0XSAqL1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIFs1XSAqL1xuICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gIHRyYW5zaXRpb246IDAuMzMzMzNzO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIGJveC1zaGFkb3c6IHVuc2V0OyB9XG5cbi8qIFN0eWxlIHZhcmlhbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmMtYnRuLS1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzRhOGVjMjsgfVxuICAuYy1idG4tLXByaW1hcnksIC5jLWJ0bi0tcHJpbWFyeTpob3ZlciwgLmMtYnRuLS1wcmltYXJ5OmFjdGl2ZSwgLmMtYnRuLS1wcmltYXJ5OmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgLyogWzRdICovXG4gICAgY29sb3I6ICNmZmY7IH1cbiAgLmMtYnRuLS1wcmltYXJ5OmhvdmVyLCAuYy1idG4tLXByaW1hcnk6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMzNzc0YTI7IH1cblxuLmMtYnRuLS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY0MDU0OyB9XG4gIC5jLWJ0bi0tc2Vjb25kYXJ5LCAuYy1idG4tLXNlY29uZGFyeTpob3ZlciwgLmMtYnRuLS1zZWNvbmRhcnk6YWN0aXZlLCAuYy1idG4tLXNlY29uZGFyeTpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAjZmZmOyB9XG4gIC5jLWJ0bi0tc2Vjb25kYXJ5OmhvdmVyLCAuYy1idG4tLXNlY29uZGFyeTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzFkMjczMzsgfVxuXG4uYy1idG4tLXRlcnRpYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICM0YThlYzI7IH1cbiAgLmMtYnRuLS10ZXJ0aWFyeSwgLmMtYnRuLS10ZXJ0aWFyeTpob3ZlciwgLmMtYnRuLS10ZXJ0aWFyeTphY3RpdmUsIC5jLWJ0bi0tdGVydGlhcnk6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzRhOGVjMjsgfVxuICAuYy1idG4tLXRlcnRpYXJ5OmhvdmVyLCAuYy1idG4tLXRlcnRpYXJ5OmZvY3VzIHtcbiAgICBjb2xvcjogIzM3NzRhMjsgfVxuXG4vKiBTaXplIHZhcmlhbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmMtYnRuLS1zbWFsbCB7XG4gIHBhZGRpbmc6IDZweCAxMnB4OyB9XG5cbi5jLWJ0bi0tbGFyZ2Uge1xuICBwYWRkaW5nOiAyNHB4IDQ4cHg7IH1cblxuLyogR2hvc3QgYnV0dG9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogR2hvc3QgYnV0dG9ucyBoYXZlIHNlZS10aHJvdWdoIGJhY2tncm91bmRzIGFuZCBhcmUgYm9yZGVyZWQuXG4gKi9cbi5jLWJ0bi0tZ2hvc3Qge1xuICBib3JkZXI6IDJweCBzb2xpZCBjdXJyZW50Q29sb3I7XG4gIHBhZGRpbmc6IDEwcHggMjJweDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2Utb3V0OyB9XG4gIC5jLWJ0bi0tZ2hvc3QsIC5jLWJ0bi0tZ2hvc3Q6YWN0aXZlLCAuYy1idG4tLWdob3N0OmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lOyB9XG4gIC5jLWJ0bi0tZ2hvc3Q6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNjY2RjZjE7IH1cbiAgLmMtYnRuLS1naG9zdC5jLWJ0bi0tc21hbGwge1xuICAgIHBhZGRpbmc6IDRweCAxMHB4OyB9XG4gIC5jLWJ0bi0tZ2hvc3QuYy1idG4tLWxhcmdlIHtcbiAgICBwYWRkaW5nOiAyMnB4IDQ2cHg7IH1cbiAgLmMtYnRuLS1naG9zdC5jLWJ0bi0tcHJpbWFyeSB7XG4gICAgY29sb3I6ICM0YThlYzI7IH1cbiAgICAuYy1idG4tLWdob3N0LmMtYnRuLS1wcmltYXJ5OmhvdmVyLCAuYy1idG4tLWdob3N0LmMtYnRuLS1wcmltYXJ5OmZvY3VzIHtcbiAgICAgIGNvbG9yOiAjMzc3NGEyOyB9XG4gIC5jLWJ0bi0tZ2hvc3QuYy1idG4tLXNlY29uZGFyeSB7XG4gICAgY29sb3I6ICMyZjQwNTQ7IH1cbiAgICAuYy1idG4tLWdob3N0LmMtYnRuLS1zZWNvbmRhcnk6aG92ZXIsIC5jLWJ0bi0tZ2hvc3QuYy1idG4tLXNlY29uZGFyeTpmb2N1cyB7XG4gICAgICBjb2xvcjogIzFkMjczMzsgfVxuICAuYy1idG4tLWdob3N0LmMtYnRuLS10ZXJ0aWFyeSB7XG4gICAgY29sb3I6ICNmZmY7IH1cbiAgICAuYy1idG4tLWdob3N0LmMtYnRuLS10ZXJ0aWFyeTpob3ZlciwgLmMtYnRuLS1naG9zdC5jLWJ0bi0tdGVydGlhcnk6Zm9jdXMge1xuICAgICAgY29sb3I6ICNmZmY7IH1cblxuLmMtYnRuLS1naG9zdC1mYWludCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNDTEVBUkZJWFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogQXR0YWNoIG91ciBjbGVhcmZpeCBtaXhpbiB0byBhIHV0aWxpdHkgY2xhc3MuXG4gKi9cbi51LWNsZWFyZml4OmFmdGVyIHtcbiAgY29udGVudDogXCJcIiAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICBjbGVhcjogYm90aCAhaW1wb3J0YW50OyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjV0lEVEhTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKiBpbnVpdGNzcyBnZW5lcmF0ZXMgYSBzZXJpZXMgb2YgdXRpbGl0eSBjbGFzc2VzIHRoYXQgZ2l2ZSBhIGZsdWlkIHdpZHRoIHRvXG4gKiB3aGljaGV2ZXIgZWxlbWVudCB0aGV54oCZcmUgYXBwbGllZCwgZS5nLjpcbiAqXG4gKiAgIDxpbWcgc3JjPVwiXCIgYWx0PVwiXCIgY2xhc3M9XCJ1LTEvMlwiIC8+XG4gKlxuICogVGhlc2UgY2xhc3NlcyBhcmUgbW9zdCBjb21tb25seSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIGxheW91dCBzeXN0ZW0sXG4gKiBlLmcuOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMlwiPlxuICpcbiAqIEJ5IGRlZmF1bHQsIGludWl0Y3NzIHdpbGwgYWxzbyBnZW5lcmF0ZSByZXNwb25zaXZlIHZhcmlhbnRzIG9mIGVhY2ggb2YgdGhlc2VcbiAqIGNsYXNzZXMgYnkgdXNpbmcgeW91ciBTYXNzIE1RIGNvbmZpZ3VyYXRpb24sIGUuZy46XG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRfX2l0ZW0gIHUtMS8xICB1LTEvMkB0YWJsZXQgIHUtMS8zQGRlc2t0b3BcIj5cbiAqXG4gKiBPcHRpb25hbGx5LCBpbnVpdGNzcyBjYW4gZ2VuZXJhdGUgb2Zmc2V0IGNsYXNzZXMgd2hpY2ggY2FuIHB1c2ggYW5kIHB1bGxcbiAqIGVsZW1lbnRzIGxlZnQgYW5kIHJpZ2h0IGJ5IGEgc3BlY2lmaWVkIGFtb3VudCwgZS5nLjpcbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJvLWxheW91dF9faXRlbSAgdS0yLzMgIHUtcHVsbC0xLzNcIj5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgbWFraW5nIHZlcnkgZ3JhbnVsYXIgY2hhbmdlcyB0byB0aGUgcmVuZGVyZWQgb3JkZXIgb2ZcbiAqIGl0ZW1zIGluIGEgbGF5b3V0LlxuICpcbiAqIE4uQi4gVGhpcyBvcHRpb24gaXMgdHVybmVkIG9mZiBieSBkZWZhdWx0LlxuICovXG4vKipcbiAqIEEgc2VyaWVzIG9mIHdpZHRoIGhlbHBlciBjbGFzc2VzIHRoYXQgeW91IGNhbiB1c2UgdG8gc2l6ZSB0aGluZ3MgbGlrZSBncmlkXG4gKiBzeXN0ZW1zLiBDbGFzc2VzIHRha2UgYSBmcmFjdGlvbi1saWtlIGZvcm1hdCAoZS5nLiBgLnUtMi8zYCkuIFVzZSB0aGVzZSBpblxuICogeW91ciBtYXJrdXA6XG4gKlxuICogPGRpdiBjbGFzcz1cInUtNy8xMlwiPlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgd2lsbCBnZW5lcmF0ZSB3aWR0aHMgaGVscGVyIGNsYXNzZXMgYmFzZWQgb24gdGhlIGZyYWN0aW9uc1xuICogZGVmaW5lZCBpbiB0aGUgYCRpbnVpdC1mcmFjdGlvbnNgIGxpc3QuXG4gKi9cbi51LTFcXC8xIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC0xXFwvMSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi51LXB1bGwtMVxcLzEge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi8gfVxuXG4udS0xXFwvMiB7XG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC0xXFwvMiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogNTAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0xXFwvMiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovIH1cblxuLnUtMlxcLzIge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTJcXC8yIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0yXFwvMiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqLyB9XG5cbi51LTFcXC8zIHtcbiAgd2lkdGg6IDMzLjMzMzMzJSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTFcXC8zIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiAzMy4zMzMzMyUgIWltcG9ydGFudDsgfVxuXG4udS1wdWxsLTFcXC8zIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiAzMy4zMzMzMyUgIWltcG9ydGFudDtcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi8gfVxuXG4udS0yXFwvMyB7XG4gIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC0yXFwvMyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogNjYuNjY2NjclICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0yXFwvMyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogNjYuNjY2NjclICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovIH1cblxuLnUtM1xcLzMge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTNcXC8zIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0zXFwvMyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqLyB9XG5cbi51LTFcXC80IHtcbiAgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTFcXC80IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiAyNSUgIWltcG9ydGFudDsgfVxuXG4udS1wdWxsLTFcXC80IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiAyNSUgIWltcG9ydGFudDtcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi8gfVxuXG4udS0yXFwvNCB7XG4gIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC0yXFwvNCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogNTAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0yXFwvNCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovIH1cblxuLnUtM1xcLzQge1xuICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbi51LXB1c2gtM1xcLzQge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovXG4gIGxlZnQ6IDc1JSAhaW1wb3J0YW50OyB9XG5cbi51LXB1bGwtM1xcLzQge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IDc1JSAhaW1wb3J0YW50O1xuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqLyB9XG5cbi51LTRcXC80IHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC00XFwvNCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi51LXB1bGwtNFxcLzQge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi8gfVxuXG4udS0xXFwvNSB7XG4gIHdpZHRoOiAyMCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC0xXFwvNSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogMjAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC0xXFwvNSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogMjAlICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovIH1cblxuLnUtMlxcLzUge1xuICB3aWR0aDogNDAlICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbi51LXB1c2gtMlxcLzUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovXG4gIGxlZnQ6IDQwJSAhaW1wb3J0YW50OyB9XG5cbi51LXB1bGwtMlxcLzUge1xuICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgcmlnaHQ6IDQwJSAhaW1wb3J0YW50O1xuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqLyB9XG5cbi51LTNcXC81IHtcbiAgd2lkdGg6IDYwJSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTNcXC81IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiA2MCUgIWltcG9ydGFudDsgfVxuXG4udS1wdWxsLTNcXC81IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiA2MCUgIWltcG9ydGFudDtcbiAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi8gfVxuXG4udS00XFwvNSB7XG4gIHdpZHRoOiA4MCUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuLnUtcHVzaC00XFwvNSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAvKiBbMV0gKi9cbiAgbGVmdDogODAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC00XFwvNSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogODAlICFpbXBvcnRhbnQ7XG4gIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgLyogWzFdICovIH1cblxuLnUtNVxcLzUge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4udS1wdXNoLTVcXC81IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqL1xuICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cblxuLnUtcHVsbC01XFwvNSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gIC8qIFsxXSAqLyB9XG5cbi8qKlxuICogSWYgd2XigJlyZSB1c2luZyBTYXNzLU1RLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGdyaWQgc3lzdGVtKHMpIGZvciBlYWNoIG9mIG91clxuICogZGVmaW5lZCBicmVha3BvaW50cywgYW5kIGdpdmUgdGhlbSBhIFJlc3BvbnNpdmUgU3VmZml4LCBlLmcuOlxuICpcbiAqIDxkaXYgY2xhc3M9XCJ1LTMvMTJAbW9iaWxlXCI+XG4gKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyMGVtKSB7XG4gIC51LTFcXC8xXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMVxcLzFcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzFcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC8yXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvMlxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC8yXFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC8yXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMlxcLzJcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzJcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC8zXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMzMuMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvM1xcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAzMy4zMzMzMyUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC8zXFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMzMuMzMzMzMlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC8zXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNjYuNjY2NjclICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0yXFwvM1xcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA2Ni42NjY2NyUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC8zXFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNjYuNjY2NjclICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC8zXFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtM1xcLzNcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzNcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC80XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMjUlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvNFxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAyNSUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC80XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMjUlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC80XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0yXFwvNFxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC80XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC80XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0zXFwvNFxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA3NSUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTNcXC80XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNzUlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTRcXC80XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtNFxcLzRcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNFxcLzRcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC81XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMjAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvNVxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAyMCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC81XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMjAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC81XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0yXFwvNVxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA0MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC81XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC81XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogNjAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0zXFwvNVxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA2MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTNcXC81XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNjAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTRcXC81XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogODAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC00XFwvNVxcQG1vYmlsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA4MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTRcXC81XFxAbW9iaWxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogODAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTVcXC81XFxAbW9iaWxlIHtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtNVxcLzVcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNVxcLzVcXEBtb2JpbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9IH1cblxuQG1lZGlhIChtaW4td2lkdGg6IDQ2LjI1ZW0pIHtcbiAgLnUtMVxcLzFcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvMVxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0xXFwvMVxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMVxcLzJcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC8yXFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzJcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA1MCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMlxcLzJcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0yXFwvMlxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0yXFwvMlxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMVxcLzNcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC8zXFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDMzLjMzMzMzJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzNcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAzMy4zMzMzMyUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMlxcLzNcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC8zXFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDY2LjY2NjY3JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzNcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA2Ni42NjY2NyUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtM1xcLzNcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0zXFwvM1xcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0zXFwvM1xcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMVxcLzRcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAyNSUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC80XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDI1JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzRcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAyNSUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMlxcLzRcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC80XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzRcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA1MCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtM1xcLzRcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTNcXC80XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDc1JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzRcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA3NSUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtNFxcLzRcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC00XFwvNFxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC00XFwvNFxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMVxcLzVcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAyMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC81XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDIwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzVcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAyMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtMlxcLzVcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA0MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC81XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDQwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzVcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA0MCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtM1xcLzVcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTNcXC81XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDYwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzVcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA2MCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtNFxcLzVcXEB0YWJsZXQge1xuICAgIHdpZHRoOiA4MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTRcXC81XFxAdGFibGV0IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDgwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNFxcLzVcXEB0YWJsZXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiA4MCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH1cbiAgLnUtNVxcLzVcXEB0YWJsZXQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC01XFwvNVxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC01XFwvNVxcQHRhYmxldCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDEwMCUgIWltcG9ydGFudDtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovIH0gfVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNjEuMjVlbSkge1xuICAudS0xXFwvMVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0xXFwvMVxcQGRlc2t0b3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzFcXEBkZXNrdG9wIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0xXFwvMlxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC8yXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC8yXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDUwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0yXFwvMlxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0yXFwvMlxcQGRlc2t0b3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzJcXEBkZXNrdG9wIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0xXFwvM1xcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAzMy4zMzMzMyUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC8zXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAzMy4zMzMzMyUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC8zXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDMzLjMzMzMzJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0yXFwvM1xcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA2Ni42NjY2NyUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC8zXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA2Ni42NjY2NyUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC8zXFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDY2LjY2NjY3JSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0zXFwvM1xcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC0zXFwvM1xcQGRlc2t0b3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzNcXEBkZXNrdG9wIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0xXFwvNFxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAyNSUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAyNSUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDI1JSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0yXFwvNFxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA1MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDUwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0zXFwvNFxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTNcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA3NSUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTNcXC80XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDc1JSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS00XFwvNFxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC00XFwvNFxcQGRlc2t0b3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNFxcLzRcXEBkZXNrdG9wIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0xXFwvNVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAyMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAyMCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTFcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDIwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0yXFwvNVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA0MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA0MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTJcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDQwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS0zXFwvNVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTNcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA2MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTNcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDYwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS00XFwvNVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiA4MCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTRcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiA4MCUgIWltcG9ydGFudDsgfVxuICAudS1wdWxsLTRcXC81XFxAZGVza3RvcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDgwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfVxuICAudS01XFwvNVxcQGRlc2t0b3Age1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLyoqXG4gICAgICAgICogMS4gUmVzZXQgYW55IGxlZnRvdmVyIG9yIGNvbmZsaWN0aW5nIGBsZWZ0YC9gcmlnaHRgIHZhbHVlcy5cbiAgICAgICAgKi9cbiAgLnUtcHVzaC01XFwvNVxcQGRlc2t0b3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgLyogWzFdICovXG4gICAgbGVmdDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNVxcLzVcXEBkZXNrdG9wIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMTAwJSAhaW1wb3J0YW50O1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi8gfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA4MS4yNWVtKSB7XG4gIC51LTFcXC8xXFxAd2lkZSB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTFcXC8xXFxAd2lkZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0xXFwvMVxcQHdpZGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC8yXFxAd2lkZSB7XG4gICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMVxcLzJcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzJcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC8yXFxAd2lkZSB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTJcXC8yXFxAd2lkZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0yXFwvMlxcQHdpZGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC8zXFxAd2lkZSB7XG4gICAgd2lkdGg6IDMzLjMzMzMzJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMVxcLzNcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDMzLjMzMzMzJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzNcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMzMuMzMzMzMlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC8zXFxAd2lkZSB7XG4gICAgd2lkdGg6IDY2LjY2NjY3JSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMlxcLzNcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDY2LjY2NjY3JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzNcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNjYuNjY2NjclICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC8zXFxAd2lkZSB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTNcXC8zXFxAd2lkZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC0zXFwvM1xcQHdpZGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC80XFxAd2lkZSB7XG4gICAgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMVxcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDI1JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMjUlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC80XFxAd2lkZSB7XG4gICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMlxcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDUwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNTAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC80XFxAd2lkZSB7XG4gICAgd2lkdGg6IDc1JSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtM1xcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDc1JSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzRcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNzUlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTRcXC80XFxAd2lkZSB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTRcXC80XFxAd2lkZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC00XFwvNFxcQHdpZGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTFcXC81XFxAd2lkZSB7XG4gICAgd2lkdGg6IDIwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMVxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDIwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMVxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogMjAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTJcXC81XFxAd2lkZSB7XG4gICAgd2lkdGg6IDQwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtMlxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDQwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtMlxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTNcXC81XFxAd2lkZSB7XG4gICAgd2lkdGg6IDYwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtM1xcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDYwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtM1xcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogNjAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTRcXC81XFxAd2lkZSB7XG4gICAgd2lkdGg6IDgwJSAhaW1wb3J0YW50OyB9XG4gIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG4gIC51LXB1c2gtNFxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqL1xuICAgIGxlZnQ6IDgwJSAhaW1wb3J0YW50OyB9XG4gIC51LXB1bGwtNFxcLzVcXEB3aWRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICByaWdodDogODAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9XG4gIC51LTVcXC81XFxAd2lkZSB7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuICAvKipcbiAgICAgICAgKiAxLiBSZXNldCBhbnkgbGVmdG92ZXIgb3IgY29uZmxpY3RpbmcgYGxlZnRgL2ByaWdodGAgdmFsdWVzLlxuICAgICAgICAqL1xuICAudS1wdXNoLTVcXC81XFxAd2lkZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBsZWZ0OiAxMDAlICFpbXBvcnRhbnQ7IH1cbiAgLnUtcHVsbC01XFwvNVxcQHdpZGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgIHJpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgIC8qIFsxXSAqLyB9IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNIRUFESU5HU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVkZWZpbmUgYWxsIG9mIG91ciBiYXNpYyBoZWFkaW5nIHN0eWxlcyBhZ2FpbnN0IHV0aWxpdHkgY2xhc3NlcyBzbyBhcyB0b1xuICogYWxsb3cgZm9yIGRvdWJsZSBzdHJhbmRlZCBoZWFkaW5nIGhpZXJhcmNoeSwgZS5nLiB3ZSBzZW1hbnRpY2FsbHkgbmVlZCBhbiBIMixcbiAqIGJ1dCB3ZSB3YW50IGl0IHRvIGJlIHNpemVkIGxpa2UgYW4gSDE6XG4gKlxuICogICA8aDIgY2xhc3M9XCJ1LWgxXCI+PC9oMj5cbiAqXG4gKi9cbi51LWgxIHtcbiAgZm9udC1zaXplOiAzNnB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMi4yNXJlbSAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS4zMzMzMyAhaW1wb3J0YW50OyB9XG5cbi51LWgyIHtcbiAgZm9udC1zaXplOiAyOHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMS43NXJlbSAhaW1wb3J0YW50O1xuICBsaW5lLWhlaWdodDogMS43MTQyOSAhaW1wb3J0YW50OyB9XG5cbi51LWgzIHtcbiAgZm9udC1zaXplOiAyNHB4ICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7IH1cblxuLnUtaDQge1xuICBmb250LXNpemU6IDIwcHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxLjI1cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsgfVxuXG4udS1oNSB7XG4gIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDEuMTI1cmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjMzMzMzICFpbXBvcnRhbnQ7IH1cblxuLnUtaDYge1xuICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XG4gIGxpbmUtaGVpZ2h0OiAxLjUgIWltcG9ydGFudDsgfVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1NQQUNJTkdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFV0aWxpdHkgY2xhc3NlcyB0byBwdXQgc3BlY2lmaWMgc3BhY2luZyB2YWx1ZXMgb250byBlbGVtZW50cy4gVGhlIGJlbG93IGxvb3BcbiAqIHdpbGwgZ2VuZXJhdGUgdXMgYSBzdWl0ZSBvZiBjbGFzc2VzIGxpa2U6XG4gKlxuICogICAudS1tYXJnaW4tdG9wIHt9XG4gKiAgIC51LXBhZGRpbmctbGVmdC1sYXJnZSB7fVxuICogICAudS1tYXJnaW4tcmlnaHQtc21hbGwge31cbiAqICAgLnUtcGFkZGluZyB7fVxuICogICAudS1wYWRkaW5nLXJpZ2h0LW5vbmUge31cbiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUgc3RyaW5nLXF1b3RlcyAqL1xuLnUtcGFkZGluZyB7XG4gIHBhZGRpbmc6IDI0cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXRpbnkge1xuICBwYWRkaW5nOiA2cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXNtYWxsIHtcbiAgcGFkZGluZzogMTJweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctbGFyZ2Uge1xuICBwYWRkaW5nOiA0OHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1odWdlIHtcbiAgcGFkZGluZzogOTZweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctbm9uZSB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAyNHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy10b3AtdGlueSB7XG4gIHBhZGRpbmctdG9wOiA2cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXRvcC1zbWFsbCB7XG4gIHBhZGRpbmctdG9wOiAxMnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy10b3AtbGFyZ2Uge1xuICBwYWRkaW5nLXRvcDogNDhweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctdG9wLWh1Z2Uge1xuICBwYWRkaW5nLXRvcDogOTZweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctdG9wLW5vbmUge1xuICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1yaWdodC10aW55IHtcbiAgcGFkZGluZy1yaWdodDogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1yaWdodC1zbWFsbCB7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXJpZ2h0LWxhcmdlIHtcbiAgcGFkZGluZy1yaWdodDogNDhweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctcmlnaHQtaHVnZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLXJpZ2h0LW5vbmUge1xuICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1ib3R0b20ge1xuICBwYWRkaW5nLWJvdHRvbTogMjRweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctYm90dG9tLXRpbnkge1xuICBwYWRkaW5nLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1ib3R0b20tc21hbGwge1xuICBwYWRkaW5nLWJvdHRvbTogMTJweCAhaW1wb3J0YW50OyB9XG5cbi51LXBhZGRpbmctYm90dG9tLWxhcmdlIHtcbiAgcGFkZGluZy1ib3R0b206IDQ4cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLWJvdHRvbS1odWdlIHtcbiAgcGFkZGluZy1ib3R0b206IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLWJvdHRvbS1ub25lIHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLWxlZnQge1xuICBwYWRkaW5nLWxlZnQ6IDI0cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLWxlZnQtdGlueSB7XG4gIHBhZGRpbmctbGVmdDogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1sZWZ0LXNtYWxsIHtcbiAgcGFkZGluZy1sZWZ0OiAxMnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1sZWZ0LWxhcmdlIHtcbiAgcGFkZGluZy1sZWZ0OiA0OHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtcGFkZGluZy1sZWZ0LWh1Z2Uge1xuICBwYWRkaW5nLWxlZnQ6IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1wYWRkaW5nLWxlZnQtbm9uZSB7XG4gIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbiB7XG4gIG1hcmdpbjogMjRweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi10aW55IHtcbiAgbWFyZ2luOiA2cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tc21hbGwge1xuICBtYXJnaW46IDEycHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tbGFyZ2Uge1xuICBtYXJnaW46IDQ4cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4taHVnZSB7XG4gIG1hcmdpbjogOTZweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi1ub25lIHtcbiAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLXRvcCB7XG4gIG1hcmdpbi10b3A6IDI0cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tdG9wLXRpbnkge1xuICBtYXJnaW4tdG9wOiA2cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tdG9wLXNtYWxsIHtcbiAgbWFyZ2luLXRvcDogMTJweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi10b3AtbGFyZ2Uge1xuICBtYXJnaW4tdG9wOiA0OHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLXRvcC1odWdlIHtcbiAgbWFyZ2luLXRvcDogOTZweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi10b3Atbm9uZSB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tcmlnaHQge1xuICBtYXJnaW4tcmlnaHQ6IDI0cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tcmlnaHQtdGlueSB7XG4gIG1hcmdpbi1yaWdodDogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLXJpZ2h0LXNtYWxsIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLXJpZ2h0LWxhcmdlIHtcbiAgbWFyZ2luLXJpZ2h0OiA0OHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLXJpZ2h0LWh1Z2Uge1xuICBtYXJnaW4tcmlnaHQ6IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tcmlnaHQtbm9uZSB7XG4gIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi1ib3R0b20ge1xuICBtYXJnaW4tYm90dG9tOiAyNHB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLWJvdHRvbS10aW55IHtcbiAgbWFyZ2luLWJvdHRvbTogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLWJvdHRvbS1zbWFsbCB7XG4gIG1hcmdpbi1ib3R0b206IDEycHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tYm90dG9tLWxhcmdlIHtcbiAgbWFyZ2luLWJvdHRvbTogNDhweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi1ib3R0b20taHVnZSB7XG4gIG1hcmdpbi1ib3R0b206IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tYm90dG9tLW5vbmUge1xuICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLWxlZnQge1xuICBtYXJnaW4tbGVmdDogMjRweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi1sZWZ0LXRpbnkge1xuICBtYXJnaW4tbGVmdDogNnB4ICFpbXBvcnRhbnQ7IH1cblxuLnUtbWFyZ2luLWxlZnQtc21hbGwge1xuICBtYXJnaW4tbGVmdDogMTJweCAhaW1wb3J0YW50OyB9XG5cbi51LW1hcmdpbi1sZWZ0LWxhcmdlIHtcbiAgbWFyZ2luLWxlZnQ6IDQ4cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tbGVmdC1odWdlIHtcbiAgbWFyZ2luLWxlZnQ6IDk2cHggIWltcG9ydGFudDsgfVxuXG4udS1tYXJnaW4tbGVmdC1ub25lIHtcbiAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHN0cmluZy1xdW90ZXMgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjUFJJTlRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFZlcnkgY3J1ZGUsIHJlc2V0LWxpa2Ugc3R5bGVzIHRha2VuIGZyb20gdGhlIEhUTUw1IEJvaWxlcnBsYXRlOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi81LjMuMC9kaXN0L2RvYy9jc3MubWQjcHJpbnQtc3R5bGVzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9kaXN0L2Nzcy9tYWluLmNzcyNMMjA1LUwyODJcbiAqL1xuQG1lZGlhIHByaW50IHtcbiAgLyoqXG4gICAqIDEuIEJsYWNrIHByaW50cyBmYXN0ZXI6IGh0dHA6Ly93d3cuc2FuYmVpamkuY29tL2FyY2hpdmVzLzk1M1xuICAgKi9cbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIsXG4gICo6Zmlyc3QtbGV0dGVyLFxuICAqOmZpcnN0LWxpbmUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDtcbiAgICAvKiBbMV0gKi9cbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICBhLFxuICBhOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGFbaHJlZl06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiOyB9XG4gIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cih0aXRsZSkgXCIpXCI7IH1cbiAgLyoqXG4gICAqIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsIG9yIHVzZSB0aGUgYGphdmFzY3JpcHQ6YFxuICAgKiBwc2V1ZG8gcHJvdG9jb2wuXG4gICAqL1xuICBhW2hyZWZePVwiI1wiXTphZnRlcixcbiAgYVtocmVmXj1cImphdmFzY3JpcHQ6XCJdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyB9XG4gIHByZSxcbiAgYmxvY2txdW90ZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cbiAgLyoqXG4gICAqIFByaW50aW5nIFRhYmxlczogaHR0cDovL2Nzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUHJpbnRpbmdfVGFibGVzXG4gICAqL1xuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIHAsXG4gIGgyLFxuICBoMyB7XG4gICAgb3JwaGFuczogMztcbiAgICB3aWRvd3M6IDM7IH1cbiAgaDIsXG4gIGgzIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfSB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjSElERVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbiByZWFkZXJzOlxuICogaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eVxuICovXG4udS1oaWRkZW4tdmlzdWFsbHkge1xuICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50O1xuICBoZWlnaHQ6IDFweCAhaW1wb3J0YW50O1xuICBtYXJnaW46IC0xcHggIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xuICB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IH1cblxuLyoqXG4gKiBIaWRlIHZpc3VhbGx5IGFuZCBmcm9tIHNjcmVlbiByZWFkZXJzLlxuICovXG4udS1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuYS5oaWRkZW4tbGluayB7XG4gIGJveC1zaGFkb3c6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b206IHVuc2V0ICFpbXBvcnRhbnQ7IH1cblxuYS5oaWRkZW4tbGluay0tbm8taG92ZXIge1xuICBiYWNrZ3JvdW5kOiB1bnNldCAhaW1wb3J0YW50OyB9XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0JPWC1TSVpJTkdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogTW9yZSBzZW5zaWJsZSBkZWZhdWx0IGJveC1zaXppbmc6XG4gKiBjc3MtdHJpY2tzLmNvbS9pbmhlcml0aW5nLWJveC1zaXppbmctcHJvYmFibHktc2xpZ2h0bHktYmV0dGVyLWJlc3QtcHJhY3RpY2VcbiAqL1xuXG5odG1sIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuKiB7XG5cbiAgJixcbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cblxufVxuIiwiLyohIG5vcm1hbGl6ZS5jc3MgdjUuMC4wIHwgTUlUIExpY2Vuc2UgfCBnaXRodWIuY29tL25lY29sYXMvbm9ybWFsaXplLmNzcyAqL1xuXG4vKipcbiAqIDEuIENoYW5nZSB0aGUgZGVmYXVsdCBmb250IGZhbWlseSBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbiAqIDMuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW5cbiAqICAgIElFIG9uIFdpbmRvd3MgUGhvbmUgYW5kIGluIGlPUy5cbiAqL1xuXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAyICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAzICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMyAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmZvb3RlcixcbmhlYWRlcixcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBmb250IHNpemUgYW5kIG1hcmdpbiBvbiBgaDFgIGVsZW1lbnRzIHdpdGhpbiBgc2VjdGlvbmAgYW5kXG4gKiBgYXJ0aWNsZWAgY29udGV4dHMgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgU2FmYXJpLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRS5cbiAqL1xuXG5maWdjYXB0aW9uLFxuZmlndXJlLFxubWFpbiB7IC8qIDEgKi9cbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IG1hcmdpbiBpbiBJRSA4LlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gRmlyZWZveC5cbiAqIDIuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UgYW5kIElFLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIDEgKi9cbiAgaGVpZ2h0OiAwOyAvKiAxICovXG4gIG92ZXJmbG93OiB2aXNpYmxlOyAvKiAyICovXG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgb24gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIGdhcHMgaW4gbGlua3MgdW5kZXJsaW5lIGluIGlPUyA4KyBhbmQgU2FmYXJpIDgrLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyogMSAqL1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBvdXRsaW5lIG9uIGZvY3VzZWQgbGlua3Mgd2hlbiB0aGV5IGFyZSBhbHNvIGFjdGl2ZSBvciBob3ZlcmVkXG4gKiBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqL1xuXG5hOmFjdGl2ZSxcbmE6aG92ZXIge1xuICBvdXRsaW5lLXdpZHRoOiAwO1xufVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBGaXJlZm94IDM5LS5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFByZXZlbnQgdGhlIGR1cGxpY2F0ZSBhcHBsaWNhdGlvbiBvZiBgYm9sZGVyYCBieSB0aGUgbmV4dCBydWxlIGluIFNhZmFyaSA2LlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogaW5oZXJpdDtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gQ2hyb21lLCBFZGdlLCBhbmQgU2FmYXJpLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZGVyO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzdHlsZSBpbiBBbmRyb2lkIDQuMy0uXG4gKi9cblxuZGZuIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBiYWNrZ3JvdW5kIGFuZCBjb2xvciBpbiBJRSA5LS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdWIsXG5zdXAge1xuICBmb250LXNpemU6IDc1JTtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG4vKiBFbWJlZGRlZCBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICovXG5cbmF1ZGlvLFxudmlkZW8ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gaU9TIDQtNy5cbiAqL1xuXG5hdWRpbzpub3QoW2NvbnRyb2xzXSkge1xuICBkaXNwbGF5OiBub25lO1xuICBoZWlnaHQ6IDA7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC0uXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKipcbiAqIEhpZGUgdGhlIG92ZXJmbG93IGluIElFLlxuICovXG5cbnN2Zzpub3QoOnJvb3QpIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMgKG9waW5pb25hdGVkKS5cbiAqIDIuIFJlbW92ZSB0aGUgbWFyZ2luIGluIEZpcmVmb3ggYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgLyogMSAqL1xuICBmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cbiAgbWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuICogU2hvdyB0aGUgb3ZlcmZsb3cgaW4gSUUuXG4gKiAxLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlLlxuICovXG5cbmJ1dHRvbixcbmlucHV0IHsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3QgeyAvKiAxICovXG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgYSBXZWJLaXQgYnVnIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYCBhbmQgYHZpZGVvYFxuICogICAgY29udHJvbHMgaW4gQW5kcm9pZCA0LlxuICogMi4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqL1xuXG5idXR0b24sXG5odG1sIFt0eXBlPVwiYnV0dG9uXCJdLCAvKiAxICovXG5bdHlwZT1cInJlc2V0XCJdLFxuW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJidXR0b25cIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInJlc2V0XCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJzdWJtaXRcIl06Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogUmVzdG9yZSB0aGUgZm9jdXMgc3R5bGVzIHVuc2V0IGJ5IHRoZSBwcmV2aW91cyBydWxlLlxuICovXG5cbmJ1dHRvbjotbW96LWZvY3VzcmluZyxcblt0eXBlPVwiYnV0dG9uXCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJyZXNldFwiXTotbW96LWZvY3VzcmluZyxcblt0eXBlPVwic3VibWl0XCJdOi1tb3otZm9jdXNyaW5nIHtcbiAgb3V0bGluZTogMXB4IGRvdHRlZCBCdXR0b25UZXh0O1xufVxuXG4vKipcbiAqIENoYW5nZSB0aGUgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nIGluIGFsbCBicm93c2VycyAob3BpbmlvbmF0ZWQpLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiAxLiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSA5LS5cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxucHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIDEgKi9cbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRS5cbiAqL1xuXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLS5cbiAqIDIuIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBJRSAxMC0uXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgYW5kIGNhbmNlbCBidXR0b25zIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1jYW5jZWwtYnV0dG9uLFxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDktLlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gRWRnZSwgSUUsIGFuZCBGaXJlZm94LlxuICovXG5cbmRldGFpbHMsIC8qIDEgKi9cbm1lbnUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5zdW1tYXJ5IHtcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xufVxuXG4vKiBTY3JpcHRpbmdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgOS0uXG4gKi9cblxuY2FudmFzIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFLlxuICovXG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogSGlkZGVuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLS5cbiAqL1xuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1JFU0VUXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEEgdmVyeSBzaW1wbGUgcmVzZXQgdGhhdCBzaXRzIG9uIHRvcCBvZiBOb3JtYWxpemUuY3NzLlxuICovXG5cbmJvZHksXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxuYmxvY2txdW90ZSwgcCwgcHJlLFxuZGwsIGRkLCBvbCwgdWwsXG5maWd1cmUsXG5ocixcbmZpZWxkc2V0LCBsZWdlbmQge1xuICBtYXJnaW46ICAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5cbi8qKlxuICogUmVtb3ZlIHRyYWlsaW5nIG1hcmdpbnMgZnJvbSBuZXN0ZWQgbGlzdHMuXG4gKi9cblxubGkgPiB7XG5cbiAgb2wsXG4gIHVsIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHRhYmxlIHNwYWNpbmcuXG4gKi9cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuXG4vKipcbiAqIDEuIFJlc2V0IENocm9tZSBhbmQgRmlyZWZveCBiZWhhdmlvdXIgd2hpY2ggc2V0cyBhIGBtaW4td2lkdGg6IG1pbi1jb250ZW50O2BcbiAqICAgIG9uIGZpZWxkc2V0cy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIG1pbi13aWR0aDogMDsgLyogWzFdICovXG4gIGJvcmRlcjogMDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjU0hBUkVEXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFNoYXJlZCBkZWNsYXJhdGlvbnMgZm9yIGNlcnRhaW4gZWxlbWVudHMuXG4gKi9cblxuLyoqXG4gKiBBbHdheXMgZGVjbGFyZSBtYXJnaW5zIGluIHRoZSBzYW1lIGRpcmVjdGlvbjpcbiAqIGNzc3dpemFyZHJ5LmNvbS8yMDEyLzA2L3NpbmdsZS1kaXJlY3Rpb24tbWFyZ2luLWRlY2xhcmF0aW9uc1xuICovXG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlciAqL1xuXG5hZGRyZXNzLFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbmJsb2NrcXVvdGUsIHAsIHByZSxcbmRsLCBvbCwgdWwsXG5maWd1cmUsXG5ocixcbnRhYmxlLFxuZmllbGRzZXQge1xuICBAaW5jbHVkZSBpbnVpdC1yZW0obWFyZ2luLWJvdHRvbSwgJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQpO1xufVxuXG5cbi8qKlxuICogQ29uc2lzdGVudCBpbmRlbnRhdGlvbiBmb3IgbGlzdHMuXG4gKi9cblxuZGQsIG9sLCB1bCB7XG4gIEBpbmNsdWRlIGludWl0LXJlbShtYXJnaW4tbGVmdCwgJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQpO1xufVxuXG4vKiBzdHlsZWxpbnQtZW5hYmxlIHNlbGVjdG9yLWxpc3QtY29tbWEtbmV3bGluZS1hZnRlciAqL1xuIiwiLy8vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICAgI1JFTVxuLy8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLy8gQ29udmVydCBhbnkgcHggdmFsdWUgaW50byBpdHMgcmVtIGVxdWl2YWxlbnQuXG5cbkBmdW5jdGlvbiBpbnVpdC1yZW0oJHZhbHVlKSB7XG5cbiAgQGlmICh0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyKSB7XG5cbiAgICBAaWYgKHVuaXQoJHZhbHVlKSAhPSBcInB4XCIpIHtcbiAgICAgIEBlcnJvciBcImAjeyR2YWx1ZX1gIG5lZWRzIHRvIGJlIGEgcGl4ZWwgdmFsdWUuXCI7XG4gICAgfVxuXG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcImAjeyR2YWx1ZX1gIG5lZWRzIHRvIGJlIGEgbnVtYmVyLlwiO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWUgLyAkaW51aXQtZ2xvYmFsLWZvbnQtc2l6ZSAqIDFyZW07XG5cbn1cblxuXG4vLyBNaXhpbiB0byBjcmVhdGUgYSBkZWNsYXJhdGlvbiB3aG9zZSB2YWx1ZSBpcyBhIHJlbSB1bml0LiBBbHNvIHByb3ZpZGUgcGl4ZWxcbi8vIGZhbGxiYWNrLlxuLy9cbi8vIC5zaW1wbGUtdXNhZ2Uge1xuLy8gICBAaW5jbHVkZSBpbnVpdC1yZW0ocGFkZGluZywgMTBweCk7XG4vLyB9XG5cbkBtaXhpbiBpbnVpdC1yZW0oJHByb3BlcnR5LCAkdmFsdWUpIHtcblxuICBAaWYgKHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIpIHtcblxuICAgIEBpZiAodW5pdCgkdmFsdWUpICE9IFwicHhcIikge1xuICAgICAgQGVycm9yIFwiYCN7JHZhbHVlfWAgbmVlZHMgdG8gYmUgYSBwaXhlbCB2YWx1ZS5cIjtcbiAgICB9XG5cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiYCN7JHZhbHVlfWAgbmVlZHMgdG8gYmUgYSBudW1iZXIuXCI7XG4gIH1cblxuICAvLyBXZSBwcm92aWRlIGEgYHB4YCBmYWxsYmFjayBmb3Igb2xkIElFcyBub3Qgc3VwcG9ydGluZyBgcmVtYCB2YWx1ZXMuXG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gICN7JHByb3BlcnR5fTogaW51aXQtcmVtKCR2YWx1ZSk7XG5cbn1cbiIsIi8vLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAgICNDT1JFXG4vLyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vLyBUaGlzIGNvcmUgZmlsZSBzZXRzIHVwIGludWl0Y3Nz4oCZIG1vc3QgaW1wb3J0YW50IHNldHVwIHZhcmlhYmxlcy4gVGhleVxuLy8gdW5kZXJwaW4gYSBsb3Qgb2YgaG93IHRoZSBmcmFtZXdvcmsgZnVuY3Rpb25zIGFuZCBzaG91bGQgYmUgbW9kaWZpZWQgYW5kXG4vLyBwcmVjb25maWd1cmVkIHdpdGggY2F1dGlvbi5cblxuXG4vLyBCYXNlIHR5cG9ncmFwaGljYWwgc3R5bGVzIGFuZCBiYXNlbGluZSBncmlkLiBZb3UgbmVlZCB0byBkZWZpbmUgdGhlc2UgdmFsdWVzXG4vLyBpbiBwaXhlbHM6IGludWl0Y3NzIHdpbGwgY29udmVydCB0aGVtIHRvIG1vcmUgYXBwcm9wcmlhdGUgdW5pdHMuXG5cbiRpbnVpdC1nbG9iYWwtZm9udC1zaXplOiAgICAxNnB4ICFkZWZhdWx0O1xuJGludWl0LWdsb2JhbC1saW5lLWhlaWdodDogIDI0cHggIWRlZmF1bHQ7XG5cblxuXG5cblxuLy8gU3BhY2luZyB2YWx1ZXMgYXJlIGRldGVybWluZWQgYmFzZWQgb24geW91ciBwcm9qZWN04oCZcyBnbG9iYWwgbGluZSBoZWlnaHQgKGkuZVxuLy8geW91ciBiYXNlbGluZSBncmlkKS4gSXQgaXMgbm90IHJlY29tbWVuZGVkIHRoYXQgeW91IG1vZGlmeSB0aGVzZSBmb2xsb3dpbmdcbi8vIHZhcmlhYmxlcyAoaXQgY2FuIGJyZWFrIHlvdXIgdmVydGljYWwgcmh5dGhtKSwgYnV0IGlmIHlvdSBuZWVkIHRvLCB5b3UgY2FuLlxuXG4kaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdDogcm91bmQoJGludWl0LWdsb2JhbC1saW5lLWhlaWdodCkgIWRlZmF1bHQ7XG5cblxuLy8gSG93IG1hbnkgdGltZXMgbGFyZ2VyL3NtYWxsZXIgdGhhbiB0aGUgZGVmYXVsdCBzaG91bGQgb3VyIHNwYWNpbmcgdW5pdFxuLy8gdmFyaWFudHMgYmU/XG5cbiRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWZhY3Rvci10aW55OiAgIDAuMjUgIWRlZmF1bHQ7XG4kaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1mYWN0b3Itc21hbGw6ICAwLjUgICFkZWZhdWx0O1xuJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtZmFjdG9yLWxhcmdlOiAgMiAgICAhZGVmYXVsdDtcbiRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWZhY3Rvci1odWdlOiAgIDQgICAgIWRlZmF1bHQ7XG5cblxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXIEEgUiBOIEkgTiBHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9cbi8vICAgICAgICAgICAgICAgICAgRE8gTk9UIE1PRElGWSBBTllUSElORyBCRVlPTkQgVEhJUyBQT0lOVCAgICAgICAgICAgICAgICAgIC8vXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuXG4vLyBDaGVjayB0aGF0IHRoZSBjaG9zZW4gZm9udCBydWxlcyBhcmUgcGl4ZWwgbnVtYmVycy5cblxuQGVhY2ggJF9pbnVpdC1mb250LWdsb2JhbHMgaW5cbiAgICAgICRpbnVpdC1nbG9iYWwtZm9udC1zaXplXG4gICAgICAkaW51aXQtZ2xvYmFsLWxpbmUtaGVpZ2h0IHtcblxuICBAaWYgKHR5cGUtb2YoJF9pbnVpdC1mb250LWdsb2JhbHMpID09IG51bWJlcikge1xuXG4gICAgQGlmICh1bml0KCRfaW51aXQtZm9udC1nbG9iYWxzKSAhPSBcInB4XCIpIHtcbiAgICAgIEBlcnJvciBcImAjeyRfaW51aXQtZm9udC1nbG9iYWxzfWAgbmVlZHMgdG8gYmUgYSBwaXhlbCB2YWx1ZS5cIjtcbiAgICB9XG5cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiYCN7JF9pbnVpdC1mb250LWdsb2JhbHN9YCBuZWVkcyB0byBiZSBhIG51bWJlci5cIjtcbiAgfVxuXG59XG5cblxuLy8gQ2hlY2sgdGhhdCB0aGUgY2hvc2VuIHNpemUgZmFjdG9ycyBhcmUgdW5pdGxlc3MgbnVtYmVycy5cblxuQGVhY2ggJF9pbnVpdC1zcGFjaW5nLXVuaXQgaW5cbiAgICAgICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWZhY3Rvci10aW55XG4gICAgICAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1mYWN0b3Itc21hbGxcbiAgICAgICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWZhY3Rvci1sYXJnZVxuICAgICAgJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtZmFjdG9yLWh1Z2Uge1xuXG4gIEBpZiAodHlwZS1vZigkX2ludWl0LXNwYWNpbmctdW5pdCkgPT0gbnVtYmVyKSB7XG5cbiAgICBAaWYgKHVuaXRsZXNzKCRfaW51aXQtc3BhY2luZy11bml0KSA9PSBmYWxzZSkge1xuICAgICAgQGVycm9yIFwiYCN7JF9pbnVpdC1zcGFjaW5nLXVuaXR9YCBuZWVkcyB0byBiZSB1bml0bGVzcy5cIjtcbiAgICB9XG5cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiYCN7JF9pbnVpdC1zcGFjaW5nLXVuaXR9YCBuZWVkcyB0byBiZSBhIG51bWJlci5cIjtcbiAgfVxuXG59XG5cblxuLy8gUHJpdmF0ZS9mcmFtZXdvcmstb25seSByZWFzc2lnbm1lbnQuIERvIG5vdCBhbHRlciBhbnl0aGluZyBiZWxvdy5cblxuJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtdGlueTogIHJvdW5kKCRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0ICogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtZmFjdG9yLXRpbnkpO1xuJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw6IHJvdW5kKCRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0ICogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtZmFjdG9yLXNtYWxsKTtcbiRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWxhcmdlOiByb3VuZCgkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdCAqICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWZhY3Rvci1sYXJnZSk7XG4kaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlOiAgcm91bmQoJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQgKiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1mYWN0b3ItaHVnZSk7XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1BBR0VcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogU2ltcGxlIHBhZ2UtbGV2ZWwgc2V0dXAuXG4gKlxuICogMS4gU2V0IHRoZSBkZWZhdWx0IGBmb250LXNpemVgIGFuZCBgbGluZS1oZWlnaHRgIGZvciB0aGUgZW50aXJlIHByb2plY3QsXG4gKiAgICBzb3VyY2VkIGZyb20gb3VyIGRlZmF1bHQgdmFyaWFibGVzLiBUaGUgYGZvbnQtc2l6ZWAgaXMgY2FsY3VsYXRlZCB0byBleGlzdFxuICogICAgaW4gZW1zLCB0aGUgYGxpbmUtaGVpZ2h0YCBpcyBjYWxjdWxhdGVkIHRvIGV4aXN0IHVuaXRsZXNzbHkuXG4gKiAyLiBGb3JjZSBzY3JvbGxiYXJzIHRvIGFsd2F5cyBiZSB2aXNpYmxlIHRvIHByZXZlbnQgYXdrd2FyZCDigJhqdW1wc+KAmSB3aGVuXG4gKiAgICBuYXZpZ2F0aW5nIGJldHdlZW4gcGFnZXMgdGhhdCBkby9kbyBub3QgaGF2ZSBlbm91Z2ggY29udGVudCB0byBwcm9kdWNlXG4gKiAgICBzY3JvbGxiYXJzIG5hdHVyYWxseS5cbiAqIDMuIEVuc3VyZSB0aGUgcGFnZSBhbHdheXMgZmlsbHMgYXQgbGVhc3QgdGhlIGVudGlyZSBoZWlnaHQgb2YgdGhlIHZpZXdwb3J0LlxuICovXG5cbmh0bWwge1xuICBmb250LXNpemU6ICgkaW51aXQtZ2xvYmFsLWZvbnQtc2l6ZSAvIDE2cHgpICogMWVtOyAvKiBbMV0gKi9cbiAgbGluZS1oZWlnaHQ6ICRpbnVpdC1nbG9iYWwtbGluZS1oZWlnaHQgLyAkaW51aXQtZ2xvYmFsLWZvbnQtc2l6ZTsgLyogWzFdICovXG4gIG92ZXJmbG93LXk6IHNjcm9sbDsgLyogWzJdICovXG4gIG1pbi1oZWlnaHQ6IDEwMCU7IC8qIFszXSAqL1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNIRUFESU5HU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBTaW1wbGUgZGVmYXVsdCBzdHlsZXMgZm9yIGhlYWRpbmdzIDEgdGhyb3VnaCA2LiBBbnl0aGluZyBtb3JlIG9waW5pb25hdGVkXG4gKiB0aGFuIHNpbXBsZSBmb250LXNpemUgY2hhbmdlcyBzaG91bGQgbGlrZWx5IGJlIGFwcGxpZWQgdmlhIGNsYXNzZXMgKHNlZTpcbiAqIGh0dHA6Ly9jc3N3aXphcmRyeS5jb20vMjAxNi8wMi9tYW5hZ2luZy10eXBvZ3JhcGh5LW9uLWxhcmdlLWFwcHMvKS5cbiAqL1xuXG5cbi8vIFdlIGhhdmUgYWxsIG9mIG91ciBoZWFkaW5nIGZvbnQgc2l6ZXMgZGVmaW5lZCBoZXJlLiBQYXNzaW5nIHRoZXNlIHBpeGVsXG4vLyB2YWx1ZXMgaW50byBvdXIgYGludWl0LWZvbnQtc2l6ZSgpYCBtaXhpbiB3aWxsIGdlbmVyYXRlIGEgcmVtLWJhc2VkXG4vLyBgZm9udC1zaXplYCB3aXRoIGEgcGl4ZWwgZmFsbGJhY2ssIGFzIHdlbGwgYXMgZ2VuZXJhdGluZyBhIGBsaW5lLWhlaWdodGAgdGhhdFxuLy8gd2lsbCBzaXQgb24gb3VyIGJhc2VsaW5lIGdyaWQuXG5cbiRpbnVpdC1mb250LXNpemUtaDE6ICAzNnB4ICFkZWZhdWx0O1xuJGludWl0LWZvbnQtc2l6ZS1oMjogIDI4cHggIWRlZmF1bHQ7XG4kaW51aXQtZm9udC1zaXplLWgzOiAgMjRweCAhZGVmYXVsdDtcbiRpbnVpdC1mb250LXNpemUtaDQ6ICAyMHB4ICFkZWZhdWx0O1xuJGludWl0LWZvbnQtc2l6ZS1oNTogIDE4cHggIWRlZmF1bHQ7XG4kaW51aXQtZm9udC1zaXplLWg2OiAgMTZweCAhZGVmYXVsdDtcblxuXG5oMSB7XG4gIEBpbmNsdWRlIGludWl0LWZvbnQtc2l6ZSgkaW51aXQtZm9udC1zaXplLWgxKTtcbn1cblxuaDIge1xuICBAaW5jbHVkZSBpbnVpdC1mb250LXNpemUoJGludWl0LWZvbnQtc2l6ZS1oMik7XG59XG5cbmgzIHtcbiAgQGluY2x1ZGUgaW51aXQtZm9udC1zaXplKCRpbnVpdC1mb250LXNpemUtaDMpO1xufVxuXG5oNCB7XG4gIEBpbmNsdWRlIGludWl0LWZvbnQtc2l6ZSgkaW51aXQtZm9udC1zaXplLWg0KTtcbn1cblxuaDUge1xuICBAaW5jbHVkZSBpbnVpdC1mb250LXNpemUoJGludWl0LWZvbnQtc2l6ZS1oNSk7XG59XG5cbmg2IHtcbiAgQGluY2x1ZGUgaW51aXQtZm9udC1zaXplKCRpbnVpdC1mb250LXNpemUtaDYpO1xufVxuIiwiLy8vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICAgI0ZPTlQtU0laRVxuLy8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLy8gR2VuZXJhdGUgYSBmb250LXNpemUgYW5kIGJhc2VsaW5lLWNvbXBhdGlibGUgbGluZS1oZWlnaHQuXG5AbWl4aW4gaW51aXQtZm9udC1zaXplKCRmb250LXNpemUsICRsaW5lLWhlaWdodDogYXV0bywgJGltcG9ydGFudDogZmFsc2UpIHtcblxuICBAaWYgKHR5cGUtb2YoJGZvbnQtc2l6ZSkgPT0gbnVtYmVyKSB7XG4gICAgQGlmICh1bml0KCRmb250LXNpemUpICE9IFwicHhcIikge1xuICAgICAgQGVycm9yIFwiYCN7JGZvbnQtc2l6ZX1gIG5lZWRzIHRvIGJlIGEgcGl4ZWwgdmFsdWUuXCI7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJgI3skZm9udC1zaXplfWAgbmVlZHMgdG8gYmUgYSBudW1iZXIuXCI7XG4gIH1cblxuICBAaWYgKCRpbXBvcnRhbnQgPT0gdHJ1ZSkge1xuICAgICRpbXBvcnRhbnQ6ICFpbXBvcnRhbnQ7XG4gIH0gQGVsc2VpZiAoJGltcG9ydGFudCA9PSBmYWxzZSkge1xuICAgICRpbXBvcnRhbnQ6IG51bGw7XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcImAjeyRpbXBvcnRhbnR9YCBuZWVkcyB0byBiZSBgdHJ1ZWAgb3IgYGZhbHNlYC5cIlxuICB9XG5cbiAgLy8gV2UgcHJvdmlkZSBhIGBweGAgZmFsbGJhY2sgZm9yIG9sZCBJRXMgbm90IHN1cHBvcnRpbmcgYHJlbWAgdmFsdWVzLlxuICBmb250LXNpemU6ICRmb250LXNpemUgJGltcG9ydGFudDtcbiAgZm9udC1zaXplOiAoJGZvbnQtc2l6ZSAvICRpbnVpdC1nbG9iYWwtZm9udC1zaXplKSAqIDFyZW0gJGltcG9ydGFudDtcblxuICBAaWYgKCRsaW5lLWhlaWdodCA9PSAnYXV0bycpIHtcbiAgICBsaW5lLWhlaWdodDogY2VpbCgkZm9udC1zaXplIC8gJGludWl0LWdsb2JhbC1saW5lLWhlaWdodCkgKiAoJGludWl0LWdsb2JhbC1saW5lLWhlaWdodCAvICRmb250LXNpemUpICRpbXBvcnRhbnQ7XG4gIH1cblxuICBAZWxzZSB7XG5cbiAgICBAaWYgKHR5cGUtb2YoJGxpbmUtaGVpZ2h0KSA9PSBudW1iZXIgb3IgJGxpbmUtaGVpZ2h0ID09ICdpbmhlcml0JyBvciAkbGluZS1oZWlnaHQgPT0gJ25vcm1hbCcpIHtcbiAgICAgIGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQgJGltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAZWxzZWlmICgkbGluZS1oZWlnaHQgIT0gJ25vbmUnIGFuZCAkbGluZS1oZWlnaHQgIT0gZmFsc2UpIHtcbiAgICAgIEBlcnJvciBcIkTigJlvaCEgYCN7JGxpbmUtaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgdmFsdWUgZm9yIGAkbGluZS1oZWlnaHRgLlwiXG4gICAgfVxuXG4gIH1cblxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNJTUFHRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gRmx1aWQgaW1hZ2VzIGZvciByZXNwb25zaXZlIHB1cnBvc2VzLlxuICogMi4gT2Zmc2V0IGBhbHRgIHRleHQgZnJvbSBzdXJyb3VuZGluZyBjb3B5LlxuICogMy4gU2V0dGluZyBgdmVydGljYWwtYWxpZ25gIHJlbW92ZXMgdGhlIHdoaXRlc3BhY2UgdGhhdCBhcHBlYXJzIHVuZGVyIGBpbWdgXG4gKiAgICBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGRyb3BwZWQgaW50byBhIHBhZ2UgYXMtaXMuIFNhZmVyIGFsdGVybmF0aXZlIHRvXG4gKiAgICB1c2luZyBgZGlzcGxheTogYmxvY2s7YC5cbiAqL1xuXG5pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuICBmb250LXN0eWxlOiBpdGFsaWM7IC8qIFsyXSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBbM10gKi9cbn1cblxuXG4vKipcbiAqIDEuIElmIGEgYHdpZHRoYCBhbmQvb3IgYGhlaWdodGAgYXR0cmlidXRlIGhhdmUgYmVlbiBleHBsaWNpdGx5IGRlZmluZWQsIGxldOKAmXNcbiAqICAgIG5vdCBtYWtlIHRoZSBpbWFnZSBmbHVpZC5cbiAqL1xuXG5pbWdbd2lkdGhdLCAvKiBbMV0gKi9cbmltZ1toZWlnaHRdIHsgIC8qIFsxXSAqL1xuICBtYXgtd2lkdGg6IG5vbmU7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1RBQkxFU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiAxLiBFbnN1cmUgdGFibGVzIGZpbGwgdXAgYXMgbXVjaCBzcGFjZSBhcyBwb3NzaWJsZS5cbiAqL1xuXG50YWJsZSB7XG4gIHdpZHRoOiAxMDAlOyAvKiBbMV0gKi9cbn1cbiIsIi8vIGJhc2Ugc3R5bGluZyBmb3IgaHRtbCBhbmQgYm9keSB0YWdzXG5cbmh0bWwge1xuICBmb250LXNpemU6ICRodG1sLWZvbnQtc2l6ZTtcbn1cblxuYm9keSB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLXJlZ3VsYXI7XG4gIEBpbmNsdWRlIGZvbnQtc2l6ZSgkYm9keS1mb250LXNpemUtcHgpO1xuICBsaW5lLWhlaWdodDogJGJvZHktbGluZS1oZWlnaHQ7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcbn1cbiIsIi8vIHR5cG9ncmFwaGljIHZhcmlhYmxlc1xuXG4vLyBXZSB1c2UgMTAwJSA9IDE2cHggZm9yIHRoZSBodG1sIGVsZW1lbnQgc28gdGhhdCB1c2VyIHNjYWxpbmcgd29ya3MuXG4kaHRtbC1mb250LXNpemU6IDEwMCU7XG4vLyBPbmx5IHVzZSB0aGlzIHZhcmlhYmxlIGZvciBtYXRoXG4kaHRtbC1mb250LXNpemUtcHg6IDE2cHg7XG5cbi8vIGF1Z21lbnRlZCBmb3V0aCAoMSAvIHNxcnQoMikpIG1vZHVsYXIgc2NhbGUgcmF0aW9cbiRtb2R1bGFyLXNjYWxlLXJhdGlvOiAxLjQxNDtcblxuLy8gQm9keSB0ZXh0XG4vLyBUaGlzIHNldHMgdGhlIHplcm8gcG9pbnQgZm9yIHRoZSBtb2R1bGFyIHNjYWxlIHNvIHRoYXQgbW9kdWxhci1zY2FsZSgwKVxuLy8gaXMgJGJvZHktZm9udC1zaXplLXB4XG4kYm9keS1mb250LXNpemUtcHg6IDE4cHg7XG5cbi8vIExlYWRpbmdcbiRib2R5LWxpbmUtaGVpZ2h0OiAxLjQ1O1xuJGhlYWRlci1saW5lLWhlaWdodDogMS4wNTtcblxuLy8gVHlwaWNhbGx5IHVzZWQgdG8gc2V0IGEgbWFyZ2luLWJvdHRvbSwgaW4gcmVtLCB0aGF0J3MgYSBtdWx0aXBsZSBvZiB0aGVcbi8vIHR5cGUgbGVhZGluZy5cbkBmdW5jdGlvbiB2ZXJ0aWNhbC1tYXJnaW4oJGZhY3Rvcikge1xuICBAcmV0dXJuICRmYWN0b3IgKiAkYm9keS1mb250LXNpemUtcHgvJGh0bWwtZm9udC1zaXplLXB4ICogJGJvZHktbGluZS1oZWlnaHQgKyByZW07XG59XG5cbi8vIGNvbXB1dGVzIGZvbnQtc2l6ZSBpbiByZW0gd2l0aCBwaXhlbCBmYWxsIGJhY2suXG4vLyBweFNpemUgaW5wdXQgbXVzdCBiZSBpbiBwaXhlbHNcbkBtaXhpbiBmb250LXNpemUoJHB4U2l6ZSkge1xuICBmb250LXNpemU6ICRweFNpemU7XG4gIGZvbnQtc2l6ZTogJHB4U2l6ZSAvICRodG1sLWZvbnQtc2l6ZS1weCArIHJlbTtcbn1cblxuLy8gY29tcHV0ZSBhIHNpemUgZ2l2ZW4gYW4gZXhwb25lbnQgZm9yIHRoZSBtb2R1bGFyIHNjYWxlXG5AZnVuY3Rpb24gbW9kdWxhci1zY2FsZSgkZXhwKSB7XG4gIEByZXR1cm4gcG9seS1wb3coJG1vZHVsYXItc2NhbGUtcmF0aW8sICRleHApICogJGJvZHktZm9udC1zaXplLXB4O1xufVxuXG4vLyBtb2R1bGFyIHNjYWxlIG9mIHNpemVzIGluIHBpeGVsc1xuJGZvbnQtc2l6ZS1iLXB4OiBtb2R1bGFyLXNjYWxlKC0yKTtcbiRmb250LXNpemUtYS1weDogbW9kdWxhci1zY2FsZSgtMSk7XG4kZm9udC1zaXplLTAtcHg6IG1vZHVsYXItc2NhbGUoMCk7XG4kZm9udC1zaXplLTEtcHg6IG1vZHVsYXItc2NhbGUoMSk7XG4kZm9udC1zaXplLTItcHg6IG1vZHVsYXItc2NhbGUoMik7XG4kZm9udC1zaXplLTMtcHg6IG1vZHVsYXItc2NhbGUoMyk7XG4kZm9udC1zaXplLTQtcHg6IG1vZHVsYXItc2NhbGUoNCk7XG4kZm9udC1zaXplLTUtcHg6IG1vZHVsYXItc2NhbGUoNSk7XG4kZm9udC1zaXplLTYtcHg6IG1vZHVsYXItc2NhbGUoNik7XG5cbi8vIHNlbWFudGljIGFsaWFzZXNcbiIsIkBtaXhpbiBzb3VyY2Utc2Fucy1yZWd1bGFyIHtcbiAgZm9udC1mYW1pbHk6ICdzb3VyY2Utc2Fucy1wcm8nLCAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ1ZlcmRhbmEnO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBtaXhpbiBzb3VyY2Utc2Fucy1ib2xkIHtcbiAgZm9udC1mYW1pbHk6ICdzb3VyY2Utc2Fucy1wcm8nLCAnSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ1ZlcmRhbmEnO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG4iLCIvLyBDb2xvciBwYWxldHRlcyBhbmQgc2VtYW50aWMgY29sb3IgY2hvaWNlc1xuXG4vLyBDb2xvcnMgZnJvbSB0aGUgTFNTVCBsb2dvICh0d28tYmx1ZSBzdHJpcGUgdmVyc2lvbilcbiRsb2dvLTE6ICMwMDA7XG4kbG9nby0yOiAjMjgzZjk2OyAgLy8gZGFyayBibHVlXG4kbG9nby0zOiAjNTI2ZmI1OyAgLy8gaW50ZXJtZWRpYXRlIGJsdWVcbiRsb2dvLTQ6ICNjY2RjZjE7ICAvLyBsaWdodCBibHVlXG4kbG9nby1yZWQ6ICNkYjFmMjY7XG5cbi8vIExTU1Qub3JnIHBhbGV0dGVcbi8vIENvbG9ycyBmcm9tIHRoZSBwcm9qZWN0IHdlYnNpdGVcbiRsc3N0LWRhcmstYmFja2dyb3VuZDogIzBjNWM4NTsgLy8gYSBkYXJrIHRlYWxcbiRsc3N0LWJyaWdodC1ibHVlOiAjMDA5OWNjOyAgLy8gYSBicmlnaHQgYmx1ZVxuJGxzc3Qtd2hpdGUtYmx1ZTogI2M5ZWFmNjsgIC8vIGEgd2hpdGUgdGludGVkIGJsdWVcblxuLy8gVHlwb2dyYXBoaWMgY29sb3JzXG4kYm9keS1jb2xvcjogIzMzMztcbiRsaW5rLXVuZGVybGluZS1jb2xvcjogJGxvZ28tNDtcbiIsIi8vIERlZmF1bHQgc3R5bGVzIGZvciBoTiBlbGVtZW50c1xuLy8gSWRlYWxseSB0aGVzZSBzaG91bGQgYWxsIGJlIG92ZXJyaWRlbiBieSBzZW1hbnRpYyBhdG9tc1xuXG5oMSB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLXJlZ3VsYXI7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTQtcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuXG5oMiB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLXJlZ3VsYXI7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTMtcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuXG5oMyB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLXJlZ3VsYXI7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTItcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuXG5oNCB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLWJvbGQ7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTEtcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuXG5oNSB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLWJvbGQ7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTAtcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuXG5oNiB7XG4gIEBpbmNsdWRlIHNvdXJjZS1zYW5zLXJlZ3VsYXI7XG4gIC8vIEBpbmNsdWRlIGZvbnQtc2l6ZSgkZm9udC1zaXplLTAtcHgpO1xuICAvLyBsaW5lLWhlaWdodDogJGhlYWRlci1saW5lLWhlaWdodDtcbiAgLy8gdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgLy8gbWFyZ2luLXRvcDogMDtcbiAgLy8gbWFyZ2luLWJvdHRvbTogdmVydGljYWwtbWFyZ2luKDEpO1xufVxuIiwiLy8gTGluayBzdHlsaW5nXG5cbi8vIEJhc2VkIG9uIHJ1bGUgNDMgZnJvbSB0eXBvZ3JhcGh5Y2hlY2tsaXN0LmNvbVxuYSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGluay11bmRlcmxpbmUtY29sb3I7XG4gIGNvbG9yOiAkYm9keS1jb2xvcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAvLyBib3gtc2hhZG93OiBpbnNldCAwIC00cHggMCAkbGluay11bmRlcmxpbmUtY29sb3I7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgLTNweCAwICRsaW5rLXVuZGVybGluZS1jb2xvcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2Utb3V0O1xufVxuXG5cbmE6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAkbGluay11bmRlcmxpbmUtY29sb3I7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1dSQVBQRVJTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFBhZ2UtbGV2ZWwgY29uc3RyYWluaW5nIGFuZCB3cmFwcGluZyBlbGVtZW50cy5cbiAqL1xuXG4kaW51aXQtd3JhcHBlci13aWR0aDogMTIwMHB4ICFkZWZhdWx0O1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuQGlmICh0eXBlLW9mKCRpbnVpdC13cmFwcGVyLXdpZHRoKSAhPSBudW1iZXIpIHtcbiAgQGVycm9yIFwiYCN7JGludWl0LXdyYXBwZXItd2lkdGh9YCBuZWVkcyB0byBiZSBhIG51bWJlci5cIlxufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG4uby13cmFwcGVyIHtcbiAgQGluY2x1ZGUgaW51aXQtY2xlYXJmaXgoKTtcbiAgcGFkZGluZy1yaWdodDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQ7XG4gIHBhZGRpbmctbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiAgYXV0bztcbiAgbWF4LXdpZHRoOiAkaW51aXQtd3JhcHBlci13aWR0aDtcbn1cblxuXG5cblxuXG4vKiBTaXplIHZhcmlhbnRzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLm8td3JhcHBlci0tdGlueSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG4gIHBhZGRpbmctbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG59XG5cbi5vLXdyYXBwZXItLXNtYWxsIHtcbiAgcGFkZGluZy1yaWdodDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw7XG4gIHBhZGRpbmctbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsO1xufVxuXG4uby13cmFwcGVyLS1sYXJnZSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWxhcmdlO1xuICBwYWRkaW5nLWxlZnQ6ICAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbn1cblxuLm8td3JhcHBlci0taHVnZSB7XG4gIHBhZGRpbmctcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWh1Z2U7XG4gIHBhZGRpbmctbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWh1Z2U7XG59XG4iLCIvLy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gICAjQ0xFQVJGSVhcbi8vICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8vIE1peGluIHRvIGRyb3AgbWljcm8gY2xlYXJmaXggaW50byBhIHNlbGVjdG9yLiBGdXJ0aGVyIHJlYWRpbmc6XG4vLyBodHRwOi8vd3d3LmNzc21vam8uY29tL3RoZS12ZXJ5LWxhdGVzdC1jbGVhcmZpeC1yZWxvYWRlZC9cbi8vXG4vLyAudXNhZ2Uge1xuLy8gICBAaW5jbHVkZSBpbnVpdC1jbGVhcmZpeCgpO1xuLy8gfVxuQG1peGluIGludWl0LWNsZWFyZml4KCkge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCIgIWltcG9ydGFudDtcbiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7XG4gIH1cblxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNMQVlPVVRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogR3JpZC1saWtlIGxheW91dCBzeXN0ZW0uXG4gKlxuICogVGhlIGxheW91dCBvYmplY3QgcHJvdmlkZXMgdXMgd2l0aCBhIGNvbHVtbi1zdHlsZSBsYXlvdXQgc3lzdGVtLiBUaGlzIGZpbGVcbiAqIGNvbnRhaW5zIHRoZSBiYXNpYyBzdHJ1Y3R1cmFsIGVsZW1lbnRzLCBidXQgY2xhc3NlcyBzaG91bGQgYmUgY29tcGxlbWVudGVkXG4gKiB3aXRoIHdpZHRoIHV0aWxpdGllcywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRcIj5cbiAqICAgICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRfX2l0ZW0gIHUtMS8yXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMlwiPlxuICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqXG4gKiBUaGUgYWJvdmUgd2lsbCBjcmVhdGUgYSB0d28tY29sdW1uIHN0cnVjdHVyZSBpbiB3aGljaCBlYWNoIGNvbHVtbiB3aWxsXG4gKiBmbHVpZGx5IGZpbGwgaGFsZiBvZiB0aGUgd2lkdGggb2YgdGhlIHBhcmVudC4gV2UgY2FuIGhhdmUgbW9yZSBjb21wbGV4XG4gKiBzeXN0ZW1zOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0XCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMSAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMiAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMiAgdS0xLzNAbWVkaXVtXCI+XG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIFRoZSBhYm92ZSB3aWxsIGNyZWF0ZSBhIHN5c3RlbSBpbiB3aGljaCB0aGUgZmlyc3QgaXRlbSB3aWxsIGJlIDEwMCUgd2lkdGhcbiAqIHVudGlsIHdlIGVudGVyIG91ciBtZWRpdW0gYnJlYWtwb2ludCwgd2hlbiBpdCB3aWxsIGJlY29tZSAzMy4zMzMlIHdpZHRoLiBUaGVcbiAqIHNlY29uZCBhbmQgdGhpcmQgaXRlbXMgd2lsbCBiZSA1MCUgb2YgdGhlaXIgcGFyZW50LCB1bnRpbCB0aGV5IGFsc28gYmVjb21lXG4gKiAzMy4zMzMlIHdpZHRoIGF0IHRoZSBtZWRpdW0gYnJlYWtwb2ludC5cbiAqXG4gKiBXZSBjYW4gYWxzbyBtYW5pcHVsYXRlIGVudGlyZSBsYXlvdXQgc3lzdGVtcyBieSBhZGRpbmcgYSBzZXJpZXMgb2YgbW9kaWZpZXJzXG4gKiB0byB0aGUgYC5vLWxheW91dGAgYmxvY2suIEZvciBleGFtcGxlOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0ICBvLWxheW91dC0tcmV2ZXJzZVwiPlxuICpcbiAqIFRoaXMgd2lsbCByZXZlcnNlIHRoZSBkaXNwbGF5ZWQgb3JkZXIgb2YgdGhlIHN5c3RlbSBzbyB0aGF0IGl0IHJ1bnMgaW4gdGhlXG4gKiBvcHBvc2l0ZSBvcmRlciB0byBvdXIgc291cmNlLCBlZmZlY3RpdmVseSBmbGlwcGluZyB0aGUgc3lzdGVtIG92ZXIuXG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXQgIG8tbGF5b3V0LS1bcmlnaHR8Y2VudGVyXVwiPlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgc3lzdGVtIHRvIGZpbGwgdXAgZnJvbSBlaXRoZXIgdGhlIGNlbnRyZSBvciB0aGUgcmlnaHRcbiAqIGhhbmQgc2lkZS4gRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZmlsbCB1cCB0aGUgbGF5b3V0IHN5c3RlbSBmcm9tIHRoZSBsZWZ0LlxuICpcbiAqIFRoZXJlIGFyZSBwbGVudHkgbW9yZSBvcHRpb25zIGF2YWlsYWJsZSB0byB1czogZXhwbG9yZSB0aGVtIGJlbG93LlxuICovXG5cbi8vIEJ5IGRlZmF1bHQgd2UgdXNlIHRoZSBgZm9udC1zaXplOiAwO2AgdHJpY2sgdG8gcmVtb3ZlIHdoaXRlc3BhY2UgYmV0d2VlblxuLy8gaXRlbXMuIFNldCB0aGlzIHRvIHRydWUgaW4gb3JkZXIgdG8gdXNlIGEgbWFya3VwLWJhc2VkIHN0cmF0ZWd5IGxpa2Vcbi8vIGNvbW1lbnRpbmcgb3V0IHdoaXRlc3BhY2Ugb3IgbWluaWZ5aW5nIEhUTUwuXG4kaW51aXQtdXNlLW1hcmt1cC1maXg6IGZhbHNlICFkZWZhdWx0O1xuXG5cblxuXG5cbi8qIERlZmF1bHQvbWFuZGF0b3J5IGNsYXNzZXMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEFsbG93cyB1cyB0byB1c2UgdGhlIGxheW91dCBvYmplY3Qgb24gYW55IHR5cGUgb2YgZWxlbWVudC5cbiAqIDIuIFdlIG5lZWQgdG8gZGVmZW5zaXZlbHkgcmVzZXQgYW55IGJveC1tb2RlbCBwcm9wZXJ0aWVzLlxuICogMy4gVXNlIHRoZSBuZWdhdGl2ZSBtYXJnaW4gdHJpY2sgZm9yIG11bHRpLXJvdyBncmlkczpcbiAqICAgIGh0dHA6Ly9jc3N3aXphcmRyeS5jb20vMjAxMS8wOC9idWlsZGluZy1iZXR0ZXItZ3JpZC1zeXN0ZW1zL1xuICovXG5cbi5vLWxheW91dCB7XG4gIGRpc3BsYXk6IGJsb2NrOyAvKiBbMV0gKi9cbiAgbWFyZ2luOiAgMDsgLyogWzJdICovXG4gIHBhZGRpbmc6IDA7IC8qIFsyXSAqL1xuICBsaXN0LXN0eWxlOiBub25lOyAvKiBbMV0gKi9cbiAgbWFyZ2luLWxlZnQ6IC0kaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdDsgLyogWzNdICovXG5cbiAgQGlmICgkaW51aXQtdXNlLW1hcmt1cC1maXggPT0gZmFsc2UpIHtcbiAgICBmb250LXNpemU6IDA7XG4gIH1cblxufVxuXG5cbiAgLyoqXG4gICAqIDEuIFJlcXVpcmVkIGluIG9yZGVyIHRvIGNvbWJpbmUgZmx1aWQgd2lkdGhzIHdpdGggZml4ZWQgZ3V0dGVycy5cbiAgICogMi4gQWxsb3dzIHVzIHRvIG1hbmlwdWxhdGUgZ3JpZHMgdmVydGljYWxseSwgd2l0aCB0ZXh0LWxldmVsIHByb3BlcnRpZXMsXG4gICAqICAgIGV0Yy5cbiAgICogMy4gRGVmYXVsdCBpdGVtIGFsaWdubWVudCBpcyB3aXRoIHRoZSB0b3BzIG9mIGVhY2ggb3RoZXIsIGxpa2UgbW9zdFxuICAgKiAgICB0cmFkaXRpb25hbCBncmlkL2xheW91dCBzeXN0ZW1zLlxuICAgKiA0LiBCeSBkZWZhdWx0LCBhbGwgbGF5b3V0IGl0ZW1zIGFyZSBmdWxsLXdpZHRoIChtb2JpbGUgZmlyc3QpLlxuICAgKiA1LiBHdXR0ZXJzIHByb3ZpZGVkIGJ5IGxlZnQgcGFkZGluZzpcbiAgICogICAgaHR0cDovL2Nzc3dpemFyZHJ5LmNvbS8yMDExLzA4L2J1aWxkaW5nLWJldHRlci1ncmlkLXN5c3RlbXMvXG4gICAqIDYuIEZhbGxiYWNrIGZvciBvbGQgSUVzIG5vdCBzdXBwb3J0aW5nIGByZW1gIHZhbHVlcy5cbiAgICovXG5cbiAgLm8tbGF5b3V0X19pdGVtIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiBbMV0gKi9cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIFsyXSAqL1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7IC8qIFszXSAqL1xuICAgIHdpZHRoOiAxMDAlOyAvKiBbNF0gKi9cbiAgICBwYWRkaW5nLWxlZnQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0OyAvKiBbNV0gKi9cblxuICAgIEBpZiAoJGludWl0LXVzZS1tYXJrdXAtZml4ID09IGZhbHNlKSB7XG4gICAgICBmb250LXNpemU6ICRpbnVpdC1nbG9iYWwtZm9udC1zaXplOyAvKiBbNl0gKi9cbiAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG5cbiAgfVxuXG5cblxuXG5cbi8qIEd1dHRlciBzaXplIG1vZGlmaWVycy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vLWxheW91dC0tdGlueSB7XG4gIG1hcmdpbi1sZWZ0OiAtJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtdGlueTtcblxuICA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC10aW55O1xuICB9XG5cbn1cblxuXG4uby1sYXlvdXQtLXNtYWxsIHtcbiAgbWFyZ2luLWxlZnQ6IC0kaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1zbWFsbDtcblxuICA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1zbWFsbDtcbiAgfVxuXG59XG5cblxuLm8tbGF5b3V0LS1sYXJnZSB7XG4gIG1hcmdpbi1sZWZ0OiAtJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtbGFyZ2U7XG5cbiAgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtbGFyZ2U7XG4gIH1cblxufVxuXG5cbi5vLWxheW91dC0taHVnZSB7XG4gIG1hcmdpbi1sZWZ0OiAtJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtaHVnZTtcblxuICA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlO1xuICB9XG5cbn1cblxuXG4uby1sYXlvdXQtLWZsdXNoIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG5cbiAgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxuXG59XG5cblxuXG5cblxuLyogVmVydGljYWwgYWxpZ25tZW50IG1vZGlmaWVycy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWxpZ24gYWxsIGdyaWQgaXRlbXMgdG8gdGhlIG1pZGRsZXMgb2YgZWFjaCBvdGhlci5cbiAqL1xuXG4uby1sYXlvdXQtLW1pZGRsZSB7XG5cbiAgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cblxufVxuXG5cbi8qKlxuICogQWxpZ24gYWxsIGdyaWQgaXRlbXMgdG8gdGhlIGJvdHRvbXMgb2YgZWFjaCBvdGhlci5cbiAqL1xuXG4uby1sYXlvdXQtLWJvdHRvbSB7XG5cbiAgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxufVxuXG5cblxuXG5cbi8qIEZpbGwgb3JkZXIgbW9kaWZpZXJzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBGaWxsIHVwIHRoZSBsYXlvdXQgc3lzdGVtIGZyb20gdGhlIGNlbnRyZS5cbiAqL1xuXG4uby1sYXlvdXQtLWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICA+IC5vLWxheW91dF9faXRlbSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBGaWxsIHVwIHRoZSBsYXlvdXQgc3lzdGVtIGZyb20gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAqL1xuXG4uby1sYXlvdXQtLXJpZ2h0IHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgPiAuby1sYXlvdXRfX2l0ZW0ge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxufVxuXG5cbi8qKlxuICogUmV2ZXJzZSB0aGUgcmVuZGVyZWQgb3JkZXIgb2YgdGhlIGdyaWQgc3lzdGVtLlxuICovXG5cbi5vLWxheW91dC0tcmV2ZXJzZSB7XG4gIGRpcmVjdGlvbjogcnRsO1xuXG4gID4gLm8tbGF5b3V0X19pdGVtIHtcbiAgICBkaXJlY3Rpb246IGx0cjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG5cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjTUVESUFcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUGxhY2UgYW55IGltYWdlLSBhbmQgdGV4dC1saWtlIGNvbnRlbnQgc2lkZS1ieS1zaWRlLCBhcyBwZXI6XG4gKiBodHRwOi8vd3d3LnN0dWJib3JuZWxsYS5vcmcvY29udGVudC8yMDEwLzA2LzI1L3RoZS1tZWRpYS1vYmplY3Qtc2F2ZXMtaHVuZHJlZHMtb2YtbGluZXMtb2YtY29kZVxuICovXG5cbi5vLW1lZGlhIHtcbiAgQGluY2x1ZGUgaW51aXQtY2xlYXJmaXgoKTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cblxuICAuby1tZWRpYV9faW1nIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0O1xuXG4gICAgPiBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gIH1cblxuXG4gIC5vLW1lZGlhX19ib2R5IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgJixcbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gIH1cblxuXG5cblxuXG4vKiBTaXplIHZhcmlhbnRzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIE1vZGlmeSB0aGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gb3VyIGltYWdlIGFuZCBvdXIgdGV4dC4gV2UgYWxzbyBoYXZlXG4gKiByZXZlcnNpYmxlIG9wdGlvbnMgZm9yIGFsbCBhdmFpbGFibGUgc2l6ZXMuXG4gKi9cblxuLm8tbWVkaWEtLXRpbnkge1xuXG4gID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC10aW55O1xuICB9XG5cbiAgJi5vLW1lZGlhLS1yZXZlcnNlIHtcblxuICAgID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cbi5vLW1lZGlhLS1zbWFsbCB7XG5cbiAgPiAuby1tZWRpYV9faW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsO1xuICB9XG5cbiAgJi5vLW1lZGlhLS1yZXZlcnNlIHtcblxuICAgID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsO1xuICAgIH1cblxuICB9XG5cbn1cblxuXG4uby1tZWRpYS0tbGFyZ2Uge1xuXG4gID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbiAgfVxuXG4gICYuby1tZWRpYS0tcmV2ZXJzZSB7XG5cbiAgICA+IC5vLW1lZGlhX19pbWcge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWFyZ2luLWxlZnQ6ICAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbiAgICB9XG5cbiAgfVxuXG59XG5cblxuLm8tbWVkaWEtLWh1Z2Uge1xuXG4gID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlO1xuICB9XG5cbiAgJi5vLW1lZGlhLS1yZXZlcnNlIHtcblxuICAgID4gLm8tbWVkaWFfX2ltZyB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICBtYXJnaW4tbGVmdDogICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWh1Z2U7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuXG5cbi8qIFJldmVyc2VkIG1lZGlhIG9iamVjdHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vLW1lZGlhLS1yZXZlcnNlIHtcblxuICA+IC5vLW1lZGlhX19pbWcge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0O1xuICB9XG5cbn1cblxuXG5cblxuXG4vKiBHdXR0ZXJsZXNzIG1lZGlhIG9iamVjdHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vLW1lZGlhLS1mbHVzaCB7XG5cbiAgPiAuby1tZWRpYV9faW1nIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6ICAwO1xuICB9XG5cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjRkxBR1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBUaGUgZmxhZyBvYmplY3QgaXMgYSBkZXNpZ24gcGF0dGVybiBzaW1pbGFyIHRvIHRoZSBtZWRpYSBvYmplY3QsIGhvd2V2ZXIgaXRcbiAqIHV0aWxpc2VzIGBkaXNwbGF5OiB0YWJsZVstY2VsbF07YCB0byBnaXZlIHVzIGNvbnRyb2wgb3ZlciB0aGUgdmVydGljYWxcbiAqIGFsaWdubWVudHMgb2YgdGhlIHRleHQgYW5kIGltYWdlLlxuICpcbiAqIGh0dHA6Ly9jc3N3aXphcmRyeS5jb20vMjAxMy8wNS90aGUtZmxhZy1vYmplY3QvXG4gKlxuICogMS4gQWxsb3dzIHVzIHRvIGNvbnRyb2wgdmVydGljYWwgYWxpZ25tZW50cy5cbiAqIDIuIEZvcmNlIHRoZSBvYmplY3QgdG8gYmUgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIHBhcmVudC4gQ29tYmluZWQgd2l0aCBbMV0sXG4gKiAgICB0aGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGluIGEgcXVhc2ktYGRpc3BsYXk6IGJsb2NrO2AgbWFubmVyLlxuICovXG5cbi5vLWZsYWcge1xuICBkaXNwbGF5OiB0YWJsZTsgLyogWzFdICovXG4gIHdpZHRoOiAxMDAlOyAvKiBbMl0gKi9cbn1cblxuXG4gIC8qKlxuICAgKiBJdGVtcyB3aXRoaW4gYSBmbGFnIG9iamVjdC4gVGhlcmUgc2hvdWxkIG9ubHkgZXZlciBiZSBvbmUgb2YgZWFjaC5cbiAgICpcbiAgICogMS4gRGVmYXVsdCB0byBhbGlnbmluZyBjb250ZW50IHRvIHRoZWlyIG1pZGRsZXMuXG4gICAqL1xuXG4gIC5vLWZsYWdfX2ltZyxcbiAgLm8tZmxhZ19fYm9keSB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBbMV0gKi9cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEZsYWcgaW1hZ2VzIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIHRoZW0gYW5kIHRoZSBib2R5IG9mIHRoZSBvYmplY3QuXG4gICAqXG4gICAqIDEuIEZvcmNlIGAuZmxhZ19faW1nYCB0byB0YWtlIHVwIGFzIGxpdHRsZSBzcGFjZSBhcyBwb3NzaWJsZTpcbiAgICogICAgaHR0cHM6Ly9waXhlbHN2c2J5dGVzLmNvbS8yMDEyLzAyL3RoaXMtY3NzLWxheW91dC1ncmlkLWlzLW5vLWhvbHktZ3JhaWwvXG4gICAqL1xuXG4gIC5vLWZsYWdfX2ltZyB7XG4gICAgd2lkdGg6IDFweDsgLyogWzFdICovXG4gICAgcGFkZGluZy1yaWdodDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQ7XG5cblxuICAgIC8qKlxuICAgICAqIDEuIEZpeGVzIHByb2JsZW0gd2l0aCBpbWFnZXMgZGlzYXBwZWFyaW5nLlxuICAgICAqL1xuXG4gICAgPiBpbWcge1xuICAgICAgbWF4LXdpZHRoOiBub25lOyAvKiBbMV0gKi9cbiAgICB9XG5cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgZm9yIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIGZsYWcgb2JqZWN0LlxuICAgKlxuICAgKiAxLiBGb3JjZXMgdGhlIGAuZmxhZ19fYm9keWAgdG8gdGFrZSB1cCBhbGwgcmVtYWluaW5nIHNwYWNlLlxuICAgKi9cblxuICAuby1mbGFnX19ib2R5IHtcbiAgICB3aWR0aDogYXV0bzsgLyogWzFdICovXG5cbiAgICAmLFxuICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgfVxuXG5cblxuXG5cbi8qIFNpemUgdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uby1mbGFnLS10aW55IHtcblxuICA+IC5vLWZsYWdfX2ltZyB7XG4gICAgcGFkZGluZy1yaWdodDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtdGlueTtcbiAgfVxuXG4gICYuby1mbGFnLS1yZXZlcnNlIHtcblxuICAgID4gLm8tZmxhZ19faW1nIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG4gICAgfVxuXG4gIH1cblxufVxuXG4uby1mbGFnLS1zbWFsbCB7XG5cbiAgPiAuby1mbGFnX19pbWcge1xuICAgIHBhZGRpbmctcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsO1xuICB9XG5cbiAgJi5vLWZsYWctLXJldmVyc2Uge1xuXG4gICAgPiAuby1mbGFnX19pbWcge1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw7XG4gICAgfVxuXG4gIH1cblxufVxuXG4uby1mbGFnLS1sYXJnZSB7XG5cbiAgPiAuby1mbGFnX19pbWcge1xuICAgIHBhZGRpbmctcmlnaHQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWxhcmdlO1xuICB9XG5cbiAgJi5vLWZsYWctLXJldmVyc2Uge1xuXG4gICAgPiAuby1mbGFnX19pbWcge1xuICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgIHBhZGRpbmctbGVmdDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtbGFyZ2U7XG4gICAgfVxuXG4gIH1cblxufVxuXG4uby1mbGFnLS1odWdlIHtcblxuICA+IC5vLWZsYWdfX2ltZyB7XG4gICAgcGFkZGluZy1yaWdodDogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtaHVnZTtcbiAgfVxuXG4gICYuby1mbGFnLS1yZXZlcnNlIHtcblxuICAgID4gLm8tZmxhZ19faW1nIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWh1Z2U7XG4gICAgfVxuXG4gIH1cblxufVxuXG4uby1mbGFnLS1mbHVzaCB7XG5cbiAgPiAuby1mbGFnX19pbWcge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAgMDtcbiAgfVxuXG59XG5cblxuXG5cblxuLyogUmV2ZXJzZWQgZmxhZy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gU3dhcCB0aGUgcmVuZGVyZWQgZGlyZWN0aW9uIG9mIHRoZSBvYmplY3TigKZcbiAqIDIuIOKApmFuZCByZXNldCBpdC5cbiAqIDMuIFJlYXNzaWduIG1hcmdpbnMgdG8gdGhlIGNvcnJlY3Qgc2lkZXMuXG4gKi9cblxuLm8tZmxhZy0tcmV2ZXJzZSB7XG4gIGRpcmVjdGlvbjogcnRsOyAvKiBbMV0gKi9cblxuICA+IC5vLWZsYWdfX2ltZyxcbiAgPiAuby1mbGFnX19ib2R5IHtcbiAgICBkaXJlY3Rpb246IGx0cjsgLyogWzJdICovXG4gIH1cblxuICA+IC5vLWZsYWdfX2ltZyB7XG4gICAgcGFkZGluZy1yaWdodDogMDsgLyogWzNdICovXG4gICAgcGFkZGluZy1sZWZ0OiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdDsgLyogWzNdICovXG4gIH1cblxufVxuXG5cblxuXG5cbi8qIEFsaWdubWVudCB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogVmVydGljYWxseSBhbGlnbiB0aGUgaW1hZ2UtIGFuZCBib2R5LWNvbnRlbnQgZGlmZmVyZW50bHkuIERlZmF1bHRzIHRvIG1pZGRsZS5cbiAqL1xuXG4uby1mbGFnLS10b3Age1xuXG4gID4gLm8tZmxhZ19faW1nLFxuICA+IC5vLWZsYWdfX2JvZHkge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gIH1cblxufVxuXG4uby1mbGFnLS1ib3R0b20ge1xuXG4gID4gLm8tZmxhZ19faW1nLFxuICA+IC5vLWZsYWdfX2JvZHkge1xuICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gIH1cblxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNMSVNULUJBUkVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogU3RyaXAgbGlzdC1saWtlIGFwcGVhcmFuY2UgZnJvbSBsaXN0cyBieSByZW1vdmluZyB0aGVpciBidWxsZXRzLCBhbmQgYW55XG4gKiBpbmRlbnRhdGlvbi5cbiAqL1xuXG4uby1saXN0LWJhcmUge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjTElTVC1JTkxJTkVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogVGhlIGxpc3QtaW5saW5lIG9iamVjdCBzaW1wbHkgZGlzcGxheXMgYSBsaXN0IG9mIGl0ZW1zIGluIG9uZSBsaW5lLlxuICovXG5cbi5vLWxpc3QtaW5saW5lIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cblxuICAuby1saXN0LWlubGluZV9faXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cblxuXG5cblxuLyogRGVsaW1pdGVkIGxpc3QuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIGFwcGx5aW5nIHRoaXMgY2xhc3Mgd2lsbCBjb21tYSBzZXBhcmF0ZSB5b3VyIGxpc3QgaXRlbXMuIFlvdSBjYW5cbiAqIGNoYW5nZSB0aGUgZGVsaW1pdGVyIGJ5IHByZWRlZmluaW5nIHRoZSBmb2xsb3dpbmcgdmFyaWFibGU6XG4gKi9cblxuJGludWl0LWxpc3QtaW5saW5lLWRlbGltaXRlcjogICBcIixcXDAwQTBcIiAhZGVmYXVsdDtcblxuLyoqXG4gKiAxLiBGYWxsYmFjayBmb3Igb2xkIElFcyBub3Qgc3VwcG9ydGluZyBgcmVtYCB2YWx1ZXMuXG4gKi9cblxuLm8tbGlzdC1pbmxpbmUtLWRlbGltaXRlZCB7XG4gIGZvbnQtc2l6ZTogMDtcblxuICA+IC5vLWxpc3QtaW5saW5lX19pdGVtIHtcbiAgICBmb250LXNpemU6ICRpbnVpdC1nbG9iYWwtZm9udC1zaXplOyAvKiBbMV0gKi9cbiAgICBmb250LXNpemU6IDFyZW07XG4gIH1cblxuICA+IC5vLWxpc3QtaW5saW5lX19pdGVtICsgLm8tbGlzdC1pbmxpbmVfX2l0ZW0ge1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCIjeyRpbnVpdC1saXN0LWlubGluZS1kZWxpbWl0ZXJ9XCI7XG4gICAgfVxuXG4gIH1cblxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNCT1hcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogVGhlIGJveCBvYmplY3Qgc2ltcGx5IGJveGVzIG9mZiBjb250ZW50LiBFeHRlbmQgd2l0aCBjb3NtZXRpYyBzdHlsZXMgaW4gdGhlXG4gKiBDb21wb25lbnRzIGxheWVyLlxuICpcbiAqIDEuIFNvIHdlIGNhbiBhcHBseSB0aGUgYC5vLWJveGAgY2xhc3MgdG8gbmF0dXJhbGx5LWlubGluZSBlbGVtZW50cy5cbiAqL1xuXG4uby1ib3gge1xuICBAaW5jbHVkZSBpbnVpdC1jbGVhcmZpeCgpO1xuICBkaXNwbGF5OiBibG9jazsgLyogWzFdICovXG4gIHBhZGRpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0O1xuXG4gID4gOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG5cblxuXG5cbi8qIFNpemUgdmFyaWFudHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vLWJveC0tZmx1c2gge1xuICBwYWRkaW5nOiAwO1xufVxuXG4uby1ib3gtLXRpbnkge1xuICBwYWRkaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC10aW55O1xufVxuXG4uby1ib3gtLXNtYWxsIHtcbiAgcGFkZGluZzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw7XG59XG5cbi5vLWJveC0tbGFyZ2Uge1xuICBwYWRkaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbn1cblxuLm8tYm94LS1odWdlIHtcbiAgcGFkZGluZzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtaHVnZTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjQkxPQ0tcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogU3RhY2tlZCBpbWFnZS13aXRoLXRleHQgb2JqZWN0LiBBIHNpbXBsZSBhYnN0cmFjdGlvbiB0byBjb3ZlciBhIHZlcnkgY29tbW9ubHlcbiAqIG9jY3VycmluZyBkZXNpZ24gcGF0dGVybi5cbiAqL1xuXG4uby1ibG9jayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cblxuICAuby1ibG9ja19faW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdDtcblxuXG4gICAgLyogU2l6ZSB2YXJpYW50cy5cbiAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAuby1ibG9jay0tZmx1c2ggPiAmIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLm8tYmxvY2stLXRpbnkgPiAmIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG4gICAgfVxuXG4gICAgLm8tYmxvY2stLXNtYWxsID4gJiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1zbWFsbDtcbiAgICB9XG5cbiAgICAuby1ibG9jay0tbGFyZ2UgPiAmIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LWxhcmdlO1xuICAgIH1cblxuICAgIC5vLWJsb2NrLS1odWdlID4gJiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlO1xuICAgIH1cblxuICB9XG5cblxuICAuby1ibG9ja19fYm9keSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuXG5cblxuXG4vKiBBbGlnbm1lbnQgdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uby1ibG9jay0tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLm8tYmxvY2stLWxlZnQge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNSQVRJT1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLy8gQSBsaXN0IG9mIGFzcGVjdCByYXRpb3MgdGhhdCBnZXQgZ2VuZXJhdGVkIGFzIG1vZGlmaWVyIGNsYXNzZXMuXG5cbiRpbnVpdC1yYXRpb3M6IChcbiAgKDI6MSksXG4gICg0OjMpLFxuICAoMTY6OSksXG4pICFkZWZhdWx0O1xuXG5cblxuLyoqXG4gKiBDcmVhdGUgcmF0aW8tYm91bmQgY29udGVudCBibG9ja3MsIHRvIGtlZXAgbWVkaWEgKGUuZy4gaW1hZ2VzLCB2aWRlb3MpIGluXG4gKiB0aGVpciBjb3JyZWN0IGFzcGVjdCByYXRpb3MuXG4gKlxuICogaHR0cDovL2FsaXN0YXBhcnQuY29tL2FydGljbGUvY3JlYXRpbmctaW50cmluc2ljLXJhdGlvcy1mb3ItdmlkZW9cbiAqXG4gKiAxLiBEZWZhdWx0IGNyb3BwaW5nIGlzIGEgMToxIHJhdGlvIChpLmUuIGEgcGVyZmVjdCBzcXVhcmUpLlxuICovXG5cbi5vLXJhdGlvIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTAwJTsgLyogWzFdICovXG4gIH1cblxufVxuXG5cbiAgLm8tcmF0aW9fX2NvbnRlbnQsXG4gIC5vLXJhdGlvID4gaWZyYW1lLFxuICAuby1yYXRpbyA+IGVtYmVkLFxuICAuby1yYXRpbyA+IG9iamVjdCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogICAgMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogICAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogIDEwMCU7XG4gIH1cblxuXG5cbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG5cbi8qIFJhdGlvIHZhcmlhbnRzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlcmllcyBvZiByYXRpbyBjbGFzc2VzIHRvIGJlIHVzZWQgbGlrZSBzbzpcbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJvLXJhdGlvICBvLXJhdGlvLS0xNjo5XCI+XG4gKlxuICovXG5cbkBlYWNoICRyYXRpbyBpbiAkaW51aXQtcmF0aW9zIHtcblxuICBAZWFjaCAkYW50ZWNlZGVudCwgJGNvbnNlcXVlbnQgaW4gJHJhdGlvIHtcblxuICAgIEBpZiAodHlwZS1vZigkYW50ZWNlZGVudCkgIT0gbnVtYmVyKSB7XG4gICAgICBAZXJyb3IgXCJgI3skYW50ZWNlZGVudH1gIG5lZWRzIHRvIGJlIGEgbnVtYmVyLlwiXG4gICAgfVxuXG4gICAgQGlmICh0eXBlLW9mKCRjb25zZXF1ZW50KSAhPSBudW1iZXIpIHtcbiAgICAgIEBlcnJvciBcImAjeyRjb25zZXF1ZW50fWAgbmVlZHMgdG8gYmUgYSBudW1iZXIuXCJcbiAgICB9XG5cbiAgICAuby1yYXRpby0tI3skYW50ZWNlZGVudH1cXDojeyRjb25zZXF1ZW50fTpiZWZvcmUge1xuICAgICAgcGFkZGluZy1ib3R0b206ICgkY29uc2VxdWVudC8kYW50ZWNlZGVudCkgKiAxMDAlO1xuICAgIH1cblxuICB9XG5cbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNDUk9QXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vLyBBIGxpc3Qgb2YgY3JvcHBpbmcgcmF0aW9zIHRoYXQgZ2V0IGdlbmVyYXRlZCBhcyBtb2RpZmllciBjbGFzc2VzLlxuXG4kaW51aXQtY3JvcHM6IChcbiAgKDI6MSksXG4gICg0OjMpLFxuICAoMTY6OSksXG4pICFkZWZhdWx0O1xuXG5cblxuLyoqXG4gKiBQcm92aWRlIGEgY3JvcHBpbmcgY29udGFpbmVyIGluIG9yZGVyIHRvIGRpc3BsYXkgbWVkaWEgKHVzdWFsbHkgaW1hZ2VzKVxuICogY3JvcHBlZCB0byBjZXJ0YWluIHJhdGlvcy5cbiAqXG4gKiAxLiBTZXQgdXAgYSBwb3NpdGlvbmluZyBjb250ZXh0IGluIHdoaWNoIHRoZSBpbWFnZSBjYW4gc2l0LlxuICogMi4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0OiB3aGVyZSB0aGUgY3JvcHBpbmcgaGFwcGVucy5cbiAqL1xuXG4uby1jcm9wIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBbMV0gKi9cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47IC8qIFsyXSAqL1xufVxuXG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoaXMgY2xhc3MgdG8gdGhlIGNvbnRlbnQgKHVzdWFsbHkgYGltZ2ApIHRoYXQgbmVlZHMgY3JvcHBpbmcuXG4gICAqXG4gICAqIDEuIEltYWdl4oCZcyBkZWZhdWx0IHBvc2l0aW9uaW5nIGlzIHRvcC1sZWZ0IGluIHRoZSBjcm9wcGluZyBib3guXG4gICAqIDIuIE1ha2Ugc3VyZSB0aGUgbWVkaWEgZG9lc27igJl0IHN0b3AgaXRzZWxmIHRvbyBzb29uLlxuICAgKi9cblxuICAuby1jcm9wX19jb250ZW50IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAgMDsgLyogWzFdICovXG4gICAgbGVmdDogMDsgLyogWzFdICovXG4gICAgbWF4LXdpZHRoOiBub25lOyAvKiBbMl0gKi9cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFdlIGNhbiBwb3NpdGlvbiB0aGUgbWVkaWEgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyB3aXRoaW4gdGhlIGNyb3BwaW5nIGFyZWEuXG4gICAqL1xuXG4gIC5vLWNyb3BfX2NvbnRlbnQtLXJpZ2h0IHtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiBhdXRvO1xuICB9XG5cbiAgLm8tY3JvcF9fY29udGVudC0tYm90dG9tIHtcbiAgICB0b3A6IGF1dG87XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbiAgLm8tY3JvcF9fY29udGVudC0tY2VudGVyIHtcbiAgICB0b3A6ICA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG5cblxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuXG4vKiBDcm9wLXJhdGlvIHZhcmlhbnRzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIHNlcmllcyBvZiBjcm9wIGNsYXNzZXMgdG8gYmUgdXNlZCBsaWtlIHNvOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tY3JvcCAgby1jcm9wLS0xNjo5XCI+XG4gKlxuICovXG5cbkBlYWNoICRjcm9wIGluICRpbnVpdC1jcm9wcyB7XG5cbiAgQGVhY2ggJGFudGVjZWRlbnQsICRjb25zZXF1ZW50IGluICRjcm9wIHtcblxuICAgIEBpZiAodHlwZS1vZigkYW50ZWNlZGVudCkgIT0gbnVtYmVyKSB7XG4gICAgICBAZXJyb3IgXCJgI3skYW50ZWNlZGVudH1gIG5lZWRzIHRvIGJlIGEgbnVtYmVyLlwiXG4gICAgfVxuXG4gICAgQGlmICh0eXBlLW9mKCRjb25zZXF1ZW50KSAhPSBudW1iZXIpIHtcbiAgICAgIEBlcnJvciBcImAjeyRjb25zZXF1ZW50fWAgbmVlZHMgdG8gYmUgYSBudW1iZXIuXCJcbiAgICB9XG5cbiAgICAuby1jcm9wLS0jeyRhbnRlY2VkZW50fVxcOiN7JGNvbnNlcXVlbnR9IHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAoJGNvbnNlcXVlbnQvJGFudGVjZWRlbnQpICogMTAwJTtcbiAgICB9XG5cbiAgfVxuXG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjVEFCTEVTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEEgc2ltcGxlIG9iamVjdCBmb3IgbWFuaXB1bGF0aW5nIHRoZSBzdHJ1Y3R1cmUgb2YgSFRNTCBgdGFibGVgcy5cbiAqL1xuXG4uby10YWJsZSB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5cblxuXG5cblxuLyogRXF1YWwtd2lkdGggdGFibGUgY2VsbHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIGB0YWJsZS1sYXlvdXQ6IGZpeGVkYCBmb3JjZXMgYWxsIGNlbGxzIHdpdGhpbiBhIHRhYmxlIHRvIG9jY3VweSB0aGUgc2FtZVxuICogd2lkdGggYXMgZWFjaCBvdGhlci4gVGhpcyBhbHNvIGhhcyBwZXJmb3JtYW5jZSBiZW5lZml0czogYmVjYXVzZSB0aGUgYnJvd3NlclxuICogZG9lcyBub3QgbmVlZCB0byAocmUpY2FsY3VsYXRlIGNlbGwgZGltZW5zaW9ucyBiYXNlZCBvbiBjb250ZW50IGl0IGRpc2NvdmVycyxcbiAqIHRoZSB0YWJsZSBjYW4gYmUgcmVuZGVyZWQgdmVyeSBxdWlja2x5LiBGdXJ0aGVyIHJlYWRpbmc6XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvdGFibGUtbGF5b3V0I1ZhbHVlc1xuICovXG5cbi5vLXRhYmxlLS1maXhlZCB7XG4gIHRhYmxlLWxheW91dDogZml4ZWQ7XG59XG5cblxuXG5cblxuLyogU2l6ZSB2YXJpYW50cy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5vLXRhYmxlLS10aW55IHtcblxuICB0aCxcbiAgdGQge1xuICAgIHBhZGRpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG4gIH1cblxufVxuXG4uby10YWJsZS0tc21hbGwge1xuXG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw7XG4gIH1cblxufVxuXG4uby10YWJsZS0tbGFyZ2Uge1xuXG4gIHRoLFxuICB0ZCB7XG4gICAgcGFkZGluZzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtbGFyZ2U7XG4gIH1cblxufVxuXG4uby10YWJsZS0taHVnZSB7XG5cbiAgdGgsXG4gIHRkIHtcbiAgICBwYWRkaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlO1xuICB9XG5cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAjUEFDS1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBUaGUgcGFjayBvYmplY3Qgc2ltcGx5IGNhdXNlcyBhbnkgbnVtYmVyIG9mIGVsZW1lbnRzIHBhY2sgdXAgaG9yaXpvbnRhbGx5IHRvXG4gKiBhdXRvbWF0aWNhbGx5IGZpbGwgYW4gZXF1YWwsIGZsdWlkIHdpZHRoIG9mIHRoZWlyIHBhcmVudC5cbiAqXG4gKiAxLiBGaWxsIGFsbCBhdmFpbGFibGUgc3BhY2UuXG4gKiAyLiBSZW1vdmUgYW55IGxlZnRvdmVyIHN0eWxpbmcgZnJvbSBsaXN0cy5cbiAqIDMuIENhdXNlIGNoaWxkcmVuIHRvIGJlIGF1dG9tYXRpY2FsbHkgZXF1YWxseSBzaXplZC5cbiAqL1xuXG4uby1wYWNrIHtcbiAgd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuICBtYXJnaW4tbGVmdDogMDsgLyogWzJdICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICB0YWJsZS1sYXlvdXQ6IGZpeGVkOyAvKiBbM10gKi9cbn1cblxuXG4gIC8qKlxuICAgKiAxLiBDYXVzZSBjaGlsZHJlbiB0byBhZG9wdCB0YWJsZS1saWtlIHN0cnVjdHVyZS5cbiAgICovXG4gIC5vLXBhY2tfX2l0ZW0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7IC8qIFsxXSAqL1xuXG5cbiAgICAvKiBWZXJ0aWNhbCBhbGlnbm1lbnQgdmFyaWFudHMuXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4gICAgLm8tcGFjay0tbWlkZGxlID4gJiB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cblxuICAgIC5vLXBhY2stLWJvdHRvbSA+ICYge1xuICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICB9XG5cbiAgfVxuXG5cblxuXG5cbi8qIFVuZXF1YWwtd2lkdGggaXRlbXMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uby1wYWNrLS1hdXRvIHtcbiAgdGFibGUtbGF5b3V0OiBhdXRvO1xufVxuXG5cblxuXG5cbi8qIFNpemUgdmFyaWFudHMuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uby1wYWNrLS10aW55IHtcbiAgYm9yZGVyLXNwYWNpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnk7XG59XG5cbi5vLXBhY2stLXNtYWxsIHtcbiAgYm9yZGVyLXNwYWNpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsO1xufVxuXG4uby1wYWNrLS1sYXJnZSB7XG4gIGJvcmRlci1zcGFjaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbn1cblxuLm8tcGFjay0taHVnZSB7XG4gIGJvcmRlci1zcGFjaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1odWdlO1xufVxuXG5cblxuXG5cbi8qIFJldmVyc2VkIG9yZGVyIHBhY2tzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uby1wYWNrLS1yZXYge1xuICBkaXJlY3Rpb246IHJ0bDtcblxuICA+IC5vLXBhY2tfX2l0ZW0ge1xuICAgIGRpcmVjdGlvbjogbHRyO1xuICB9XG5cbn1cbiIsIi8vIGh0dHBzOi8vYmxvZy5wcm90b3R5cHIuaW8vYWxpZ24tc3ZnLWljb25zLXRvLXRleHQtYW5kLXNheS1nb29kYnllLXRvLWZvbnQtaWNvbnMtZDQ0YjNkN2IyNmI0XG5cbi5zdmctaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAxZW07XG4gIHdpZHRoOiAxZW07XG59XG5cblxuLnN2Zy1pY29uIHN2ZyB7XG4gIGhlaWdodDogMWVtO1xuICB3aWR0aDogMWVtO1xuICBmaWxsOiBjdXJyZW50Q29sb3I7XG59XG5cblxuLnN2Zy1pY29uLnN2Zy1iYXNlbGluZSBzdmcge1xuICBib3R0b206IC0wLjE0ZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuXG4uc3ZnLWljb24tLWxlZnQge1xuICBtYXJnaW4tcmlnaHQ6IDAuNWVtO1xufVxuXG5cbi8vIEFkanVzdG1lbnRzIGZvciB0aGUgamlyYS1ibHVlIGljb24gKGl0J3Mgbm90IHNxdWFyZSlcbi5zdmctaWNvbi0tamlyYSB7XG4gIHdpZHRoOiAyLjZlbTsgIC8vIG5lZWRzIHRvIGJlIGEgYml0IHdpZGVyIHRoYW4gZXhwZWN0ZWQgYnkgYXNwZWN0IHJhdGlvXG5cbiAgc3ZnIHtcbiAgICB3aWR0aDogMi41NzQwNTI4MTNlbTsgIC8vIHZpZXdCb3g6IDQ0OC40IHdpZGUgMTc0LjIgaGlnaFxuICB9XG59XG5cblxuLnN2Zy1pY29uLS1qaXJhLnN2Zy1iYXNlbGluZSBzdmcge1xuICBib3R0b206IC0wLjA2ZW07XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbiIsIi8vIENvbW1hIHNlcGFyYXRlZCBsaXN0c1xuLy9cbi8vIFR1cm5zIGFuIHVub3JkZXJlZCBsaXN0IGludG8gYW4gaW5saW5lIGxpc3Qgd2l0aCBjb21tYXMgYmV0d2VlbiBpdGVtcyxcbi8vIGFuZCBhbiBPeGZvcmQgY29tbWEgYWZ0ZXIgdGhlIGxhc3QuIEZvciBhIGxpc3Qgb2YgdHdvIGl0ZW1zIG9ubHkgXCIgYW5kIFwiXG4vLyBpcyBpbnNlcnRlZC5cbi8vXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS82NTg3ODc3XG5cblxuLy8gY29tbWEtbGlzdCBtYWtlcyBhIHVsIGFuIGlubGluZSBsaXN0IHdpdGggZ3JhbW1hdGljYWwgY29tbWEgc2VwYXJhdGVkXG4vLyBpdGVtcy5cbi5jb21tYS1saXN0IHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW4tbGVmdDogMDtcbn1cblxuXG4uY29tbWEtbGlzdCBsaSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbn1cblxuXG4vLyBDb21tYSBhZnRlciBjb21tYS1saXN0IGl0ZW1zXG4uY29tbWEtbGlzdCBsaTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiLCBcIjtcbn1cblxuXG4vLyBObyBjb21tYSBhZnRlciB0aGUgbGFzdCBpdGVtLlxuLmNvbW1hLWxpc3QgbGk6bGFzdC1jaGlsZDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5cblxuLy8gRm9yIGEgdHdvIGl0ZW0gbGlzdCBzZXBhcmF0ZSB3aXRoIG9ubHkgXCIgYW5kIFwiLlxuLmNvbW1hLWxpc3QgbGk6bnRoLWxhc3QtY2hpbGQoMik6YWZ0ZXIge1xuICBjb250ZW50OiBcIiBhbmQgXCI7XG59XG5cblxuLy8gRm9yIGEgdGhyZWUgb3IgbW9yZSBpdGVtIGxpc3QsIHB1dCBhbiBPeGZvcmQgY29tbWEgYWZ0ZXIgdGhlIHNlY29uZCBsaXN0XG4vLyBpdGVtLlxuLmNvbW1hLWxpc3QgbGk6bnRoLWxhc3QtY2hpbGQoMykgfiBsaTpudGgtbGFzdC1jaGlsZCgyKTphZnRlciB7XG4gICAgY29udGVudDogXCIsIGFuZCBcIjtcbn1cbiIsIi8vIHVuaXZlcnNhbC1oZWFkZXIgdW5pdmVyc2FsLWhlYWRlci0tZGFzaGJvYXJkXG5cbi51bml2ZXJzYWwtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGxzc3QtZGFyay1iYWNrZ3JvdW5kO1xuICBjb2xvcjogI2ZmZjtcblxuICBhIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBib3JkZXItYm90dG9tOiB1bnNldDtcbiAgICBib3gtc2hhZG93OiB1bnNldDtcbiAgfVxuXG4gIGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICRsc3N0LWJyaWdodC1ibHVlO1xuICB9XG59XG5cbi51bml2ZXJzYWwtaGVhZGVyLS1kYXNoYm9hcmQge1xuICBtYXJnaW46IGF1dG87XG4gIHBhZGRpbmctbGVmdDogJHNjcmVlbi1lZGdlLXBhZGRpbmc7XG4gIHBhZGRpbmctcmlnaHQ6ICRzY3JlZW4tZWRnZS1wYWRkaW5nO1xuICBtYXgtd2lkdGg6ICRjb250ZW50LW1heC13aWR0aDtcbn1cbiIsIiRjb250ZW50LW1heC13aWR0aDogNDBlbTtcblxuJHNjcmVlbi1lZGdlLXBhZGRpbmc6IDZweDtcbiIsIi8vIHBhZ2UgbGF5b3V0IGZvciB0aGUgbGFuZGVyIHByb2plY3Rcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sc3N0LXNxcmUvbGFuZGVyXG5cblxuLmxhbmRlci1wYWdlIHtcbiAgQGluY2x1ZGUgZm9udC1zaXplKDE2cHgpO1xufVxuXG5cbi51bml2ZXJzYWwtaGVhZGVyLS1sYW5kZXIge1xuICBtYXJnaW46IGF1dG87XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgbWF4LXdpZHRoOiA3MGVtO1xufVxuXG5cbi5sYW5kZXItY29udGFpbmVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1heC13aWR0aDogNzBlbTtcbiAgbWFyZ2luLXRvcDogMWVtO1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG59XG5cblxuLmxhbmRlci1jb250YWluZXItLWNvbnRlbnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgbWluLWhlaWdodDogOTB2aDtcbn1cblxuXG4ubGFuZGVyLWNvbnRhaW5lci0tZm9vdGVyIHtcbiAgcGFkZGluZy10b3A6IDRlbTtcbn1cblxuXG4ubGFuZGVyLWZvb3RlciB7XG4gIG1hcmdpbi10b3A6IDFlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICBtYXJnaW4tbGVmdDogMjBlbTtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMHB4O1xufVxuXG5cbi5sYW5kZXItaW5mby1pdGVtIHtcbiAgZmxleDogMCAxIDIwZW07XG4gIC8vIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTtcbiAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xufVxuXG5cbi5sYW5kZXItcGRmLWl0ZW0ge1xuICBmbGV4OiAxO1xuICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodHllbGxvdztcbn1cblxuXG4ucGRmb2JqZWN0LWNvbnRhaW5lciB7XG4gIGhlaWdodDogOTB2aDtcbn1cblxuXG4vLyByZWZhY3RvciB0aGlzIHR5cG9ncmFwaHlcbi5sYW5kZXItc3Vic2VjdGlvbi1oZWFkZXIge1xuICBAaW5jbHVkZSBzb3VyY2Utc2Fucy1ib2xkO1xuICBmb250LXNpemU6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4iLCIvLyBJbmZvIHBhbmVsIGZvciB0aGUgbGFuZGVyIHByb2plY3Rcbi8vIEJhc2VkIG9uIF9kYXNoYm9hcmQtaGVhZGVyOyBuZWVkcyByZWZhY3RvcmluZyBmb3IgY29uc2lzdGVuY3lcblxuLmxhbmRlci1pbmZvLWhlYWRlciB7XG4gIG1hcmdpbi1ib3R0b206IHZlcnRpY2FsLW1hcmdpbigxKTtcbn1cblxuLmxhbmRlci1pbmZvLWhlYWRlcl9fbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG4gIHdpZHRoOiAxMHJlbTtcbn1cblxuXG4ubGFuZGVyLWluZm8taGVhZGVyX19oYW5kbGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgQGluY2x1ZGUgc291cmNlLXNhbnMtYm9sZDtcbiAgLy8gZm9udC1zaXplOiAxLjJyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDYyNWVtO1xuXG4gIGEge1xuICAgIGNvbG9yOiAkbHNzdC1kYXJrLWJhY2tncm91bmQ7XG4gIH1cbn1cblxuXG4ubGFuZGVyLWluZm8taGVhZGVyX19wcm9kdWN0LW5hbWUge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBAaW5jbHVkZSBzb3VyY2Utc2Fucy1yZWd1bGFyO1xuICBmb250LXNpemU6IDJyZW07ICAvLyBzbWFsbGVyIHRoYW4gaW4gZGFzaGJvYXJkLWhlYWRlclxuICBsaW5lLWhlaWdodDogMS4wNTtcbn1cblxuXG4uYy1sYW5kZXItYnRuLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jLWxhbmRlci1idG4tcm93X19pdGVtIHtcbiAgbWFyZ2luLXJpZ2h0OiAxZW07XG59XG5cblxuLmxhbmRlci1pbmZvLWF1dGhvcnMge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNCVVRUT05TXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBjb21wb25lbnQuIEV4dGVuZCBpbnVpdGNzcyBieSBidWlsZGluZyB5b3VyIG93biBjb21wb25lbnRzXG4gKiB0aGF0IG1ha2UgdXAgeW91ciBVSS4gQ29tcG9uZW50IGNsYXNzZXMgYXJlIHByZWZpeGVkIHdpdGggYSBgYy1gLlxuICovXG5cbi8qKlxuICogMS4gQWxsb3cgdXMgdG8gc3R5bGUgYm94IG1vZGVsIHByb3BlcnRpZXMuXG4gKiAyLiBMaW5lIGRpZmZlcmVudCBzaXplZCBidXR0b25zIHVwIGEgbGl0dGxlIG5pY2VyLlxuICogMy4gTWFrZSBidXR0b25zIGluaGVyaXQgZm9udCBzdHlsZXMgKG9mdGVuIG5lY2Vzc2FyeSB3aGVuIHN0eWxpbmcgYGlucHV0YHMgYXNcbiAqICAgIGJ1dHRvbnMpLlxuICogNC4gUmVzZXQvbm9ybWFsaXplIHNvbWUgc3R5bGVzLlxuICogNS4gRm9yY2UgYWxsIGJ1dHRvbi1zdHlsZWQgZWxlbWVudHMgdG8gYXBwZWFyIGNsaWNrYWJsZS5cbiAqL1xuXG4uYy1idG4ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIFsxXSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBbMl0gKi9cbiAgZm9udDogaW5oZXJpdDsgLyogWzNdICovXG4gIHRleHQtYWxpZ246IGNlbnRlcjsgLyogWzRdICovXG4gIG1hcmdpbjogMDsgLyogWzRdICovXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogWzVdICovXG4gIHBhZGRpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0O1xuICB0cmFuc2l0aW9uOiAkZ2xvYmFsLXRyYW5zaXRpb247XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICBib3gtc2hhZG93OiB1bnNldDsgIC8vIGRpc2FibGUgb3VyIDxhPiBib3ggc2hhZG93XG59XG5cblxuXG5cblxuLyogU3R5bGUgdmFyaWFudHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jLWJ0bi0tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0YThlYzI7XG5cbiAgJixcbiAgJjpob3ZlcixcbiAgJjphY3RpdmUsXG4gICY6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLyogWzRdICovXG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzc3NGEyO1xuICB9XG5cbn1cblxuLmMtYnRuLS1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY0MDU0O1xuXG4gICYsXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICNmZmY7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyNzMzO1xuICB9XG5cbn1cblxuLmMtYnRuLS10ZXJ0aWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNGE4ZWMyO1xuXG4gICYsXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICM0YThlYzI7XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcbiAgICBjb2xvcjogIzM3NzRhMjtcbiAgfVxuXG59XG5cblxuXG5cblxuLyogU2l6ZSB2YXJpYW50c1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmMtYnRuLS1zbWFsbCB7XG4gIHBhZGRpbmc6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnkgJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGw7XG59XG5cbi5jLWJ0bi0tbGFyZ2Uge1xuICBwYWRkaW5nOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdCAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZTtcbn1cblxuXG5cblxuXG4vKiBHaG9zdCBidXR0b25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEdob3N0IGJ1dHRvbnMgaGF2ZSBzZWUtdGhyb3VnaCBiYWNrZ3JvdW5kcyBhbmQgYXJlIGJvcmRlcmVkLlxuICovXG5cbiRidG4tZ2hvc3QtYm9yZGVyLXdpZHRoOiAycHg7XG5cbi5jLWJ0bi0tZ2hvc3Qge1xuICBib3JkZXI6ICRidG4tZ2hvc3QtYm9yZGVyLXdpZHRoIHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgcGFkZGluZzogKCRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsIC0gJGJ0bi1naG9zdC1ib3JkZXItd2lkdGgpICgkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdCAtICRidG4tZ2hvc3QtYm9yZGVyLXdpZHRoKTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjNzIGVhc2Utb3V0O1xuXG4gICYsXG4gICY6YWN0aXZlLFxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG5cbiAgJjpob3ZlciB7XG4gICAgLy8gYmFja2dyb3VuZDogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAkbGluay11bmRlcmxpbmUtY29sb3I7XG4gIH1cblxuICAmLmMtYnRuLS1zbWFsbCB7XG4gICAgcGFkZGluZzogKCRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXRpbnkgLSAkYnRuLWdob3N0LWJvcmRlci13aWR0aCkgKCRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LXNtYWxsIC0gJGJ0bi1naG9zdC1ib3JkZXItd2lkdGgpO1xuICB9XG5cbiAgJi5jLWJ0bi0tbGFyZ2Uge1xuICAgIHBhZGRpbmc6ICgkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdCAtICRidG4tZ2hvc3QtYm9yZGVyLXdpZHRoKSAoJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtbGFyZ2UgLSAkYnRuLWdob3N0LWJvcmRlci13aWR0aCk7XG4gIH1cblxuICAmLmMtYnRuLS1wcmltYXJ5IHtcbiAgICBjb2xvcjogIzRhOGVjMjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBjb2xvcjogIzM3NzRhMjtcbiAgICB9XG5cbiAgfVxuXG4gICYuYy1idG4tLXNlY29uZGFyeSB7XG4gICAgY29sb3I6ICMyZjQwNTQ7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICMxZDI3MzM7XG4gICAgfVxuXG4gIH1cblxuICAmLmMtYnRuLS10ZXJ0aWFyeSB7XG4gICAgY29sb3I6ICNmZmY7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cbi5jLWJ0bi0tZ2hvc3QtZmFpbnQge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xufVxuIiwiLy8vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vICAgI0dMT0JBTFxuLy8gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8vIFRoZSBnbG9iYWwgc2V0dGluZ3MgZmlsZSBjb250YWlucyBhbnkgcHJvamVjdC13aWRlIHZhcmlhYmxlczsgdGhpbmdzIHRoYXRcbi8vIG5lZWQgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGVudGlyZSBjb2RlYmFzZS5cblxuLy8gU3RhbmRhcmRpc2Ugc29tZSBVSSB0cmVhdG1lbnRzLlxuJGdsb2JhbC1yYWRpdXM6IDNweCAhZGVmYXVsdDtcbiRnbG9iYWwtdHJhbnNpdGlvbjogKDEvMykgKyBzICFkZWZhdWx0O1xuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICNDTEVBUkZJWFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBBdHRhY2ggb3VyIGNsZWFyZml4IG1peGluIHRvIGEgdXRpbGl0eSBjbGFzcy5cbiAqL1xuXG4udS1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIGludWl0LWNsZWFyZml4KCk7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1dJRFRIU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBpbnVpdGNzcyBnZW5lcmF0ZXMgYSBzZXJpZXMgb2YgdXRpbGl0eSBjbGFzc2VzIHRoYXQgZ2l2ZSBhIGZsdWlkIHdpZHRoIHRvXG4gKiB3aGljaGV2ZXIgZWxlbWVudCB0aGV54oCZcmUgYXBwbGllZCwgZS5nLjpcbiAqXG4gKiAgIDxpbWcgc3JjPVwiXCIgYWx0PVwiXCIgY2xhc3M9XCJ1LTEvMlwiIC8+XG4gKlxuICogVGhlc2UgY2xhc3NlcyBhcmUgbW9zdCBjb21tb25seSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3VyIGxheW91dCBzeXN0ZW0sXG4gKiBlLmcuOlxuICpcbiAqICAgPGRpdiBjbGFzcz1cIm8tbGF5b3V0X19pdGVtICB1LTEvMlwiPlxuICpcbiAqIEJ5IGRlZmF1bHQsIGludWl0Y3NzIHdpbGwgYWxzbyBnZW5lcmF0ZSByZXNwb25zaXZlIHZhcmlhbnRzIG9mIGVhY2ggb2YgdGhlc2VcbiAqIGNsYXNzZXMgYnkgdXNpbmcgeW91ciBTYXNzIE1RIGNvbmZpZ3VyYXRpb24sIGUuZy46XG4gKlxuICogICA8ZGl2IGNsYXNzPVwiby1sYXlvdXRfX2l0ZW0gIHUtMS8xICB1LTEvMkB0YWJsZXQgIHUtMS8zQGRlc2t0b3BcIj5cbiAqXG4gKiBPcHRpb25hbGx5LCBpbnVpdGNzcyBjYW4gZ2VuZXJhdGUgb2Zmc2V0IGNsYXNzZXMgd2hpY2ggY2FuIHB1c2ggYW5kIHB1bGxcbiAqIGVsZW1lbnRzIGxlZnQgYW5kIHJpZ2h0IGJ5IGEgc3BlY2lmaWVkIGFtb3VudCwgZS5nLjpcbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJvLWxheW91dF9faXRlbSAgdS0yLzMgIHUtcHVsbC0xLzNcIj5cbiAqXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgbWFraW5nIHZlcnkgZ3JhbnVsYXIgY2hhbmdlcyB0byB0aGUgcmVuZGVyZWQgb3JkZXIgb2ZcbiAqIGl0ZW1zIGluIGEgbGF5b3V0LlxuICpcbiAqIE4uQi4gVGhpcyBvcHRpb24gaXMgdHVybmVkIG9mZiBieSBkZWZhdWx0LlxuICovXG5cblxuXG5cblxuLy8gV2hpY2ggZnJhY3Rpb25zIHdvdWxkIHlvdSBsaWtlIGluIHlvdXIgZ3JpZCBzeXN0ZW0ocyk/IEJ5IGRlZmF1bHQsIGludWl0Y3NzXG4vLyBwcm92aWRlcyB5b3UgZnJhY3Rpb25zIG9mIG9uZSB3aG9sZSwgaGFsdmVzLCB0aGlyZHMsIHF1YXJ0ZXJzIGFuZCBmaWZ0aHMsXG4vLyBlLmcuOlxuLy9cbi8vICAgLnUtMS8yXG4vLyAgIC51LTIvNVxuLy8gICAudS0zLzRcbi8vICAgLnUtMi8zXG5cbiRpbnVpdC1mcmFjdGlvbnM6IDEgMiAzIDQgNSAhZGVmYXVsdDtcblxuXG5cblxuXG4vLyBPcHRpb25hbGx5LCBpbnVpdGNzcyBjYW4gZ2VuZXJhdGUgY2xhc3NlcyB0byBvZmZzZXQgaXRlbXMgYnkgYSBjZXJ0YWluIHdpZHRoLlxuLy8gV291bGQgeW91IGxpa2UgdG8gZ2VuZXJhdGUgdGhlc2UgdHlwZXMgb2YgY2xhc3MgYXMgd2VsbD8gRS5nLjpcbi8vXG4vLyAgIC51LXB1c2gtMS8zXG4vLyAgIC51LXB1bGwtMi80XG4vLyAgIC51LXB1bGwtMS81XG4vLyAgIC51LXB1c2gtMi8zXG5cbiRpbnVpdC1vZmZzZXRzOiBmYWxzZSAhZGVmYXVsdDtcblxuXG5cblxuXG4vLyBCeSBkZWZhdWx0LCBpbnVpdGNzcyB1c2VzIGZyYWN0aW9ucy1saWtlIGNsYXNzZXMgbGlrZSBgPGRpdiBjbGFzcz1cInUtMS80XCI+YC5cbi8vIFlvdSBjYW4gY2hhbmdlIHRoZSBgL2AgdG8gd2hhdGV2ZXIgeW91IGZhbmN5IHdpdGggdGhpcyB2YXJpYWJsZS5cbiRpbnVpdC13aWR0aHMtZGVsaW1pdGVyOiBcXC8gIWRlZmF1bHQ7XG5cblxuXG5cblxuLy8gV2hlbiB1c2luZyBTYXNzLU1RLCB0aGlzIGRlZmluZXMgdGhlIHNlcGFyYXRvciBmb3IgdGhlIGJyZWFrcG9pbnRzIHN1ZmZpeFxuLy8gaW4gdGhlIGNsYXNzIG5hbWUuIEJ5IGRlZmF1bHQsIHdlIGFyZSBnZW5lcmF0aW5nIHRoZSByZXNwb25zaXZlIHN1ZmZpeGVzXG4vLyBmb3IgdGhlIGNsYXNzZXMgd2l0aCBhIGBAYCBzeW1ib2wgc28geW91IGdldCBjbGFzc2VzIGxpa2U6XG4vLyA8ZGl2IGNsYXNzPVwidS0zLzEyQG1vYmlsZVwiPlxuJGludWl0LXdpZHRocy1icmVha3BvaW50LXNlcGFyYXRvcjogXFxAICFkZWZhdWx0O1xuXG5cblxuXG5cbi8vIEEgbWl4aW4gdG8gc3BpdCBvdXQgb3VyIHdpZHRoIGNsYXNzZXMuIFBhc3MgaW4gdGhlIGNvbHVtbnMgd2Ugd2FudCB0aGUgd2lkdGhzXG4vLyB0byBoYXZlLCBhbmQgYW4gb3B0aW9uYWwgc3VmZml4IGZvciByZXNwb25zaXZlIHdpZHRocy4gRS5nLiB0byBjcmVhdGUgdGhpcmRzXG4vLyBhbmQgcXVhcnRlcnMgZm9yIGEgc21hbGwgYnJlYWtwb2ludDpcbi8vXG4vLyBAaW5jbHVkZSB3aWR0aHMoMyA0LCAtc20pO1xuXG5AbWl4aW4gaW51aXQtd2lkdGhzKCRjb2x1bW5zLCAkYnJlYWtwb2ludDogbnVsbCkge1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgZm9yIGVhY2ggZGVub21pbmF0b3Igb2Ygb3VyIGZyYWN0aW9ucy5cbiAgQGVhY2ggJGRlbm9taW5hdG9yIGluICRjb2x1bW5zIHtcblxuICAgIC8vIEJlZ2luIGNyZWF0aW5nIGEgbnVtZXJhdG9yIGZvciBvdXIgZnJhY3Rpb24gdXAgdW50aWwgd2UgaGl0IHRoZVxuICAgIC8vIGRlbm9taW5hdG9yLlxuICAgIEBmb3IgJG51bWVyYXRvciBmcm9tIDEgdGhyb3VnaCAkZGVub21pbmF0b3Ige1xuXG4gICAgICAvLyBCdWlsZCBhIGNsYXNzIGluIHRoZSBmb3JtYXQgYC51LTMvNFtAPGJyZWFrcG9pbnQ+XWAuXG4gICAgICAudS0jeyRudW1lcmF0b3J9I3skaW51aXQtd2lkdGhzLWRlbGltaXRlcn0jeyRkZW5vbWluYXRvcn0jeyRicmVha3BvaW50fSB7XG4gICAgICAgIHdpZHRoOiAoJG51bWVyYXRvciAvICRkZW5vbWluYXRvcikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoJGludWl0LW9mZnNldHMgPT0gdHJ1ZSkge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAqIDEuIFJlc2V0IGFueSBsZWZ0b3ZlciBvciBjb25mbGljdGluZyBgbGVmdGAvYHJpZ2h0YCB2YWx1ZXMuXG4gICAgICAgICovXG5cbiAgICAgICAgLy8gQnVpbGQgYSBjbGFzcyBpbiB0aGUgZm9ybWF0IGAudS1wdXNoLTEvMltAPGJyZWFrcG9pbnQ+XWAuXG4gICAgICAgIC51LXB1c2gtI3skbnVtZXJhdG9yfSN7JGludWl0LXdpZHRocy1kZWxpbWl0ZXJ9I3skZGVub21pbmF0b3J9I3skYnJlYWtwb2ludH0ge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xuICAgICAgICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IC8qIFsxXSAqL1xuICAgICAgICAgIGxlZnQ6ICgkbnVtZXJhdG9yIC8gJGRlbm9taW5hdG9yKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJ1aWxkIGEgY2xhc3MgaW4gdGhlIGZvcm1hdCBgLnUtcHVsbC01LzZbQDxicmVha3BvaW50Pl1gLlxuICAgICAgICAudS1wdWxsLSN7JG51bWVyYXRvcn0jeyRpbnVpdC13aWR0aHMtZGVsaW1pdGVyfSN7JGRlbm9taW5hdG9yfSN7JGJyZWFrcG9pbnR9IHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICAgICAgICByaWdodDogKCRudW1lcmF0b3IgLyAkZGVub21pbmF0b3IpICogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsgLyogWzFdICovXG4gICAgICAgIH1cblxuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuXG4vKipcbiAqIEEgc2VyaWVzIG9mIHdpZHRoIGhlbHBlciBjbGFzc2VzIHRoYXQgeW91IGNhbiB1c2UgdG8gc2l6ZSB0aGluZ3MgbGlrZSBncmlkXG4gKiBzeXN0ZW1zLiBDbGFzc2VzIHRha2UgYSBmcmFjdGlvbi1saWtlIGZvcm1hdCAoZS5nLiBgLnUtMi8zYCkuIFVzZSB0aGVzZSBpblxuICogeW91ciBtYXJrdXA6XG4gKlxuICogPGRpdiBjbGFzcz1cInUtNy8xMlwiPlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgd2lsbCBnZW5lcmF0ZSB3aWR0aHMgaGVscGVyIGNsYXNzZXMgYmFzZWQgb24gdGhlIGZyYWN0aW9uc1xuICogZGVmaW5lZCBpbiB0aGUgYCRpbnVpdC1mcmFjdGlvbnNgIGxpc3QuXG4gKi9cblxuQGluY2x1ZGUgaW51aXQtd2lkdGhzKCRpbnVpdC1mcmFjdGlvbnMpO1xuXG5cblxuXG4vKipcbiAqIElmIHdl4oCZcmUgdXNpbmcgU2Fzcy1NUSwgYXV0b21hdGljYWxseSBnZW5lcmF0ZSBncmlkIHN5c3RlbShzKSBmb3IgZWFjaCBvZiBvdXJcbiAqIGRlZmluZWQgYnJlYWtwb2ludHMsIGFuZCBnaXZlIHRoZW0gYSBSZXNwb25zaXZlIFN1ZmZpeCwgZS5nLjpcbiAqXG4gKiA8ZGl2IGNsYXNzPVwidS0zLzEyQG1vYmlsZVwiPlxuICovXG5cbkBpZiAodmFyaWFibGUtZXhpc3RzKG1xLWJyZWFrcG9pbnRzKSkge1xuXG4gIEBlYWNoICRpbnVpdC1icC1uYW1lLCAkaW51aXQtYnAtdmFsdWUgaW4gJG1xLWJyZWFrcG9pbnRzIHtcblxuICAgIEBpbmNsdWRlIG1xKCRmcm9tOiAkaW51aXQtYnAtbmFtZSkge1xuICAgICAgQGluY2x1ZGUgaW51aXQtd2lkdGhzKCRpbnVpdC1mcmFjdGlvbnMsICN7JGludWl0LXdpZHRocy1icmVha3BvaW50LXNlcGFyYXRvcn0jeyRpbnVpdC1icC1uYW1lfSk7XG4gICAgfVxuXG4gIH1cblxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiOyAvLyBGaXhlcyBhbiBpc3N1ZSB3aGVyZSBSdWJ5IGxvY2FsZSBpcyBub3Qgc2V0IHByb3Blcmx5XG4gICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcS9wdWxsLzEwXG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICAgIG1vYmlsZTogIDMyMHB4LFxuICAgIHRhYmxldDogIDc0MHB4LFxuICAgIGRlc2t0b3A6IDk4MHB4LFxuICAgIHdpZGU6ICAgIDEzMDBweFxuKSAhZGVmYXVsdDtcblxuLy8vIFN0YXRpYyBicmVha3BvaW50IChmb3IgZml4ZWQtd2lkdGggbGF5b3V0cylcbi8vL1xuLy8vIERlZmluZSB0aGUgYnJlYWtwb2ludCBmcm9tICRtcS1icmVha3BvaW50cyB0aGF0IHNob3VsZFxuLy8vIGJlIHVzZWQgYXMgdGhlIHRhcmdldCB3aWR0aCBmb3IgdGhlIGZpeGVkLXdpZHRoIGxheW91dFxuLy8vIChpLmUuIHdoZW4gJG1xLXJlc3BvbnNpdmUgaXMgc2V0IHRvICdmYWxzZScpIGluIGEgb2xkLWllLnNjc3Ncbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gdGFibGV0LW9ubHkuc2Nzc1xuLy8vICAvL1xuLy8vICAvLyBJZ25vcmUgYWxsIHN0eWxlcyBhYm92ZSB0YWJsZXQgYnJlYWtwb2ludCxcbi8vLyAgLy8gYW5kIGZpeCB0aGUgc3R5bGVzIChlLmcuIGxheW91dCkgYXQgdGFibGV0IHdpZHRoXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgJG1xLXN0YXRpYy1icmVha3BvaW50OiB0YWJsZXQ7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvIHRhYmxldFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjYWRkaW5nLWN1c3RvbS1icmVha3BvaW50cyBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtc3RhdGljLWJyZWFrcG9pbnQ6IGRlc2t0b3AgIWRlZmF1bHQ7XG5cbi8vLyBTaG93IGJyZWFrcG9pbnRzIGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy9cbi8vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8vIHJpZ2h0IGNvcm5lciBvZiB5b3VyIHNpdGUgZHVyaW5nIGRldmVsb3BtZW50LCBhZGQgdGhlIGJyZWFrcG9pbnRzXG4vLy8gdG8gdGhpcyBsaXN0LCBvcmRlcmVkIGJ5IHdpZHRoLCBlLmcuIChtb2JpbGUsIHRhYmxldCwgZGVza3RvcCkuXG4vLy9cbi8vLyBAdHlwZSBtYXBcbiRtcS1zaG93LWJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcblxuLy8vIEN1c3RvbWl6ZSB0aGUgbWVkaWEgdHlwZSAoZS5nLiBgQG1lZGlhIHNjcmVlbmAgb3IgYEBtZWRpYSBwcmludGApXG4vLy8gQnkgZGVmYXVsdCBzYXNzLW1xIHVzZXMgYW4gXCJhbGxcIiBtZWRpYSB0eXBlIChgQG1lZGlhIGFsbCBhbmQg4oCmYClcbi8vL1xuLy8vIEB0eXBlIFN0cmluZ1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjY2hhbmdpbmctbWVkaWEtdHlwZSBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4kbXEtbWVkaWEtdHlwZTogYWxsICFkZWZhdWx0O1xuXG4vLy8gQ29udmVydCBwaXhlbHMgdG8gZW1zXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHB4IC0gdmFsdWUgdG8gY29udmVydFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZS1mb250LXNpemUgKCRtcS1iYXNlLWZvbnQtc2l6ZSkgLSBgPGJvZHk+YCBmb250IHNpemVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJGZvbnQtc2l6ZS1pbi1lbXM6IG1xLXB4MmVtKDE2cHgpO1xuLy8vICBwIHsgZm9udC1zaXplOiBtcS1weDJlbSgxNnB4KTsgfVxuLy8vXG4vLy8gQHJlcXVpcmVzICRtcS1iYXNlLWZvbnQtc2l6ZVxuLy8vIEByZXR1cm5zIHtOdW1iZXJ9XG5AZnVuY3Rpb24gbXEtcHgyZW0oJHB4LCAkYmFzZS1mb250LXNpemU6ICRtcS1iYXNlLWZvbnQtc2l6ZSkge1xuICAgIEBpZiB1bml0bGVzcygkcHgpIHtcbiAgICAgICAgQHdhcm4gXCJBc3N1bWluZyAjeyRweH0gdG8gYmUgaW4gcGl4ZWxzLCBhdHRlbXB0aW5nIHRvIGNvbnZlcnQgaXQgaW50byBwaXhlbHMuXCI7XG4gICAgICAgIEByZXR1cm4gbXEtcHgyZW0oJHB4ICogMXB4LCAkYmFzZS1mb250LXNpemUpO1xuICAgIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICAgICAgQHJldHVybiAkcHg7XG4gICAgfVxuICAgIEByZXR1cm4gKCRweCAvICRiYXNlLWZvbnQtc2l6ZSkgKiAxZW07XG59XG5cbi8vLyBHZXQgYSBicmVha3BvaW50J3Mgd2lkdGhcbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbmFtZSAtIE5hbWUgb2YgdGhlIGJyZWFrcG9pbnQuIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgJHRhYmxldC13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgodGFibGV0KTtcbi8vLyAgQG1lZGlhIChtaW4td2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKGRlc2t0b3ApKSB7fVxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBWYWx1ZSBpbiBwaXhlbHNcbkBmdW5jdGlvbiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgICAgICBAcmV0dXJuIG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIEB3YXJuIFwiQnJlYWtwb2ludCAjeyRuYW1lfSB3YXNuJ3QgZm91bmQgaW4gJGJyZWFrcG9pbnRzLlwiO1xuICAgIH1cbn1cblxuLy8vIE1lZGlhIFF1ZXJ5IG1peGluXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRmcm9tIChmYWxzZSkgLSBPbmUgb2YgJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHBhcmFtIHtTdHJpbmcgfCBCb29sZWFufSAkdW50aWwgKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICRhbmQgKGZhbHNlKSAtIEFkZGl0aW9uYWwgbWVkaWEgcXVlcnkgcGFyYW1ldGVyc1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkbWVkaWEtdHlwZSAoJG1xLW1lZGlhLXR5cGUpIC0gTWVkaWEgdHlwZTogc2NyZWVuLCBwcmludOKAplxuLy8vXG4vLy8gQGlnbm9yZSBVbmRvY3VtZW50ZWQgQVBJLCBmb3IgYWR2YW5jZWQgdXNlIG9ubHk6XG4vLy8gQGlnbm9yZSBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpXG4vLy8gQGlnbm9yZSBAcGFyYW0ge1N0cmluZ30gJHN0YXRpYy1icmVha3BvaW50ICgkbXEtc3RhdGljLWJyZWFrcG9pbnQpXG4vLy9cbi8vLyBAY29udGVudCBzdHlsaW5nIHJ1bGVzLCB3cmFwcGVkIGludG8gYSBAbWVkaWEgcXVlcnkgd2hlbiAkcmVzcG9uc2l2ZSBpcyB0cnVlXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtbWVkaWEtdHlwZVxuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vIEByZXF1aXJlcyB7ZnVuY3Rpb259IG1xLXB4MmVtXG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGhcbi8vL1xuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9uLWRlZmF1bHQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAuZWxlbWVudCB7XG4vLy8gICAgQGluY2x1ZGUgbXEoJGZyb206IG1vYmlsZSkge1xuLy8vICAgICAgY29sb3I6IHJlZDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoJHVudGlsOiB0YWJsZXQpIHtcbi8vLyAgICAgIGNvbG9yOiBibHVlO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcShtb2JpbGUsIHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGdyZWVuO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogdGFibGV0LCAkYW5kOiAnKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJykge1xuLy8vICAgICAgY29sb3I6IHRlYWw7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKDk1MHB4KSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEodGFibGV0LCAkbWVkaWEtdHlwZTogc2NyZWVuKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gICAgLy8gQWR2YW5jZWQgdXNlOlxuLy8vICAgICRteS1icmVha3BvaW50czogKEw6IDkwMHB4LCBYTDogMTIwMHB4KTtcbi8vLyAgICBAaW5jbHVkZSBtcShMLCAkYnJlYWtwb2ludHM6ICRteS1icmVha3BvaW50cywgJHN0YXRpYy1icmVha3BvaW50OiBMKSB7XG4vLy8gICAgICBjb2xvcjogaG90cGluaztcbi8vLyAgICB9XG4vLy8gIH1cbkBtaXhpbiBtcShcbiAgICAkZnJvbTogZmFsc2UsXG4gICAgJHVudGlsOiBmYWxzZSxcbiAgICAkYW5kOiBmYWxzZSxcbiAgICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICAgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMsXG4gICAgJHJlc3BvbnNpdmU6ICRtcS1yZXNwb25zaXZlLFxuICAgICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgICAkbWluLXdpZHRoOiAwO1xuICAgICRtYXgtd2lkdGg6IDA7XG4gICAgJG1lZGlhLXF1ZXJ5OiAnJztcblxuICAgIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICAgIEBpZiAkZnJvbSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtaW4td2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRmcm9tLCAkYnJlYWtwb2ludHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgICBAaWYgJHVudGlsIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbShtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkdW50aWwsICRicmVha3BvaW50cykpIC0gLjAxZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNwb25zaXZlIHN1cHBvcnQgaXMgZGlzYWJsZWQsIHJhc3Rlcml6ZSB0aGUgb3V0cHV0IG91dHNpZGUgQG1lZGlhIGJsb2Nrc1xuICAgIC8vIFRoZSBicm93c2VyIHdpbGwgcmVseSBvbiB0aGUgY2FzY2FkZSBpdHNlbGYuXG4gICAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAgICAgJHN0YXRpYy1icmVha3BvaW50LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCgkc3RhdGljLWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICR0YXJnZXQtd2lkdGg6IG1xLXB4MmVtKCRzdGF0aWMtYnJlYWtwb2ludC13aWR0aCk7XG5cbiAgICAgICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICAgICAgQGlmIChcbiAgICAgICAgICAgICRhbmQgPT0gZmFsc2VcbiAgICAgICAgICAgIGFuZCAkbWluLXdpZHRoIDw9ICR0YXJnZXQtd2lkdGhcbiAgICAgICAgICAgIGFuZCAoXG4gICAgICAgICAgICAgICAgJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAkbWluLXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtaW4td2lkdGg6ICN7JG1pbi13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJG1heC13aWR0aCAhPSAwIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KSc7IH1cbiAgICAgICAgQGlmICRhbmQgICAgICAgICAgICB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgI3skYW5kfSc7IH1cblxuICAgICAgICAvLyBSZW1vdmUgdW5uZWNlc3NhcnkgbWVkaWEgcXVlcnkgcHJlZml4ICdhbGwgYW5kICdcbiAgICAgICAgQGlmICgkbWVkaWEtdHlwZSA9PSAnYWxsJyBhbmQgJG1lZGlhLXF1ZXJ5ICE9ICcnKSB7XG4gICAgICAgICAgICAkbWVkaWEtdHlwZTogJyc7XG4gICAgICAgICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICN7JG1lZGlhLXR5cGUgKyAkbWVkaWEtcXVlcnl9IHtcbiAgICAgICAgICAgIEBjb250ZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLy8gQWRkIGEgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggLSBXaWR0aCBvZiB0aGUgYnJlYWtwb2ludFxuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIEBpbmNsdWRlIG1xLWFkZC1icmVha3BvaW50KHR2c2NyZWVuLCAxOTIwcHgpO1xuLy8vICBAaW5jbHVkZSBtcSh0dnNjcmVlbikge31cbkBtaXhpbiBtcS1hZGQtYnJlYWtwb2ludCgkbmFtZSwgJHdpZHRoKSB7XG4gICAgJG5ldy1icmVha3BvaW50OiAoJG5hbWU6ICR3aWR0aCk7XG4gICAgJG1xLWJyZWFrcG9pbnRzOiBtYXAtbWVyZ2UoJG1xLWJyZWFrcG9pbnRzLCAkbmV3LWJyZWFrcG9pbnQpICFnbG9iYWw7XG59XG5cbi8vLyBTaG93IHRoZSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBvZiB0aGUgdmlld3BvcnRcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaG93LWJyZWFrcG9pbnRzICgkbXEtc2hvdy1icmVha3BvaW50cykgLSBMaXN0IG9mIGJyZWFrcG9pbnRzIHRvIHNob3cgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vLyBAcGFyYW0ge01hcH0gJGJyZWFrcG9pbnRzICgkbXEtYnJlYWtwb2ludHMpIC0gQnJlYWtwb2ludCBuYW1lcyBhbmQgc2l6ZXNcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1icmVha3BvaW50c1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1zaG93LWJyZWFrcG9pbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgZ2xvYmFsIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG4vLy9cbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBjdXN0b20gc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cygoTCwgWEwpLCAoUzogMzAwcHgsIEw6IDgwMHB4LCBYTDogMTIwMHB4KSk7XG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gICAgYm9keTpiZWZvcmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGOEUzO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0ZCRUVENTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBjb2xvcjogI0MwOTg1MztcbiAgICAgICAgZm9udDogc21hbGwtY2FwdGlvbjtcbiAgICAgICAgcGFkZGluZzogM3B4IDZweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuXG4gICAgICAgIC8vIExvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgdGhhdCBzaG91bGQgYmUgc2hvd25cbiAgICAgICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAgICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICAgICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFwiI3skc2hvdy1icmVha3BvaW50fSDiiaUgI3skd2lkdGh9ICgje21xLXB4MmVtKCR3aWR0aCl9KVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AaWYgbGVuZ3RoKCRtcS1zaG93LWJyZWFrcG9pbnRzKSA+IDAge1xuICAgIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0hFQURJTkdTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlZGVmaW5lIGFsbCBvZiBvdXIgYmFzaWMgaGVhZGluZyBzdHlsZXMgYWdhaW5zdCB1dGlsaXR5IGNsYXNzZXMgc28gYXMgdG9cbiAqIGFsbG93IGZvciBkb3VibGUgc3RyYW5kZWQgaGVhZGluZyBoaWVyYXJjaHksIGUuZy4gd2Ugc2VtYW50aWNhbGx5IG5lZWQgYW4gSDIsXG4gKiBidXQgd2Ugd2FudCBpdCB0byBiZSBzaXplZCBsaWtlIGFuIEgxOlxuICpcbiAqICAgPGgyIGNsYXNzPVwidS1oMVwiPjwvaDI+XG4gKlxuICovXG5cbi51LWgxIHtcbiAgQGluY2x1ZGUgaW51aXQtZm9udC1zaXplKCRpbnVpdC1mb250LXNpemUtaDEsICRpbXBvcnRhbnQ6IHRydWUpO1xufVxuXG4udS1oMiB7XG4gIEBpbmNsdWRlIGludWl0LWZvbnQtc2l6ZSgkaW51aXQtZm9udC1zaXplLWgyLCAkaW1wb3J0YW50OiB0cnVlKTtcbn1cblxuLnUtaDMge1xuICBAaW5jbHVkZSBpbnVpdC1mb250LXNpemUoJGludWl0LWZvbnQtc2l6ZS1oMywgJGltcG9ydGFudDogdHJ1ZSk7XG59XG5cbi51LWg0IHtcbiAgQGluY2x1ZGUgaW51aXQtZm9udC1zaXplKCRpbnVpdC1mb250LXNpemUtaDQsICRpbXBvcnRhbnQ6IHRydWUpO1xufVxuXG4udS1oNSB7XG4gIEBpbmNsdWRlIGludWl0LWZvbnQtc2l6ZSgkaW51aXQtZm9udC1zaXplLWg1LCAkaW1wb3J0YW50OiB0cnVlKTtcbn1cblxuLnUtaDYge1xuICBAaW5jbHVkZSBpbnVpdC1mb250LXNpemUoJGludWl0LWZvbnQtc2l6ZS1oNiwgJGltcG9ydGFudDogdHJ1ZSk7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1NQQUNJTkdcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogVXRpbGl0eSBjbGFzc2VzIHRvIHB1dCBzcGVjaWZpYyBzcGFjaW5nIHZhbHVlcyBvbnRvIGVsZW1lbnRzLiBUaGUgYmVsb3cgbG9vcFxuICogd2lsbCBnZW5lcmF0ZSB1cyBhIHN1aXRlIG9mIGNsYXNzZXMgbGlrZTpcbiAqXG4gKiAgIC51LW1hcmdpbi10b3Age31cbiAqICAgLnUtcGFkZGluZy1sZWZ0LWxhcmdlIHt9XG4gKiAgIC51LW1hcmdpbi1yaWdodC1zbWFsbCB7fVxuICogICAudS1wYWRkaW5nIHt9XG4gKiAgIC51LXBhZGRpbmctcmlnaHQtbm9uZSB7fVxuICovXG5cbi8qIHN0eWxlbGludC1kaXNhYmxlIHN0cmluZy1xdW90ZXMgKi9cblxuJGludWl0LXNwYWNpbmctZGlyZWN0aW9uczogKFxuICBudWxsOiBudWxsLFxuICAnLXRvcCc6ICctdG9wJyxcbiAgJy1yaWdodCc6ICctcmlnaHQnLFxuICAnLWJvdHRvbSc6ICctYm90dG9tJyxcbiAgJy1sZWZ0JzogJy1sZWZ0JyxcbikgIWRlZmF1bHQ7XG5cbiRpbnVpdC1zcGFjaW5nLXByb3BlcnRpZXM6IChcbiAgJ3BhZGRpbmcnOiAncGFkZGluZycsXG4gICdtYXJnaW4nOiAnbWFyZ2luJyxcbikgIWRlZmF1bHQ7XG5cbiRpbnVpdC1zcGFjaW5nLXNpemVzOiAoXG4gIG51bGw6ICRpbnVpdC1nbG9iYWwtc3BhY2luZy11bml0LFxuICAnLXRpbnknOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC10aW55LFxuICAnLXNtYWxsJzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtc21hbGwsXG4gICctbGFyZ2UnOiAkaW51aXQtZ2xvYmFsLXNwYWNpbmctdW5pdC1sYXJnZSxcbiAgJy1odWdlJzogJGludWl0LWdsb2JhbC1zcGFjaW5nLXVuaXQtaHVnZSxcbiAgJy1ub25lJzogMFxuKSAhZGVmYXVsdDtcblxuXG5AZWFjaCAkcHJvcGVydHksICRwcm9wZXJ0eS1uYW1lc3BhY2UgaW4gJGludWl0LXNwYWNpbmctcHJvcGVydGllcyB7XG5cbiAgQGVhY2ggJGRpcmVjdGlvbiwgJGRpcmVjdGlvbi1uYW1lc3BhY2UgaW4gJGludWl0LXNwYWNpbmctZGlyZWN0aW9ucyB7XG5cbiAgICBAZWFjaCAkc2l6ZSwgJHZhbHVlIGluICRpbnVpdC1zcGFjaW5nLXNpemVzIHtcblxuICAgICAgLnUtI3skcHJvcGVydHktbmFtZXNwYWNlfSN7JGRpcmVjdGlvbi1uYW1lc3BhY2V9I3skc2l6ZX0ge1xuICAgICAgICAjeyRwcm9wZXJ0eX0jeyRkaXJlY3Rpb259OiAkdmFsdWUgIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSBzdHJpbmctcXVvdGVzICovXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI1BSSU5UXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFZlcnkgY3J1ZGUsIHJlc2V0LWxpa2Ugc3R5bGVzIHRha2VuIGZyb20gdGhlIEhUTUw1IEJvaWxlcnBsYXRlOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2g1YnAvaHRtbDUtYm9pbGVycGxhdGUvYmxvYi81LjMuMC9kaXN0L2RvYy9jc3MubWQjcHJpbnQtc3R5bGVzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9ibG9iL21hc3Rlci9kaXN0L2Nzcy9tYWluLmNzcyNMMjA1LUwyODJcbiAqL1xuXG5AbWVkaWEgcHJpbnQge1xuXG4gIC8qKlxuICAgKiAxLiBCbGFjayBwcmludHMgZmFzdGVyOiBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTNcbiAgICovXG5cbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIsXG4gICo6Zmlyc3QtbGV0dGVyLFxuICAqOmZpcnN0LWxpbmUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDsgLyogWzFdICovXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuXG4gIGEsXG4gIGE6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cblxuICBhW2hyZWZdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cihocmVmKSBcIilcIjtcbiAgfVxuXG4gIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cih0aXRsZSkgXCIpXCI7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBEb24ndCBzaG93IGxpbmtzIHRoYXQgYXJlIGZyYWdtZW50IGlkZW50aWZpZXJzLCBvciB1c2UgdGhlIGBqYXZhc2NyaXB0OmBcbiAgICogcHNldWRvIHByb3RvY29sLlxuICAgKi9cblxuICBhW2hyZWZePVwiI1wiXTphZnRlcixcbiAgYVtocmVmXj1cImphdmFzY3JpcHQ6XCJdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICB9XG5cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5O1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFByaW50aW5nIFRhYmxlczogaHR0cDovL2Nzcy1kaXNjdXNzLmluY3V0aW8uY29tL3dpa2kvUHJpbnRpbmdfVGFibGVzXG4gICAqL1xuXG4gIHRoZWFkIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gIH1cblxuICB0cixcbiAgaW1nIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuXG4gIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cblxuICBwLFxuICBoMixcbiAgaDMge1xuICAgIG9ycGhhbnM6IDM7XG4gICAgd2lkb3dzOiAzO1xuICB9XG5cbiAgaDIsXG4gIGgzIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgfVxuXG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgI0hJREVcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbiByZWFkZXJzOlxuICogaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eVxuICovXG5cbi51LWhpZGRlbi12aXN1YWxseSB7XG4gIEBpbmNsdWRlIGludWl0LWhpZGRlbi12aXN1YWxseSgpO1xufVxuXG5cbi8qKlxuICogSGlkZSB2aXN1YWxseSBhbmQgZnJvbSBzY3JlZW4gcmVhZGVycy5cbiAqL1xuXG4udS1oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvLy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gICAjSElEREVOLVZJU1VBTExZXG4vLyAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vLyBNaXhpbiB0byBxdWlja2x5IGFwcGx5IGFjY2Vzc2libGUgaGlkaW5nIHRvIGVsZW1lbnRzLlxuQG1peGluIGludWl0LWhpZGRlbi12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCkgIWltcG9ydGFudDtcbiAgaGVpZ2h0OiAxcHggIWltcG9ydGFudDtcbiAgbWFyZ2luOiAtMXB4ICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xufVxuIiwiLy8gTGluayBjb21wb25lbnRzIChub24tZGVmYXVsdCBzdHlsZXMpXG5cbmEuaGlkZGVuLWxpbmsge1xuICAvLyB1bmRvIGRlZmF1bHQgPGE+IHN0eWxlXG4gIGJveC1zaGFkb3c6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1ib3R0b206IHVuc2V0ICFpbXBvcnRhbnQ7XG59XG5cblxuYS5oaWRkZW4tbGluay0tbm8taG92ZXIge1xuICBiYWNrZ3JvdW5kOiB1bnNldCAhaW1wb3J0YW50O1xufVxuIl19 */
