/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/sass/pages/contact.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
:root {
  --color-white: #fff;
  --color-cream: #f8f6f1;
  --color-beige-sand: #e8ded0;
  --color-beige-stone: #d8c7ae;
  --color-gold: #c9a45c;
  --color-gold-champagne: #d6be82;
  --color-black: #1e1e1e;
  --color-graphite: #4a4a4a;
  --color-line: #e8e2d6;
  --color-line-soft: #f0eae0;
  --bg-base: var(--color-white);
  --bg-alt: var(--color-cream);
  --bg-accent-soft: var(--color-beige-sand);
  --bg-accent: var(--color-beige-stone);
  --bg-inverse: var(--color-black);
  --fg-primary: var(--color-black);
  --fg-secondary: var(--color-graphite);
  --fg-muted: #8a8a8a;
  --fg-on-dark: rgba(255, 255, 255, .88);
  --fg-on-dark-muted: rgba(255, 255, 255, .55);
  --accent: var(--color-gold);
  --accent-soft: var(--color-gold-champagne);
  --accent-on-dark: var(--color-gold-champagne);
  --border: var(--color-line);
  --border-strong: var(--color-graphite);
  --gradient-gold: linear-gradient(135deg, var(--color-gold) 0%, var(--color-gold-champagne) 100%);
  --gradient-cream: linear-gradient(180deg, var(--color-white) 0%, var(--color-cream) 100%);
  --gradient-sand: linear-gradient(135deg, var(--color-cream) 0%, var(--color-beige-sand) 100%);
  --font-display: "Playfair Display", "Cormorant Garamond", georgia, serif;
  --font-sans: "Montserrat", "Inter", system-ui, -apple-system, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, sfmono-regular, menlo, monospace;
  --fs-display-xl: clamp(3rem, 6vw, 5.5rem);
  --fs-display-lg: clamp(2.5rem, 4.5vw, 4rem);
  --fs-display-md: clamp(2rem, 3.2vw, 2.75rem);
  --fs-h1: 2.75rem;
  --fs-h2: 2.25rem;
  --fs-h3: 1.625rem;
  --fs-h4: 1.25rem;
  --fs-body-lg: 1.125rem;
  --fs-body: 1rem;
  --fs-body-sm: .9375rem;
  --fs-caption: .8125rem;
  --fs-eyebrow: .75rem;
  --lh-display: 1.12;
  --lh-heading: 1.22;
  --lh-body: 1.7;
  --lh-tight: 1.35;
  --tracking-eyebrow: .22em;
  --tracking-wordmark: .32em;
  --tracking-display: -.01em;
  --tracking-body: .005em;
  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semi: 600;
  --weight-bold: 700;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 128px;
  --container-max: 1320px;
  --container-padding: clamp(24px, 4vw, 64px);
  --radius-none: 0;
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --shadow-hairline: 0 0 0 1px var(--color-line);
  --shadow-xs: 0 1px 2px rgba(30, 30, 30, .04);
  --shadow-sm: 0 2px 8px rgba(30, 30, 30, .05);
  --shadow-md: 0 12px 32px -8px rgba(30, 30, 30, .1);
  --shadow-lg: 0 24px 60px -16px rgba(30, 30, 30, .14);
  --shadow-gold: 0 8px 24px -10px rgba(201, 164, 92, .35);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --dur-fast: 180ms;
  --dur-base: 320ms;
  --dur-slow: 560ms; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  display: inline-block;
  font-style: normal;
  font-weight: 400;
  font-variant: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  font-family: "Font Awesome 6 Pro";
  font-weight: 300; }

:root {
  --color-white: #fff;
  --color-cream: #f8f6f1;
  --color-beige-sand: #e8ded0;
  --color-beige-stone: #d8c7ae;
  --color-gold: #c9a45c;
  --color-gold-champagne: #d6be82;
  --color-black: #1e1e1e;
  --color-graphite: #4a4a4a;
  --color-line: #e8e2d6;
  --color-line-soft: #f0eae0;
  --bg-base: var(--color-white);
  --bg-alt: var(--color-cream);
  --bg-accent-soft: var(--color-beige-sand);
  --bg-accent: var(--color-beige-stone);
  --bg-inverse: var(--color-black);
  --fg-primary: var(--color-black);
  --fg-secondary: var(--color-graphite);
  --fg-muted: #8a8a8a;
  --fg-on-dark: rgba(255, 255, 255, .88);
  --fg-on-dark-muted: rgba(255, 255, 255, .55);
  --accent: var(--color-gold);
  --accent-soft: var(--color-gold-champagne);
  --accent-on-dark: var(--color-gold-champagne);
  --border: var(--color-line);
  --border-strong: var(--color-graphite);
  --gradient-gold: linear-gradient(135deg, var(--color-gold) 0%, var(--color-gold-champagne) 100%);
  --gradient-cream: linear-gradient(180deg, var(--color-white) 0%, var(--color-cream) 100%);
  --gradient-sand: linear-gradient(135deg, var(--color-cream) 0%, var(--color-beige-sand) 100%);
  --font-display: "Playfair Display", "Cormorant Garamond", georgia, serif;
  --font-sans: "Montserrat", "Inter", system-ui, -apple-system, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, sfmono-regular, menlo, monospace;
  --fs-display-xl: clamp(3rem, 6vw, 5.5rem);
  --fs-display-lg: clamp(2.5rem, 4.5vw, 4rem);
  --fs-display-md: clamp(2rem, 3.2vw, 2.75rem);
  --fs-h1: 2.75rem;
  --fs-h2: 2.25rem;
  --fs-h3: 1.625rem;
  --fs-h4: 1.25rem;
  --fs-body-lg: 1.125rem;
  --fs-body: 1rem;
  --fs-body-sm: .9375rem;
  --fs-caption: .8125rem;
  --fs-eyebrow: .75rem;
  --lh-display: 1.12;
  --lh-heading: 1.22;
  --lh-body: 1.7;
  --lh-tight: 1.35;
  --tracking-eyebrow: .22em;
  --tracking-wordmark: .32em;
  --tracking-display: -.01em;
  --tracking-body: .005em;
  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semi: 600;
  --weight-bold: 700;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;
  --space-10: 128px;
  --container-max: 1320px;
  --container-padding: clamp(24px, 4vw, 64px);
  --radius-none: 0;
  --radius-xs: 2px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --shadow-hairline: 0 0 0 1px var(--color-line);
  --shadow-xs: 0 1px 2px rgba(30, 30, 30, .04);
  --shadow-sm: 0 2px 8px rgba(30, 30, 30, .05);
  --shadow-md: 0 12px 32px -8px rgba(30, 30, 30, .1);
  --shadow-lg: 0 24px 60px -16px rgba(30, 30, 30, .14);
  --shadow-gold: 0 8px 24px -10px rgba(201, 164, 92, .35);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
  --dur-fast: 180ms;
  --dur-base: 320ms;
  --dur-slow: 560ms; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  display: inline-block;
  font-style: normal;
  font-weight: 400;
  font-variant: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  font-family: "Font Awesome 6 Pro";
  font-weight: 300; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  display: inline-block;
  font-style: normal;
  font-weight: 400;
  font-variant: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }


.breadcrumb-item + .breadcrumb-item::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before,
.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  font-family: "Font Awesome 6 Pro";
  font-weight: 300; }

.breadcrumb {
  --bs-breadcrumb-padding-x: 0;
  --bs-breadcrumb-padding-y: 0;
  --bs-breadcrumb-margin-bottom: 1rem;
  --bs-breadcrumb-font-size: 0.75rem;
  --bs-breadcrumb-bg: ;
  --bs-breadcrumb-border-radius: ;
  --bs-breadcrumb-divider-color: var(--bs-secondary-color);
  --bs-breadcrumb-item-padding-x: 0.5rem;
  --bs-breadcrumb-item-active-color: var(--bs-body-color);
  display: flex;
  flex-wrap: wrap;
  padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);
  margin-bottom: var(--bs-breadcrumb-margin-bottom);
  font-size: var(--bs-breadcrumb-font-size);
  list-style: none;
  background-color: var(--bs-breadcrumb-bg);
  border-radius: var(--bs-breadcrumb-border-radius); }

.breadcrumb-item + .breadcrumb-item {
  padding-left: var(--bs-breadcrumb-item-padding-x); }
  .breadcrumb-item + .breadcrumb-item::before {
    float: left;
    padding-right: var(--bs-breadcrumb-item-padding-x);
    color: var(--bs-breadcrumb-divider-color);
    content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; }

.breadcrumb-item.active {
  color: var(--bs-breadcrumb-item-active-color); }

.breadcrumbs {
  position: relative;
  max-width: 100vw;
  margin-right: -0.75rem;
  margin-left: -0.75rem; }
  .breadcrumbs .breadcrumb {
    flex-wrap: nowrap;
    padding: 0.75rem;
    margin: unset;
    overflow-x: auto; }
    .breadcrumbs .breadcrumb::before, .breadcrumbs .breadcrumb::after {
      position: absolute;
      top: 0;
      display: block;
      height: 100%;
      pointer-events: none;
      content: ""; }
    .breadcrumbs .breadcrumb::before {
      left: 0;
      width: 1rem;
      background-image: linear-gradient(90deg, var(--alpha-breadcrumbs-mobile-shadow-color) 0, var(--alpha-breadcrumbs-mobile-shadow-color-end)); }
    .breadcrumbs .breadcrumb::after {
      right: 0;
      width: 2rem;
      background-image: linear-gradient(90deg, var(--alpha-breadcrumbs-mobile-shadow-color-end) 0, var(--alpha-breadcrumbs-mobile-shadow-color)); }
  .breadcrumbs.on-featured {
    --alpha-breadcrumbs-mobile-shadow-color: #000;
    --alpha-breadcrumbs-mobile-shadow-color-end: rgba(0, 0, 0, 0);
    top: var(--featured-image-height);
    z-index: 10;
    transform: translateY(-100%); }
    .breadcrumbs.on-featured .breadcrumb {
      --bs-breadcrumb-divider-color: currentcolor;
      --bs-breadcrumb-item-active-color: currentcolor; }
      .breadcrumbs.on-featured .breadcrumb::before, .breadcrumbs.on-featured .breadcrumb::after {
        opacity: .75; }
  .breadcrumbs.dark {
    --bs-link-color-rgb: 255, 255, 255; }
    .breadcrumbs.dark a:hover {
      --bs-link-color-rgb: 247, 247, 247; }

.breadcrumbs-on-featured:not(.has-transparent-header) .breadcrumbs {
  top: calc(var(--header-height) + var(--featured-image-height));
  transition: top .3s ease; }

.breadcrumbs-on-featured.search .content-wrapper {
  padding-top: 2rem; }

.breadcrumb-item {
  white-space: nowrap; }
  .breadcrumb-item + .breadcrumb-item::before {
    content: "\f105";
    margin-right: 0;
    line-height: var(--bs-body-line-height); }
  .breadcrumb-item + .breadcrumb-item::before {
    float: unset;
    padding-right: .25rem; }
  .breadcrumb-item.active span {
    font-weight: 700; }

@keyframes form-label-filled {
  0% {
    left: 1.5rem;
    font-size: 1rem;
    background: transparent;
    transform: none; }
  25% {
    left: 1.5rem;
    font-size: 1rem;
    background: transparent;
    transform: rotateY(90deg) translateY(0); }
  75% {
    left: 1.5rem;
    font-size: 0.7rem;
    background: #fff;
    transform: rotateY(90deg) translateY(-1.2rem); }
  100% {
    left: 1.5rem;
    font-size: 0.7rem;
    background: #fff;
    transform: rotateY(0) translateY(-1.2rem); } }

@keyframes form-label {
  0% {
    left: 1.5rem;
    font-size: 0.7rem;
    background: #fff;
    transform: rotateY(0) translateY(-1.2rem); }
  25% {
    left: 1.5rem;
    font-size: 0.7rem;
    background: #fff;
    transform: rotateY(90deg) translateY(-1.2rem); }
  75% {
    left: 1.5rem;
    font-size: 1rem;
    background: transparent;
    transform: rotateY(90deg) translateY(0); }
  100% {
    left: 1.5rem;
    font-size: 1rem;
    background: transparent;
    transform: none; } }

input:-webkit-autofill,
select:-webkit-autofill,
textarea:-webkit-autofill {
  box-shadow: 0 0 0 100px #fff inset;
  -webkit-text-fill-color: var(--bs-body-color); }
  input:-webkit-autofill:hover, input:-webkit-autofill:focus,
  select:-webkit-autofill:hover,
  select:-webkit-autofill:focus,
  textarea:-webkit-autofill:hover,
  textarea:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--bs-body-color);
    background: none !important; }

.grecaptcha-badge {
  visibility: collapse; }

.wpcf7 {
  font-size: 16px; }
  .wpcf7 .wpcf7-form {
    color: var(--bs-body-color);
    margin-top: 1rem;
    display: flex;
    flex-direction: column; }
    .wpcf7 .wpcf7-form .form-field {
      position: relative;
      margin-bottom: 2rem;
      transition: all ease .5s; }
      .wpcf7 .wpcf7-form .form-field p:not([class]) {
        display: contents; }
      .wpcf7 .wpcf7-form .form-field input:not([type="submit"]):not([type="file"]):not([type="checkbox"]) {
        float: none;
        width: 100%;
        padding-left: 0.75rem;
        margin: 0;
        border: 1px solid var(--bs-border-color);
        border-radius: var(--bs-border-radius);
        transition: border-color ease .4s;
        background: #fff; }
        .wpcf7 .wpcf7-form .form-field input:not([type="submit"]):not([type="file"]):not([type="checkbox"]).wpcf7-text, .wpcf7 .wpcf7-form .form-field input:not([type="submit"]):not([type="file"]):not([type="checkbox"]).wpcf7-number {
          height: 2.5rem;
          color: var(--bs-body-color); }
        .wpcf7 .wpcf7-form .form-field input:not([type="submit"]):not([type="file"]):not([type="checkbox"]).wpcf7-not-valid {
          margin: 0;
          border-color: red; }
        .wpcf7 .wpcf7-form .form-field input:not([type="submit"]):not([type="file"]):not([type="checkbox"]):focus {
          outline: none; }
      .wpcf7 .wpcf7-form .form-field input[type="date"] {
        position: relative; }
        .wpcf7 .wpcf7-form .form-field input[type="date"]::-webkit-calendar-picker-indicator {
          position: absolute;
          padding-left: calc(100% - 2.5em); }
      .wpcf7 .wpcf7-form .form-field textarea {
        width: 100%;
        padding-left: 0.75rem;
        padding-top: 0.75rem;
        margin: 0;
        overflow: hidden;
        color: var(--bs-body-color);
        resize: none;
        border: 1px solid var(--bs-border-color);
        border-radius: var(--bs-border-radius);
        transition: border-color ease .4s;
        background: #fff;
        height: initial; }
        .wpcf7 .wpcf7-form .form-field textarea:focus {
          outline: none; }
        .wpcf7 .wpcf7-form .form-field textarea.wpcf7-not-valid {
          margin: 0;
          border-color: red; }
      .wpcf7 .wpcf7-form .form-field select.wpcf7-select,
      .wpcf7 .wpcf7-form .form-field select.wpcf7-form-control {
        padding-left: 0.75rem;
        float: none;
        color: var(--bs-body-color);
        border: 1px solid var(--bs-border-color);
        border-radius: var(--bs-border-radius);
        width: 100%;
        height: 2.5rem;
        background: #fff; }
        .wpcf7 .wpcf7-form .form-field select.wpcf7-select.wpcf7-not-valid,
        .wpcf7 .wpcf7-form .form-field select.wpcf7-form-control.wpcf7-not-valid {
          border-color: red; }
      .wpcf7 .wpcf7-form .form-field > label {
        position: absolute;
        top: 0.75rem;
        left: 1.5rem;
        z-index: 1;
        padding: 0;
        margin: 0;
        color: var(--bs-body-color);
        pointer-events: none;
        cursor: text;
        background: transparent;
        transition: font-size ease .5s, transform ease-in-out .5s, background-color ease .5s, padding ease .5s;
        font-size: 1rem;
        line-height: 1rem; }
      .wpcf7 .wpcf7-form .form-field.style-dark label {
        color: #fff; }
      .wpcf7 .wpcf7-form .form-field.empty label {
        animation: .5s ease-in 0s 1 form-label;
        animation-fill-mode: forwards; }
      .wpcf7 .wpcf7-form .form-field.filled label, .wpcf7 .wpcf7-form .form-field.active label {
        padding: 0 0.75rem; }
      .wpcf7 .wpcf7-form .form-field.filled label {
        animation: .5s ease-in 0s 1 form-label-filled;
        animation-direction: normal;
        animation-fill-mode: forwards; }
      .wpcf7 .wpcf7-form .form-field.active label {
        color: var(--bs-primary) !important; }
      .wpcf7 .wpcf7-form .form-field.active input,
      .wpcf7 .wpcf7-form .form-field.active textarea {
        border-color: var(--bs-primary) !important; }
      .wpcf7 .wpcf7-form .form-field.no-anim label, .wpcf7 .wpcf7-form .form-field.form-field-noanim label {
        animation: none !important;
        position: relative !important;
        top: 0 !important;
        left: 0 !important;
        padding: 0;
        margin-top: 0.5rem;
        transform: translateY(-0.25rem); }
      .wpcf7 .wpcf7-form .form-field.form-field-select label {
        position: relative; }
      .wpcf7 .wpcf7-form .form-field.form-field-acceptance input {
        width: auto; }
      .wpcf7 .wpcf7-form .form-field.form-field-rgpd, .wpcf7 .wpcf7-form .form-field.form-legal-notice {
        margin: 1rem auto;
        font-size: .7rem;
        text-align: center;
        padding: 0; }
      .wpcf7 .wpcf7-form .form-field.form-field-double {
        display: flex; }
        .wpcf7 .wpcf7-form .form-field.form-field-double span:first-child {
          flex: 2 1; }
          .wpcf7 .wpcf7-form .form-field.form-field-double span:first-child input.wpcf7-text {
            border-right-width: 1px;
            border-radius: 10px 0 0 10px; }
        .wpcf7 .wpcf7-form .form-field.form-field-double span:last-child {
          flex: 1 1; }
          .wpcf7 .wpcf7-form .form-field.form-field-double span:last-child input.wpcf7-text {
            border-left-width: 1px;
            border-radius: 0 10px 10px 0; }
      .wpcf7 .wpcf7-form .form-field.form-field-checkbox .wpcf7-checkbox {
        display: flex;
        flex-direction: column;
        margin-right: -.25em;
        margin-left: -.25em; }
        .wpcf7 .wpcf7-form .form-field.form-field-checkbox .wpcf7-checkbox .wpcf7-list-item {
          display: flex;
          align-items: center;
          padding: 0 .25em; }
          .wpcf7 .wpcf7-form .form-field.form-field-checkbox .wpcf7-checkbox .wpcf7-list-item label {
            cursor: pointer;
            display: flex;
            align-items: center; }
            .wpcf7 .wpcf7-form .form-field.form-field-checkbox .wpcf7-checkbox .wpcf7-list-item label .wpcf7-list-item-label {
              padding-left: .5rem; }
      .wpcf7 .wpcf7-form .form-field.form-field-checkbox.checkbox-inline label {
        margin-bottom: .25em; }
      .wpcf7 .wpcf7-form .form-field.form-field-checkbox.checkbox-inline .wpcf7-checkbox {
        flex-direction: row;
        flex-wrap: wrap; }
        .wpcf7 .wpcf7-form .form-field.form-field-checkbox.checkbox-inline .wpcf7-checkbox .wpcf7-list-item {
          flex: 0 0 200px; }
      .wpcf7 .wpcf7-form .form-field.form-field-date input {
        height: 2.5rem; }
      .wpcf7 .wpcf7-form .form-field.inline {
        display: flex;
        flex-direction: column; }
        .wpcf7 .wpcf7-form .form-field.inline label {
          position: static;
          line-height: 25px; }
        .wpcf7 .wpcf7-form .form-field.inline .wpcf7-radio {
          display: flex; }
          .wpcf7 .wpcf7-form .form-field.inline .wpcf7-radio .wpcf7-list-item {
            display: flex;
            align-items: center; }
            .wpcf7 .wpcf7-form .form-field.inline .wpcf7-radio .wpcf7-list-item input {
              width: auto;
              margin-right: .25em;
              margin-left: .25em; }
        .wpcf7 .wpcf7-form .form-field.inline .wpcf7-checkbox {
          flex-direction: row; }
    .wpcf7 .wpcf7-form .form-field-submit {
      text-align: center;
      display: flex;
      align-items: center; }
      .wpcf7 .wpcf7-form .form-field-submit .ajax-loader, .wpcf7 .wpcf7-form .form-field-submit .wpcf7-spinner {
        background-repeat: no-repeat;
        background-position: center;
        min-height: unset;
        position: absolute; }
    .wpcf7 .wpcf7-form span.wpcf7-list-item {
      margin: 0; }
    .wpcf7 .wpcf7-form .form-field-required {
      color: red; }
    .wpcf7 .wpcf7-form .form-field-wrap {
      display: flex;
      align-items: flex-end;
      margin-right: -15px;
      margin-left: -15px; }
      .wpcf7 .wpcf7-form .form-field-wrap .form-field-date {
        flex: 1 1;
        margin-right: 15px;
        margin-left: 15px; }
        .wpcf7 .wpcf7-form .form-field-wrap .form-field-date input {
          margin-top: 0; }
    .wpcf7 .wpcf7-form .wpcf7-form-control-wrap {
      display: block; }
      .wpcf7 .wpcf7-form .wpcf7-form-control-wrap .wpcf7-not-valid-tip {
        color: red !important;
        font-size: 0.9rem;
        font-weight: normal;
        position: absolute;
        bottom: -2rem;
        left: 0.75rem;
        right: 0;
        height: 30px;
        z-index: 2; }
    .wpcf7 .wpcf7-form .form-field-desc {
      font-size: 0.8rem;
      font-style: italic;
      color: #696969; }
    .wpcf7 .wpcf7-form .wpcf7-response-output {
      text-align: center;
      border: none !important;
      font-size: .9rem;
      margin-top: 1rem; }
    .wpcf7 .wpcf7-form:not(.submitting) .ajax-loader, .wpcf7 .wpcf7-form:not(.submitting) .wpcf7-spinner {
      display: none !important; }
    .wpcf7 .wpcf7-form.sent .wpcf7-response-output {
      color: #87d37c !important; }
    .wpcf7 .wpcf7-form.invalid .wpcf7-response-output {
      color: red !important; }
  .wpcf7 .form-row {
    display: flex;
    flex-direction: column;
    margin-right: -0.75rem;
    margin-left: -0.75rem; }
    .wpcf7 .form-row::before, .wpcf7 .form-row::after {
      display: none !important; }
    .wpcf7 .form-row > .form-col, .wpcf7 .form-row > .form-col-6, .wpcf7 .form-row > .form-col-4, .wpcf7 .form-row > .form-col-3 {
      position: relative;
      width: 100%;
      padding-right: 0.75rem !important;
      padding-left: 0.75rem !important; }

.wpcf7-checkbox {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px; }

.wpcf7-checkbox .wpcf7-list-item {
  margin: 0; }

.wpcf7-checkbox .wpcf7-list-item label {
  position: relative;
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 15px 40px 15px 16px;
  font-size: 13px;
  font-weight: 500;
  color: var(--fg-primary);
  cursor: pointer;
  border: 1px solid var(--border);
  border-radius: 2px;
  transition: all 240ms cubic-bezier(0.16, 1, 0.3, 1); }

.wpcf7-checkbox .wpcf7-list-item label:hover {
  border-color: var(--accent); }

.wpcf7-checkbox .wpcf7-list-item label::before {
  flex: none;
  font-family: "Font Awesome 6 Pro", sans-serif;
  font-size: 17px;
  font-style: normal;
  font-weight: 900;
  line-height: 1;
  color: var(--accent); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Rénovation"]) label::before {
  content: "\f6e3";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Construction"]) label::before {
  content: "\f1ad";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Peinture"]) label::before {
  content: "\f55d";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Carrelage"]) label::before {
  content: "\f84c";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Électricité"]) label::before {
  content: "\f0e7";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item:has([value="Autre"]) label::before {
  content: "\f141";
  margin-right: 0.25em;
  line-height: var(--bs-body-line-height); }

.wpcf7-checkbox .wpcf7-list-item input {
  position: absolute;
  top: 13px;
  right: 13px;
  width: 16px;
  height: 16px;
  accent-color: var(--accent); }

.wpcf7-checkbox .wpcf7-list-item:has(input:checked) label {
  background: rgba(201, 164, 92, 0.07);
  border-color: var(--accent); }

@media (min-width: 480px) {
          .wpcf7 .wpcf7-form .form-field.inline {
            flex-direction: row; }
      .wpcf7 .form-row {
        flex-direction: row;
        flex-wrap: wrap; }
      .wpcf7 .form-row > .form-col-6 {
        flex: 0 0 50%;
        max-width: 50%; }
      .wpcf7 .form-row > .form-col-4 {
        flex: 0 0 33.33%;
        max-width: 33.33%; }
      .wpcf7 .form-row > .form-col-3 {
        flex: 0 0 25%;
        max-width: 25%; } }

@media (min-width: 768px) {
    .breadcrumbs .breadcrumb::before, .breadcrumbs .breadcrumb::after {
      display: none; }
      .wpcf7 .wpcf7-form {
        margin-top: 2rem; } }

@media (max-width: 959px) {
  .form-field-submit {
    order: 1; }
  .form-legal-notice,
  .form-field-rgpd {
    order: 2; }
        .wpcf7 .wpcf7-form .wpcf7-response-output {
          margin-top: 0;
          margin-bottom: 1rem; } }

@media (max-width: 768px) {
          .wpcf7 .wpcf7-form .form-field select.wpcf7-select,
          .wpcf7 .wpcf7-form .form-field select.wpcf7-form-control {
            width: 100%; } }

@media (max-width: 640px) {
  .wpcf7-checkbox {
    grid-template-columns: 1fr 1fr; } }


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUJBQW1CO1FBQ25CLGVBQWU7TUE5WXJCO1FBNFpRLGFBQWE7UUFDYixjQUFjO01BN1p0QjtRQXFhUSxnQkFBZ0I7UUFDaEIsaUJBQWlCO01BdGF6QjtRQThhUSxhQUFhO1FBQ2IsY0FBYyxJQTdJZjs7QUVsUUg7SVI3REo7TUF1Q1EsYUFBYTtNTVZyQjtRQVVNLGdCRDFCbUQsSUwyQmxEOztBTXZCUDtFQUVFO0lBQ0UsUUFBUTtFQUdWOztJQUVFLFFBQVE7UUFJWjtVQXdXUSxhQUFhO1VBQ2IsbUJBQW1CLElBNVd4Qjs7QUFvR0s7VUFqR1I7O1lBa0dVLFdBQVcsSUFFZDs7QUMvQ1A7RUF2RUE7SUF5RUksOEJBQThCLElBQy9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vYXNzZXRzL3Nhc3MvcGFnZXMvY29udGFjdC5zY3NzIiwid2VicGFjazovL2doYWZmYXJpcmVub3ZhdGlvbi10aGVtZS8uL2Fzc2V0cy9zYXNzL2Fic3RyYWN0cy9fZ2hhZmZhcmktdG9rZW5zLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vbm9kZV9tb2R1bGVzL0BuZW1hdGlzL3dwLWFscGhhL2Fzc2V0cy9zYXNzL3ZlbmRvcnMvZm9udGF3ZXNvbWUvYWJzdHJhY3RzL19taXhpbnMuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvX2JyZWFkY3J1bWIuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvdmVuZG9yL19yZnMuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19ib3JkZXItcmFkaXVzLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vbm9kZV9tb2R1bGVzL0BuZW1hdGlzL3dwLWFscGhhL2Fzc2V0cy9zYXNzL2NvbXBvbmVudHMvX2JyZWFkY3J1bWIuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvQG5lbWF0aXMvd3AtYWxwaGEvYXNzZXRzL3Nhc3MvYWJzdHJhY3RzL192YXJpYWJsZXMuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXByby9zY3NzL19mdW5jdGlvbnMuc2NzcyIsIndlYnBhY2s6Ly9naGFmZmFyaXJlbm92YXRpb24tdGhlbWUvLi9ub2RlX21vZHVsZXMvQG5lbWF0aXMvY2Y3LWVmZmVjdC9hc3NldHMvc2Fzcy9jb3JlL19hbmltYXRpb25zLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vbm9kZV9tb2R1bGVzL0BuZW1hdGlzL3dwLWFscGhhL2Fzc2V0cy9zYXNzL2Fic3RyYWN0cy9fZnVuY3Rpb25zLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vbm9kZV9tb2R1bGVzL0BuZW1hdGlzL2NmNy1lZmZlY3QvYXNzZXRzL3Nhc3MvYWJzdHJhY3QvX3ZhcmlhYmxlcy5zY3NzIiwid2VicGFjazovL2doYWZmYXJpcmVub3ZhdGlvbi10aGVtZS8uL25vZGVfbW9kdWxlcy9AbmVtYXRpcy9jZjctZWZmZWN0L2Fzc2V0cy9zYXNzL2NvcmUvX2Zvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vYXNzZXRzL3Nhc3MvY29tcG9uZW50cy9fY2Y3LWZvcm1zLnNjc3MiLCJ3ZWJwYWNrOi8vZ2hhZmZhcmlyZW5vdmF0aW9uLXRoZW1lLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiY29uZmlnL2dyaWQueWFtbFwiO1xyXG5AaW1wb3J0IFwiY29uZmlnL3RlbXBsYXRlcy55YW1sXCI7XHJcbkBpbXBvcnQgXCJjb25maWcvdGhlbWUueWFtbFwiO1xyXG5AaW1wb3J0IFwiY29uZmlnL3dvb2NvbW1lcmNlLnlhbWxcIjtcclxuQGltcG9ydCBcIn5AbmVtYXRpcy93cC1hbHBoYS9hc3NldHMvc2Fzcy9hYnN0cmFjdHMveWFtbC12YXJpYWJsZXNcIjtcclxuQGltcG9ydCBcImFzc2V0cy9zYXNzL2luaXRcIjtcbkBpbXBvcnQgXCIuLi9pbml0XCI7XG5cbi8vID09PSBXUCBBTFBIQSBBU1NFVFNcbkBpbXBvcnQgXCJ+QG5lbWF0aXMvd3AtYWxwaGEvYXNzZXRzL3Nhc3MvcGFnZXMvY29udGFjdFwiO1xuXG4vLyA9PT0gR0hBRkZBUkkgQ09NUE9ORU5UU1xuLy8gU3VyY291Y2hlIENGNyAoY2hpcHMgwqsgdHlwZSBkZSB0cmF2YXV4IMK7KS4gQ2V0dGUgZmV1aWxsZSBlc3QgYXVzc2kgY2hhcmfDqWUgc3VyXG4vLyBsYSBIUCAoaG9vayksIGRvbmMgbGVzIGNoaXBzIHMnYXBwbGlxdWVudCDDoCBsYSBmb2lzIGljaSBldCBzdXIgbGEgSFAuXG5AaW1wb3J0IFwiLi4vY29tcG9uZW50cy9jZjctZm9ybXNcIjtcbiIsIi8vIEdoYWZmYXJpIFLDqW5vdmF0aW9uIOKAlCBkZXNpZ24gdG9rZW5zIChwYWxldHRlIGNvbXBsw6h0ZSBpc3N1ZSBkZSBsYSBtYXF1ZXR0ZSlcbi8vIENlcyBjdXN0b20gcHJvcGVydGllcyBzb250IGFkZGl0aXZlcyA7IGVsbGVzIG5lIGNvbmZsaWN0dWVudCBwYXMgYXZlYyBsZXMgLS1icy0qIGQnQWxwaGEuXG46cm9vdCB7XG4gIC8vIOKUgOKUgCBQYWxldHRlIGJydXRlXG4gIC0tY29sb3Itd2hpdGU6ICNmZmY7XG4gIC0tY29sb3ItY3JlYW06ICNmOGY2ZjE7XG4gIC0tY29sb3ItYmVpZ2Utc2FuZDogI2U4ZGVkMDtcbiAgLS1jb2xvci1iZWlnZS1zdG9uZTogI2Q4YzdhZTtcbiAgLS1jb2xvci1nb2xkOiAjYzlhNDVjO1xuICAtLWNvbG9yLWdvbGQtY2hhbXBhZ25lOiAjZDZiZTgyO1xuICAtLWNvbG9yLWJsYWNrOiAjMWUxZTFlO1xuICAtLWNvbG9yLWdyYXBoaXRlOiAjNGE0YTRhO1xuICAtLWNvbG9yLWxpbmU6ICNlOGUyZDY7XG4gIC0tY29sb3ItbGluZS1zb2Z0OiAjZjBlYWUwO1xuXG4gIC8vIOKUgOKUgCBTw6ltYW50aXF1ZSDigJQgYmFja2dyb3VuZHNcbiAgLS1iZy1iYXNlOiB2YXIoLS1jb2xvci13aGl0ZSk7XG4gIC0tYmctYWx0OiB2YXIoLS1jb2xvci1jcmVhbSk7XG4gIC0tYmctYWNjZW50LXNvZnQ6IHZhcigtLWNvbG9yLWJlaWdlLXNhbmQpO1xuICAtLWJnLWFjY2VudDogdmFyKC0tY29sb3ItYmVpZ2Utc3RvbmUpO1xuICAtLWJnLWludmVyc2U6IHZhcigtLWNvbG9yLWJsYWNrKTtcblxuICAvLyDilIDilIAgU8OpbWFudGlxdWUg4oCUIGZvcmVncm91bmRzXG4gIC0tZmctcHJpbWFyeTogdmFyKC0tY29sb3ItYmxhY2spO1xuICAtLWZnLXNlY29uZGFyeTogdmFyKC0tY29sb3ItZ3JhcGhpdGUpO1xuICAtLWZnLW11dGVkOiAjOGE4YThhO1xuICAtLWZnLW9uLWRhcms6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjg4KTtcbiAgLS1mZy1vbi1kYXJrLW11dGVkOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC41NSk7XG5cbiAgLy8g4pSA4pSAIEFjY2VudHNcbiAgLS1hY2NlbnQ6IHZhcigtLWNvbG9yLWdvbGQpO1xuICAtLWFjY2VudC1zb2Z0OiB2YXIoLS1jb2xvci1nb2xkLWNoYW1wYWduZSk7XG4gIC0tYWNjZW50LW9uLWRhcms6IHZhcigtLWNvbG9yLWdvbGQtY2hhbXBhZ25lKTtcblxuICAvLyDilIDilIAgQm9yZHVyZXNcbiAgLS1ib3JkZXI6IHZhcigtLWNvbG9yLWxpbmUpO1xuICAtLWJvcmRlci1zdHJvbmc6IHZhcigtLWNvbG9yLWdyYXBoaXRlKTtcblxuICAvLyDilIDilIAgRMOpZ3JhZMOpc1xuICAtLWdyYWRpZW50LWdvbGQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWdvbGQpIDAlLCB2YXIoLS1jb2xvci1nb2xkLWNoYW1wYWduZSkgMTAwJSk7XG4gIC0tZ3JhZGllbnQtY3JlYW06IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHZhcigtLWNvbG9yLXdoaXRlKSAwJSwgdmFyKC0tY29sb3ItY3JlYW0pIDEwMCUpO1xuICAtLWdyYWRpZW50LXNhbmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNvbG9yLWNyZWFtKSAwJSwgdmFyKC0tY29sb3ItYmVpZ2Utc2FuZCkgMTAwJSk7XG5cbiAgLy8g4pSA4pSAIFR5cG9ncmFwaGllIOKAlCBmYW1pbGxlc1xuICAtLWZvbnQtZGlzcGxheTogXCJQbGF5ZmFpciBEaXNwbGF5XCIsIFwiQ29ybW9yYW50IEdhcmFtb25kXCIsIGdlb3JnaWEsIHNlcmlmO1xuICAtLWZvbnQtc2FuczogXCJNb250c2VycmF0XCIsIFwiSW50ZXJcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICAtLWZvbnQtbW9ubzogXCJKZXRCcmFpbnMgTW9ub1wiLCB1aS1tb25vc3BhY2UsIHNmbW9uby1yZWd1bGFyLCBtZW5sbywgbW9ub3NwYWNlO1xuXG4gIC8vIOKUgOKUgCBUYWlsbGVzIGRlIHBvbGljZVxuICAtLWZzLWRpc3BsYXkteGw6IGNsYW1wKDNyZW0sIDZ2dywgNS41cmVtKTtcbiAgLS1mcy1kaXNwbGF5LWxnOiBjbGFtcCgyLjVyZW0sIDQuNXZ3LCA0cmVtKTtcbiAgLS1mcy1kaXNwbGF5LW1kOiBjbGFtcCgycmVtLCAzLjJ2dywgMi43NXJlbSk7XG4gIC0tZnMtaDE6IDIuNzVyZW07XG4gIC0tZnMtaDI6IDIuMjVyZW07XG4gIC0tZnMtaDM6IDEuNjI1cmVtO1xuICAtLWZzLWg0OiAxLjI1cmVtO1xuICAtLWZzLWJvZHktbGc6IDEuMTI1cmVtO1xuICAtLWZzLWJvZHk6IDFyZW07XG4gIC0tZnMtYm9keS1zbTogLjkzNzVyZW07XG4gIC0tZnMtY2FwdGlvbjogLjgxMjVyZW07XG4gIC0tZnMtZXllYnJvdzogLjc1cmVtO1xuXG4gIC8vIOKUgOKUgCBIYXV0ZXVycyBkZSBsaWduZVxuICAtLWxoLWRpc3BsYXk6IDEuMTI7XG4gIC0tbGgtaGVhZGluZzogMS4yMjtcbiAgLS1saC1ib2R5OiAxLjc7XG4gIC0tbGgtdGlnaHQ6IDEuMzU7XG5cbiAgLy8g4pSA4pSAIEVzcGFjZW1lbnRzIGxldHRyaW5lc1xuICAtLXRyYWNraW5nLWV5ZWJyb3c6IC4yMmVtO1xuICAtLXRyYWNraW5nLXdvcmRtYXJrOiAuMzJlbTtcbiAgLS10cmFja2luZy1kaXNwbGF5OiAtLjAxZW07XG4gIC0tdHJhY2tpbmctYm9keTogLjAwNWVtO1xuXG4gIC8vIOKUgOKUgCBHcmFpc3Nlc1xuICAtLXdlaWdodC1saWdodDogMzAwO1xuICAtLXdlaWdodC1yZWd1bGFyOiA0MDA7XG4gIC0td2VpZ2h0LW1lZGl1bTogNTAwO1xuICAtLXdlaWdodC1zZW1pOiA2MDA7XG4gIC0td2VpZ2h0LWJvbGQ6IDcwMDtcblxuICAvLyDilIDilIAgRXNwYWNlc1xuICAtLXNwYWNlLTE6IDRweDtcbiAgLS1zcGFjZS0yOiA4cHg7XG4gIC0tc3BhY2UtMzogMTJweDtcbiAgLS1zcGFjZS00OiAxNnB4O1xuICAtLXNwYWNlLTU6IDI0cHg7XG4gIC0tc3BhY2UtNjogMzJweDtcbiAgLS1zcGFjZS03OiA0OHB4O1xuICAtLXNwYWNlLTg6IDY0cHg7XG4gIC0tc3BhY2UtOTogOTZweDtcbiAgLS1zcGFjZS0xMDogMTI4cHg7XG5cbiAgLy8g4pSA4pSAIENvbnRlbmV1clxuICAtLWNvbnRhaW5lci1tYXg6IDEzMjBweDtcbiAgLS1jb250YWluZXItcGFkZGluZzogY2xhbXAoMjRweCwgNHZ3LCA2NHB4KTtcblxuICAvLyDilIDilIAgUmF5b25zXG4gIC0tcmFkaXVzLW5vbmU6IDA7XG4gIC0tcmFkaXVzLXhzOiAycHg7XG4gIC0tcmFkaXVzLXNtOiA0cHg7XG4gIC0tcmFkaXVzLW1kOiA2cHg7XG5cbiAgLy8g4pSA4pSAIE9tYnJlc1xuICAtLXNoYWRvdy1oYWlybGluZTogMCAwIDAgMXB4IHZhcigtLWNvbG9yLWxpbmUpO1xuICAtLXNoYWRvdy14czogMCAxcHggMnB4IHJnYmEoMzAsIDMwLCAzMCwgLjA0KTtcbiAgLS1zaGFkb3ctc206IDAgMnB4IDhweCByZ2JhKDMwLCAzMCwgMzAsIC4wNSk7XG4gIC0tc2hhZG93LW1kOiAwIDEycHggMzJweCAtOHB4IHJnYmEoMzAsIDMwLCAzMCwgLjEpO1xuICAtLXNoYWRvdy1sZzogMCAyNHB4IDYwcHggLTE2cHggcmdiYSgzMCwgMzAsIDMwLCAuMTQpO1xuICAtLXNoYWRvdy1nb2xkOiAwIDhweCAyNHB4IC0xMHB4IHJnYmEoMjAxLCAxNjQsIDkyLCAuMzUpO1xuXG4gIC8vIOKUgOKUgCBFYXNpbmdzICYgZHVyw6llc1xuICAtLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG4gIC0tZWFzZS1pbi1vdXQ6IGN1YmljLWJlemllciguNjUsIDAsIC4zNSwgMSk7XG4gIC0tZHVyLWZhc3Q6IDE4MG1zO1xuICAtLWR1ci1iYXNlOiAzMjBtcztcbiAgLS1kdXItc2xvdzogNTYwbXM7XG59XG4iLCIkdXNlLWZhLXBybzogdHJ1ZSAhZGVmYXVsdDtcblxuQG1peGluIGZhLWljb24tc3RhbmRhbG9uZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4lZmEsXG4lZmFzLFxuJWZhcixcbiVmYWwsXG4lZmFkLFxuJWZhdCxcbiVmYWIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuJWZhLWljb24tc3RhbmRhbG9uZSB7XG4gIEBpbmNsdWRlIGZhLWljb24tc3RhbmRhbG9uZSAoKTtcbn1cblxuJWZhLFxuJWZhcyB7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA2IFByb1wiO1xuICBmb250LXdlaWdodDogOTAwO1xufVxuXG4lZmFyIHtcbiAgZm9udC1mYW1pbHk6IFwiRm9udCBBd2Vzb21lIDYgUHJvXCI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbiVmYWwge1xuICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNiBQcm9cIjtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuJWZhdCB7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA2IFByb1wiO1xuICBmb250LXdlaWdodDogMTAwO1xufVxuXG4lZmFiIHtcbiAgZm9udC1mYW1pbHk6IFwiRm9udCBBd2Vzb21lIDYgQnJhbmRzXCI7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbkBtaXhpbiBmb250LWF3ZXNvbWUoJGNvZGUpIHtcbiAgQGV4dGVuZCAlZmEtaWNvbi1zdGFuZGFsb25lO1xuXG4gIEBpZiAkdXNlLWZhLXBybyB7XG4gICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLXBybygkY29kZSk7XG4gIH0gQGVsc2Uge1xuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmb250LWZhbWlseS1uby1taXNzaW5nLWdlbmVyaWMtZmFtaWx5LWtleXdvcmRcbiAgICBAZXh0ZW5kICVmYTtcblxuICAgIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWNsYXJhdGlvbi1uby1pbXBvcnRhbnRcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb250ZW50OiAkY29kZTtcbiAgfVxuXG4gIEBjb250ZW50O1xufVxuXG5AbWl4aW4gZm9udC1hd2Vzb21lLXBybygkY29kZSkge1xuICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtcHJvLXNvbGlkKCRjb2RlKTtcbn1cblxuQG1peGluIGZvbnQtYXdlc29tZS1wcm8tc29saWQoJGNvZGUpIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGZvbnQtZmFtaWx5LW5vLW1pc3NpbmctZ2VuZXJpYy1mYW1pbHkta2V5d29yZFxuICBAZXh0ZW5kICVmYXM7XG4gIGNvbnRlbnQ6IGZhLWNvbnRlbnQoJGNvZGUpO1xufVxuXG5AbWl4aW4gZm9udC1hd2Vzb21lLXByby1yZWd1bGFyKCRjb2RlKSB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmb250LWZhbWlseS1uby1taXNzaW5nLWdlbmVyaWMtZmFtaWx5LWtleXdvcmRcbiAgQGV4dGVuZCAlZmFyO1xuICBjb250ZW50OiBmYS1jb250ZW50KCRjb2RlKTtcbn1cblxuQG1peGluIGZvbnQtYXdlc29tZS1wcm8tbGlnaHQoJGNvZGUpIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGZvbnQtZmFtaWx5LW5vLW1pc3NpbmctZ2VuZXJpYy1mYW1pbHkta2V5d29yZFxuICBAZXh0ZW5kICVmYWw7XG4gIGNvbnRlbnQ6IGZhLWNvbnRlbnQoJGNvZGUpO1xufVxuXG5AbWl4aW4gZm9udC1hd2Vzb21lLXByby10aGluKCRjb2RlKSB7XG4gIC8vIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBmb250LWZhbWlseS1uby1taXNzaW5nLWdlbmVyaWMtZmFtaWx5LWtleXdvcmRcbiAgQGV4dGVuZCAlZmF0O1xuICBjb250ZW50OiBmYS1jb250ZW50KCRjb2RlKTtcbn1cblxuQG1peGluIGZvbnQtYXdlc29tZS1wcm8tYnJhbmQoJGNvZGUpIHtcbiAgLy8gc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIGZvbnQtZmFtaWx5LW5vLW1pc3NpbmctZ2VuZXJpYy1mYW1pbHkta2V5d29yZFxuICBAZXh0ZW5kICVmYWI7XG4gIGNvbnRlbnQ6IGZhLWNvbnRlbnQoJGNvZGUpO1xufVxuXG5AbWl4aW4gZm9udC1hd2Vzb21lLWJlZm9yZSgkY29kZSwgJGZsb2F0aW5nOiBmYWxzZSwgJGZhLXN0eWxlOiBcInNvbGlkXCIsICRtYXJnaW46IC4yNWVtKSB7XG4gICY6OmJlZm9yZSB7XG4gICAgQGlmICRmYS1zdHlsZSA9PSBcInJlZ3VsYXJcIiB7XG4gICAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtcHJvLXJlZ3VsYXIoJGNvZGUpO1xuICAgIH0gQGVsc2UgaWYgJGZhLXN0eWxlID09IFwibGlnaHRcIiB7XG4gICAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtcHJvLWxpZ2h0KCRjb2RlKTtcbiAgICB9IEBlbHNlIGlmICRmYS1zdHlsZSA9PSBcInRoaW5cIiB7XG4gICAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtcHJvLXRoaW4oJGNvZGUpO1xuICAgIH0gQGVsc2UgaWYgJGZhLXN0eWxlID09IFwiYnJhbmRcIiB7XG4gICAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtcHJvLWJyYW5kKCRjb2RlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGZvbnQtYXdlc29tZSgkY29kZSk7XG4gICAgfVxuXG4gICAgQGlmICRmbG9hdGluZyB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIH1cbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG5cbiAgICBsaW5lLWhlaWdodDogdmFyKC0tYnMtYm9keS1saW5lLWhlaWdodCk7XG5cbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gZm9udC1hd2Vzb21lLWFmdGVyKCRjb2RlLCAkZmxvYXRpbmc6IGZhbHNlLCAkZmEtc3R5bGU6IFwic29saWRcIiwgJG1hcmdpbjogLjI1ZW0pIHtcbiAgJjo6YWZ0ZXIge1xuICAgIEBpZiAkZmEtc3R5bGUgPT0gXCJyZWd1bGFyXCIge1xuICAgICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLXByby1yZWd1bGFyKCRjb2RlKTtcbiAgICB9IEBlbHNlIGlmICRmYS1zdHlsZSA9PSBcImxpZ2h0XCIge1xuICAgICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLXByby1saWdodCgkY29kZSk7XG4gICAgfSBAZWxzZSBpZiAkZmEtc3R5bGUgPT0gXCJ0aGluXCIge1xuICAgICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLXByby10aGluKCRjb2RlKTtcbiAgICB9IEBlbHNlIGlmICRmYS1zdHlsZSA9PSBcImJyYW5kXCIge1xuICAgICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLXByby1icmFuZCgkY29kZSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUoJGNvZGUpO1xuICAgIH1cblxuICAgIEBpZiAkZmxvYXRpbmcge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWJzLWJvZHktbGluZS1oZWlnaHQpO1xuXG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi5icmVhZGNydW1iIHtcbiAgLy8gc2Nzcy1kb2NzLXN0YXJ0IGJyZWFkY3J1bWItY3NzLXZhcnNcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXg6ICN7JGJyZWFkY3J1bWItcGFkZGluZy14fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXk6ICN7JGJyZWFkY3J1bWItcGFkZGluZy15fTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAjeyRicmVhZGNydW1iLW1hcmdpbi1ib3R0b219O1xuICBAaW5jbHVkZSByZnMoJGJyZWFkY3J1bWItZm9udC1zaXplLCAtLSN7JHByZWZpeH1icmVhZGNydW1iLWZvbnQtc2l6ZSk7XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItYmc6ICN7JGJyZWFkY3J1bWItYmd9O1xuICAtLSN7JHByZWZpeH1icmVhZGNydW1iLWJvcmRlci1yYWRpdXM6ICN7JGJyZWFkY3J1bWItYm9yZGVyLXJhZGl1c307XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlci1jb2xvcjogI3skYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yfTtcbiAgLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteDogI3skYnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteH07XG4gIC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3I6ICN7JGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yfTtcbiAgLy8gc2Nzcy1kb2NzLWVuZCBicmVhZGNydW1iLWNzcy12YXJzXG5cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBwYWRkaW5nOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1wYWRkaW5nLXkpIHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLXBhZGRpbmcteCk7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLW1hcmdpbi1ib3R0b20pO1xuICBAaW5jbHVkZSBmb250LXNpemUodmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZm9udC1zaXplKSk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWJnKTtcbiAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyh2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1ib3JkZXItcmFkaXVzKSk7XG59XG5cbi5icmVhZGNydW1iLWl0ZW0ge1xuICAvLyBUaGUgc2VwYXJhdG9yIGJldHdlZW4gYnJlYWRjcnVtYnMgKGJ5IGRlZmF1bHQsIGEgZm9yd2FyZC1zbGFzaDogXCIvXCIpXG4gICsgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLXBhZGRpbmcteCk7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZmxvYXQ6IGxlZnQ7IC8vIFN1cHByZXNzIGlubGluZSBzcGFjaW5ncyBhbmQgdW5kZXJsaW5pbmcgb2YgdGhlIHNlcGFyYXRvclxuICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItaXRlbS1wYWRkaW5nLXgpO1xuICAgICAgY29sb3I6IHZhcigtLSN7JHByZWZpeH1icmVhZGNydW1iLWRpdmlkZXItY29sb3IpO1xuICAgICAgY29udGVudDogdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyKSkgI3tcIi8qIHJ0bDpcIn0gdmFyKC0tI3skcHJlZml4fWJyZWFkY3J1bWItZGl2aWRlciwgZXNjYXBlLXN2ZygkYnJlYWRjcnVtYi1kaXZpZGVyLWZsaXBwZWQpKSAje1wiKi9cIn07XG4gICAgfVxuICB9XG5cbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiB2YXIoLS0jeyRwcmVmaXh9YnJlYWRjcnVtYi1pdGVtLWFjdGl2ZS1jb2xvcik7XG4gIH1cbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHNjc3MvZGltZW5zaW9uLW5vLW5vbi1udW1lcmljLXZhbHVlc1xuXG4vLyBTQ1NTIFJGUyBtaXhpblxuLy9cbi8vIEF1dG9tYXRlZCByZXNwb25zaXZlIHZhbHVlcyBmb3IgZm9udCBzaXplcywgcGFkZGluZ3MsIG1hcmdpbnMgYW5kIG11Y2ggbW9yZVxuLy9cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvcmZzL2Jsb2IvbWFpbi9MSUNFTlNFKVxuXG4vLyBDb25maWd1cmF0aW9uXG5cbi8vIEJhc2UgdmFsdWVcbiRyZnMtYmFzZS12YWx1ZTogMS4yNXJlbSAhZGVmYXVsdDtcbiRyZnMtdW5pdDogcmVtICFkZWZhdWx0O1xuXG5AaWYgJHJmcy11bml0ICE9IHJlbSBhbmQgJHJmcy11bml0ICE9IHB4IHtcbiAgQGVycm9yIFwiYCN7JHJmcy11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy11bml0LiBVc2UgYHB4YCBvciBgcmVtYC5cIjtcbn1cblxuLy8gQnJlYWtwb2ludCBhdCB3aGVyZSB2YWx1ZXMgc3RhcnQgZGVjcmVhc2luZyBpZiBzY3JlZW4gd2lkdGggaXMgc21hbGxlclxuJHJmcy1icmVha3BvaW50OiAxMjAwcHggIWRlZmF1bHQ7XG4kcmZzLWJyZWFrcG9pbnQtdW5pdDogcHggIWRlZmF1bHQ7XG5cbkBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdCAhPSBweCBhbmQgJHJmcy1icmVha3BvaW50LXVuaXQgIT0gZW0gYW5kICRyZnMtYnJlYWtwb2ludC11bml0ICE9IHJlbSB7XG4gIEBlcnJvciBcImAjeyRyZnMtYnJlYWtwb2ludC11bml0fWAgaXMgbm90IGEgdmFsaWQgdW5pdCBmb3IgJHJmcy1icmVha3BvaW50LXVuaXQuIFVzZSBgcHhgLCBgZW1gIG9yIGByZW1gLlwiO1xufVxuXG4vLyBSZXNpemUgdmFsdWVzIGJhc2VkIG9uIHNjcmVlbiBoZWlnaHQgYW5kIHdpZHRoXG4kcmZzLXR3by1kaW1lbnNpb25hbDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhY3RvciBvZiBkZWNyZWFzZVxuJHJmcy1mYWN0b3I6IDEwICFkZWZhdWx0O1xuXG5AaWYgdHlwZS1vZigkcmZzLWZhY3RvcikgIT0gbnVtYmVyIG9yICRyZnMtZmFjdG9yIDw9IDEge1xuICBAZXJyb3IgXCJgI3skcmZzLWZhY3Rvcn1gIGlzIG5vdCBhIHZhbGlkICAkcmZzLWZhY3RvciwgaXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMS5cIjtcbn1cblxuLy8gTW9kZS4gUG9zc2liaWxpdGllczogXCJtaW4tbWVkaWEtcXVlcnlcIiwgXCJtYXgtbWVkaWEtcXVlcnlcIlxuJHJmcy1tb2RlOiBtaW4tbWVkaWEtcXVlcnkgIWRlZmF1bHQ7XG5cbi8vIEdlbmVyYXRlIGVuYWJsZSBvciBkaXNhYmxlIGNsYXNzZXMuIFBvc3NpYmlsaXRpZXM6IGZhbHNlLCBcImVuYWJsZVwiIG9yIFwiZGlzYWJsZVwiXG4kcmZzLWNsYXNzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gMSByZW0gPSAkcmZzLXJlbS12YWx1ZSBweFxuJHJmcy1yZW0tdmFsdWU6IDE2ICFkZWZhdWx0O1xuXG4vLyBTYWZhcmkgaWZyYW1lIHJlc2l6ZSBidWc6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL3Jmcy9pc3N1ZXMvMTRcbiRyZnMtc2FmYXJpLWlmcmFtZS1yZXNpemUtYnVnLWZpeDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIERpc2FibGUgUkZTIGJ5IHNldHRpbmcgJGVuYWJsZS1yZnMgdG8gZmFsc2VcbiRlbmFibGUtcmZzOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBDYWNoZSAkcmZzLWJhc2UtdmFsdWUgdW5pdFxuJHJmcy1iYXNlLXZhbHVlLXVuaXQ6IHVuaXQoJHJmcy1iYXNlLXZhbHVlKTtcblxuQGZ1bmN0aW9uIGRpdmlkZSgkZGl2aWRlbmQsICRkaXZpc29yLCAkcHJlY2lzaW9uOiAxMCkge1xuICAkc2lnbjogaWYoJGRpdmlkZW5kID4gMCBhbmQgJGRpdmlzb3IgPiAwIG9yICRkaXZpZGVuZCA8IDAgYW5kICRkaXZpc29yIDwgMCwgMSwgLTEpO1xuICAkZGl2aWRlbmQ6IGFicygkZGl2aWRlbmQpO1xuICAkZGl2aXNvcjogYWJzKCRkaXZpc29yKTtcbiAgQGlmICRkaXZpZGVuZCA9PSAwIHtcbiAgICBAcmV0dXJuIDA7XG4gIH1cbiAgQGlmICRkaXZpc29yID09IDAge1xuICAgIEBlcnJvciBcIkNhbm5vdCBkaXZpZGUgYnkgMFwiO1xuICB9XG4gICRyZW1haW5kZXI6ICRkaXZpZGVuZDtcbiAgJHJlc3VsdDogMDtcbiAgJGZhY3RvcjogMTA7XG4gIEB3aGlsZSAoJHJlbWFpbmRlciA+IDAgYW5kICRwcmVjaXNpb24gPj0gMCkge1xuICAgICRxdW90aWVudDogMDtcbiAgICBAd2hpbGUgKCRyZW1haW5kZXIgPj0gJGRpdmlzb3IpIHtcbiAgICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgLSAkZGl2aXNvcjtcbiAgICAgICRxdW90aWVudDogJHF1b3RpZW50ICsgMTtcbiAgICB9XG4gICAgJHJlc3VsdDogJHJlc3VsdCAqIDEwICsgJHF1b3RpZW50O1xuICAgICRmYWN0b3I6ICRmYWN0b3IgKiAuMTtcbiAgICAkcmVtYWluZGVyOiAkcmVtYWluZGVyICogMTA7XG4gICAgJHByZWNpc2lvbjogJHByZWNpc2lvbiAtIDE7XG4gICAgQGlmICgkcHJlY2lzaW9uIDwgMCBhbmQgJHJlbWFpbmRlciA+PSAkZGl2aXNvciAqIDUpIHtcbiAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyAxO1xuICAgIH1cbiAgfVxuICAkcmVzdWx0OiAkcmVzdWx0ICogJGZhY3RvciAqICRzaWduO1xuICAkZGl2aWRlbmQtdW5pdDogdW5pdCgkZGl2aWRlbmQpO1xuICAkZGl2aXNvci11bml0OiB1bml0KCRkaXZpc29yKTtcbiAgJHVuaXQtbWFwOiAoXG4gICAgXCJweFwiOiAxcHgsXG4gICAgXCJyZW1cIjogMXJlbSxcbiAgICBcImVtXCI6IDFlbSxcbiAgICBcIiVcIjogMSVcbiAgKTtcbiAgQGlmICgkZGl2aWRlbmQtdW5pdCAhPSAkZGl2aXNvci11bml0IGFuZCBtYXAtaGFzLWtleSgkdW5pdC1tYXAsICRkaXZpZGVuZC11bml0KSkge1xuICAgICRyZXN1bHQ6ICRyZXN1bHQgKiBtYXAtZ2V0KCR1bml0LW1hcCwgJGRpdmlkZW5kLXVuaXQpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gUmVtb3ZlIHB4LXVuaXQgZnJvbSAkcmZzLWJhc2UtdmFsdWUgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYmFzZS12YWx1ZS11bml0ID09IHB4IHtcbiAgJHJmcy1iYXNlLXZhbHVlOiBkaXZpZGUoJHJmcy1iYXNlLXZhbHVlLCAkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJhc2UtdmFsdWUtdW5pdCA9PSByZW0ge1xuICAkcmZzLWJhc2UtdmFsdWU6IGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUsIGRpdmlkZSgkcmZzLWJhc2UtdmFsdWUgKiAwICsgMSwgJHJmcy1yZW0tdmFsdWUpKTtcbn1cblxuLy8gQ2FjaGUgJHJmcy1icmVha3BvaW50IHVuaXQgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGU6IHVuaXQoJHJmcy1icmVha3BvaW50KTtcblxuLy8gUmVtb3ZlIHVuaXQgZnJvbSAkcmZzLWJyZWFrcG9pbnQgZm9yIGNhbGN1bGF0aW9uc1xuQGlmICRyZnMtYnJlYWtwb2ludC11bml0LWNhY2hlID09IHB4IHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLWJyZWFrcG9pbnQgKiAwICsgMSk7XG59XG5AZWxzZSBpZiAkcmZzLWJyZWFrcG9pbnQtdW5pdC1jYWNoZSA9PSByZW0gb3IgJHJmcy1icmVha3BvaW50LXVuaXQtY2FjaGUgPT0gXCJlbVwiIHtcbiAgJHJmcy1icmVha3BvaW50OiBkaXZpZGUoJHJmcy1icmVha3BvaW50LCBkaXZpZGUoJHJmcy1icmVha3BvaW50ICogMCArIDEsICRyZnMtcmVtLXZhbHVlKSk7XG59XG5cbi8vIENhbGN1bGF0ZSB0aGUgbWVkaWEgcXVlcnkgdmFsdWVcbiRyZnMtbXEtdmFsdWU6IGlmKCRyZnMtYnJlYWtwb2ludC11bml0ID09IHB4LCAjeyRyZnMtYnJlYWtwb2ludH1weCwgI3tkaXZpZGUoJHJmcy1icmVha3BvaW50LCAkcmZzLXJlbS12YWx1ZSl9I3skcmZzLWJyZWFrcG9pbnQtdW5pdH0pO1xuJHJmcy1tcS1wcm9wZXJ0eS13aWR0aDogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgbWF4LXdpZHRoLCBtaW4td2lkdGgpO1xuJHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHQ6IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksIG1heC1oZWlnaHQsIG1pbi1oZWlnaHQpO1xuXG4vLyBJbnRlcm5hbCBtaXhpbiB1c2VkIHRvIGRldGVybWluZSB3aGljaCBtZWRpYSBxdWVyeSBuZWVkcyB0byBiZSB1c2VkXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeSB7XG4gIEBpZiAkcmZzLXR3by1kaW1lbnNpb25hbCB7XG4gICAgQGlmICRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnkge1xuICAgICAgQG1lZGlhICgjeyRyZnMtbXEtcHJvcGVydHktd2lkdGh9OiAjeyRyZnMtbXEtdmFsdWV9KSwgKCN7JHJmcy1tcS1wcm9wZXJ0eS1oZWlnaHR9OiAjeyRyZnMtbXEtdmFsdWV9KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIGFuZCAoI3skcmZzLW1xLXByb3BlcnR5LWhlaWdodH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAbWVkaWEgKCN7JHJmcy1tcS1wcm9wZXJ0eS13aWR0aH06ICN7JHJmcy1tcS12YWx1ZX0pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBJbnRlcm5hbCBtaXhpbiB0aGF0IGFkZHMgZGlzYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1ydWxlIHtcbiAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSB7XG4gICAgLy8gQWRkaW5nIGFuIGV4dHJhIGNsYXNzIGluY3JlYXNlcyBzcGVjaWZpY2l0eSwgd2hpY2ggcHJldmVudHMgdGhlIG1lZGlhIHF1ZXJ5IHRvIG92ZXJyaWRlIHRoZSBwcm9wZXJ0eVxuICAgICYsXG4gICAgLmRpc2FibGUtcmZzICYsXG4gICAgJi5kaXNhYmxlLXJmcyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUgYW5kICRyZnMtbW9kZSA9PSBtaW4tbWVkaWEtcXVlcnkge1xuICAgIC5lbmFibGUtcmZzICYsXG4gICAgJi5lbmFibGUtcmZzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gSW50ZXJuYWwgbWl4aW4gdGhhdCBhZGRzIGVuYWJsZSBjbGFzc2VzIHRvIHRoZSBzZWxlY3RvciBpZiBuZWVkZWQuXG5AbWl4aW4gX3Jmcy1tZWRpYS1xdWVyeS1ydWxlIHtcblxuICBAaWYgJHJmcy1jbGFzcyA9PSBlbmFibGUge1xuICAgIEBpZiAkcmZzLW1vZGUgPT0gbWluLW1lZGlhLXF1ZXJ5IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIF9yZnMtbWVkaWEtcXVlcnkgKCkge1xuICAgICAgLmVuYWJsZS1yZnMgJixcbiAgICAgICYuZW5hYmxlLXJmcyB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRyZnMtY2xhc3MgPT0gZGlzYWJsZSBhbmQgJHJmcy1tb2RlID09IG1pbi1tZWRpYS1xdWVyeSB7XG4gICAgICAuZGlzYWJsZS1yZnMgJixcbiAgICAgICYuZGlzYWJsZS1yZnMge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgQGluY2x1ZGUgX3Jmcy1tZWRpYS1xdWVyeSAoKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgZm9ybWF0dGVkIG5vbi1yZXNwb25zaXZlIHZhbHVlXG5AZnVuY3Rpb24gcmZzLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogXCJcIjtcblxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICBAaWYgJHZhbHVlID09IDAge1xuICAgICAgJHZhbDogJHZhbCArIFwiIDBcIjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLy8gQ2FjaGUgJHZhbHVlIHVuaXRcbiAgICAgICR1bml0OiBpZih0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiwgdW5pdCgkdmFsdWUpLCBmYWxzZSk7XG5cbiAgICAgIEBpZiAkdW5pdCA9PSBweCB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gcmVtIGlmIG5lZWRlZFxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyAkcmZzLXJlbS12YWx1ZSl9cmVtLCAkdmFsdWUpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHVuaXQgPT0gcmVtIHtcbiAgICAgICAgLy8gQ29udmVydCB0byBweCBpZiBuZWVkZWRcbiAgICAgICAgJHZhbDogJHZhbCArIFwiIFwiICsgaWYoJHJmcy11bml0ID09IHB4LCAje2RpdmlkZSgkdmFsdWUsICR2YWx1ZSAqIDAgKyAxKSAqICRyZnMtcmVtLXZhbHVlfXB4LCAkdmFsdWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC8vIElmICR2YWx1ZSBpc24ndCBhIG51bWJlciAobGlrZSBpbmhlcml0KSBvciAkdmFsdWUgaGFzIGEgdW5pdCAobm90IHB4IG9yIHJlbSwgbGlrZSAxLjVlbSkgb3IgJCBpcyAwLCBqdXN0IHByaW50IHRoZSB2YWx1ZVxuICAgICAgICAkdmFsOiAkdmFsICsgXCIgXCIgKyAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIGZpcnN0IHNwYWNlXG4gIEByZXR1cm4gdW5xdW90ZShzdHItc2xpY2UoJHZhbCwgMikpO1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZXNwb25zaXZlIHZhbHVlIGNhbGN1bGF0ZWQgYnkgUkZTXG5AZnVuY3Rpb24gcmZzLWZsdWlkLXZhbHVlKCR2YWx1ZXMpIHtcbiAgLy8gQ29udmVydCB0byBsaXN0XG4gICR2YWx1ZXM6IGlmKHR5cGUtb2YoJHZhbHVlcykgIT0gbGlzdCwgKCR2YWx1ZXMsKSwgJHZhbHVlcyk7XG5cbiAgJHZhbDogXCJcIjtcblxuICAvLyBMb29wIG92ZXIgZWFjaCB2YWx1ZSBhbmQgY2FsY3VsYXRlIHZhbHVlXG4gIEBlYWNoICR2YWx1ZSBpbiAkdmFsdWVzIHtcbiAgICBAaWYgJHZhbHVlID09IDAge1xuICAgICAgJHZhbDogJHZhbCArIFwiIDBcIjtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC8vIENhY2hlICR2YWx1ZSB1bml0XG4gICAgICAkdW5pdDogaWYodHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIsIHVuaXQoJHZhbHVlKSwgZmFsc2UpO1xuXG4gICAgICAvLyBJZiAkdmFsdWUgaXNuJ3QgYSBudW1iZXIgKGxpa2UgaW5oZXJpdCkgb3IgJHZhbHVlIGhhcyBhIHVuaXQgKG5vdCBweCBvciByZW0sIGxpa2UgMS41ZW0pIG9yICQgaXMgMCwganVzdCBwcmludCB0aGUgdmFsdWVcbiAgICAgIEBpZiBub3QgJHVuaXQgb3IgJHVuaXQgIT0gcHggYW5kICR1bml0ICE9IHJlbSB7XG4gICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArICR2YWx1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAvLyBSZW1vdmUgdW5pdCBmcm9tICR2YWx1ZSBmb3IgY2FsY3VsYXRpb25zXG4gICAgICAgICR2YWx1ZTogZGl2aWRlKCR2YWx1ZSwgJHZhbHVlICogMCArIGlmKCR1bml0ID09IHB4LCAxLCBkaXZpZGUoMSwgJHJmcy1yZW0tdmFsdWUpKSk7XG5cbiAgICAgICAgLy8gT25seSBhZGQgdGhlIG1lZGlhIHF1ZXJ5IGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgQGlmIGFicygkdmFsdWUpIDw9ICRyZnMtYmFzZS12YWx1ZSBvciBub3QgJGVuYWJsZS1yZnMge1xuICAgICAgICAgICR2YWw6ICR2YWwgKyBcIiBcIiArIGlmKCRyZnMtdW5pdCA9PSByZW0sICN7ZGl2aWRlKCR2YWx1ZSwgJHJmcy1yZW0tdmFsdWUpfXJlbSwgI3skdmFsdWV9cHgpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gdmFsdWVcbiAgICAgICAgICAkdmFsdWUtbWluOiAkcmZzLWJhc2UtdmFsdWUgKyBkaXZpZGUoYWJzKCR2YWx1ZSkgLSAkcmZzLWJhc2UtdmFsdWUsICRyZnMtZmFjdG9yKTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBkaWZmZXJlbmNlIGJldHdlZW4gJHZhbHVlIGFuZCB0aGUgbWluaW11bSB2YWx1ZVxuICAgICAgICAgICR2YWx1ZS1kaWZmOiBhYnMoJHZhbHVlKSAtICR2YWx1ZS1taW47XG5cbiAgICAgICAgICAvLyBCYXNlIHZhbHVlIGZvcm1hdHRpbmdcbiAgICAgICAgICAkbWluLXdpZHRoOiBpZigkcmZzLXVuaXQgPT0gcmVtLCAje2RpdmlkZSgkdmFsdWUtbWluLCAkcmZzLXJlbS12YWx1ZSl9cmVtLCAjeyR2YWx1ZS1taW59cHgpO1xuXG4gICAgICAgICAgLy8gVXNlIG5lZ2F0aXZlIHZhbHVlIGlmIG5lZWRlZFxuICAgICAgICAgICRtaW4td2lkdGg6IGlmKCR2YWx1ZSA8IDAsIC0kbWluLXdpZHRoLCAkbWluLXdpZHRoKTtcblxuICAgICAgICAgIC8vIFVzZSBgdm1pbmAgaWYgdHdvLWRpbWVuc2lvbmFsIGlzIGVuYWJsZWRcbiAgICAgICAgICAkdmFyaWFibGUtdW5pdDogaWYoJHJmcy10d28tZGltZW5zaW9uYWwsIHZtaW4sIHZ3KTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgdmFyaWFibGUgd2lkdGggYmV0d2VlbiAwIGFuZCAkcmZzLWJyZWFrcG9pbnRcbiAgICAgICAgICAkdmFyaWFibGUtd2lkdGg6ICN7ZGl2aWRlKCR2YWx1ZS1kaWZmICogMTAwLCAkcmZzLWJyZWFrcG9pbnQpfSN7JHZhcmlhYmxlLXVuaXR9O1xuXG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBjYWxjdWxhdGVkIHZhbHVlXG4gICAgICAgICAgJHZhbDogJHZhbCArIFwiIGNhbGMoXCIgKyAkbWluLXdpZHRoICsgaWYoJHZhbHVlIDwgMCwgXCIgLSBcIiwgXCIgKyBcIikgKyAkdmFyaWFibGUtd2lkdGggKyBcIilcIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSBmaXJzdCBzcGFjZVxuICBAcmV0dXJuIHVucXVvdGUoc3RyLXNsaWNlKCR2YWwsIDIpKTtcbn1cblxuLy8gUkZTIG1peGluXG5AbWl4aW4gcmZzKCR2YWx1ZXMsICRwcm9wZXJ0eTogZm9udC1zaXplKSB7XG4gIEBpZiAkdmFsdWVzICE9IG51bGwge1xuICAgICR2YWw6IHJmcy12YWx1ZSgkdmFsdWVzKTtcbiAgICAkZmx1aWQtdmFsOiByZnMtZmx1aWQtdmFsdWUoJHZhbHVlcyk7XG5cbiAgICAvLyBEbyBub3QgcHJpbnQgdGhlIG1lZGlhIHF1ZXJ5IGlmIHJlc3BvbnNpdmUgJiBub24tcmVzcG9uc2l2ZSB2YWx1ZXMgYXJlIHRoZSBzYW1lXG4gICAgQGlmICR2YWwgPT0gJGZsdWlkLXZhbCB7XG4gICAgICAjeyRwcm9wZXJ0eX06ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIF9yZnMtcnVsZSAoKSB7XG4gICAgICAgICN7JHByb3BlcnR5fTogaWYoJHJmcy1tb2RlID09IG1heC1tZWRpYS1xdWVyeSwgJHZhbCwgJGZsdWlkLXZhbCk7XG5cbiAgICAgICAgLy8gSW5jbHVkZSBzYWZhcmkgaWZyYW1lIHJlc2l6ZSBmaXggaWYgbmVlZGVkXG4gICAgICAgIG1pbi13aWR0aDogaWYoJHJmcy1zYWZhcmktaWZyYW1lLXJlc2l6ZS1idWctZml4LCAoMCAqIDF2dyksIG51bGwpO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBfcmZzLW1lZGlhLXF1ZXJ5LXJ1bGUgKCkge1xuICAgICAgICAjeyRwcm9wZXJ0eX06IGlmKCRyZnMtbW9kZSA9PSBtYXgtbWVkaWEtcXVlcnksICRmbHVpZC12YWwsICR2YWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTaG9ydGhhbmQgaGVscGVyIG1peGluc1xuQG1peGluIGZvbnQtc2l6ZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nKTtcbn1cblxuQG1peGluIHBhZGRpbmctdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXRvcCk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLXJpZ2h0KCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLXJpZ2h0KTtcbn1cblxuQG1peGluIHBhZGRpbmctYm90dG9tKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBwYWRkaW5nLWJvdHRvbSk7XG59XG5cbkBtaXhpbiBwYWRkaW5nLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIHBhZGRpbmctbGVmdCk7XG59XG5cbkBtaXhpbiBtYXJnaW4oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbik7XG59XG5cbkBtaXhpbiBtYXJnaW4tdG9wKCR2YWx1ZSkge1xuICBAaW5jbHVkZSByZnMoJHZhbHVlLCBtYXJnaW4tdG9wKTtcbn1cblxuQG1peGluIG1hcmdpbi1yaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcmZzKCR2YWx1ZSwgbWFyZ2luLXJpZ2h0KTtcbn1cblxuQG1peGluIG1hcmdpbi1ib3R0b20oJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1ib3R0b20pO1xufVxuXG5AbWl4aW4gbWFyZ2luLWxlZnQoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHJmcygkdmFsdWUsIG1hcmdpbi1sZWZ0KTtcbn1cbiIsIi8vIHN0eWxlbGludC1kaXNhYmxlIHByb3BlcnR5LWRpc2FsbG93ZWQtbGlzdFxuLy8gU2luZ2xlIHNpZGUgYm9yZGVyLXJhZGl1c1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gcmVwbGFjZSBuZWdhdGl2ZSB2YWx1ZXMgd2l0aCAwXG5AZnVuY3Rpb24gdmFsaWQtcmFkaXVzKCRyYWRpdXMpIHtcbiAgJHJldHVybjogKCk7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcmFkaXVzIHtcbiAgICBAaWYgdHlwZS1vZigkdmFsdWUpID09IG51bWJlciB7XG4gICAgICAkcmV0dXJuOiBhcHBlbmQoJHJldHVybiwgbWF4KCR2YWx1ZSwgMCkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogYXBwZW5kKCRyZXR1cm4sICR2YWx1ZSk7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8gc2Nzcy1kb2NzLXN0YXJ0IGJvcmRlci1yYWRpdXMtbWl4aW5zXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cywgJGZhbGxiYWNrLWJvcmRlci1yYWRpdXM6IGZhbHNlKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxuICBAZWxzZSBpZiAkZmFsbGJhY2stYm9yZGVyLXJhZGl1cyAhPSBmYWxzZSB7XG4gICAgYm9yZGVyLXJhZGl1czogJGZhbGxiYWNrLWJvcmRlci1yYWRpdXM7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3AtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItZW5kLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItc3RhcnQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci10b3Atc3RhcnQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhbGlkLXJhZGl1cygkcmFkaXVzKTtcbiAgfVxufVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1lbmQtcmFkaXVzKCRyYWRpdXM6ICRib3JkZXItcmFkaXVzKSB7XG4gIEBpZiAkZW5hYmxlLXJvdW5kZWQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tZW5kLXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFsaWQtcmFkaXVzKCRyYWRpdXMpO1xuICB9XG59XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLXN0YXJ0LXJhZGl1cygkcmFkaXVzOiAkYm9yZGVyLXJhZGl1cykge1xuICBAaWYgJGVuYWJsZS1yb3VuZGVkIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YWxpZC1yYWRpdXMoJHJhZGl1cyk7XG4gIH1cbn1cbi8vIHNjc3MtZG9jcy1lbmQgYm9yZGVyLXJhZGl1cy1taXhpbnNcbiIsIkBpbXBvcnQgXCJ+Ym9vdHN0cmFwL3Njc3MvYnJlYWRjcnVtYlwiO1xuXG4uYnJlYWRjcnVtYnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1heC13aWR0aDogMTAwdnc7XG4gIG1hcmdpbi1yaWdodDogY2FsYygjeyRjb250YWluZXItcGFkZGluZy14fSAqIC0xKTtcbiAgbWFyZ2luLWxlZnQ6IGNhbGMoI3skY29udGFpbmVyLXBhZGRpbmcteH0gKiAtMSk7XG5cbiAgLmJyZWFkY3J1bWIge1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIHBhZGRpbmc6ICRjb250YWluZXItcGFkZGluZy14O1xuICAgIG1hcmdpbjogdW5zZXQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcblxuICAgICY6OmJlZm9yZSxcbiAgICAmOjphZnRlciB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxcmVtO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1hbHBoYS1icmVhZGNydW1icy1tb2JpbGUtc2hhZG93LWNvbG9yKSAwLCB2YXIoLS1hbHBoYS1icmVhZGNydW1icy1tb2JpbGUtc2hhZG93LWNvbG9yLWVuZCkpO1xuICAgIH1cblxuICAgICY6OmFmdGVyIHtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgd2lkdGg6IDJyZW07XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWFscGhhLWJyZWFkY3J1bWJzLW1vYmlsZS1zaGFkb3ctY29sb3ItZW5kKSAwLCB2YXIoLS1hbHBoYS1icmVhZGNydW1icy1tb2JpbGUtc2hhZG93LWNvbG9yKSk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgIC5icmVhZGNydW1iIHtcbiAgICAgICY6OmJlZm9yZSxcbiAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmLm9uLWZlYXR1cmVkIHtcbiAgICAtLWFscGhhLWJyZWFkY3J1bWJzLW1vYmlsZS1zaGFkb3ctY29sb3I6ICN7JGJyZWFkY3J1bWItb24tZmVhdHVyZWQtbW9iaWxlLXNoYWRvdy1jb2xvcn07XG4gICAgLS1hbHBoYS1icmVhZGNydW1icy1tb2JpbGUtc2hhZG93LWNvbG9yLWVuZDogI3tyZ2JhKCRicmVhZGNydW1iLW9uLWZlYXR1cmVkLW1vYmlsZS1zaGFkb3ctY29sb3IsIDApfTtcbiAgICB0b3A6IHZhcigtLWZlYXR1cmVkLWltYWdlLWhlaWdodCk7XG4gICAgei1pbmRleDogMTA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcblxuICAgIC5icmVhZGNydW1iIHtcbiAgICAgIC0tYnMtYnJlYWRjcnVtYi1kaXZpZGVyLWNvbG9yOiBjdXJyZW50Y29sb3I7XG4gICAgICAtLWJzLWJyZWFkY3J1bWItaXRlbS1hY3RpdmUtY29sb3I6IGN1cnJlbnRjb2xvcjtcblxuICAgICAgJjo6YmVmb3JlLFxuICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICBvcGFjaXR5OiAuNzU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJi5kYXJrIHtcbiAgICAtLWJzLWxpbmstY29sb3ItcmdiOiAje2hleC10by1yZ2IoJHdoaXRlKX07XG5cbiAgICBhIHtcbiAgICAgICY6aG92ZXIge1xuICAgICAgICAtLWJzLWxpbmstY29sb3ItcmdiOiAje2hleC10by1yZ2IoJGdyYXktMTAwKX07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5icmVhZGNydW1icy1vbi1mZWF0dXJlZCB7XG4gICY6bm90KC5oYXMtdHJhbnNwYXJlbnQtaGVhZGVyKSB7XG4gICAgLmJyZWFkY3J1bWJzIHtcbiAgICAgIHRvcDogY2FsYyh2YXIoLS1oZWFkZXItaGVpZ2h0KSArIHZhcigtLWZlYXR1cmVkLWltYWdlLWhlaWdodCkpO1xuICAgICAgdHJhbnNpdGlvbjogdG9wIC4zcyBlYXNlO1xuICAgIH1cbiAgfVxuXG4gICYuc2VhcmNoIHtcbiAgICAuY29udGVudC13cmFwcGVyIHtcbiAgICAgIHBhZGRpbmctdG9wOiBtYXAtZ2V0KCRzcGFjZXJzLCA4KTtcbiAgICB9XG4gIH1cbn1cblxuLmJyZWFkY3J1bWItaXRlbSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgKyAuYnJlYWRjcnVtYi1pdGVtIHtcbiAgICBAaW5jbHVkZSBmb250LWF3ZXNvbWUtYmVmb3JlKCRmYS12YXItYW5nbGUtcmlnaHQsIGZhbHNlLCBcImxpZ2h0XCIsIDApO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGZsb2F0OiB1bnNldDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IC4yNXJlbTtcbiAgICB9XG4gIH1cblxuICAmLmFjdGl2ZSB7XG4gICAgc3BhbiB7XG4gICAgICBmb250LXdlaWdodDogNzAwO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcIn5ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJ+QGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLXByby9zY3NzL2Z1bmN0aW9uc1wiO1xuQGltcG9ydCBcIn5AZm9ydGF3ZXNvbWUvZm9udGF3ZXNvbWUtcHJvL3Njc3MvdmFyaWFibGVzXCI7XG5cbiR0aGVtZS1hc3NldC1wYXRoOiBcIi4uL2ltYWdlc1wiICFkZWZhdWx0O1xuJGZvbnRzLXBhdGg6IFwiZm9udHNcIiAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQ29sb3Igc3lzdGVtXG4kYmxhY2s6ICMwMDAgIWRlZmF1bHQ7XG4kd2hpdGU6ICNmZmYgIWRlZmF1bHQ7XG4kZ3JheS0xMDA6ICNmN2Y3ZjcgIWRlZmF1bHQ7XG4kZ3JheS0yMDA6ICNlOWVjZWYgIWRlZmF1bHQ7XG4kZ3JheS0zMDA6ICNkZWUyZTYgIWRlZmF1bHQ7XG4kZ3JheS01MDA6ICM5ZDlkOWQgIWRlZmF1bHQ7XG4kZ3JheS02MDA6ICM2Yzc1N2QgIWRlZmF1bHQ7XG4kZ3JheS03MDA6ICM0OTUwNTcgIWRlZmF1bHQ7XG4kZ3JheS05MDA6ICMwYTBhMGEgIWRlZmF1bHQ7XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xvci12YXJpYWJsZXNcbiRibHVlOiAjMDA1ZGFhICFkZWZhdWx0O1xuJHB1cnBsZTogIzcwMWU2ZSAhZGVmYXVsdDtcbiRncmVlbjogIzAxYWUzYyAhZGVmYXVsdDtcbiRyZWQ6ICNkYzM1NDUgIWRlZmF1bHQ7XG4keWVsbG93OiAjZmZjMTA3ICFkZWZhdWx0O1xuJGN5YW46ICMwZGNhZjAgIWRlZmF1bHQ7XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBjb2xvcnMtbWFwXG4kY29sb3JzOiAoXG4gIFwiYmx1ZVwiOiAkYmx1ZSxcbiAgXCJwdXJwbGVcIjogJHB1cnBsZSxcbiAgXCJncmVlblwiOiAkZ3JlZW4sXG4gIFwid2hpdGVcIjogJHdoaXRlLFxuICBcImdyYXktMTAwXCI6ICRncmF5LTEwMCxcbiAgXCJncmF5LTUwMFwiOiAkZ3JheS01MDAsXG4gIFwiZ3JheS05MDBcIjogJGdyYXktOTAwXG4pICFkZWZhdWx0O1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGhlbWUtY29sb3ItdmFyaWFibGVzXG4kc3VjY2VzczogJGdyZWVuICFkZWZhdWx0O1xuJGluZm86ICRjeWFuICFkZWZhdWx0O1xuJHdhcm5pbmc6ICR5ZWxsb3cgIWRlZmF1bHQ7XG4kZGFuZ2VyOiAkcmVkICFkZWZhdWx0O1xuJGxpZ2h0OiAkZ3JheS0xMDAgIWRlZmF1bHQ7XG4kZGFyazogJGdyYXktOTAwICFkZWZhdWx0O1xuXG4vLyBzY3NzLWRvY3Mtc3RhcnQgdGhlbWUtY29sb3JzLW1hcFxuJGRlZmF1bHQtdGhlbWUtY29sb3JzOiAoXG4gIFwicHJpbWFyeVwiOiAkcHJpbWFyeSxcbiAgXCJzZWNvbmRhcnlcIjogJHNlY29uZGFyeSxcbiAgXCJzdWNjZXNzXCI6ICRzdWNjZXNzLFxuICBcImluZm9cIjogJGluZm8sXG4gIFwid2FybmluZ1wiOiAkd2FybmluZyxcbiAgXCJkYW5nZXJcIjogJGRhbmdlcixcbiAgXCJsaWdodFwiOiAkbGlnaHQsXG4gIFwiZGFya1wiOiAkZGFyayxcbiAgXCJ3aGl0ZVwiOiAkd2hpdGVcbikgIWRlZmF1bHQ7XG4kdGhlbWUtY29sb3JzOiAoKSAhZGVmYXVsdDtcbiR0aGVtZS1jb2xvcnM6IG1hcC1tZXJnZSgkZGVmYXVsdC10aGVtZS1jb2xvcnMsICR0aGVtZS1jb2xvcnMpO1xuXG4vLyBUaGUgY29udHJhc3QgcmF0aW8gdG8gcmVhY2ggYWdhaW5zdCB3aGl0ZSwgdG8gZGV0ZXJtaW5lIGlmIGNvbG9yIGNoYW5nZXMgZnJvbSBcImxpZ2h0XCIgdG8gXCJkYXJrXCIuIEFjY2VwdGFibGUgdmFsdWVzIGZvciBXQ0FHIDIuMCBhcmUgMywgNC41IGFuZCA3LlxuJG1pbi1jb250cmFzdC1yYXRpbzogNC41ICFkZWZhdWx0O1xuXG4vLyBDdXN0b21pemUgdGhlIGxpZ2h0IGFuZCBkYXJrIHRleHQgY29sb3JzIGZvciB1c2UgaW4gb3VyIGNvbG9yIGNvbnRyYXN0IGZ1bmN0aW9uLlxuJGNvbG9yLWNvbnRyYXN0LWRhcms6ICRncmF5LTkwMCAhZGVmYXVsdDtcbiRjb2xvci1jb250cmFzdC1saWdodDogJHdoaXRlICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBDb21wb25lbnRzXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXJhZGl1cy12YXJpYWJsZXNcbiRib3JkZXItcmFkaXVzOiAuNXJlbSAhZGVmYXVsdDtcbiRib3JkZXItcmFkaXVzLWxnOiAuNjI1cmVtICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBPcHRpb25zXG4kZW5hYmxlLW5lZ2F0aXZlLW1hcmdpbnM6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIFNwYWNpbmdcbiRzcGFjZXI6IDFyZW0gIWRlZmF1bHQ7XG4kc3BhY2VyczogKFxuICAwOiAwLFxuICAxOiAkc3BhY2VyICogLjI1LCAvLyA0cHhcbiAgMjogJHNwYWNlciAqIC41LCAvLyA4cHhcbiAgMzogJHNwYWNlciAqIC43NSwgLy8gMTJweFxuICA0OiAkc3BhY2VyLCAvLyAxNnB4XG4gIDU6ICRzcGFjZXIgKiAxLjI1LCAvLyAyMHB4XG4gIDY6ICRzcGFjZXIgKiAxLjUsIC8vIDI0cHhcbiAgNzogJHNwYWNlciAqIDEuNzUsIC8vIDI4cHhcbiAgODogJHNwYWNlciAqIDIsIC8vIDMycHhcbiAgOTogJHNwYWNlciAqIDMsIC8vIDQ4cHhcbiAgMTA6ICRzcGFjZXIgKiA0LCAvLyA2NHB4XG4gIDExOiAkc3BhY2VyICogNSAvLyA4MHB4XG4pICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBEYXJrIFN0eWxlXG4kZGFyay1iZy1jb2xvcjogdmFyKC0tYnMtYm9keS1iZy1kYXJrKSAhZGVmYXVsdDtcbiRkYXJrLXR4dC1jb2xvcjogdmFyKC0tYnMtYm9keS1jb2xvci1kYXJrKSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gTGlnaHQgU3R5bGVcbiRsaWdodC1iZy1jb2xvcjogJGJvZHktYmcgIWRlZmF1bHQ7XG4kbGlnaHQtdHh0LWNvbG9yOiAkYm9keS1jb2xvciAhZGVmYXVsdDtcblxuLy8tLS0tLS0gSGVhZGVyXG4kaGVhZGVyLWJnOiB2YXIoLS1icy1ib2R5LWJnKSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gRm9vdGVyXG4kZm9vdGVyLWJnOiByZ2JhKCRwcmltYXJ5LCAuMSkgIWRlZmF1bHQ7XG4kY29weXJpZ2h0LWJnOiAkZm9vdGVyLWJnICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBMaW5rc1xuJGxpbmstY29sb3I6ICRwcmltYXJ5ICFkZWZhdWx0O1xuJGxpbmstc2hhZGUtcGVyY2VudGFnZTogMjAlICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6IHNoaWZ0LWNvbG9yKCRsaW5rLWNvbG9yLCAkbGluay1zaGFkZS1wZXJjZW50YWdlKSAhZGVmYXVsdDtcblxuLy8gR3JpZCBjb2x1bW5zXG4kZ3JpZC1ndXR0ZXItd2lkdGg6IDEuNXJlbSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQ29udGFpbmVyIHBhZGRpbmdcbiRjb250YWluZXItcGFkZGluZy14OiAkZ3JpZC1ndXR0ZXItd2lkdGggLyAyICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBDb21wb25lbnRzXG4vLyBzY3NzLWRvY3Mtc3RhcnQgYm9yZGVyLXZhcmlhYmxlc1xuJGJvcmRlci13aWR0aDogMXB4ICFkZWZhdWx0O1xuJGJvcmRlci1jb2xvcjogcmdiYSgkZ3JheS05MDAsIC4xNSkgIWRlZmF1bHQ7XG5cbi8vIHNjc3MtZG9jcy1zdGFydCBhc3BlY3QtcmF0aW9zXG5cbi8vIHNjc3MtZG9jcy1zdGFydCBoZWFkaW5ncy12YXJpYWJsZXNcbiRoZWFkaW5ncy1tYXJnaW4tYm90dG9tOiAkc3BhY2VyICogMiAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQnV0dG9ucyArIEZvcm1zXG4kYnRuLWNvbG9yczogKFxuICBcInByaW1hcnlcIjogbnVsbCxcbiAgXCJzZWNvbmRhcnlcIiA6IG51bGxcbikgIWRlZmF1bHQ7XG5cbiRpbnB1dC1mb250LXNpemU6ICRmb250LXNpemUtYmFzZSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tcGFkZGluZy15OiAuMzc1cmVtICFkZWZhdWx0O1xuJGlucHV0LWJ0bi1wYWRkaW5nLXg6IC43NXJlbSAhZGVmYXVsdDtcbiRpbnB1dC1idG4tZm9jdXMtd2lkdGg6IC4xMjVyZW0gIWRlZmF1bHQ7XG4kaW5wdXQtcGFkZGluZy15OiAkaW5wdXQtYnRuLXBhZGRpbmcteSAhZGVmYXVsdDtcbiRpbnB1dC1wYWRkaW5nLXg6ICRpbnB1dC1idG4tcGFkZGluZy14ICFkZWZhdWx0O1xuJGlucHV0LWxpbmUtaGVpZ2h0OiAxLjUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIE5hdnNcbi8vLS0tLS0gU2hhcmVkIHZhcmlhYmxlc1xuJG5hdi1jb2xvci1hY2NlbnQ6ICRwcmltYXJ5ICFkZWZhdWx0O1xuXG4vLy0tLS0tIEJvb3RzdHJhcCB2YXJpYWJsZXNcbiRuYXYtbGluay1mb250LXNpemU6IG51bGwgIWRlZmF1bHQ7XG4kbmF2LWxpbmstY29sb3I6IHZhcigtLXRoZW1lLXNraW4tdGV4dC1jb2xvcikgIWRlZmF1bHQ7XG4kbmF2LWxpbmstaG92ZXItY29sb3I6IHRpbnQtY29sb3IoJHByaW1hcnksIDMwJSkgIWRlZmF1bHQ7XG4kbmF2LWxpbmstZGlzYWJsZWQtY29sb3I6ICRncmF5LTYwMCAhZGVmYXVsdDtcblxuLy8tLS0tLSBBbHBoYSB2YXJpYWJsZXNcbiRuYXYtY29sb3ItaG92ZXItZmlyc3QtbGV2ZWw6ICRuYXYtbGluay1ob3Zlci1jb2xvciAhZGVmYXVsdDtcbiRuYXYtY29sb3ItY3VycmVudDogJG5hdi1jb2xvci1hY2NlbnQgIWRlZmF1bHQ7XG4kbmF2LWNvbG9yLWN1cnJlbnQtZmlyc3QtbGV2ZWw6ICRuYXYtY29sb3ItY3VycmVudCAhZGVmYXVsdDtcbiRuYXYtY29sb3ItYW5jZXN0b3I6IHNoYWRlLWNvbG9yKCRuYXYtY29sb3ItYWNjZW50LCAyMCUpICFkZWZhdWx0O1xuJG5hdi1jb2xvci1hbmNlc3Rvci1maXJzdC1sZXZlbDogJG5hdi1jb2xvci1hbmNlc3RvciAhZGVmYXVsdDtcblxuLy8tLS0tLS0gTmF2YmFyXG4kc3VibWVudS1iZy1jb2xvcjogd2hpdGUgIWRlZmF1bHQ7XG4kbmF2YmFyLXBhZGRpbmcteTogMyAqICRzcGFjZXIgLyA0ICFkZWZhdWx0O1xuJG5hdmJhci1pdGVtLW1hcmdpbi14OiBudWxsICFkZWZhdWx0O1xuJG5hdmJhci1pdGVtLW1hcmdpbi15OiBudWxsICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1jb2xvcjogJG5hdi1saW5rLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1ob3Zlci1jb2xvcjogJG5hdi1saW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJG5hdmJhci1saWdodC1hY3RpdmUtY29sb3I6ICRuYXYtbGluay1ob3Zlci1jb2xvciAhZGVmYXVsdDtcbiRuYXZiYXItbGlnaHQtZGlzYWJsZWQtY29sb3I6ICRuYXYtbGluay1kaXNhYmxlZC1jb2xvciAhZGVmYXVsdDtcblxuLy8tLS0tLS0gRHJvcGRvd25zXG5cbi8vLS0tLS0tIFBhZ2luYXRpb25cbiRwYWdpbmF0aW9uLWhvdmVyLWJnOiByZ2JhKCRwcmltYXJ5LCAuMSkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIE1vZGFsc1xuJG1vZGFsLWJhY2tkcm9wLWJnOiBibGFjayAhZGVmYXVsdDtcbiRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OiAuNSAhZGVmYXVsdDtcbiRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aDogMCAhZGVmYXVsdDtcblxuLy8gTW9kYWwgVmlkZW9cbiRtb2RhbC12aWRlby1idG4tY2xvc2UtYmctY29sb3I6IHZhcigtLWJzLXByaW1hcnkpICFkZWZhdWx0O1xuJG1vZGFsLXZpZGVvLWJ0bi1jbG9zZS1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcblxuLy8tLS0tLS0gSW1hZ2UgdGh1bWJuYWlscyAmIFBpY3R1cmVcblxuLy8tLS0tLS0gQnJlYWRjcnVtYnNcbiRicmVhZGNydW1iLWZvbnQtc2l6ZTogLjc1cmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiB2YXIoLS1icy1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gT2ZmY2FudmFzXG4kb2ZmY2FudmFzLWJvZHktYmFja2Ryb3AtY29sb3I6IHJnYmEoJG1vZGFsLWJhY2tkcm9wLWJnLCAkbW9kYWwtYmFja2Ryb3Atb3BhY2l0eSkgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLXdpZGUtc2NyZWVuLWJyZWFrcG9pbnQ6IHh4bCAhZGVmYXVsdDtcblxuLy8tLS0tLS0gT2ZmY2FudmFzIGRlc2t0b3BcbiRvZmZjYW52YXMtZGFyay1tb2RlLWxvZ28tY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZGVza3RvcC13aWR0aDogNDAwcHggIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWxvZ28td2lkdGg6IDY2LjY2JSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtaGVhZGVyLWFsaWduZW1lbnQ6IGNlbnRlciAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1ib3JkZXItY29sb3I6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtYm9yZGVyLW9wYWNpdHk6IC41ICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1ncmlkLWJvcmRlci1iZzogcmdiYSgkb2ZmY2FudmFzLWdyaWQtYm9yZGVyLWNvbG9yLCAkb2ZmY2FudmFzLWdyaWQtYm9yZGVyLW9wYWNpdHkpICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItc2l6ZTogMXB4ICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItdHlwZTogc29saWQgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtZmlyc3QtbHZsLWJvcmRlci1vcGFjaXR5OiAuMSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1maXJzdC1sdmwtYm9yZGVyLWNvbG9yOiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItY29sb3ItYmc6IHJnYmEoJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItY29sb3IsICRvZmZjYW52YXMtZ3JpZC1maXJzdC1sdmwtYm9yZGVyLW9wYWNpdHkpO1xuJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItc3R5bGU6ICRvZmZjYW52YXMtZ3JpZC1maXJzdC1sdmwtYm9yZGVyLXNpemUgJG9mZmNhbnZhcy1ncmlkLWZpcnN0LWx2bC1ib3JkZXItdHlwZSAkb2ZmY2FudmFzLWdyaWQtZmlyc3QtbHZsLWJvcmRlci1jb2xvci1iZyAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1maXJzdC1sdmwtZm9udC1zaXplOiAxLjVyZW0gIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtZmlyc3QtdGh1bWItd2lkdGg6IDc1JSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1zdWJtZW51LWZvbnQtc2l6ZTogMS4xMjVyZW0gIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtc3VibWVudS1pdGVtLXBhZGRpbmcteTogMCAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1zdWJtZW51LWl0ZW0tbGluZS1oZWlnaHQ6IDEuMjUgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtc3VibWVudS1pdGVtLWljb24tc2l6ZTogLjhyZW0gIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWdyaWQtc3VibWVudS1pdGVtLWltYWdlLWJveC1zaGFkb3c6IDAgMCAxLjVyZW0gLjc1cmVtIHJnYmEoJHNlY29uZGFyeSwgLjI1KSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZ3JpZC1zdWJtZW51LWl0ZW0taG92ZXItaW1hZ2UtYm94LXNoYWRvdzogdmFyKC0tYnMtYm94LXNoYWRvdyk7XG4kb2ZmY2FudmFzLWZpcnN0LWx2bC1tZW51LWl0ZW0tYm9yZGVyLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG4kb2ZmY2FudmFzLWZpcnN0LWx2bC1tZW51LWl0ZW0tYm9yZGVyLW9wYWNpdHk6IC4xNSAhZGVmYXVsdDtcbiRvZmZjYW52YXMtZmlyc3QtbHZsLW1lbnUtaXRlbS1ib3JkZXItc3R5bGU6IDFweCBzb2xpZCByZ2JhKCRvZmZjYW52YXMtZmlyc3QtbHZsLW1lbnUtaXRlbS1ib3JkZXItY29sb3IsICRvZmZjYW52YXMtZmlyc3QtbHZsLW1lbnUtaXRlbS1ib3JkZXItb3BhY2l0eSk7XG5cbi8vLS0tLS0tLSBPZmZjYW52YXMgZGVza3RvcCBNZWdhIFN1Ym1lbnVcbiRvZmZjYW52YXMtc3VibWVudS1pdGVtLWZvbnQtc2l6ZTogMS41cmVtICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1zdWJtZW51LWl0ZW0tYm9yZGVyLWNvbG9yOiB2YXIoLS10aGVtZS1za2luLXRleHQtY29sb3IpICFkZWZhdWx0O1xuJG9mZmNhbnZhcy1zdWJtZW51LWl0ZW0tYm9yZGVyLXN0eWxlOiAxcHggc29saWQgJG9mZmNhbnZhcy1zdWJtZW51LWl0ZW0tYm9yZGVyLWNvbG9yO1xuXG5cbi8vLS0tLS0tIE1lZ2EgTWVudVxuJG1lZ2FtZW51LWJnLWNvbG9yOiB2YXIoLS10aGVtZS1za2luLWJnLWNvbG9yKTtcbiRtZWdhbWVudS1wYWRkaW5nLXk6IDFyZW0gIWRlZmF1bHQ7XG4kbWVnYW1lbnUtcGFkZGluZy14OiAxcmVtICFkZWZhdWx0O1xuJG1lZ2FtZW51LXRpdGxlLXBhZGRpbmcteTogLjVyZW0gIWRlZmF1bHQ7XG4kbWVnYW1lbnUtdGl0bGUtcGFkZGluZy14OiAxcmVtICFkZWZhdWx0O1xuJG1lZ2FtZW51LXRpdGxlLWNvbG9yOiB2YXIoLS10aGVtZS1za2luLXRleHQtY29sb3IpICFkZWZhdWx0O1xuJG1lZ2FtZW51LXRpdGxlLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcbiRtZWdhbWVudS10aXRsZS1ob3Zlci1jb2xvcjogJG5hdi1saW5rLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJG1lZ2FtZW51LXRpdGxlLWhvdmVyLXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFkZWZhdWx0O1xuJG1lZ2FtZW51LXBpY3R1cmUtaGFzLW92ZXJsYXk6IHRydWUgIWRlZmF1bHQ7XG4kbWVnYW1lbnUtb3ZlcmxheS1iZy1jb2xvcjogJHByaW1hcnkgIWRlZmF1bHQ7XG4kbWVnYW1lbnUtb3ZlcmxheS1iZy1vcGFjaXR5OiAuNSAhZGVmYXVsdDtcbiRtZWdhbWVudS1vdmVybGF5LWJnLWNvbG9yLXJiZzogcmdiYSgkbWVnYW1lbnUtb3ZlcmxheS1iZy1jb2xvciwgJG1lZ2FtZW51LW92ZXJsYXktYmctb3BhY2l0eSkgIWRlZmF1bHQ7XG4kbWVnYW1lbnUtcGljdHVyZS1ib3JkZXItcmFkaXVzOiAuNXJlbSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQW5jaG9yIG9mZnNldFxuJGFuY2hvci1vZmZzZXQ6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIFdwIEFscGhhXG4vLyBsb2dvXG4kbG9nby1wYWRkaW5nLXk6ICRuYXZiYXItcGFkZGluZy15ICFkZWZhdWx0O1xuXG4vLy0tLS0tIEJvb3RzdHJhcCBjb2xvcnMgY2xlYW51cFxuJGJzLWdyYXlzLXRvLWtlZXA6ICgpICFkZWZhdWx0O1xuJGJzLWdyYXlzLXRvLXJlbW92ZTogKFwiMjAwXCIsIFwiMzAwXCIsIFwiNDAwXCIsIFwiNTAwXCIsIFwiNzAwXCIpICFkZWZhdWx0O1xuJGJzLWNvbG9ycy10by1rZWVwOiAoKSAhZGVmYXVsdDtcbiRicy1jb2xvcnMtdG8tcmVtb3ZlOiAoXCJpbmRpZ29cIiwgXCJwaW5rXCIsIFwicmVkXCIsIFwieWVsbG93XCIsIFwiZ3JlZW5cIiwgXCJ0ZWFsXCIsIFwiY3lhblwiLCBcImxpZ2h0XCIsIFwiZGFya1wiKSAhZGVmYXVsdDtcblxuLy8tLS0tLSBCb290c3RyYXAgdXRpbGl0aWVzIGNsZWFudXBcbiRicy11dGlsaXRpZXMtdG8tcmVtb3ZlOiAoXCJiZy1vcGFjaXR5XCIpICFkZWZhdWx0O1xuXG4vLy0tLS0tIEhlbHBlcnNcbi8vLS0tLSBTZXBhcmF0ZSB0aXRsZVxuJHNlcGFyYXRlLXRpdGxlLXdpZHRoOiA4MHB4ICFkZWZhdWx0O1xuJHNlcGFyYXRlLXRpdGxlLWJnOiB2YXIoLS1icy1wcmltYXJ5KSAhZGVmYXVsdDtcblxuLy8tLS0tIFRyYW5zcGFyZW50IGJhY2tncm91bmRzXG4kdHJhbnNwYXJlbnQtYmctb3BhY2l0aWVzLW92ZXJyaWRlczogKCkgIWRlZmF1bHQ7XG4kdHJhbnNwYXJlbnQtYmctb3BhY2l0aWVzOiAoXG4gIDEwOiAuMSxcbiAgMjU6IC4yNSxcbiAgbGlnaHQ6IC4yNSxcbiAgMzU6IC4zNSxcbiAgNTA6IC41LFxuICBtZWRpdW06IC41LFxuICA2NTogLjY1LFxuICA3NTogLjc1LFxuICBzdHJvbmc6IC43NSxcbiAgOTA6IC45XG4pICFkZWZhdWx0O1xuJHRyYW5zcGFyZW50LWJnLW9wYWNpdGllczogbWFwLW1lcmdlKCR0cmFuc3BhcmVudC1iZy1vcGFjaXRpZXMsICR0cmFuc3BhcmVudC1iZy1vcGFjaXRpZXMtb3ZlcnJpZGVzKTtcbiR0cmFuc3BhcmVudC1iZy1jb2xvcnM6IChwcmltYXJ5OiAkdHJhbnNwYXJlbnQtYmctb3BhY2l0aWVzLCBzZWNvbmRhcnk6ICR0cmFuc3BhcmVudC1iZy1vcGFjaXRpZXMpICFkZWZhdWx0O1xuXG4vLy0tLS0tIFRvb2xzXG4vLyBDb25maWd1cmF0aW9uIChhY3RpdmF0ZSBvbmx5IHRob3NlIG5lZWRlZClcbiR0ZWFzZXM6IChcImdyaWRcIiwgXCJsaXN0XCIsIFwic2ltcGxlXCIsIFwic2ltcGxlLXJlYWxpc2F0aW9uc1wiKSAhZGVmYXVsdDtcbiRmb3JtczogKCkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gVG9wIEJhclxuJHRvcC1iYXItaGlkZS1vbi1tb2JpbGU6IHRydWUgIWRlZmF1bHQ7XG4kdG9wLWJhci1oaWRlLW9uLXNjcm9sbC1tb2JpbGU6IHRydWUgIWRlZmF1bHQ7XG4kdG9wLWJhci1oaWRlLW9uLXNjcm9sbC1kZXNrdG9wOiAkdG9wLWJhci1oaWRlLW9uLXNjcm9sbC1tb2JpbGUgIWRlZmF1bHQ7XG4kdG9wLWJhci1wYWRkaW5nLXg6ICRjb250YWluZXItcGFkZGluZy14ICFkZWZhdWx0O1xuJHRvcC1iYXItcGFkZGluZy15OiAuNXJlbSAhZGVmYXVsdDtcbiR0b3AtYmFyLWhlaWdodDogaWYobnVsbCAhPSBpbmRleCgkbWVudXMsIFwic2Vjb25kYXJ5XCIpLCAyLjVyZW0sIDEuNXJlbSkgIWRlZmF1bHQ7XG4kdG9wLWJhci1vcGFjaXR5OiAxICFkZWZhdWx0O1xuJHRvcC1iYXItc29jaWFsLWxpbmtzLW1hcmdpbjogbWFwLWdldCgkc3BhY2VycywgNCkgIWRlZmF1bHQ7XG4kdG9wLWJhci1kZWZhdWx0LWJnLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG4kdG9wLWJhci10cmFuc3BhcmVudC1oZWFkZXItYmctY29sb3I6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuXG4vLy0tLS0tIEhlYWRlclxuJGhlYWRlci1idG4taWNvbjogJGZhLXZhci1waG9uZSAhZGVmYXVsdDtcbiRoZWFkZXItYnRuLWZhLXN0eWxlOiBcInNvbGlkXCIgIWRlZmF1bHQ7XG4kaGVhZGVyLWJ0bi1zaG93LXRleHQtYnJlYWtwb2ludDogJGRlc2t0b3AtYnJlYWtwb2ludCAhZGVmYXVsdDtcblxuLy8tLS0tLSBGZWF0dXJlZCBpbWFnZVxuJGZlYXR1cmVkLWltYWdlLWhlaWdodDogNTB2aCAhZGVmYXVsdDtcbiRob21lLWZlYXR1cmVkLWltYWdlLWhlaWdodDogNTB2aCAhZGVmYXVsdDtcbiRmZWF0dXJlZC1pbWFnZS1vdmVybGF5LWNvbG9yOiBibGFjayAhZGVmYXVsdDtcbiRmZWF0dXJlZC1pbWFnZS1vdmVybGF5LW9wYWNpdHk6IC4zICFkZWZhdWx0O1xuJGhvbWUtZmVhdHVyZWQtaW1hZ2UtdGV4dC10cmFuc2l0aW9uOiB0cnVlICFkZWZhdWx0O1xuJGhvbWUtZmVhdHVyZWQtaW1hZ2UtdGV4dC1hbmltYXRpb24tZHVyYXRpb246IDEuNXMgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gQ29udGVudCBBYm92ZVxuJGNvbnRlbnQtYWJvdmUtdGV4dC1jb2xvcjogd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gU2hhcGVzXG4vLyBwb3NzaWJsZSBzaGFwZXMgYXJlOiAoc3F1YXJlLCBjaXJjbGUsIHRyaWFuZ2xlLCBsb3plbmdlKVxuLy8gcG9zc2libGUgdW5pdHMgYXJlOiAocmVtOiAxcmVtLCBlbTogMWVtLCB2dzogMi41dncpXG4kc2hhcGVzOiAoY2lyY2xlKSAhZGVmYXVsdDtcbiRzaGFwZXMtdW5pdHM6IChyZW06IDFyZW0pICFkZWZhdWx0O1xuJHNoYXBlcy1kZWZhdWx0LXVuaXQ6IG50aChudGgoJHNoYXBlcy11bml0cywgMSksIDIpICFkZWZhdWx0O1xuJHNoYXBlcy1tYXgtbXVsdGlwbGllcjogMTAgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gVGV4dCBjb250cmFzdFxuJGFscGhhLWVuYWJsZS1idG4tY2xvc2UtdGV4dC1jb250cmFzdC1jb2xvcnM6IGZhbHNlICFkZWZhdWx0O1xuJGFscGhhLWJ0bi1jbG9zZS10ZXh0LWNvbnRyYXN0LWNvbG9yczogJHRoZW1lLWNvbG9ycyAhZGVmYXVsdDtcblxuLy8tLS0tLSBUZXh0IHNoYWRvd1xuJGFscGhhLXRleHQtc2hhZG93LWNvbG9yOiBjb2xvci1jb250cmFzdCh3aGl0ZSkgIWRlZmF1bHQ7XG4kYWxwaGEtdGV4dC1zaGFkb3ctcmFkaXVzOiAuNXJlbSAhZGVmYXVsdDtcbiRhbHBoYS10ZXh0LXNoYWRvdy1yYWRpdXMtc206IC4yNXJlbSAhZGVmYXVsdDtcbiRhbHBoYS10ZXh0LXNoYWRvdy1yYWRpdXMtbGc6IDFyZW0gIWRlZmF1bHQ7XG4kYWxwaGEtdGV4dC1zaGFkb3ctY29sb3JzOiAoKSAhZGVmYXVsdDtcblxuLy8tLS0tLSBPdmVybGF5XG4kYWxwaGEtb3ZlcmxheS1jb2xvcjogJG1vZGFsLWJhY2tkcm9wLWJnICFkZWZhdWx0O1xuJGFscGhhLW92ZXJsYXktb3BhY2l0eTogJG1vZGFsLWJhY2tkcm9wLW9wYWNpdHkgIWRlZmF1bHQ7XG4kYWxwaGEtb3ZlcmxheS1jb2xvcnM6ICgpICFkZWZhdWx0O1xuXG4vLy0tLS0tIFogaW5kZXhcbiRhbHBoYS16LWluZGV4ZXM6ICgxLCAyLCAxMCkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gU2lkZWJhclxuJHNpZGViYXI6IGZhbHNlICFkZWZhdWx0O1xuJHNpZGViYXItYmctY29sb3I6IHJnYmEoJHByaW1hcnksIC4xKSAhZGVmYXVsdDtcbiRzaWRlYmFyLXBhZGRpbmc6IG1hcC1nZXQoJHNwYWNlcnMsIDMpICFkZWZhdWx0O1xuJHNpZGViYXItYm9yZGVyLXJhZGl1czogLjM3NXJlbSAhZGVmYXVsdDtcbiRzaWRlYmFyLXdpZGdldHMtc3BhY2VyOiBtYXAtZ2V0KCRzcGFjZXJzLCA2KSAhZGVmYXVsdDtcbiRzaWRlYmFyLXdpZGdldC1jb250ZW50LXNwYWNlcjogbWFwLWdldCgkc3BhY2VycywgMikgIWRlZmF1bHQ7XG4kc2lkZWJhci13aWRnZXQtdGl0bGUtc3BhY2VyOiBtYXAtZ2V0KCRzcGFjZXJzLCAzKSAhZGVmYXVsdDtcbiRzaWRlYmFyLXdpZGdldC10aXRsZS1mb250LXNpemU6ICRoMy1mb250LXNpemUgIWRlZmF1bHQ7XG4kc2lkZWJhci13aWRnZXQtbGlzdC1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tLS0gU3VydGl0bGVcbiRhbHBoYS1zdXJ0aXRsZS1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWYgIWRlZmF1bHQ7XG4kYWxwaGEtc3VydGl0bGUtZm9udC1zaXplOiAkZm9udC1zaXplLWJhc2UgIWRlZmF1bHQ7XG4kYWxwaGEtc3VydGl0bGUtZm9udC1zaXplLWRlc2t0b3A6ICRhbHBoYS1zdXJ0aXRsZS1mb250LXNpemUgIWRlZmF1bHQ7XG4kYWxwaGEtc3VydGl0bGUtZm9udC13ZWlnaHQ6IG5vcm1hbCAhZGVmYXVsdDtcbiRhbHBoYS1zdXJ0aXRsZS1jb2xvcjogdmFyKC0tYnMtcHJpbWFyeSkgIWRlZmF1bHQ7XG4kYWxwaGEtc3VydGl0bGUtbWFyZ2luLWJvdHRvbTogbWFwLWdldCgkc3BhY2VycywgNCkgIWRlZmF1bHQ7XG4kYWxwaGEtc3VydGl0bGUtdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhZGVmYXVsdDtcblxuLy8tLS0tLSBDb3B5cmlnaHRcbiRhbHBoYS1jb3B5cmlnaHQtZm9udC1zaXplOiAuODI1cmVtICFkZWZhdWx0O1xuJGFscGhhLWNvcHlyaWdodC1saW5rLWhvdmVyLWNvbG9yOiB2YXIoLS10aGVtZS1za2luLXRleHQtY29sb3IpICFkZWZhdWx0O1xuJGFscGhhLWNvcHlyaWdodC1saW5rLXRleHQtZGVjb3JhdGlvbjogbm9uZSAhZGVmYXVsdDtcblxuLy8tLS0tLSBOYXZpZ2F0aW9uc1xuLy8tLS0tIENvbW1vblxuJG5hdi1saW5rLWFmdGVyLWhlaWdodDogMnB4ICFkZWZhdWx0O1xuXG4vLy0tLS0gQ2VudGVyXG4kbmF2LWNlbnRlci1sb2dvLXBhZGRpbmcteDogMXJlbSAhZGVmYXVsdDtcbiRuYXYtY2VudGVyLWxvZ28tcGFkZGluZy15OiAwICFkZWZhdWx0O1xuXG4vLy0tLS0gU3VibWVudSBtb3JwaFxuJHN1Ym1lbnUtbW9ycGgtbWluLXdpZHRoOiAzNTBweCAhZGVmYXVsdDtcbiRzdWJtZW51LW1vcnBoLW1heC13aWR0aDogMzV2dyAhZGVmYXVsdDtcbiRzdWJtZW51LW1vcnBoLWRyb3Bkb3duLWxpc3QtYm9yZGVyLXJhZGl1czogLjVyZW0gIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1kcm9wZG93bi1saXN0LXBhZGRpbmc6IC41cmVtICFkZWZhdWx0O1xuJHN1Ym1lbnUtbW9ycGgtZHJvcGRvd24tbGlzdC1iZy1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJHN1Ym1lbnUtbW9ycGgtZHJvcGRvd24tbGlzdC1ib3gtc2hhZG93OiB2YXIoLS1icy1ib3gtc2hhZG93KSAhZGVmYXVsdDtcbiRzdWJtZW51LW1vcnBoLWRyb3Bkb3duLWxpc3QtYXJyb3ctaGVpZ2h0OiAuNzVyZW0gIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1kcm9wZG93bi1saXN0LWFycm93LWxlZnQ6IDVyZW0gIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1hY3RpdmUtbWVudS1iZy1jb2xvcjogJGdyYXktMTAwICFkZWZhdWx0O1xuJHN1Ym1lbnUtbW9ycGgtYW5jZXN0b3JzLWZvbnQtd2VpZ2h0OiA1MDAgIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1saW5rLWNvbG9yOiAkbmF2LWxpbmstY29sb3IgIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1saW5rLWhvdmVyLWNvbG9yOiAkbmF2LWxpbmstaG92ZXItY29sb3IgIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1saW5rLWNvbG9yLWN1cnJlbnQ6ICRuYXYtY29sb3ItY3VycmVudCAhZGVmYXVsdDtcbiRzdWJtZW51LW1vcnBoLWxpbmstY29sb3ItYW5jZXN0b3I6ICRuYXYtY29sb3ItYW5jZXN0b3IgIWRlZmF1bHQ7XG4kc3VibWVudS1tb3JwaC1zY3JvbGxiYXItY29sb3I6ICRwcmltYXJ5ICFkZWZhdWx0O1xuJHN1Ym1lbnUtbW9ycGgtc2Nyb2xsYmFyLWJnLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gQnJlYWRjcnVtYnNcbiRicmVhZGNydW1iLW1vYmlsZS1zaGFkb3ctc2l6ZTogMS41cmVtICFkZWZhdWx0O1xuJGJyZWFkY3J1bWItbW9iaWxlLXNoYWRvdy1jb2xvcjogJGJvZHktYmcgIWRlZmF1bHQ7XG4kYnJlYWRjcnVtYi1vbi1mZWF0dXJlZC1tb2JpbGUtc2hhZG93LWNvbG9yOiAkYmxhY2sgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gVGVhc2VcbiR0ZWFzZS1iYWRnZS1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJHRlYXNlLWJhZGdlLWJnOiB2YXIoLS1icy1wcmltYXJ5KSAhZGVmYXVsdDtcblxuJHRlYXNlLW92ZXJsYXktdGV4dC1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJHRlYXNlLW92ZXJsYXktdGV4dC1zaGFkb3c6IDAgMCAuMjVyZW0gIzAwMDtcbiR0ZWFzZS1vdmVybGF5LWJnLWNvbG9yOiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJHRlYXNlLW92ZXJsYXktYmctb3BhY2l0eTogLjUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIFdvb0NvbW1lcmNlXG5cbiR3Yy1wcmltYXJ5OiB2YXIoLS1icy1wcmltYXJ5KSAhZGVmYXVsdDtcbiR3b29jb21tZXJjZTogdmFyKC0tYnMtcHJpbWFyeSkgIWRlZmF1bHQ7XG4kd2MtZ3JlZW46ICRzdWNjZXNzICFkZWZhdWx0O1xuJHdjLXJlZDogJGRhbmdlciAhZGVmYXVsdDtcbiR3Yy1vcmFuZ2U6ICR3YXJuaW5nICFkZWZhdWx0O1xuJHdjLWJsdWU6ICRpbmZvICFkZWZhdWx0O1xuJHdjLXByaW1hcnktdGV4dDogJHdoaXRlICFkZWZhdWx0O1xuJHdjLXNlY29uZGFyeTogJHNlY29uZGFyeSAhZGVmYXVsdDtcbiR3Yy1zZWNvbmRhcnktdGV4dDogJHdoaXRlICFkZWZhdWx0O1xuJHdjLWhpZ2hsaWdodDogI2IzYWY1NCAhZGVmYXVsdDtcbiR3Yy1oaWdobGlnaHQtdGV4dDogJHdoaXRlICFkZWZhdWx0O1xuJHdjLWNvbnRlbnQtYmc6ICNmZmYgIWRlZmF1bHQ7XG4kd2Mtc3VidGV4dDogIzc2NzY3NiAhZGVmYXVsdDtcblxuJHdjLXN0b2NrLWluLXN0b2NrLWNvbG9yOiAkd2MtZ3JlZW4gIWRlZmF1bHQ7XG4kd2Mtc3RvY2stbG93LXN0b2NrLWNvbG9yOiAkd2Mtb3JhbmdlICFkZWZhdWx0O1xuJHdjLXN0b2NrLWF2YWlsYWJsZS1vbi1iYWNrb3JkZXItY29sb3I6ICR3Yy1vcmFuZ2UgIWRlZmF1bHQ7XG4kd2Mtc3RvY2stb3V0LW9mLXN0b2NrLWNvbG9yOiAkd2MtcmVkICFkZWZhdWx0O1xuXG4kd2Mtc3RvY2staW4tc3RvY2staWNvbjogJGZhLXZhci1jaXJjbGUtY2hlY2sgIWRlZmF1bHQ7XG4kd2Mtc3RvY2stbG93LXN0b2NrLWljb246ICRmYS12YXItY2hhcnQtbGluZS1kb3duICFkZWZhdWx0O1xuJHdjLXN0b2NrLWF2YWlsYWJsZS1vbi1iYWNrb3JkZXItaWNvbjogJGZhLXZhci1jbG9jay1yb3RhdGUtbGVmdCAhZGVmYXVsdDtcbiR3Yy1zdG9jay1vdXQtb2Ytc3RvY2staWNvbjogJGZhLXZhci1jaXJjbGUteG1hcmsgIWRlZmF1bHQ7XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIG9sZCAkd29vY29tbWVyY2UgJiAkd29vY29tbWVyY2VTaWRlYmFyIHZhcmlhYmxlc1xuQGlmIHR5cGUtb2YoJHdvb2NvbW1lcmNlKSA9PSBcImJvb2xcIiB7XG4gIEB3YXJuIFwiVXNhZ2Ugb2YgJHdvb2NvbW1lcmNlIHZhcmlhYmxlIGFzIGJvb2wgaXMgZGVwcmVjYXRlZCwgdXNlIHdvb2NvbW1lcmNlLmVuYWJsZWQgaW4gd29vY29tbWVyY2UueWFtbCBpbnN0ZWFkLlwiO1xuICAkd29vY29tbWVyY2U6IG1hcC1leHRlbmQobWFwLWdldCgkY29uZmlnLWRlZmF1bHRzLCBcIndvb2NvbW1lcmNlXCIpLCAoZW5hYmxlZDogJHdvb2NvbW1lcmNlKSk7XG4gICR3b29jb21tZXJjZS1lbmFibGVkOiBtYXAtZ2V0LWRlZXAoJHdvb2NvbW1lcmNlLCBcImVuYWJsZWRcIik7XG59XG5cbkBpZiB2YXJpYWJsZS1leGlzdHMod29vY29tbWVyY2VTaWRlYmFyKSB7XG4gIEB3YXJuIFwiVXNhZ2Ugb2YgJHdvb2NvbW1lcmNlU2lkZWJhciB2YXJpYWJsZSBkZXByZWNhdGVkLCB1c2UgJHdvb2NvbW1lcmNlLXNpZGViYXIgaW5zdGVhZC5cIjtcbiAgJHdvb2NvbW1lcmNlLXNpZGViYXI6ICR3b29jb21tZXJjZVNpZGViYXI7XG59XG5cbi8vIEFjY291bnRcbiRhY2NvdW50LW5hdmlnYXRpb24taWNvbnM6IChcbiAgZGFzaGJvYXJkOiAkZmEtdmFyLWhvbWUsXG4gIG9yZGVyczogJGZhLXZhci1kb2xseSxcbiAgc3Vic2NyaXB0aW9uczogJGZhLXZhci1jbG9jay1yb3RhdGUtbGVmdCxcbiAgbWVtYmVyc2hpcHM6ICRmYS12YXItdXNlci1jcm93bixcbiAgZG93bmxvYWRzOiAkZmEtdmFyLWRvd25sb2FkLFxuICBlZGl0LWFkZHJlc3M6ICRmYS12YXItbWFwLW1hcmtlci1lZGl0LFxuICBwYXltZW50LW1ldGhvZHM6ICRmYS12YXItY3JlZGl0LWNhcmQsXG4gIGVkaXQtYWNjb3VudDogJGZhLXZhci11c2VyLWVkaXQsXG4gIGJvb2tpbmdzOiAkZmEtdmFyLWNhbGVuZGFyLWFsdCxcbiAgY3VzdG9tZXItbG9nb3V0OiAkZmEtdmFyLXNpZ24tb3V0XG4pICFkZWZhdWx0O1xuXG4vLyBBdHRyaWJ1dGVzXG4kd2MtcHJvZHVjdC1hdHRyaWJ1dGUtZm9udC1zaXplOiAuOXJlbSAhZGVmYXVsdDtcbiR3Yy1wcm9kdWN0LWF0dHJpYnV0ZS1ldmVuLWJnOiByZ2JhKCRwcmltYXJ5LCAuMSkgIWRlZmF1bHQ7XG4kd2MtcHJvZHVjdC1hdHRyaWJ1dGUtbGFiZWwtY29sb3I6ICRncmF5LTcwMCAhZGVmYXVsdDtcblxuLy8gQXZhaWxhYmlsaXR5XG4kd2Mtc3RvY2stZm9udC1zaXplOiAuOHJlbSAhZGVmYXVsdDtcbiR3Yy1zdG9jay1pY29uLXdpZHRoOiAkZmEtZnctd2lkdGggIWRlZmF1bHQ7XG4kd2Mtc3RvY2staWNvbi1mb250LXNpemU6ICRmYS1zaXplLXNjYWxlLWJhc2UgIWRlZmF1bHQ7XG4kd2Mtc3RvY2staW5mbzogKFxuICBpbi1zdG9jazogKGNvbG9yOiAkd2Mtc3RvY2staW4tc3RvY2stY29sb3IsIGljb246ICR3Yy1zdG9jay1pbi1zdG9jay1pY29uKSxcbiAgbG93LXN0b2NrOiAoY29sb3I6ICR3Yy1zdG9jay1sb3ctc3RvY2stY29sb3IsIGljb246ICR3Yy1zdG9jay1sb3ctc3RvY2staWNvbiksXG4gIGF2YWlsYWJsZS1vbi1iYWNrb3JkZXI6IChjb2xvcjogJHdjLXN0b2NrLWF2YWlsYWJsZS1vbi1iYWNrb3JkZXItY29sb3IsIGljb246ICR3Yy1zdG9jay1hdmFpbGFibGUtb24tYmFja29yZGVyLWljb24pLFxuICBvdXQtb2Ytc3RvY2s6IChjb2xvcjogJHdjLXN0b2NrLW91dC1vZi1zdG9jay1jb2xvciwgaWNvbjogJHdjLXN0b2NrLW91dC1vZi1zdG9jay1pY29uKSxcbikgIWRlZmF1bHQ7XG5cblxuLy8tLS0tLSBBZGQgdG8gQ2FydCBidXR0b25cbiRidG4tYWRkdG9jYXJ0LWJnOiB0cmFuc3BhcmVudCAhZGVmYXVsdDtcbiRidG4tYWRkdG9jYXJ0LWNvbG9yOiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJGJ0bi1hZGR0b2NhcnQtaG92ZXItYmc6IHRyYW5zcGFyZW50ICFkZWZhdWx0O1xuJGJ0bi1hZGR0b2NhcnQtaG92ZXItY29sb3I6IHZhcigtLWJzLXByaW1hcnkpICFkZWZhdWx0O1xuJGJ0bi1hZGR0b2NhcnQtaWNvbnM6IChcbiAgc2ltcGxlOiAkZmEtdmFyLXNob3BwaW5nLWJhc2tldCxcbiAgZ3JvdXBlZDogJGZhLXZhci1leWUsXG4gIHZhcmlhYmxlOiAkZmEtdmFyLWNvZ3MsXG4gIGJvb2tpbmc6ICRmYS12YXItY2FsZW5kYXItZGF5cyxcbikgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gQm9va2luZ1xuJHdjLWJvb2tpbmctZGF0ZXBpY2tlci11aS1iZzogJHNlY29uZGFyeSAhZGVmYXVsdDtcbiR3Yy1ib29raW5nLWRhdGVwaWNrZXItdWktY29sb3I6IGNvbG9yLWNvbnRyYXN0KCR3Yy1ib29raW5nLWRhdGVwaWNrZXItdWktYmcpICFkZWZhdWx0O1xuJHdjLWJvb2tpbmctZGF0ZXBpY2tlci1ibG9jay1vZGQtYmc6ICRncmF5LTEwMCAhZGVmYXVsdDtcbiR3Yy1ib29raW5nLWRhdGVwaWNrZXItYmxvY2stb2RkLWhvdmVyLWJnOiBzaGFkZS1jb2xvcigkd2MtYm9va2luZy1kYXRlcGlja2VyLWJsb2NrLW9kZC1iZywgMjAlKSAhZGVmYXVsdDtcbiR3Yy1ib29raW5nLWRhdGVwaWNrZXItYmxvY2stb2RkLWNvbG9yOiBjb2xvci1jb250cmFzdCgkd2MtYm9va2luZy1kYXRlcGlja2VyLWJsb2NrLW9kZC1iZykgIWRlZmF1bHQ7XG4kd2MtYm9va2luZy1kYXRlcGlja2VyLWJsb2NrLWV2ZW4tYmc6ICRncmF5LTIwMCAhZGVmYXVsdDtcbiR3Yy1ib29raW5nLWRhdGVwaWNrZXItYmxvY2stZXZlbi1ob3Zlci1iZzogc2hhZGUtY29sb3IoJHdjLWJvb2tpbmctZGF0ZXBpY2tlci1ibG9jay1ldmVuLWJnLCAyMCUpICFkZWZhdWx0O1xuJHdjLWJvb2tpbmctZGF0ZXBpY2tlci1ibG9jay1ldmVuLWNvbG9yOiBjb2xvci1jb250cmFzdCgkd2MtYm9va2luZy1kYXRlcGlja2VyLWJsb2NrLWV2ZW4tYmcpICFkZWZhdWx0O1xuJHdjLWJvb2tpbmctY29zdC1iZzogJGdyYXktMTAwICFkZWZhdWx0O1xuJHdjLWJvb2tpbmctY29zdC1jb2xvcjogY29sb3ItY29udHJhc3QoJHdjLWJvb2tpbmctY29zdC1iZykgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gUHJpY2UgQ29sb3JcbiR3Yy1wcmljZS1jb2xvcjogJHNlY29uZGFyeSAhZGVmYXVsdDtcbiR3Yy1kZWwtcHJpY2UtY29sb3I6IHJnYmEoJGdyYXktNTAwLCAuNikgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gRGlzY291bnQgYmFkZ2VcbiRiYWRnZS1vbnNhbGUtYmc6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4kYmFkZ2Utb25zYWxlLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gTWluaSBDYXJ0XG4kbWluaWNhcnQtY291bnRlci1iZzogJHNlY29uZGFyeSAhZGVmYXVsdDtcbiRtaW5pY2FydC1jb3VudGVyLWNvbG9yOiAkd2hpdGUgIWRlZmF1bHQ7XG4kbWluaWNhcnQtdG90YWwtYmc6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG4kbWluaWNhcnQtdG90YWwtY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiRtaW5pY2FydC1pdGVtLWNvbG9yOiB2YXIoLS1icy1wcmltYXJ5KSAhZGVmYXVsdDtcbiRtaW5pY2FydC1xdHktY29sb3I6IHZhcigtLWJzLWJvZHktY29sb3IpICFkZWZhdWx0O1xuXG4vLy0tLS0tIENhcnRcbiRjYXJ0LWJ0bi1hY3Rpb25zLWJnOiAkcHJpbWFyeSAhZGVmYXVsdDtcbiRjYXJ0LWJ0bi1jaGVja291dC1iZzogJHNlY29uZGFyeSAhZGVmYXVsdDtcblxuLy8tLS0tLSBNZXNzYWdlXG4kd2MtbWVzc2FnZS1iZy1jb2xvcjogJGdyYXktMTAwICFkZWZhdWx0O1xuJHdjLW1lc3NhZ2UtY29sb3I6IHZhcigtLWJzLWJvZHktY29sb3IpICFkZWZhdWx0O1xuJHdjLW1lc3NhZ2UtaWNvbi1jb2xvcjogJGdyZWVuICFkZWZhdWx0O1xuXG4kd2MtaW5mby1iZy1jb2xvcjogJGdyYXktMTAwICFkZWZhdWx0O1xuJHdjLWluZm8tY29sb3I6IHZhcigtLWJzLWJvZHktY29sb3IpICFkZWZhdWx0O1xuJHdjLWluZm8taWNvbi1jb2xvcjogJGJsdWUgIWRlZmF1bHQ7XG5cbiR3Yy1lcnJvci1iZy1jb2xvcjogJGdyYXktMTAwICFkZWZhdWx0O1xuJHdjLWVycm9yLWNvbG9yOiB2YXIoLS1icy1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiR3Yy1lcnJvci1pY29uLWNvbG9yOiByZWQgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gU2lkZWJhclxuJHdjLXNpZGViYXItbW9iaWxlLWNvbG9yOiB3aGl0ZSAhZGVmYXVsdDtcbiR3Yy1zaWRlYmFyLW1vYmlsZS1iYWNrLXRvcC1vZmZzZXQteTogM3JlbSAhZGVmYXVsdDtcbiR3Yy1zaWRlYmFyLWNvbG9yOiByZ2JhKCRwcmltYXJ5LCAuMSkgIWRlZmF1bHQ7XG4kd2MtZmlsdGVyLXRvZ2dsZXItY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiR3Yy1maWx0ZXItdG9nZ2xlci1iZzogJHByaW1hcnkgIWRlZmF1bHQ7XG4kd2MtY2F0LWxpbmstYmc6ICRncmF5LTEwMCAhZGVmYXVsdDtcbiR3Yy1jYXQtbGluay1ob3Zlci1iZzogdmFyKC0tYnMtcHJpbWFyeSkgIWRlZmF1bHQ7XG4kd2MtY2F0LWxpbmstaG92ZXItY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiR3Yy1zaWRlYmFyLWN1cnJlbnQtdGVybS1saW5rLWNvbG9yOiAkbmF2LWNvbG9yLWN1cnJlbnQgIWRlZmF1bHQ7XG4kd2Mtc2lkZWJhci1jdXJyZW50LXRlcm0tbGluay1ob3Zlci1jb2xvcjogdGludC1jb2xvcigkd2Mtc2lkZWJhci1jdXJyZW50LXRlcm0tbGluay1jb2xvciwgMTAlKSAhZGVmYXVsdDtcbiR3Yy1zaWRlYmFyLWN1cnJlbnQtdGVybS1wYXJlbnQtbGluay1jb2xvcjogJG5hdi1jb2xvci1hbmNlc3RvciAhZGVmYXVsdDtcbiR3Yy1zaWRlYmFyLWN1cnJlbnQtdGVybS1wYXJlbnQtbGluay1ob3Zlci1jb2xvcjogdGludC1jb2xvcigkd2Mtc2lkZWJhci1jdXJyZW50LXRlcm0tcGFyZW50LWxpbmstY29sb3IsIDEwJSkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gVG9wIGJhciBpY29uc1xuLy8tLS0tLSBUb3AgYmFyIGljb25zXG4kdG9wLWJhci1pY29uczogKGNvbnRhY3Q6ICRmYS12YXItZW52ZWxvcGUsIHBob25lOiAkZmEtdmFyLXBob25lLWFsdCkgIWRlZmF1bHQ7XG4kdG9wLWJhci1pY29ucy1tYXJnaW46IC4yNXJlbSAhZGVmYXVsdDtcbiR0b3AtYmFyLWljb25zLWZhLXZhcmlhbnQ6IFwic29saWRcIiAhZGVmYXVsdDtcbiR3Yy10b3AtYmFyLWljb25zOiAkdG9wLWJhci1pY29ucyAhZGVmYXVsdDtcbiR3Yy10b3AtYmFyLWljb25zLW1hcmdpbjogJHRvcC1iYXItaWNvbnMtbWFyZ2luICFkZWZhdWx0O1xuJHdjLXRvcC1iYXItaWNvbnMtZmEtdmFyaWFudDogJHRvcC1iYXItaWNvbnMtZmEtdmFyaWFudCAhZGVmYXVsdDtcblxuLy8tLS0tLSBUZWFzZVxuJHdjLXRlYXNlLXByb2R1Y3QtYmctY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiR3Yy10ZWFzZS1wcm9kdWN0LWJvcmRlci1yYWRpdXM6IG1hcC1nZXQoJHNwYWNlcnMsIDIpICFkZWZhdWx0O1xuJHdjLXRlYXNlLXByb2R1Y3QtbGluay1wYWRkaW5nOiBtYXAtZ2V0KCRzcGFjZXJzLCAyKSAhZGVmYXVsdDtcbiR3Yy10ZWFzZS1wcm9kdWN0LWxpbmstaW1hZ2UtcGFkZGluZzogJHdjLXRlYXNlLXByb2R1Y3QtbGluay1wYWRkaW5nICogLTEgIWRlZmF1bHQ7XG4kd2MtdGVhc2UtcHJvZHVjdC1ob3Zlci1ib3JkZXItY29sb3I6ICRzZWNvbmRhcnkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIFNvY2lhbCBzaGFyZSBpY29uc1xuJHNvY2lhbC1zaGFyZS1ob3Zlci1ib3JkZXItY29sb3I6IHJnYmEoJHByaW1hcnksIC41KSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gV1BNTFxuJHdwbWwtZGV2OiBmYWxzZSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQWxwaGEgYmxvY2tzXG4vLy0tLS0tIEZhY2Vib29rIHZpZGVvXG4kYWxwaGEtZmItdmlkZW8tbG9hZGVyLWJnLWNvbG9yOiAkcHJpbWFyeSAhZGVmYXVsdDtcbiRhbHBoYS1mYi12aWRlby1sb2FkZXItY29sb3I6IGNvbG9yLWNvbnRyYXN0KCRhbHBoYS1mYi12aWRlby1sb2FkZXItYmctY29sb3IpICFkZWZhdWx0O1xuXG4vLy0tLS0tIEdvb2dsZSBSZXZpZXdzXG4kZ29vZ2xlLXJldmlld3MtYm9yZGVyLXRvcDogNnB4IHNvbGlkICM0ZmNlNmEgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJldmlld3MtYm9yZGVyLXJhZGl1czogLjE1cmVtICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLWxvZ28td2lkdGg6IDUwcHggIWRlZmF1bHQ7XG4kZ29vZ2xlLXJldmlld3Mtc2NvcmUtZm9udC1zaXplOiAxLjI1cmVtICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLXJhdGluZy1zdGFyLWNvbG9yOiAjZTc3MTFiICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLXJhdGluZy1jb3VudC1jb2xvcjogIzdhN2E3YSAhZGVmYXVsdDtcbiRnb29nbGUtcmV2aWV3cy16LWluZGV4OiAyMDAwICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLW9mZnNldDogMnJlbSAhZGVmYXVsdDtcbiRnb29nbGUtcmV2aWV3cy1vZmZzZXQtYm90dG9tOiAkZ29vZ2xlLXJldmlld3Mtb2Zmc2V0ICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLW9mZnNldC1sZWZ0OiAkZ29vZ2xlLXJldmlld3Mtb2Zmc2V0ICFkZWZhdWx0O1xuJGdvb2dsZS1yZXZpZXdzLW9mZnNldC1yaWdodDogJGdvb2dsZS1yZXZpZXdzLW9mZnNldCAhZGVmYXVsdDtcbiRnb29nbGUtYmFkZ2UtZGlzcGxheTogYmxvY2sgIWRlZmF1bHQ7XG4kZ29vZ2xlLXJldmlld3MtYmFkZ2UtaGlkZS1vbi1tb2JpbGU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gSGVybyBiYW5uZXJcbiRhbHBoYS1oZXJvLWJhbm5lci1vZmZzZXQteTogMy41cmVtICFkZWZhdWx0O1xuJGFscGhhLWhlcm8tYmFubmVyLW9mZnNldC10b3A6ICRhbHBoYS1oZXJvLWJhbm5lci1vZmZzZXQteSAhZGVmYXVsdDtcbiRhbHBoYS1oZXJvLWJhbm5lci1vZmZzZXQtYm90dG9tOiAkYWxwaGEtaGVyby1iYW5uZXItb2Zmc2V0LXkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gSWNvblxuJGljb24tYmxvY2staWNvbi1jb2xvcjogdmFyKC0tYnMtcHJpbWFyeSkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gTWFwXG4kYWxwaGEtbWFwLWRlZmF1bHQtaGVpZ2h0OiAyNTBweCAhZGVmYXVsdDtcbiRhbHBoYS1tYXAtZGVmYXVsdC1oZWlnaHQtbGc6ICRhbHBoYS1tYXAtZGVmYXVsdC1oZWlnaHQgKiAyICFkZWZhdWx0O1xuXG4vLy0tLS0tIFJhdGluZ1xuJGFscGhhLXJhdGluZy1zdGFyLW9uLWNvbG9yOiAkeWVsbG93ICFkZWZhdWx0O1xuJGFscGhhLXJhdGluZy1zdGFyLW9mZi1jb2xvcjogJGdyYXktMTAwICFkZWZhdWx0O1xuXG4vLy0tLS0tIFJlaW5zdXJhbmNlXG4vLy0tLS0gU291YmEgTWFnYXNzYSBzdHlsZXNcbiRzb3ViYS1yZWluc3VyYW5jZS1jb2xvcnM6IChwcmltYXJ5LCBzZWNvbmRhcnkpICFkZWZhdWx0O1xuJHNvdWJhLXJlaW5zdXJhbmNlLXRvcC1vZmZzZXQ6IDJyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tLS0gU2VydmljZXNcbiRzZXJ2aWNlcy1iZy1ob3Zlci1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJHNlcnZpY2VzLWJnLWhvdmVyLWNvbG9yLWxpZ2h0OiAkc2VydmljZXMtYmctaG92ZXItY29sb3IgIWRlZmF1bHQ7XG4kc2VydmljZXMtYmctaG92ZXItY29sb3ItZGFyazogJHNlcnZpY2VzLWJnLWhvdmVyLWNvbG9yICFkZWZhdWx0O1xuJHNlcnZpY2VzLWJnLWhvdmVyLW9wYWNpdHk6IDEgIWRlZmF1bHQ7XG4kc2VydmljZXMtYmctaG92ZXItb3BhY2l0eS1saWdodDogJHNlcnZpY2VzLWJnLWhvdmVyLW9wYWNpdHkgIWRlZmF1bHQ7XG4kc2VydmljZXMtYmctaG92ZXItb3BhY2l0eS1kYXJrOiAuMiAhZGVmYXVsdDtcblxuLy8tLS0tLS0gQWxwaGEgbW9kdWxlc1xuLy8tLS0tLSBDb21tb25cbiRsb2FkaW5nLW1vZHVsZXMtYmctY29sb3I6IHJnYmEoJHdoaXRlLCAuNzUpICFkZWZhdWx0O1xuJGxvYWRpbmctbW9kdWxlcy1sb2FkZXItY29sb3I6IHZhcigtLWJzLXByaW1hcnkpICFkZWZhdWx0O1xuJGxvYWRpbmctbW9kdWxlcy1sb2FkZXItZm9udC1zaXplOiAycmVtICFkZWZhdWx0O1xuJGxvYWRpbmctbW9kdWxlcy16LWluZGV4OiAxMCAhZGVmYXVsdDtcblxuLy8tLS0tLSBEZWZhdWx0XG4vLy0tLS0gUGFnZSBzY3JvbGxcbiRob21lLXBhZ2Utc2Nyb2xsLWxpc3RlbmVyLWhlaWdodDogMTV2aCAhZGVmYXVsdDtcbiRwYWdlLXNjcm9sbC1saXN0ZW5lci1oZWlnaHQ6ICRob21lLXBhZ2Utc2Nyb2xsLWxpc3RlbmVyLWhlaWdodCAvIDIgIWRlZmF1bHQ7XG4kcGFnZS1zY3JvbGwtbGlzdGVuZXItaGVpZ2h0LWRlc2t0b3A6ICRob21lLXBhZ2Utc2Nyb2xsLWxpc3RlbmVyLWhlaWdodCAvIDMgIWRlZmF1bHQ7XG5cbi8vLS0tLS0gT3B0aW9uYWxcbi8vLS0tLSBCYWNrIHRvIHRvcFxuJGJhY2stdG8tdG9wLW9mZnNldC14OiAxcmVtICFkZWZhdWx0O1xuJGJhY2stdG8tdG9wLW9mZnNldC15OiAxcmVtICFkZWZhdWx0O1xuJGJhY2stdG8tdG9wLXdoYXRzYXBwLWJ1dHRvbi1vZmZzZXQteTogNHJlbSAhZGVmYXVsdDtcbiRiYWNrLXRvLXRvcC1kZWZhdWx0LWJ1dHRvbi10cmFuc2xhdGUteTogJGJhY2stdG8tdG9wLW9mZnNldC15ICogLTIgIWRlZmF1bHQ7XG5cbi8vLS0tLSBIZWFkZXIgc3RhdGVzXG4vLy0tLSBTaHJ1bmsgbG9nb1xuJHNocnVuay1sb2dvLWhlaWdodC1yYXRpbzogLjggIWRlZmF1bHQ7XG5cbi8vLS0tLSBSYW5nZSBzbGlkZXJcbiRyYW5nZS1zbGlkZXItd3JhcHBlci1oZWlnaHQ6IDNyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tLSBSb3VzcXVpbGxlXG4kcm91c3F1aWxsZS1iYW5uZXItbG9nby1tYXJnaW46IDAgYXV0byAhZGVmYXVsdDtcbiRyb3VzcXVpbGxlLWJhbm5lci1sb2dvLW1hcmdpbi10YWJsZXQ6IDAgYXV0byBtYXAtZ2V0KCRzcGFjZXJzLCA4KSAhZGVmYXVsdDtcbiRyb3VzcXVpbGxlLWJhbm5lci1sb2dvLW1hcmdpbi1tb2JpbGU6IDAgYXV0byBtYXAtZ2V0KCRzcGFjZXJzLCA0KSAhZGVmYXVsdDtcbiRyb3VzcXVpbGxlLWJhbm5lci1sb2dvLWhlaWdodDogJGxvZ28taGVpZ2h0ICFkZWZhdWx0O1xuJHJvdXNxdWlsbGUtYmFubmVyLWxvZ28tbWF4LWhlaWdodDogNXJlbSAhZGVmYXVsdDtcblxuLy8tLS0tIFNlcnZpY2VzIEJ1dHRvblxuJHNlcnZpY2VzLWJ1dHRvbi1tb2JpbGUtb2Zmc2V0OiAuNXJlbSAhZGVmYXVsdDtcbiRzZXJ2aWNlcy1idXR0b24tZGVza3RvcC1vZmZzZXQtZW5kOiAyLjVyZW0gIWRlZmF1bHQ7XG4kc2VydmljZXMtYnV0dG9uLWZvb3Rlci1wYWRkaW5nLWJvdHRvbTogNC41cmVtICFkZWZhdWx0O1xuJHNlcnZpY2VzLWJ1dHRvbi1iYWNrLXRvLXRvcC1vZmZzZXQtYm90dG9tOiAkc2VydmljZXMtYnV0dG9uLWZvb3Rlci1wYWRkaW5nLWJvdHRvbSArIDFyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tLSBTd2lwZXJcbiRzd2lwZXItdGhlbWUtY29sb3I6IHZhcigtLWJzLXByaW1hcnkpICFkZWZhdWx0O1xuJHN3aXBlci1uYXZpZ2F0aW9uLXNpemU6IDEuNzVyZW0gIWRlZmF1bHQ7XG5cbi8vLS0tIFRyYW5zcGFyZW50IEhlYWRlclxuJHRyYW5zcGFyZW50LWhlYWRlci1iZy1jb2xvcjogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgJGdyYXktNzAwLCB0cmFuc3BhcmVudCkgIWRlZmF1bHQ7XG4kdHJhbnNwYXJlbnQtaGVhZGVyLXRleHQtY29sb3I6ICNmZmYgIWRlZmF1bHQ7XG4kdHJhbnNwYXJlbnQtaGVhZGVyLXNoYWRvdy1jb2xvcjogIzAwMCAhZGVmYXVsdDtcbiR0cmFuc3BhcmVudC1oZWFkZXItc2hhZG93LXJhZGl1czogLjEyNXJlbSAhZGVmYXVsdDtcbiR0cmFuc3BhcmVudC1oZWFkZXItbG9nby1jb2xvcjogJHRyYW5zcGFyZW50LWhlYWRlci10ZXh0LWNvbG9yICFkZWZhdWx0O1xuJHRyYW5zcGFyZW50LWhlYWRlci1sb2dvLXNoYWRvdy1jb2xvcjogJHRyYW5zcGFyZW50LWhlYWRlci1zaGFkb3ctY29sb3IgIWRlZmF1bHQ7XG4kdHJhbnNwYXJlbnQtaGVhZGVyLWxvZ28tc2hhZG93LXJhZGl1czogJHRyYW5zcGFyZW50LWhlYWRlci1zaGFkb3ctcmFkaXVzICFkZWZhdWx0O1xuXG4vLy0tLS0gV2hhdHNhcHAgQnV0dG9uXG4kd2hhdHNhcHAtYnV0dG9uLWJnOiAjMjVkMzY2ICFkZWZhdWx0O1xuJHdoYXRzYXBwLWJ1dHRvbi1jb2xvcjogJHdoaXRlICFkZWZhdWx0O1xuJHdoYXRzYXBwLWJ1dHRvbi1vZmZzZXQteDogMXJlbSAhZGVmYXVsdDtcbiR3aGF0c2FwcC1idXR0b24tb2Zmc2V0LXk6IDFyZW0gIWRlZmF1bHQ7XG4kd2hhdHNhcHAtYnV0dG9uLXotaW5kZXg6IDEwICFkZWZhdWx0O1xuXG4vLy0tLS0gSW1hZ2UgR2FsbGVyeVxuLy8gXCJvdmVybGF5XCIsIFwiZGVmYXVsdC1vcGFjaXR5XCIsIFwiaG92ZXItb3BhY2l0eVwiLCBcImN1c3RvbVwiXG4kaW1hZ2UtZ2FsbGVyeS1hbmltYXRpb24tdHlwZTogXCJvdmVybGF5XCIgIWRlZmF1bHQ7XG5cbi8vLS0tIE9wYWNpdHlcbiRpbWFnZS1nYWxsZXJ5LWltYWdlLW9wYWNpdHk6IC43ICFkZWZhdWx0O1xuXG4vLy0tLSBPdmVybGF5XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWNvbG9yOiAjZmZmICFkZWZhdWx0O1xuJGltYWdlLWdhbGxlcnktb3ZlcmxheS1vcGFjaXR5OiAuMTUgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWJhY2tkcm9wLWZpbHRlcjogc2F0dXJhdGUoMTI1JSkgY29udHJhc3QoMTI1JSkgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSBzY2FsZSguNSkgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWljb246ICRmYS12YXItc2VhcmNoLXBsdXMgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWljb24tc3R5bGU6IFwicmVndWxhclwiICFkZWZhdWx0O1xuJGltYWdlLWdhbGxlcnktb3ZlcmxheS1pY29uLWNvbG9yOiAjZmZmICFkZWZhdWx0O1xuJGltYWdlLWdhbGxlcnktb3ZlcmxheS1pY29uLW9wYWNpdHk6IC44NSAhZGVmYXVsdDtcbiRpbWFnZS1nYWxsZXJ5LW92ZXJsYXktaWNvbi1mb250LXNpemU6IDEuNXJlbSAhZGVmYXVsdDtcbiRpbWFnZS1nYWxsZXJ5LW92ZXJsYXktaWNvbi10ZXh0LXNoYWRvdzogMCAwIC4xMjVyZW0gcmdiYShibGFjaywgLjc1KSAhZGVmYXVsdDtcbiRpbWFnZS1nYWxsZXJ5LW92ZXJsYXktaWNvbi10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEuNXJlbSkgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWltYWdlLW9mZnNldDogLjEgIWRlZmF1bHQ7XG4kaW1hZ2UtZ2FsbGVyeS1vdmVybGF5LWltYWdlLXNjYWxlOiAxICsgJGltYWdlLWdhbGxlcnktb3ZlcmxheS1pbWFnZS1vZmZzZXQgIWRlZmF1bHQ7XG5cbi8vLS0tLSBMZWFmbGV0IE1hcFxuJG1hcC1tYXJrZXItY29sb3ItZGVmYXVsdDogdmFyKC0tYnMtc2Vjb25kYXJ5KSAhZGVmYXVsdDtcbiRtYXAtbWFya2VyLWNvbG9yLWxvYWRpbmc6IGdyYXkgIWRlZmF1bHQ7XG4kbWFwLW1hcmtlci1jb2xvci1hY3RpdmU6IHZhcigtLWJzLXByaW1hcnkpICFkZWZhdWx0O1xuXG4vLy0tLS0gTWFzb25yeVxuJG1hc29ucnktZ2FsbGVyeS1nYXA6IC43NXJlbSAhZGVmYXVsdDtcblxuLy8tLS0tIFdvb0NvbW1lcmNlIFNlYXJjaCBPdmVybGF5XG4kc2VhcmNoLW92ZXJsYXktYmctY29sb3I6IGJsYWNrICFkZWZhdWx0O1xuJHNlYXJjaC1vdmVybGF5LWJnLW9wYWNpdHk6IC4yNSAhZGVmYXVsdDtcbiRzZWFyY2gtb3ZlcmxheS1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoLjEyNXJlbSkgIWRlZmF1bHQ7XG4kc2VhcmNoLW92ZXJsYXktZm9ybS1mb250LXNpemU6IC45cmVtICFkZWZhdWx0O1xuJHNlYXJjaC1vdmVybGF5LWZvcm0tYm9yZGVyLXJhZGl1czogLjI1cmVtICFkZWZhdWx0O1xuXG4vLy0tLS0gV29vQ29tbWVyY2UgUmV2aWV3IGZvcm1cbiR3b29jb21tZXJjZS1yZXZpZXctZm9ybS1zdGFycy1mb250c2l6ZTogMnJlbSAhZGVmYXVsdDtcblxuLy8tLS0tLS0gR3V0ZW5iZXJnIGJsb2Nrc1xuLy8tLS0tLSBSYW5rIE1hdGhcbi8vLS0tLSBGQVFcbiRyYW5rLW1hdGgtZmFxLXVzZS1sZWdhY3ktc3R5bGVzOiB0cnVlICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtYmctY29sb3I6ICR3aGl0ZSAhZGVmYXVsdDtcbiRyYW5rLW1hdGgtZmFxLWJveC1zaGFkb3c6IDAgLjVyZW0gLjVyZW0gLS4yNXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtYm9yZGVyLXJhZGl1czogbWFwLWdldCgkc3BhY2VycywgMSkgIWRlZmF1bHQ7XG4kcmFuay1tYXRoLWZhcS1ib3JkZXItY29sb3I6ICRncmF5LTIwMCAhZGVmYXVsdDtcbiRyYW5rLW1hdGgtZmFxLWJvcmRlcjogMXB4IHNvbGlkICRyYW5rLW1hdGgtZmFxLWJvcmRlci1jb2xvciAhZGVmYXVsdDtcbiRyYW5rLW1hdGgtZmFxLWl0ZW0tcGFkZGluZzogbWFwLWdldCgkc3BhY2VycywgMykgIWRlZmF1bHQ7XG4kcmFuay1tYXRoLWZhcS1xdWVzdGlvbi1mb250LXNpemU6IDEuMjVyZW0gIWRlZmF1bHQ7XG4kcmFuay1tYXRoLWZhcS1xdWVzdGlvbi1nYXA6IG1hcC1nZXQoJHNwYWNlcnMsIDIpICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtcXVlc3Rpb24tcGFkZGluZy1ib3R0b206ICRyYW5rLW1hdGgtZmFxLXF1ZXN0aW9uLWdhcCAhZGVmYXVsdDtcbiRyYW5rLW1hdGgtZmFxLXF1ZXN0aW9uLWJvcmRlci1jb2xvcjogJHJhbmstbWF0aC1mYXEtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtcXVlc3Rpb24tYm9yZGVyLWJvdHRvbTogJHJhbmstbWF0aC1mYXEtYm9yZGVyICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtcXVlc3Rpb24taWNvbjogJGZhLXZhci1xdWVzdGlvbi1jaXJjbGUgIWRlZmF1bHQ7XG4kcmFuay1tYXRoLWZhcS1xdWVzdGlvbi1pY29uLWNvbG9yOiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xuJHJhbmstbWF0aC1mYXEtcXVlc3Rpb24taWNvbi1mb250LXNpemU6IDFyZW0gIWRlZmF1bHQ7XG4kcmFuay1tYXRoLWZhcS1xdWVzdGlvbi1pY29uLW9mZnNldC10b3A6IC4ycmVtICFkZWZhdWx0O1xuXG4vLy0tLS0gSW1hZ2VcbiRndXRlbmJlcmctaW1hZ2UtcmF0aW9zOiAoXCIxXCIsIFwiNC8zXCIsIFwiMy80XCIsIFwiMy8yXCIsIFwiMi8zXCIsIFwiMTYvOVwiLCBcIjkvMTZcIikgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIEZvbnRzIG9wdGltaXphdGlvblxuLy8tLS0tLSBGb250QXdlc29tZSBpY29uc1xuJGZvbnQtZmEtcHJvOiBcIkZvbnQgQXdlc29tZSA2IFByb1wiO1xuJGZvbnQtZmEtYnJhbmRzOiBcIkZvbnQgQXdlc29tZSA2IEJyYW5kc1wiO1xuLy8gc2VlIC4uL3ZlbmRvcnMvX2ZvbnRhd2Vzb21lLnNjc3MgZm9yIGljb25zIHByb2Nlc3Npbmdcbi8vIHNlZSAuLi92ZW5kb3JzL19mb250YXdlc29tZS1pY29ucy5zY3NzIGZvciBhdmFpbGFibGUgaWNvbnMgJiBpY29ucyBncm91cHNcbi8vICRjdXN0b20tdXNlZC1mYS1pY29uczogKGZvbnQtYXdlc29tZS1mbGFnOiAkZmEtdmFyLWZvbnQtYXdlc29tZS1mbGFnLCBwbHVzOiAkZmEtdmFyLXBsdXMpO1xuJGN1c3RvbS11c2VkLWZhLWljb25zOiAoKSAhZGVmYXVsdDtcbi8vICR1c2VkLWZhLWljb25zLWdyb3VwczogKGFjY29tbW9kYXRpb25zLCB3b29jb21tZXJjZSk7XG4kdXNlZC1mYS1pY29ucy1ncm91cHM6ICgpICFkZWZhdWx0O1xuXG4vLy0tLS0tIEljb25zIGxpc3RcbiRhbHBoYS1mYS1pY29ucy1saXN0OiAoKSAhZGVmYXVsdDtcbiRhbHBoYS1mYS1pY29ucy1saXN0LWNvbG9yOiB2YXIoLS1icy1wcmltYXJ5KSAhZGVmYXVsdDtcbiRhbHBoYS1mYS1pY29ucy1saXN0LXN0eWxlOiBzb2xpZCAhZGVmYXVsdDtcbiRhbHBoYS1mYS1pY29ucy1saXN0LWNvbG9yczogKCkgIWRlZmF1bHQ7XG5cbi8vLS0tLS0tIFNsaWNrXG4kc2xpY2stZm9udC1wYXRoOiBcIn5zbGljay1jYXJvdXNlbC9zbGljay9mb250cy9cIjtcbiRzbGljay1mb250LWZhbWlseTogJGZvbnQtZmEtcHJvO1xuXG4vLy0tLS0tLSBDRjcgRWZmZWN0XG4kY29sb3ItZm9ybS10ZXh0OiB2YXIoLS1icy1ib2R5LWNvbG9yKSAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLWZpbGxlZDogdmFyKC0tYnMtcHJpbWFyeSkgIWRlZmF1bHQ7XG4kY29sb3ItZm9ybS1maWVsZC1ib3JkZXI6IHZhcigtLWJzLWJvcmRlci1jb2xvcikgIWRlZmF1bHQ7XG4kZm9ybS1maWVsZC1ib3JkZXItcmFkaXVzOiB2YXIoLS1icy1ib3JkZXItcmFkaXVzKSAhZGVmYXVsdDtcbiRmb3JtLWZpZWxkLW1hcmdpbi1ib3R0b206IDJyZW0gIWRlZmF1bHQ7XG4kZm9ybS1ndXR0ZXI6IC43NXJlbSAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLWd1dHRlci1sZWZ0OiAxLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6ICRpbnB1dC1mb250LXNpemUgIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1mb250LXNpemUtZmlsbGVkOiAuN3JlbSAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0OiAkaW5wdXQtbGluZS1oZWlnaHQgIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1uby1hbmltLW1hcmdpbi10b3A6IC41cmVtICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtbm8tYW5pbS10cmFuc2xhdGU6IC0uMjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1lcnJvci1mb250LXNpemU6IC45cmVtICFkZWZhdWx0O1xuXG4vLy0tLS0tLSBCb290c3RyYXAgUmVzcG9uc2l2ZSBJbWFnZSBSYXRpb1xuLy8gbXVzdCBiZSBhIGxpc3Qgb2YgcmF0aW9zIGZvcm1hdHRlZCBsaWtlIHRoaXM6ICgxIDEpLCAoNCAzKSwgKDMgMiksICgxNiA5KSwgKDIxIDkpXG4kbWVkaWEtcmF0aW9zOiAoKSAhZGVmYXVsdDtcbiIsIi8vIGZ1bmN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gZmEtY29udGVudDogY29udmVuaWVuY2UgZnVuY3Rpb24gdXNlZCB0byBzZXQgY29udGVudCBwcm9wZXJ0eVxuQGZ1bmN0aW9uIGZhLWNvbnRlbnQoJGZhLXZhcikge1xuICBAcmV0dXJuIHVucXVvdGUoXCJcXFwiI3sgJGZhLXZhciB9XFxcIlwiKTtcbn1cblxuLy8gZmEtZGl2aWRlOiBPcmlnaW5hbGx5IG9idGFpbmVkIGZyb20gdGhlIEJvb3RzdHJhcCBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXBcbi8vXG4vLyBMaWNlbnNlZCB1bmRlcjogVGhlIE1JVCBMaWNlbnNlIChNSVQpXG4vL1xuLy8gQ29weXJpZ2h0IChjKSAyMDExLTIwMjEgVHdpdHRlciwgSW5jLlxuLy8gQ29weXJpZ2h0IChjKSAyMDExLTIwMjEgVGhlIEJvb3RzdHJhcCBBdXRob3JzXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuQGZ1bmN0aW9uIGZhLWRpdmlkZSgkZGl2aWRlbmQsICRkaXZpc29yLCAkcHJlY2lzaW9uOiAxMCkge1xuICAkc2lnbjogaWYoJGRpdmlkZW5kID4gMCBhbmQgJGRpdmlzb3IgPiAwLCAxLCAtMSk7XG4gICRkaXZpZGVuZDogYWJzKCRkaXZpZGVuZCk7XG4gICRkaXZpc29yOiBhYnMoJGRpdmlzb3IpO1xuICAkcXVvdGllbnQ6IDA7XG4gICRyZW1haW5kZXI6ICRkaXZpZGVuZDtcbiAgQGlmICRkaXZpZGVuZCA9PSAwIHtcbiAgICBAcmV0dXJuIDA7XG4gIH1cbiAgQGlmICRkaXZpc29yID09IDAge1xuICAgIEBlcnJvciBcIkNhbm5vdCBkaXZpZGUgYnkgMFwiO1xuICB9XG4gIEBpZiAkZGl2aXNvciA9PSAxIHtcbiAgICBAcmV0dXJuICRkaXZpZGVuZDtcbiAgfVxuICBAd2hpbGUgJHJlbWFpbmRlciA+PSAkZGl2aXNvciB7XG4gICAgJHF1b3RpZW50OiAkcXVvdGllbnQgKyAxO1xuICAgICRyZW1haW5kZXI6ICRyZW1haW5kZXIgLSAkZGl2aXNvcjtcbiAgfVxuICBAaWYgJHJlbWFpbmRlciA+IDAgYW5kICRwcmVjaXNpb24gPiAwIHtcbiAgICAkcmVtYWluZGVyOiBmYS1kaXZpZGUoJHJlbWFpbmRlciAqIDEwLCAkZGl2aXNvciwgJHByZWNpc2lvbiAtIDEpICogLjE7XG4gIH1cbiAgQHJldHVybiAoJHF1b3RpZW50ICsgJHJlbWFpbmRlcikgKiAkc2lnbjtcbn1cbiIsIkBrZXlmcmFtZXMgZm9ybS1sYWJlbC1maWxsZWQge1xuICAwJSB7XG4gICAgbGVmdDogJGZvcm0tbGFiZWwtZ3V0dGVyLWxlZnQ7XG4gICAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG4gIDI1JSB7XG4gICAgbGVmdDogJGZvcm0tbGFiZWwtZ3V0dGVyLWxlZnQ7XG4gICAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVZKDkwZGVnKSB0cmFuc2xhdGVZKDApO1xuICB9XG4gIDc1JSB7XG4gICAgbGVmdDogJGZvcm0tbGFiZWwtZ3V0dGVyLWxlZnQtZmlsbGVkO1xuICAgIGZvbnQtc2l6ZTogJGZvcm0tbGFiZWwtZm9udC1zaXplLWZpbGxlZDtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZm9ybS1maWVsZC1iYWNrZ3JvdW5kO1xuICAgIHRyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWSgkZm9ybS1sYWJlbC10cmFuc2xhdGUpO1xuICB9XG4gIDEwMCUge1xuICAgIGxlZnQ6ICRmb3JtLWxhYmVsLWd1dHRlci1sZWZ0LWZpbGxlZDtcbiAgICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZS1maWxsZWQ7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWZvcm0tZmllbGQtYmFja2dyb3VuZDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMCkgdHJhbnNsYXRlWSgkZm9ybS1sYWJlbC10cmFuc2xhdGUpO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZm9ybS1sYWJlbCB7XG4gIDAlIHtcbiAgICBsZWZ0OiAkZm9ybS1sYWJlbC1ndXR0ZXItbGVmdC1maWxsZWQ7XG4gICAgZm9udC1zaXplOiAkZm9ybS1sYWJlbC1mb250LXNpemUtZmlsbGVkO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1mb3JtLWZpZWxkLWJhY2tncm91bmQ7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVZKDApIHRyYW5zbGF0ZVkoJGZvcm0tbGFiZWwtdHJhbnNsYXRlKTtcbiAgfVxuICAyNSUge1xuICAgIGxlZnQ6ICRmb3JtLWxhYmVsLWd1dHRlci1sZWZ0LWZpbGxlZDtcbiAgICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZS1maWxsZWQ7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWZvcm0tZmllbGQtYmFja2dyb3VuZDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoOTBkZWcpIHRyYW5zbGF0ZVkoJGZvcm0tbGFiZWwtdHJhbnNsYXRlKTtcbiAgfVxuICA3NSUge1xuICAgIGxlZnQ6ICRmb3JtLWxhYmVsLWd1dHRlci1sZWZ0O1xuICAgIGZvbnQtc2l6ZTogJGZvcm0tbGFiZWwtZm9udC1zaXplO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHRyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWSgwKTtcbiAgfVxuICAxMDAlIHtcbiAgICBsZWZ0OiAkZm9ybS1sYWJlbC1ndXR0ZXItbGVmdDtcbiAgICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbiIsIi8vLS0tLS0tLS0tLS0tIEJvb3RzdHJhcFxuQGltcG9ydCBcIn5ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnNcIjtcblxuLy8vIFJlbW92ZSB0aGUgdW5pdCBvZiBhIGxlbmd0aFxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtYmVyIC0gTnVtYmVyIHRvIHJlbW92ZSB1bml0IGZyb21cbi8vLyBAcmV0dXJuIHtOdW1iZXJ9IC0gVW5pdGxlc3MgbnVtYmVyXG5AZnVuY3Rpb24gc3RyaXAtdW5pdCgkbnVtYmVyKSB7XG4gIEBpZiB0eXBlLW9mKCRudW1iZXIpID09IFwibnVtYmVyXCIgYW5kIG5vdCB1bml0bGVzcygkbnVtYmVyKSB7XG4gICAgQHJldHVybiAkbnVtYmVyIC8gKCRudW1iZXIgKiAwICsgMSk7XG4gIH1cblxuICBAcmV0dXJuICRudW1iZXI7XG59XG5cbkBmdW5jdGlvbiBweDJyZW0oJHB4LCAkZm9udC1iYXNlLXJlbTogJGZvbnQtc2l6ZS1iYXNlLCAkZm9udC1iYXNlLXB4OiAxNikge1xuICAkZm9udC1iYXNlLXNpemU6IHN0cmlwLXVuaXQoJGZvbnQtYmFzZS1weCkgKiBzdHJpcC11bml0KCRmb250LWJhc2UtcmVtKTtcblxuICBAcmV0dXJuIChzdHJpcC11bml0KCRweCkgLyAkZm9udC1iYXNlLXNpemUpICogMXJlbTtcbn1cblxuLy8gQWRkIGEgbmV3IHV0aWxpdHkgdG8gQm9vdHN0cmFwIHV0aWxpdGllc1xuQGZ1bmN0aW9uIGJvb3RzdHJhcC1hZGQtdXRpbGl0eSgkYnMtdXRpbGl0aWVzLCAkdXRpbGl0eS1rZXksICRwcm9wZXJ0aWVzKSB7XG4gICRicy11dGlsaXRpZXM6IG1hcC1tZXJnZShcbiAgICAkYnMtdXRpbGl0aWVzLFxuICAgIChcbiAgICAgICR1dGlsaXR5LWtleTogJHByb3BlcnRpZXNcbiAgICApXG4gICk7XG5cbiAgQHJldHVybiAkYnMtdXRpbGl0aWVzO1xufVxuXG4vLyBSZW1vdmUgYW4gdXRpbGl0eSBmcm9tIEJvb3RzdHJhcCB1dGlsaXRpZXNcbkBmdW5jdGlvbiBib290c3RyYXAtcmVtb3ZlLXV0aWxpdHkoJGJzLXV0aWxpdGllcywgJHV0aWxpdHkta2V5KSB7XG4gICRicy11dGlsaXRpZXM6IG1hcC1yZW1vdmUoJGJzLXV0aWxpdGllcywgJHV0aWxpdHkta2V5KTtcblxuICBAcmV0dXJuICRicy11dGlsaXRpZXM7XG59XG5cbi8vIE1lcmdlIHV0aWxpdHkgcHJvcGVydGllcyB3aXRoIGFuIGV4aXN0aW5nIG9uZVxuQGZ1bmN0aW9uIGJvb3RzdHJhcC1tZXJnZS11dGlsaXRpZXMoJGJzLXV0aWxpdGllcywgJHV0aWxpdHkta2V5LCAkcHJvcGVydGllcykge1xuICAkYnMtdXRpbGl0aWVzOiBtYXAtbWVyZ2UoXG4gICAgJGJzLXV0aWxpdGllcyxcbiAgICAoXG4gICAgICAkdXRpbGl0eS1rZXk6IG1hcC1tZXJnZShcbiAgICAgICAgbWFwLWdldCgkYnMtdXRpbGl0aWVzLCAkdXRpbGl0eS1rZXkpLFxuICAgICAgICAkcHJvcGVydGllc1xuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBAcmV0dXJuICRicy11dGlsaXRpZXM7XG59XG5cbi8vLS0tLS0tLS0tLS0tIEFscGhhXG5AZnVuY3Rpb24gaGV4LXRvLXJnYigkY29sb3IpIHtcbiAgQHJldHVybiAje3JlZCgkY29sb3IpfSwgI3tncmVlbigkY29sb3IpfSwgI3tibHVlKCRjb2xvcil9O1xufVxuXG5AZnVuY3Rpb24gZW5jb2RlY29sb3IoJHN0cmluZykge1xuICBAaWYgdHlwZS1vZigkc3RyaW5nKSA9PSBcImNvbG9yXCIgYW5kIHN0ci1pbmRleCgjeyRzdHJpbmd9LCBcIiNcIikgPT0gMSB7XG4gICAgJGhleDogc3RyLXNsaWNlKGllLWhleC1zdHIoJHN0cmluZyksIDQpO1xuICAgICRzdHJpbmc6IHVucXVvdGUoXCIjeyRoZXh9XCIpO1xuXG4gICAgQHJldHVybiBcIiUyM1wiICsgJHN0cmluZztcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuQGZ1bmN0aW9uIHN0ci1zcGxpdCgkc3RyaW5nLCAkc2VwYXJhdG9yKSB7XG4gIC8vIGVtcHR5IGFycmF5L2xpc3RcbiAgJHNwbGl0LWFycjogKCk7XG4gIC8vIGZpcnN0IGluZGV4IG9mIHNlcGFyYXRvciBpbiBzdHJpbmdcbiAgJGluZGV4OiBzdHItaW5kZXgoJHN0cmluZywgJHNlcGFyYXRvcik7XG4gIC8vIGxvb3AgdGhyb3VnaCBzdHJpbmdcbiAgQHdoaWxlICRpbmRleCAhPSBudWxsIHtcbiAgICAvLyBnZXQgdGhlIHN1YnN0cmluZyBmcm9tIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gdGhlIHNlcGFyYXRvclxuICAgICRpdGVtOiBzdHItc2xpY2UoJHN0cmluZywgMSwgJGluZGV4IC0gMSk7XG4gICAgLy8gcHVzaCBpdGVtIHRvIGFycmF5XG4gICAgJHNwbGl0LWFycjogYXBwZW5kKCRzcGxpdC1hcnIsICRpdGVtKTtcbiAgICAvLyByZW1vdmUgaXRlbSBhbmQgc2VwYXJhdG9yIGZyb20gc3RyaW5nXG4gICAgJHN0cmluZzogc3RyLXNsaWNlKCRzdHJpbmcsICRpbmRleCArIDEpO1xuICAgIC8vIGZpbmQgbmV3IGluZGV4IG9mIHNlcGFyYXRvclxuICAgICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZXBhcmF0b3IpO1xuICB9XG4gIC8vIGFkZCB0aGUgcmVtYWluaW5nIHN0cmluZyB0byBsaXN0ICh0aGUgbGFzdCBpdGVtKVxuICAkc3BsaXQtYXJyOiBhcHBlbmQoJHNwbGl0LWFyciwgJHN0cmluZyk7XG5cbiAgQHJldHVybiAkc3BsaXQtYXJyO1xufVxuXG5AZnVuY3Rpb24gdG8tbnVtYmVyKCR2YWx1ZSkge1xuICBAaWYgdHlwZS1vZigkdmFsdWUpID09IFwibnVtYmVyXCIge1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHZhbHVlKSAhPSBcInN0cmluZ1wiIHtcbiAgICBAZXJyb3IgXCJWYWx1ZSBmb3IgYHRvLW51bWJlcmAgc2hvdWxkIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlwiO1xuICB9XG5cbiAgJHJlc3VsdDogMDtcbiAgJGRpZ2l0czogMDtcbiAgJG1pbnVzOiBzdHItc2xpY2UoJHZhbHVlLCAxLCAxKSA9PSBcIi1cIjtcbiAgJG51bWJlcnM6IChcIjBcIjogMCwgXCIxXCI6IDEsIFwiMlwiOiAyLCBcIjNcIjogMywgXCI0XCI6IDQsIFwiNVwiOiA1LCBcIjZcIjogNiwgXCI3XCI6IDcsIFwiOFwiOiA4LCBcIjlcIjogOSk7XG5cbiAgQGZvciAkaSBmcm9tIGlmKCRtaW51cywgMiwgMSkgdGhyb3VnaCBzdHItbGVuZ3RoKCR2YWx1ZSkge1xuICAgICRjaGFyYWN0ZXI6IHN0ci1zbGljZSgkdmFsdWUsICRpLCAkaSk7XG5cbiAgICBAaWYgKGluZGV4KG1hcC1rZXlzKCRudW1iZXJzKSwgJGNoYXJhY3Rlcikgb3IgJGNoYXJhY3RlciA9PSBcIi5cIikge1xuICAgICAgQGlmICRjaGFyYWN0ZXIgPT0gXCIuXCIge1xuICAgICAgICAkZGlnaXRzOiAxO1xuICAgICAgfSBAZWxzZSBpZiAkZGlnaXRzID09IDAge1xuICAgICAgICAkcmVzdWx0OiAkcmVzdWx0ICogMTAgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZGlnaXRzOiAkZGlnaXRzICogMTA7XG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKyBtYXAtZ2V0KCRudW1iZXJzLCAkY2hhcmFjdGVyKSAvICRkaWdpdHM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBpZigkbWludXMsIC0kcmVzdWx0LCAkcmVzdWx0KTtcbn1cblxuQGZ1bmN0aW9uIHRvLXVuaXQoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgIT0gXCJzdHJpbmdcIiB7XG4gICAgQGVycm9yIFwiVmFsdWUgZm9yIGB0by11bml0YCBzaG91bGQgYmUgYSBzdHJpbmcuXCI7XG4gIH1cblxuICAkdW5pdHM6IChcInB4XCI6IDFweCwgXCJjbVwiOiAxY20sIFwibW1cIjogMW1tLCBcIiVcIjogMSUsIFwiY2hcIjogMWNoLCBcInBjXCI6IDFwYywgXCJpblwiOiAxaW4sIFwiZW1cIjogMWVtLCBcInJlbVwiOiAxcmVtLCBcInB0XCI6IDFwdCwgXCJleFwiOiAxZXgsIFwidndcIjogMXZ3LCBcInZoXCI6IDF2aCwgXCJ2bWluXCI6IDF2bWluLCBcInZtYXhcIjogMXZtYXgpO1xuICAkcGFyc2VkLXVuaXQ6IGZhbHNlO1xuXG4gIEBlYWNoICR1bml0IGluICR1bml0cyB7XG4gICAgLy8gc3RyLWluZGV4IC0gZmluZCBzdWJzdHJpbmcgaW4gYSBzdHJpbmdcbiAgICAvLyAncHgnIGluICcxMHB4JyBmb3IgZXhhbXBsZVxuXG4gICAgLy8gJHVuaXQgaXMgYSBwYWlyIG9mIFsncHgnOiAxcHhdIChpdGVtIGluICR1bml0cylcbiAgICAvLyBudGgoWydweCc6IDFweF0sIDEpIHJldHVybnMgJ3B4J1xuICAgIC8vIG50aChbJ3B4JzogMXB4XSwgMikgcmV0dXJucyAxcHhcblxuICAgIEBpZiAoc3RyLWluZGV4KCR2YWx1ZSwgbnRoKCR1bml0LCAxKSkpIHtcbiAgICAgICRwYXJzZWQtdW5pdDogbnRoKCR1bml0LCAyKTtcbiAgICB9XG4gIH1cblxuICBAaWYgKG5vdCAkcGFyc2VkLXVuaXQpIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIHVuaXQgYCN7JHZhbHVlfWAuXCI7XG4gIH1cblxuICBAcmV0dXJuICRwYXJzZWQtdW5pdDtcbn1cblxuQGZ1bmN0aW9uIHZhbHVlLXRvLW51bWJlcigkdmFsdWUpIHtcbiAgJHR5cGUtb2Y6IHR5cGUtb2YoJHZhbHVlKTtcblxuICBAaWYgJHR5cGUtb2YgPT0gXCJtYXBcIiB7XG4gICAgJHJlc3VsdDogKCk7XG4gICAgQGVhY2ggJG1hcC1rZXksICRtYXAtdmFsdWUgaW4gJHZhbHVlIHtcbiAgICAgICRudW1iZXItdmFsdWU6IHZhbHVlLXRvLW51bWJlcigkbWFwLXZhbHVlKTtcbiAgICAgICRyZXN1bHQ6IG1hcC1tZXJnZSgkcmVzdWx0LCAoJG1hcC1rZXk6ICRudW1iZXItdmFsdWUpKTtcbiAgICB9XG5cbiAgICAkdmFsdWU6ICRyZXN1bHQ7XG4gIH0gQGVsc2UgaWYgJHR5cGUtb2YgPT0gXCJsaXN0XCIge1xuICAgICRyZXN1bHQ6ICgpO1xuICAgIEBlYWNoICRsaXN0LXZhbHVlIGluICR2YWx1ZSB7XG4gICAgICAkbnVtYmVyLXZhbHVlOiB2YWx1ZS10by1udW1iZXIoJGxpc3QtdmFsdWUpO1xuICAgICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRudW1iZXItdmFsdWUpO1xuICAgIH1cblxuICAgICR2YWx1ZTogJHJlc3VsdDtcbiAgfSBAZWxzZSBpZiAkdHlwZS1vZiA9PSBcInN0cmluZ1wiIHtcbiAgICAkbnVtYmVyOiB0by1udW1iZXIoJHZhbHVlKTtcbiAgICAkdW5pdDogdG8tdW5pdCgkdmFsdWUpO1xuICAgICR2YWx1ZTogJG51bWJlciAqICR1bml0O1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbkBmdW5jdGlvbiBtYXAtZ2V0LWRlZXAoJGNvbmZpZywgJHBhdGgsICR0by1udW1iZXI6IGZhbHNlLCAkZGVmYXVsdC12YWx1ZTogbnVsbCkge1xuICAkc3BsaXQ6IHN0ci1zcGxpdCgkcGF0aCwgXCIuXCIpO1xuXG4gIEBpZiB0eXBlLW9mKCRjb25maWcpID09IFwibWFwXCIgYW5kIGxlbmd0aCgkcGF0aCkgPiAwIHtcbiAgICAkbGFzdC1rZXk6IGxlbmd0aCgkc3BsaXQpO1xuICAgICRjdXJyZW50LWNvbmZpZzogJGNvbmZpZztcblxuICAgIEBlYWNoICRjb25maWcta2V5IGluICRzcGxpdCB7XG4gICAgICBAaWYgKHR5cGUtb2YoJGN1cnJlbnQtY29uZmlnKSA9PSBcIm1hcFwiIGFuZCBtYXAtaGFzLWtleSgkY3VycmVudC1jb25maWcsICRjb25maWcta2V5KSkge1xuICAgICAgICAkaTogaW5kZXgoJHNwbGl0LCAkY29uZmlnLWtleSk7XG4gICAgICAgICRjdXJyZW50LWNvbmZpZzogbWFwLWdldCgkY3VycmVudC1jb25maWcsICRjb25maWcta2V5KTtcblxuICAgICAgICBAaWYgJGkgPT0gJGxhc3Qta2V5IHtcbiAgICAgICAgICAkcmV0dXJuLXZhbHVlOiAkY3VycmVudC1jb25maWc7XG5cbiAgICAgICAgICBAaWYgJHRvLW51bWJlciB7XG4gICAgICAgICAgICAkcmV0dXJuLXZhbHVlOiB2YWx1ZS10by1udW1iZXIoJHJldHVybi12YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQHJldHVybiAkcmV0dXJuLXZhbHVlO1xuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQHJldHVybiAkZGVmYXVsdC12YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRkZWZhdWx0LXZhbHVlO1xufVxuXG4vLyBAc2VlIGh0dHBzOi8vd3d3LnNhc3NtZWlzdGVyLmNvbS9naXN0Lzc1MjVmMDU0NjQ3OWFjZDFkNmUxXG5AZnVuY3Rpb24gbWFwLWV4dGVuZCgkb2JqZWN0LCAkb2JqZWN0cy4uLi8qLCAkZGVlcCAqLykge1xuICAkbGFzdDogbnRoKCRvYmplY3RzLCAtMSk7XG4gICRkZWVwOiAkbGFzdCA9PSB0cnVlO1xuICAkbWF4OiBpZigkZGVlcCwgbGVuZ3RoKCRvYmplY3RzKSAtIDEsIGxlbmd0aCgkb2JqZWN0cykpO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBhbGwgbWFwcyBpbiAkb2JqZWN0cy4uLlxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRtYXgge1xuICAgIC8vIFN0b3JlIGN1cnJlbnQgbWFwXG4gICAgJGN1cnJlbnQ6IG50aCgkb2JqZWN0cywgJGkpO1xuXG4gICAgLy8gSWYgbm90IGluIGRlZXAgbW9kZSwgc2ltcGx5IG1lcmdlIGN1cnJlbnQgbWFwIHdpdGggb2JqZWN0XG4gICAgQGlmIG5vdCAkZGVlcCB7XG4gICAgICAkb2JqZWN0OiBtYXAtbWVyZ2UoJG9iamVjdCwgJGN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIElmIGluIGRlZXAgbW9kZVxuICAgIEBlbHNlIHtcbiAgICAgIC8vIExvb3AgdGhyb3VnaCBhbGwgdHVwbGVzIGluIGN1cnJlbnQgbWFwXG4gICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGN1cnJlbnQge1xuICAgICAgICAvLyBJZiB2YWx1ZSBpcyBhIG5lc3RlZCBtYXAgYW5kIHNhbWUga2V5IGZyb20gb2JqZWN0IGlzIGEgbmVzdGVkIG1hcCBhcyB3ZWxsXG4gICAgICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gXCJtYXBcIiBhbmQgdHlwZS1vZihtYXAtZ2V0KCRvYmplY3QsICRrZXkpKSA9PSBcIm1hcFwiIHtcbiAgICAgICAgICAvLyBSZWN1cnNpdmUgZXh0ZW5kXG4gICAgICAgICAgJHZhbHVlOiBtYXAtZXh0ZW5kKG1hcC1nZXQoJG9iamVjdCwgJGtleSksICR2YWx1ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTWVyZ2UgY3VycmVudCB0dXBsZSB3aXRoIG9iamVjdFxuICAgICAgICAkb2JqZWN0OiBtYXAtbWVyZ2UoJG9iamVjdCwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG9iamVjdDtcbn1cblxuQGZ1bmN0aW9uIGhhcy1tZW51LXR5cGUoJG1lbnVzLWxpc3QsICRtZW51KSB7XG4gIEByZXR1cm4gaW5kZXgoJG1lbnVzLWxpc3QsICRtZW51KSAhPSBudWxsO1xufVxuXG5AZnVuY3Rpb24gaGFzLW9mZmNhbnZhcygkbWVudXMtbGlzdCkge1xuICBAcmV0dXJuIGhhcy1tZW51LXR5cGUoJG1lbnVzLWxpc3QsIFwib2ZmY2FudmFzXCIpIG9yIGhhcy1tZW51LXR5cGUoJG1lbnVzLWxpc3QsIFwib2ZmY2FudmFzLXNpbXBsZVwiKTtcbn1cblxuQGZ1bmN0aW9uIGxpc3QtdW5pcXVlKCRsaXN0KSB7XG4gICRyZXN1bHQ6ICgpO1xuXG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgbm90IGluZGV4KCRyZXN1bHQsICRpdGVtKSB7XG4gICAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cbiIsIiRmb3JtLWRlZmF1bHQtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuJGZvcm0tZ3V0dGVyOiAuNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWlucHV0LXRleHQtaGVpZ2h0OiAyLjVyZW0gIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1saW5lLWhlaWdodDogMXJlbTtcbiRmb3JtLWxhYmVsLWd1dHRlci10b3A6IGNhbGMoKCN7JGZvcm0taW5wdXQtdGV4dC1oZWlnaHR9IC0gI3skZm9ybS1sYWJlbC1saW5lLWhlaWdodH0pIC8gMikgICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtZ3V0dGVyLWxlZnQ6ICRmb3JtLWd1dHRlciAqIDIgICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtZ3V0dGVyLWxlZnQtZmlsbGVkOiAkZm9ybS1sYWJlbC1ndXR0ZXItbGVmdCAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLXRyYW5zbGF0ZTogLTEuMnJlbSAhZGVmYXVsdDtcbiRmb3JtLWxhYmVsLW5vLWFuaW0tdHJhbnNsYXRlOiAkZm9ybS1sYWJlbC10cmFuc2xhdGUgIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1uby1hbmltLW1hcmdpbi10b3A6IDFyZW0gIWRlZmF1bHQ7XG4kZm9ybS1sYWJlbC1mb250LXNpemU6IC45cmVtICFkZWZhdWx0O1xuJGZvcm0tbGFiZWwtZm9udC1zaXplLWZpbGxlZDogLjdyZW0gIWRlZmF1bHQ7XG4kZm9ybS1lcnJvci1mb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZSAhZGVmYXVsdDtcbiRmb3JtLWZpZWxkLWJvcmRlci1yYWRpdXM6IC4yNXJlbSAhZGVmYXVsdDtcbiRmb3JtLWZpZWxkLW1hcmdpbi10b3A6IDFyZW0gIWRlZmF1bHQ7XG4kZm9ybS1maWVsZC1tYXJnaW4tdG9wLXRhYmxldDogJGZvcm0tZmllbGQtbWFyZ2luLXRvcCAqIDIgIWRlZmF1bHQ7XG4kZm9ybS1maWVsZC1tYXJnaW4tYm90dG9tOiAxLjVyZW0gIWRlZmF1bHQ7XG5cbiRmb3JtLWZpZWxkLWlucHV0LWJhY2tncm91bmQ6ICNmZmYgIWRlZmF1bHQ7XG4kY29sb3ItZm9ybS10ZXh0OiAjNGI1MDU1ICFkZWZhdWx0O1xuJGNvbG9yLWZvcm0tdGV4dC1zdHlsZS1kYXJrOiAgI2ZmZiAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLWZpbGxlZDogI2FhMTYzNiAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLXN1Ym1pdDogJGNvbG9yLWZvcm0tZmlsbGVkICFkZWZhdWx0O1xuJGNvbG9yLWNoZWNrYm94LWNoZWNrZWQ6ICRjb2xvci1mb3JtLWZpbGxlZCAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLW1haWwtc2VudDogIzg3ZDM3YyAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLWVycm9yczogcmVkICFkZWZhdWx0O1xuJGNvbG9yLWZvcm0tZmllbGQtYmFja2dyb3VuZDogI2ZmZiAhZGVmYXVsdDtcbiRjb2xvci1mb3JtLWZpZWxkLWJvcmRlcjogJGNvbG9yLWZvcm0tdGV4dCAhZGVmYXVsdDtcblxuJGZpZWxkLWRlc2Mtc2l6ZTogLjhyZW0gIWRlZmF1bHQ7XG4kZmllbGQtZGVzYy1jb2xvcjogIzY5Njk2OSAhZGVmYXVsdDtcbiRmaWVsZC1kZXNjLXN0eWxlOiBpdGFsaWMgIWRlZmF1bHQ7XG4iLCJpbnB1dCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgJjotd2Via2l0LWF1dG9maWxsIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAxMDBweCAkY29sb3ItZm9ybS1maWVsZC1iYWNrZ3JvdW5kIGluc2V0O1xuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAkY29sb3ItZm9ybS10ZXh0O1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiAkY29sb3ItZm9ybS10ZXh0O1xuICAgICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG4uZ3JlY2FwdGNoYS1iYWRnZSB7XG4gIHZpc2liaWxpdHk6IGNvbGxhcHNlO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgLy8gZGlzcGxheSBmb3JtIHJlc3BvbnNlIG91dHB1dCBhYm92ZSBzdWJtaXQgYnV0dG9uICYgbGVnYWwgbm90aWNlIG9uIG1vYmlsZSAmIHRhYmxldFxuICAuZm9ybS1maWVsZC1zdWJtaXQge1xuICAgIG9yZGVyOiAxO1xuICB9XG5cbiAgLmZvcm0tbGVnYWwtbm90aWNlLFxuICAuZm9ybS1maWVsZC1yZ3BkIHtcbiAgICBvcmRlcjogMjtcbiAgfVxufVxuXG4ud3BjZjcge1xuICBmb250LXNpemU6ICRmb3JtLWRlZmF1bHQtZm9udC1zaXplO1xuXG4gIC53cGNmNy1mb3JtIHtcbiAgICBjb2xvcjogJGNvbG9yLWZvcm0tdGV4dDtcbiAgICBtYXJnaW4tdG9wOiAkZm9ybS1maWVsZC1tYXJnaW4tdG9wO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgbWFyZ2luLXRvcDogJGZvcm0tZmllbGQtbWFyZ2luLXRvcC10YWJsZXQ7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luLWJvdHRvbTogJGZvcm0tZmllbGQtbWFyZ2luLWJvdHRvbTtcbiAgICAgIHRyYW5zaXRpb246IGFsbCBlYXNlIC41cztcblxuICAgICAgcDpub3QoW2NsYXNzXSkge1xuICAgICAgICBkaXNwbGF5OiBjb250ZW50cztcbiAgICAgIH1cblxuICAgICAgaW5wdXQge1xuICAgICAgICAmOm5vdChbdHlwZT1cInN1Ym1pdFwiXSk6bm90KFt0eXBlPVwiZmlsZVwiXSk6bm90KFt0eXBlPVwiY2hlY2tib3hcIl0pIHtcbiAgICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWd1dHRlcjtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLWZvcm0tZmllbGQtYm9yZGVyO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWZpZWxkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UgLjRzO1xuICAgICAgICAgIGJhY2tncm91bmQ6ICRmb3JtLWZpZWxkLWlucHV0LWJhY2tncm91bmQ7XG5cbiAgICAgICAgICAmLndwY2Y3LXRleHQsICYud3BjZjctbnVtYmVyIHtcbiAgICAgICAgICAgIGhlaWdodDogJGZvcm0taW5wdXQtdGV4dC1oZWlnaHQ7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLWZvcm0tdGV4dDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmLndwY2Y3LW5vdC12YWxpZCB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1mb3JtLWVycm9ycztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAmW3R5cGU9XCJkYXRlXCJdIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAmOjotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3Ige1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBjYWxjKDEwMCUgLSAyLjVlbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGZvcm0tZ3V0dGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogJGZvcm0tZ3V0dGVyO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS10ZXh0O1xuICAgICAgICByZXNpemU6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1mb3JtLWZpZWxkLWJvcmRlcjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGZvcm0tZmllbGQtYm9yZGVyLXJhZGl1cztcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIGVhc2UgLjRzO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZm9ybS1maWVsZC1pbnB1dC1iYWNrZ3JvdW5kO1xuICAgICAgICBoZWlnaHQ6IGluaXRpYWw7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICYud3BjZjctbm90LXZhbGlkIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZm9ybS1lcnJvcnM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc2VsZWN0LndwY2Y3LXNlbGVjdCxcbiAgICAgIHNlbGVjdC53cGNmNy1mb3JtLWNvbnRyb2wge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRmb3JtLWd1dHRlcjtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS10ZXh0O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItZm9ybS1maWVsZC1ib3JkZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRmb3JtLWZpZWxkLWJvcmRlci1yYWRpdXM7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6ICRmb3JtLWlucHV0LXRleHQtaGVpZ2h0O1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZm9ybS1maWVsZC1pbnB1dC1iYWNrZ3JvdW5kO1xuXG4gICAgICAgICYud3BjZjctbm90LXZhbGlkIHtcbiAgICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1mb3JtLWVycm9ycztcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICA+IGxhYmVsIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6ICRmb3JtLWxhYmVsLWd1dHRlci10b3A7XG4gICAgICAgIGxlZnQ6ICRmb3JtLWxhYmVsLWd1dHRlci1sZWZ0O1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS10ZXh0O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgY3Vyc29yOiB0ZXh0O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogZm9udC1zaXplIGVhc2UgLjVzLCB0cmFuc2Zvcm0gZWFzZS1pbi1vdXQgLjVzLCBiYWNrZ3JvdW5kLWNvbG9yIGVhc2UgLjVzLCBwYWRkaW5nIGVhc2UgLjVzO1xuICAgICAgICBmb250LXNpemU6ICRmb3JtLWxhYmVsLWZvbnQtc2l6ZTtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb3JtLWxhYmVsLWxpbmUtaGVpZ2h0O1xuICAgICAgfVxuXG4gICAgICAmLnN0eWxlLWRhcmsge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgY29sb3I6ICRjb2xvci1mb3JtLXRleHQtc3R5bGUtZGFyaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmVtcHR5IHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgIGFuaW1hdGlvbjogLjVzIGVhc2UtaW4gMHMgMSBmb3JtLWxhYmVsO1xuICAgICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZmlsbGVkLFxuICAgICAgJi5hY3RpdmUge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgcGFkZGluZzogMCAkZm9ybS1ndXR0ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5maWxsZWQge1xuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgYW5pbWF0aW9uOiAuNXMgZWFzZS1pbiAwcyAxIGZvcm0tbGFiZWwtZmlsbGVkO1xuICAgICAgICAgIGFuaW1hdGlvbi1kaXJlY3Rpb246IG5vcm1hbDtcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBjb2xvcjogJGNvbG9yLWZvcm0tZmlsbGVkICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWZvcm0tZmlsbGVkICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5uby1hbmltLFxuICAgICAgJi5mb3JtLWZpZWxkLW5vYW5pbSB7XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICBhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICAgICAgICB0b3A6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAkZm9ybS1sYWJlbC1uby1hbmltLW1hcmdpbi10b3A7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCRmb3JtLWxhYmVsLW5vLWFuaW0tdHJhbnNsYXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmZvcm0tZmllbGQtc2VsZWN0IHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmZvcm0tZmllbGQtYWNjZXB0YW5jZSB7XG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLmZvcm0tZmllbGQtcmdwZCxcbiAgICAgICYuZm9ybS1sZWdhbC1ub3RpY2Uge1xuICAgICAgICBtYXJnaW46IDFyZW0gYXV0bztcbiAgICAgICAgZm9udC1zaXplOiAuN3JlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAmLmZvcm0tZmllbGQtZG91YmxlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZsZXg6IDI7XG5cbiAgICAgICAgICAgIGlucHV0LndwY2Y3LXRleHQge1xuICAgICAgICAgICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAwIDAgMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgZmxleDogMTtcblxuICAgICAgICAgICAgaW5wdXQud3BjZjctdGV4dCB7XG4gICAgICAgICAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZm9ybS1maWVsZC1jaGVja2JveCB7XG4gICAgICAgIC53cGNmNy1jaGVja2JveCB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogLS4yNWVtO1xuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtLjI1ZW07XG5cbiAgICAgICAgICAud3BjZjctbGlzdC1pdGVtIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMCAuMjVlbTtcblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgIC53cGNmNy1saXN0LWl0ZW0tbGFiZWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogLjVyZW07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmNoZWNrYm94LWlubGluZSB7XG4gICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLjI1ZW07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLndwY2Y3LWNoZWNrYm94IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgICAgIC53cGNmNy1saXN0LWl0ZW0ge1xuICAgICAgICAgICAgICBmbGV4OiAwIDAgMjAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICYuZm9ybS1maWVsZC1kYXRlIHtcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgIGhlaWdodDogJGZvcm0taW5wdXQtdGV4dC1oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5pbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjVweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC53cGNmNy1yYWRpbyB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcblxuICAgICAgICAgIC53cGNmNy1saXN0LWl0ZW0ge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLjI1ZW07XG4gICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAuMjVlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAud3BjZjctY2hlY2tib3gge1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1maWVsZC1zdWJtaXQge1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgIC5hamF4LWxvYWRlciwgLndwY2Y3LXNwaW5uZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgICAgIG1pbi1oZWlnaHQ6IHVuc2V0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3Bhbi53cGNmNy1saXN0LWl0ZW0ge1xuICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkLXJlcXVpcmVkIHtcbiAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS1lcnJvcnM7XG4gICAgfVxuXG4gICAgLmZvcm0tZmllbGQtd3JhcCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAtMTVweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAtMTVweDtcblxuICAgICAgLmZvcm0tZmllbGQtZGF0ZSB7XG4gICAgICAgIGZsZXg6IDEgMSAwO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4O1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLndwY2Y3LWZvcm0tY29udHJvbC13cmFwIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgICAud3BjZjctbm90LXZhbGlkLXRpcCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS1lcnJvcnMgIWltcG9ydGFudDtcbiAgICAgICAgZm9udC1zaXplOiAkZm9ybS1lcnJvci1mb250LXNpemU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAtMnJlbTtcbiAgICAgICAgbGVmdDogJGZvcm0tZ3V0dGVyO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICB6LWluZGV4OiAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWZpZWxkLWRlc2Mge1xuICAgICAgZm9udC1zaXplOiAkZmllbGQtZGVzYy1zaXplO1xuICAgICAgZm9udC1zdHlsZTogJGZpZWxkLWRlc2Mtc3R5bGU7XG4gICAgICBjb2xvcjogJGZpZWxkLWRlc2MtY29sb3I7XG4gICAgfVxuXG4gICAgLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIGZvbnQtc2l6ZTogLjlyZW07XG4gICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogOTU5cHgpIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOm5vdCguc3VibWl0dGluZykge1xuICAgICAgLmFqYXgtbG9hZGVyLCAud3BjZjctc3Bpbm5lciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNlbnQge1xuICAgICAgLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS1tYWlsLXNlbnQgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmludmFsaWQge1xuICAgICAgLndwY2Y3LXJlc3BvbnNlLW91dHB1dCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZm9ybS1lcnJvcnMgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGb3JtIGdyaWRcbiAgLmZvcm0tcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWFyZ2luLXJpZ2h0OiAtJGZvcm0tZ3V0dGVyO1xuICAgIG1hcmdpbi1sZWZ0OiAtJGZvcm0tZ3V0dGVyO1xuXG4gICAgJjo6YmVmb3JlLFxuICAgICY6OmFmdGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgJiA+IC5mb3JtLWNvbCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRmb3JtLWd1dHRlciAhaW1wb3J0YW50O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkZm9ybS1ndXR0ZXIgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmID4gLmZvcm0tY29sLTYge1xuICAgICAgQGV4dGVuZCAuZm9ybS1jb2w7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkge1xuICAgICAgICBmbGV4OiAwIDAgNTAlO1xuICAgICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gLmZvcm0tY29sLTQge1xuICAgICAgQGV4dGVuZCAuZm9ybS1jb2w7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkge1xuICAgICAgICBmbGV4OiAwIDAgMzMuMzMlO1xuICAgICAgICBtYXgtd2lkdGg6IDMzLjMzJTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmID4gLmZvcm0tY29sLTMge1xuICAgICAgQGV4dGVuZCAuZm9ybS1jb2w7XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkge1xuICAgICAgICBmbGV4OiAwIDAgMjUlO1xuICAgICAgICBtYXgtd2lkdGg6IDI1JTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIiwiLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBGb3JtdWxhaXJlcyBDRjcg4oCUIHN1cmNvdWNoZSBHaGFmZmFyaVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBMZSBzdHlsZSBkZSBiYXNlIGRlcyBmb3JtdWxhaXJlcyAobGF5b3V0LCBjaGFtcHMsIGZvY3Vz4oCmKSBlc3QgZ8OpcsOpIHBhciBBbHBoYVxuLy8gKGNmNy1lZmZlY3QpLiBPbiBuJ2Fqb3V0ZSBJQ0kgcXVlIGxhIHByw6lzZW50YXRpb24gZW4gwqsgY2hpcHMgwrsgZGVzIGNhc2VzIMOgXG4vLyBjb2NoZXIgbXVsdGktY2hvaXggKGV4LiDCqyBUeXBlIGRlIHRyYXZhdXggwrsg4oaSIHJlcXVlc3Rlcl93b3JrX3R5cGUpIDogaWPDtG5lIEZBXG4vLyDDoCBnYXVjaGUsIGNhc2Ugw6AgY29jaGVyIGVuIGNvaW4sIMOpdGF0IHPDqWxlY3Rpb25uw6kgZG9yw6kuXG4vL1xuLy8gSW1wb3J0w6kgcGFyIHBhZ2VzL2NvbnRhY3Quc2NzcyDihpIgY2hhcmfDqSBzdXIgbGEgcGFnZSBDb250YWN0IEVUIHN1ciBsYSBIUCAobGFcbi8vIGZldWlsbGUgY29udGFjdCB5IGVzdCBlbnF1ZXVlIHZpYSB1biBob29rKS4gU2NvcMOpIHN1ciAud3BjZjctY2hlY2tib3ggcG91clxuLy8gZm9uY3Rpb25uZXIgcXVlbCBxdWUgc29pdCBsZSBjb250ZW5ldXIuIExlcyBnbHlwaGVzIHV0aWxpc8OpcyAoaGFtbWVyLCBidWlsZGluZyxcbi8vIGJydXNoLCBib3JkZXItYWxsLCBib2x0LCBlbGxpcHNpcykgc29udCBkYW5zIGxlIHN1YnNldCBGQSAodmFyaWFibGVzLnNjc3MpLlxuXG4ud3BjZjctY2hlY2tib3gge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBnYXA6IDEwcHg7XG59XG5cbi53cGNmNy1jaGVja2JveCAud3BjZjctbGlzdC1pdGVtIHtcbiAgbWFyZ2luOiAwO1xufVxuXG4ud3BjZjctY2hlY2tib3ggLndwY2Y3LWxpc3QtaXRlbSBsYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxMnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAxNXB4IDQwcHggMTVweCAxNnB4O1xuICBmb250LXNpemU6IDEzcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1mZy1wcmltYXJ5KTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHRyYW5zaXRpb246IGFsbCAyNDBtcyBjdWJpYy1iZXppZXIoLjE2LCAxLCAuMywgMSk7XG59XG5cbi53cGNmNy1jaGVja2JveCAud3BjZjctbGlzdC1pdGVtIGxhYmVsOmhvdmVyIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQpO1xufVxuXG4vLyBJY8O0bmUgRm9udEF3ZXNvbWUgKHNvbGlkZSkgw6AgZ2F1Y2hlLCBjaG9pc2llIHNlbG9uIGxhIHZhbGV1ciBkZSBsYSBjYXNlLlxuLndwY2Y3LWNoZWNrYm94IC53cGNmNy1saXN0LWl0ZW0gbGFiZWw6OmJlZm9yZSB7XG4gIGZsZXg6IG5vbmU7XG4gIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA2IFByb1wiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE3cHg7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQpO1xufVxuXG4kY2hpbXBzOiAoXG4gIFwiUsOpbm92YXRpb25cIjogJGZhLXZhci1oYW1tZXIsXG4gIFwiQ29uc3RydWN0aW9uXCI6ICRmYS12YXItYnVpbGRpbmcsXG4gIFwiUGVpbnR1cmVcIjogJGZhLXZhci1icnVzaCxcbiAgXCJDYXJyZWxhZ2VcIjogJGZhLXZhci1ib3JkZXItYWxsLFxuICBcIsOJbGVjdHJpY2l0w6lcIjogJGZhLXZhci1ib2x0LFxuICBcIkF1dHJlXCI6ICRmYS12YXItZWxsaXBzaXMsXG4pO1xuXG5AZWFjaCAkbGFiZWwsICRpY29uIGluICRjaGltcHMge1xuICAud3BjZjctY2hlY2tib3ggLndwY2Y3LWxpc3QtaXRlbTpoYXMoW3ZhbHVlPVwiI3skbGFiZWx9XCJdKSBsYWJlbCB7XG4gICAgQGluY2x1ZGUgZm9udC1hd2Vzb21lLWJlZm9yZSgkaWNvbiwgJGZhLXN0eWxlOiBsaWdodCk7XG4gIH1cbn1cblxuLy8gQ2FzZSDDoCBjb2NoZXIgbmF0aXZlIChhY2NlbnQgZG9yw6kpIHBsYWPDqWUgZW4gY29pbiBoYXV0LWRyb2l0ICjiiYggdGljayBtYXF1ZXR0ZSkuXG4ud3BjZjctY2hlY2tib3ggLndwY2Y3LWxpc3QtaXRlbSBpbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxM3B4O1xuICByaWdodDogMTNweDtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgYWNjZW50LWNvbG9yOiB2YXIoLS1hY2NlbnQpO1xufVxuXG4vLyDDiXRhdCBzw6lsZWN0aW9ubsOpIDogcGFzdGlsbGUgdGVpbnTDqWUgKyBib3JkdXJlIGRvcsOpZS5cbi53cGNmNy1jaGVja2JveCAud3BjZjctbGlzdC1pdGVtOmhhcyhpbnB1dDpjaGVja2VkKSBsYWJlbCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjAxLCAxNjQsIDkyLCAuMDcpO1xuICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAud3BjZjctY2hlY2tib3gge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgfVxufVxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQGlmIG5vdCAkbiB7XG4gICAgQGVycm9yIFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFwiO1xuICB9XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/