/*!*****************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/style.css ***!
  \*****************************************************************************************************************************/

/*!*********************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/variables.css ***!
  \*********************************************************************************************************************************/
/* ==========================================================================
   ORYA — Design tokens
   Source: analyse visuelle + échantillonnage pixel de /designs-png
   Voir /docs/design-system.md pour le détail des mesures et hypothèses.
   ========================================================================== */

:root {
  /* ---- Colors -------------------------------------------------------- */
  --color-bg: #0a0907;
  --color-bg-alt: #14110d;
  --color-surface: #1c1712;
  --color-black: #000000;

  --color-gold: #c9a77c;
  --color-gold-light: #e8c797;
  --color-gold-dim: #8a7a69;

  --color-white: #ffffff;
  --color-cream: #f3efe8;
  --color-text-body: #c9c6c0;
  --color-text-muted: #8a867e;

  --color-border: rgba(201, 167, 124, 0.35);
  --color-border-soft: rgba(255, 255, 255, 0.12);
  --color-overlay: rgba(10, 9, 7, 0.55);
  --color-overlay-strong: rgba(10, 9, 7, 0.8);

  /* ---- Typography ------------------------------------------------------ */
  --font-serif: "Playfair Display", Georgia, "Times New Roman", serif;
  --font-sans: "Montserrat", "Helvetica Neue", Arial, sans-serif;

  --fs-display: clamp(2.75rem, 4.5vw, 4.75rem);
  --fs-h1: clamp(2.25rem, 3.6vw, 3.5rem);
  --fs-h2: clamp(1.75rem, 2.6vw, 2.5rem);
  --fs-h3: clamp(1.25rem, 1.6vw, 1.5rem);
  --fs-h4: 1.125rem;
  --fs-quote: clamp(1.375rem, 2vw, 1.75rem);
  --fs-body-lg: 1.125rem;
  --fs-body: 1rem;
  --fs-small: 0.875rem;
  --fs-nav: 0.8125rem;
  --fs-eyebrow: 0.75rem;

  --lh-heading: 1.15;
  --lh-body: 1.7;
  --lh-tight: 1.1;

  --tracking-eyebrow: 0.25em;
  --tracking-nav: 0.12em;
  --tracking-wide: 0.15em;

  /* ---- Spacing (base 8px) ---------------------------------------------- */
  --space-1: 0.5rem;   /* 8px */
  --space-2: 1rem;     /* 16px */
  --space-3: 1.5rem;   /* 24px */
  --space-4: 2rem;     /* 32px */
  --space-5: 3rem;     /* 48px */
  --space-6: 4rem;     /* 64px */
  --space-7: 6rem;     /* 96px */
  --space-8: 8rem;     /* 128px */
  --space-9: 10rem;    /* 160px */

  /* ---- Layout ------------------------------------------------------- */
  --container-max: 1400px;
  --container-padding: clamp(1.25rem, 6vw, 6rem);
  --card-gap: 0.5rem;

  /* ---- Radius --------------------------------------------------------- */
  --radius-none: 0;
  --radius-sm: 2px;

  /* ---- Borders -------------------------------------------------------- */
  --border-width: 1px;

  /* ---- Shadows -------------------------------------------------------- */
  --shadow-card: 0 24px 60px rgba(0, 0, 0, 0.35);

  /* ---- Motion --------------------------------------------------------- */
  --transition-base: 250ms ease;
  --transition-slow: 500ms ease;

  /* ---- Z-index scale ---------------------------------------------------- */
  --z-header: 100;
  --z-overlay: 200;
  --z-modal: 300;
}

/*!****************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/base.css ***!
  \****************************************************************************************************************************/
/* ==========================================================================
   ORYA — Base
   Reset + typographie native + utilitaires de layout.
   Dépend de variables.css (charger avant ce fichier).
   ========================================================================== */

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

html {
  font-size: 100%;
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background-color: var(--color-bg);
  color: var(--color-text-body);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img,
picture,
video,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

ul,
ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0;
  color: var(--color-cream);
  font-family: var(--font-serif);
  font-weight: 400;
  line-height: var(--lh-heading);
}

h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
h4 {
  font-size: var(--fs-h4);
  font-family: var(--font-sans);
  font-weight: 500;
}

p {
  margin: 0;
}

p + p {
  margin-top: var(--space-2);
}

a {
  color: inherit;
  text-decoration: none;
}

em, i {
  font-style: italic;
}

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  cursor: pointer;
}

input,
textarea,
select {
  font: inherit;
  color: inherit;
}

hr {
  border: 0;
  border-top: var(--border-width) solid var(--color-border);
  margin: 0;
}

/* ---- Focus & selection -------------------------------------------------- */

:focus-visible {
  outline: 2px solid var(--color-gold);
  outline-offset: 3px;
}

::selection {
  background: var(--color-gold);
  color: var(--color-bg);
}

/* ---- Layout utilities --------------------------------------------------- */

.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--container-padding);
}

.section {
  padding-block: var(--space-8);
}

.section--tight {
  padding-block: var(--space-6);
}

.section--alt {
  background-color: var(--color-bg-alt);
}

/* ---- Text utilities ------------------------------------------------------ */

.eyebrow {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--color-gold);
}

.text-serif-italic {
  font-family: var(--font-serif);
  font-style: italic;
}

.text-body-lg {
  font-size: var(--fs-body-lg);
  max-width: 48ch;
}

.text-muted {
  color: var(--color-text-muted);
}

.measure {
  max-width: 42ch;
}

/* ---- Visually hidden (a11y) ---------------------------------------------- */

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/*!**********************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/components.css ***!
  \**********************************************************************************************************************************/
/* ==========================================================================
   ORYA — Components
   Header, navigation, boutons, cartes, citations, footer.
   Dépend de variables.css et base.css (charger avant ce fichier).
   ========================================================================== */

/* ---------------------------------------------------------------------
   Header / Navigation
   Comportement au scroll (fond opaque) non visible sur les maquettes
   statiques — .site-header--solid est fourni pour être togglé en JS.
   --------------------------------------------------------------------- */

.site-header {
  position: fixed;
  inset-inline: 0;
  top: 0;
  z-index: var(--z-header);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-inline: var(--container-padding);
  height: 9rem;
  background: linear-gradient(to bottom, rgba(10, 9, 7, 0.55), transparent);
  transition: background-color var(--transition-base), height var(--transition-base);
}

.site-header--solid {
  background: var(--color-bg);
  height: 6.5rem;
}

.site-header__logo {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  line-height: 1;
}

.site-header__logo-mark {
  font-family: var(--font-serif);
  font-size: 2.75rem;
  letter-spacing: 0.08em;
  color: var(--color-gold);
}

.site-header__logo-tagline {
  font-family: var(--font-sans);
  font-size: 0.8125rem;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-gold-dim);
}

.site-nav {
  display: flex;
  align-items: center;
  gap: var(--space-4);
}

.site-nav__link {
  position: relative;
  padding-block: 0.5rem;
  font-family: var(--font-serif);
  font-size: 1rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: rgba(243, 239, 232, 0.85);
  transition: color var(--transition-base);
}

.site-nav__link:hover {
  color: var(--color-gold);
}

.site-nav__link[aria-current="page"] {
  color: var(--color-cream);
}

.site-nav__link[aria-current="page"]::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.25rem;
  height: 2px;
  background: var(--color-gold);
}

.site-header__utility {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--fs-small);
  letter-spacing: var(--tracking-nav);
  color: var(--color-text-muted);
}

.site-header__utility button {
  color: var(--color-text-muted);
  transition: color var(--transition-base);
}

.site-header__utility button[aria-current="true"],
.site-header__utility button:hover {
  color: var(--color-cream);
}

.site-header__menu-toggle {
  display: flex;
  flex-direction: column;
  gap: 5px;
  width: 28px;
}

.site-header__menu-toggle {
  position: relative;
  z-index: 1;
}

.site-header__menu-toggle span {
  display: block;
  height: 1px;
  background: var(--color-gold);
  transition: transform var(--transition-base), opacity var(--transition-base);
}

/* ---------------------------------------------------------------------
   Header — mobile nav drawer
   En dessous de 960px, la navigation devient un tiroir qui glisse depuis
   la gauche (translateX), avec son propre bouton de fermeture et un
   fond assombri cliquable. Ouverture/fermeture togglées en JS via la
   classe .site-header.nav-open — voir js/main.js.
   --------------------------------------------------------------------- */

.site-nav__close {
  display: none;
}

.nav-backdrop {
  display: none;
}

@media (max-width: 960px) {
  .site-nav {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: var(--z-overlay);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-2);
    width: min(85vw, 22rem);
    height: 100vh;
    padding: 7rem var(--space-4) var(--space-4);
    background: var(--color-bg);
    border-right: var(--border-width) solid var(--color-border);
    overflow-y: auto;
    transform: translateX(-100%);
    transition: transform 400ms ease;
  }

  .site-header.nav-open .site-nav {
    transform: translateX(0);
  }

  .site-nav__link {
    font-size: var(--fs-h4);
  }

  .site-nav__close {
    position: absolute;
    top: var(--space-3);
    right: var(--space-3);
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    color: var(--color-gold);
    transition: opacity var(--transition-base);
  }

  .site-nav__close:hover {
    opacity: 0.65;
  }

  .nav-backdrop {
    display: block;
    position: fixed;
    inset: 0;
    /* Doit rester sous .site-header (qui crée son propre contexte
       d'empilement) pour ne pas passer devant le tiroir de nav, qui est
       un enfant du header. */
    z-index: calc(var(--z-header) - 1);
    background: rgba(10, 9, 7, 0.7);
    opacity: 0;
    pointer-events: none;
    transition: opacity 400ms ease;
  }

  .site-header.nav-open ~ .nav-backdrop {
    opacity: 1;
    pointer-events: auto;
  }
}

@media (max-width: 520px) {
  .site-header {
    height: 6rem;
  }

  .site-nav {
    padding-top: 6rem;
  }

  .site-header__logo-mark {
    font-size: 1.75rem;
  }

  .site-header__logo-tagline {
    font-size: 0.625rem;
    letter-spacing: 0.1em;
    white-space: nowrap;
  }
}

/* ---------------------------------------------------------------------
   Buttons
   --------------------------------------------------------------------- */

.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: 1.125rem 2rem;
  border: var(--border-width) solid var(--color-border);
  border-radius: var(--radius-none);
  background: transparent;
  color: var(--color-cream);
  font-family: var(--font-sans);
  font-size: var(--fs-nav);
  font-weight: 500;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  transition: border-color var(--transition-base), background-color var(--transition-base);
}

.btn__arrow {
  transition: transform var(--transition-base);
  color: var(--color-gold);
}

.btn:hover {
  border-color: var(--color-gold);
  background: rgba(201, 167, 124, 0.08);
}

.btn:hover .btn__arrow {
  transform: translateX(6px);
}

.btn--text {
  padding: 0;
  border: 0;
  color: var(--color-cream);
}

.btn--text:hover {
  background: none;
  color: var(--color-gold);
}

/* ---------------------------------------------------------------------
   Divider
   --------------------------------------------------------------------- */

.divider {
  width: 3rem;
  height: 1px;
  background: var(--color-gold);
  border: 0;
  margin-block: var(--space-3);
}

.divider--soft {
  background: var(--color-border-soft);
}

/* ---------------------------------------------------------------------
   Cards — project / destination (grille mosaïque photo)
   --------------------------------------------------------------------- */

.card-project {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  min-height: 22rem;
  background-color: var(--color-surface);
}

.card-project img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}

.card-project::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--color-overlay-strong), transparent 60%);
}

.card-project:hover img {
  transform: scale(1.05);
}

.card-project__body {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-3);
}

.card-project__title {
  font-family: var(--font-serif);
  font-size: var(--fs-h3);
  color: var(--color-white);
}

.card-project__caption {
  margin-top: 0.35rem;
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-body);
}

.card-project__arrow {
  flex-shrink: 0;
  color: var(--color-gold);
  transition: transform var(--transition-base);
}

.card-project:hover .card-project__arrow {
  transform: translateX(4px);
}

/* ---------------------------------------------------------------------
   Cards — feature / icon (ex. "A CURATED ECOSYSTEM")
   --------------------------------------------------------------------- */

.feature-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
}

.card-feature {
  padding: var(--space-3);
  border-left: var(--border-width) solid var(--color-border-soft);
}

.card-feature:first-child {
  border-left: 0;
}

.card-feature__icon {
  width: 2.25rem;
  height: 2.25rem;
  margin-bottom: var(--space-2);
  color: var(--color-gold);
}

.card-feature__title {
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-cream);
}

.card-feature__desc {
  margin-top: 0.5rem;
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

/* ---------------------------------------------------------------------
   Cards — numbered process step (ex. "01 — UNDERSTAND")
   --------------------------------------------------------------------- */

.step {
  padding-right: var(--space-3);
  border-right: var(--border-width) solid var(--color-border-soft);
}

.step:last-child {
  border-right: 0;
}

.step__number {
  font-family: var(--font-sans);
  font-size: 1.5rem;
  font-weight: 300;
  color: var(--color-gold);
}

.step__title {
  margin-top: var(--space-2);
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-cream);
}

.step__icon {
  width: 2rem;
  height: 2rem;
  margin-top: var(--space-3);
  color: var(--color-gold);
}

.step__desc {
  margin-top: var(--space-2);
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

/* ---------------------------------------------------------------------
   Quote
   --------------------------------------------------------------------- */

.quote {
  max-width: 32rem;
}

.quote__text {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: var(--fs-quote);
  line-height: 1.3;
  color: var(--color-cream);
}

.quote__cite {
  display: block;
  margin-top: var(--space-3);
  font-style: normal;
}

.quote__name {
  display: block;
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-gold);
}

.quote__role {
  display: block;
  margin-top: 0.25rem;
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

/* ---------------------------------------------------------------------
   Footer
   Extrapolé du langage visuel (aucune maquette de footer fournie —
   voir docs/design-system.md §9 et docs/pages.md).
   --------------------------------------------------------------------- */

.site-footer {
  background: var(--color-bg);
  border-top: var(--border-width) solid var(--color-border);
  padding-block: var(--space-7) var(--space-4);
}

.site-footer__grid {
  display: grid;
  grid-template-columns: 1.5fr repeat(3, 1fr);
  gap: var(--space-5);
}

.site-footer__logo {
  font-family: var(--font-serif);
  font-size: 1.75rem;
  letter-spacing: 0.12em;
  color: var(--color-gold);
}

.site-footer__tagline {
  margin-top: var(--space-2);
  font-size: var(--fs-small);
  color: var(--color-text-muted);
  max-width: 28ch;
}

.site-footer__heading {
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--color-gold);
  margin-bottom: var(--space-2);
}

.site-footer__link {
  display: block;
  padding-block: 0.375rem;
  font-size: var(--fs-small);
  color: var(--color-text-body);
  transition: color var(--transition-base);
}

.site-footer__link:hover {
  color: var(--color-gold);
}

.site-footer__bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  margin-top: var(--space-7);
  padding-top: var(--space-3);
  border-top: var(--border-width) solid var(--color-border-soft);
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

@media (max-width: 900px) {
  .site-footer__grid {
    grid-template-columns: 1fr 1fr;
  }

  .site-footer__bottom {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* ---------------------------------------------------------------------
   Page hero — image plein écran et contenu superposé, comme sur la Home.
   Commun aux pages About, Approach, Expertise, Projects, Partners,
   Network, Journal et Contact.
   --------------------------------------------------------------------- */

.page-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: 100vh;
  min-height: 100svh;
  padding: 9rem var(--container-padding) var(--space-6);
  background: var(--color-bg);
  overflow: hidden;
}

.page-hero__grid {
  width: 100%;
}

.page-hero__content {
  position: relative;
  z-index: 1;
  padding-block: var(--space-5);
  max-width: 34rem;
}

.page-hero__title {
  margin-top: var(--space-3);
  font-size: var(--fs-display);
  color: var(--color-white);
}

.page-hero__lead {
  margin-top: var(--space-3);
  max-width: 43ch;
  color: var(--color-cream);
}

.page-hero__content .btn {
  margin-top: var(--space-4);
}

.page-hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.page-hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(100deg, rgba(10, 9, 7, .94) 0%, rgba(10, 9, 7, .82) 25%, rgba(10, 9, 7, .35) 52%, transparent 75%),
    linear-gradient(to bottom, rgba(10, 9, 7, .45) 0%, transparent 25%),
    linear-gradient(to top, rgba(10, 9, 7, .7) 0%, transparent 35%);
}

.page-hero__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 35%;
}

.page-hero__tags {
  position: absolute;
  z-index: 1;
  top: calc(9rem + var(--space-5));
  right: var(--container-padding);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.5rem;
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  text-align: right;
  color: var(--color-cream);
  text-shadow: 0 2px 10px rgba(0, 0, 0, .85);
}

.page-hero__tags-divider {
  width: 1.5rem;
  height: 1px;
  margin-block: 0.75rem;
  background: var(--color-border);
}

.page-hero__tags-note {
  max-width: 8rem;
  line-height: 1.6;
  color: var(--color-gold-dim);
}

@media (max-width: 900px) {
  .page-hero__media::after {
    background:
      linear-gradient(90deg, rgba(10, 9, 7, .86), rgba(10, 9, 7, .5)),
      linear-gradient(to top, rgba(10, 9, 7, .65), transparent 50%);
  }

  .page-hero__tags {
    display: none;
  }
}

@media (max-width: 600px) {
  .page-hero {
    padding-top: 6rem;
    padding-bottom: var(--space-4);
  }

  .page-hero__title {
    font-size: clamp(2.25rem, 9vw, 2.75rem);
  }
}

/* ---------------------------------------------------------------------
   CTA banner — bandeau de clôture plein cadre (fin de chaque page)
   --------------------------------------------------------------------- */

.cta-banner {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 30rem;
  overflow: hidden;
}

.cta-banner__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.cta-banner__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cta-banner__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(100deg, rgba(10, 9, 7, .92) 0%, rgba(10, 9, 7, .7) 28%, transparent 60%),
    linear-gradient(to top, rgba(10, 9, 7, .7) 0%, transparent 35%);
}

.cta-banner__content {
  position: relative;
  z-index: 1;
  max-width: 34rem;
  padding-inline: var(--container-padding);
}

.cta-banner__title {
  font-size: var(--fs-h2);
  color: var(--color-cream);
}

.cta-banner__tagline {
  margin-top: var(--space-2);
}

.cta-banner__content .btn,
.cta-banner__content .btn--text {
  margin-top: var(--space-4);
}

.cta-banner__tags {
  position: absolute;
  z-index: 1;
  top: var(--space-5);
  right: var(--container-padding);
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.5rem;
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  text-align: right;
  color: var(--color-cream);
  text-shadow: 0 2px 10px rgba(0, 0, 0, .85);
}

.cta-banner__tags-divider {
  width: 1.5rem;
  height: 1px;
  margin-block: 0.75rem;
  background: var(--color-border);
}

.cta-banner__tags-note {
  max-width: 8rem;
  line-height: 1.6;
  color: var(--color-gold-dim);
}

@media (max-width: 700px) {
  .cta-banner__tags {
    display: none;
  }
}

/* ---------------------------------------------------------------------
   Signature — attribution manuscrite (ex. "Adil Erraiss — Founder & Director")
   --------------------------------------------------------------------- */

.signature {
  margin-top: var(--space-4);
  font-family: var(--font-serif);
  font-style: italic;
  font-size: 1.75rem;
  color: var(--color-gold);
}

.signature-role {
  margin-top: 0.25rem;
  font-size: var(--fs-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* ---------------------------------------------------------------------
   Stats — chiffres clés (ex. "15+ COUNTRIES / 30+ CITIES / ∞ POSSIBILITIES")
   --------------------------------------------------------------------- */

.stats {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-5);
  margin-top: var(--space-4);
}

.stats__number {
  font-family: var(--font-serif);
  font-size: 2.25rem;
  color: var(--color-gold);
}

.stats__label {
  margin-top: 0.25rem;
  font-size: var(--fs-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* ---------------------------------------------------------------------
   Partner card — studio partenaire (photo + nom + tags + description)
   --------------------------------------------------------------------- */

.partner-grid {
  margin-top: var(--space-6);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
}

@media (max-width: 1100px) {
  .partner-grid {
    grid-template-columns: 1fr;
  }
}

.card-partner__media {
  position: relative;
  min-height: 20rem;
  overflow: hidden;
}

.card-partner__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--transition-slow);
}

.card-partner:hover .card-partner__media img {
  transform: scale(1.05);
}

.card-partner__media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, var(--color-overlay-strong), transparent 55%);
}

.card-partner__media-body {
  position: absolute;
  z-index: 1;
  left: 0;
  right: 0;
  bottom: 0;
  padding: var(--space-3);
}

.card-partner__name {
  font-family: var(--font-serif);
  font-size: var(--fs-h3);
  color: var(--color-white);
}

.card-partner__location {
  margin-top: 0.35rem;
  font-size: var(--fs-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-text-body);
}

.card-partner__body {
  padding-top: var(--space-3);
}

.card-partner__tags {
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-gold-dim);
}

.card-partner__desc {
  margin-top: var(--space-2);
  color: var(--color-text-body);
}

.card-partner__link {
  margin-top: var(--space-3);
}

/* ---------------------------------------------------------------------
   Detail page — gabarit de fiche générique (projet, article...)
   Utilisé par projet.php et article.php : fil d'Ariane, hero plein cadre,
   contenu + sidebar "facts", grille "related", page 404 interne.
   --------------------------------------------------------------------- */

.breadcrumb {
  padding-top: 7rem;
  background: var(--color-bg);
}

.breadcrumb__row {
  padding-block: var(--space-3);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.breadcrumb__row a {
  color: var(--color-text-muted);
  transition: color var(--transition-base);
}

.breadcrumb__row a:hover {
  color: var(--color-gold);
}

.breadcrumb__row [aria-current="page"] {
  color: var(--color-cream);
}

.project-hero {
  position: relative;
  min-height: 32rem;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}

.project-hero img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.project-hero__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(10, 9, 7, .9) 0%, rgba(10, 9, 7, .25) 45%, transparent 70%);
}

.project-hero__content {
  position: relative;
  z-index: 1;
  padding: var(--space-5) var(--container-padding);
}

.project-hero__content h1 {
  margin-top: var(--space-2);
  font-size: var(--fs-h1);
  color: var(--color-white);
}

.project-hero__location {
  margin-top: 0.35rem;
  font-size: var(--fs-body-lg);
  color: var(--color-text-body);
}

.project-content__grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: var(--space-6);
  align-items: start;
}

.project-content__intro {
  margin-top: 0;
  font-family: var(--font-serif);
  font-size: var(--fs-h4);
  color: var(--color-cream);
}

.project-content__main p {
  margin-top: var(--space-3);
  color: var(--color-text-body);
}

.project-content__quote {
  margin-top: var(--space-5);
  padding-left: var(--space-3);
  border-left: var(--border-width) solid var(--color-border);
  max-width: none;
}

.project-content__quote .quote__text {
  font-size: var(--fs-h4);
}

.project-facts {
  position: sticky;
  top: 7rem;
  padding: var(--space-4);
  background: var(--color-surface);
}

.project-facts__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.project-facts__list dt {
  font-size: var(--fs-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.project-facts__list dd {
  margin-top: 0.35rem;
  color: var(--color-cream);
}

.project-facts__services {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.project-facts__cta {
  margin-top: var(--space-4);
  width: 100%;
  justify-content: center;
}

@media (max-width: 900px) {
  .project-content__grid {
    grid-template-columns: 1fr;
  }

  .project-facts {
    position: static;
  }
}

.related__grid {
  margin-top: var(--space-4);
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--card-gap);
}

.related__grid .card-project {
  min-height: 18rem;
}

.related__all {
  margin-top: var(--space-4);
}

@media (max-width: 700px) {
  .related__grid {
    grid-template-columns: 1fr;
  }
}

.not-found {
  padding-top: 10rem;
  min-height: 60vh;
}

.not-found h1 {
  margin-top: var(--space-2);
}

.not-found__desc {
  margin-top: var(--space-2);
  margin-bottom: var(--space-4);
  color: var(--color-text-body);
}

/*!*************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/accueil.css ***!
  \*************************************************************************************************************************************/
/* ==========================================================================
   Page Accueil — styles spécifiques
   Source : /designs-png/ORYA_Page_Accueil_Hero.png
   Dépend de variables.css, base.css, components.css (charger avant ce fichier).
   ========================================================================== */

.hero {
  position: relative;
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: 1fr auto;
  overflow: hidden;
  background-color: var(--color-bg);
}

.hero__slider.owl-carousel {
  display: block;
  grid-area: 1 / 1 / 3 / 2;
  min-width: 0;
}

.hero__slider:not(.owl-loaded) .hero__slide:not(:first-child) {
  display: none;
}

.hero__slider .owl-stage {
  display: flex;
}

.hero__slider .owl-stage::after {
  display: none;
}

.hero__slider .owl-item {
  flex-shrink: 0;
}

.hero__slider .owl-item,
.hero__slide {
  display: flex;
}

.hero__slide {
  position: relative;
  width: 100%;
  min-height: 100vh;
  min-height: 100svh;
}

.hero__media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 35%;
}

.hero__scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(100deg, rgba(10, 9, 7, .94) 0%, rgba(10, 9, 7, .8) 20%, rgba(10, 9, 7, .35) 42%, transparent 62%),
    linear-gradient(to top, rgba(10, 9, 7, .9) 0%, rgba(10, 9, 7, .35) 22%, transparent 40%);
}

.hero__inner {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  width: 100%;
  padding-top: 9rem; /* dégage le header fixe (doit correspondre à sa hauteur) */
  padding-bottom: 10rem; /* réserve l'espace des commandes communes */
}

/* Le hero est plein cadre (edge-to-edge), contrairement aux sections de
   contenu standard : on reprend le padding fluide de .container mais sans
   son max-width, sinon le contenu se recentre et se resserre sur grand
   écran au lieu de suivre les bords du viewport comme sur la maquette. */
.hero__top,
.hero__bottom {
  padding-inline: var(--container-padding);
}

.hero__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-5);
  flex: 1;
  padding-top: var(--space-7);
}

.hero__intro {
  max-width: 29rem;
}

.hero__title {
  margin-top: var(--space-3);
  font-size: var(--fs-display);
  color: var(--color-white);
}

.hero__lead {
  margin-top: var(--space-3);
  max-width: 32ch;
  color: var(--color-text-body);
}

.hero__intro .btn {
  margin-top: var(--space-4);
}

/* ---- Right-side vertical tag list ("Build / Design / Source") --------- */

.hero__tags {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.5rem;
  flex-shrink: 0;
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--color-cream);
  text-align: right;
  text-shadow: 0 2px 10px rgba(0, 0, 0, .85);
}

.hero__tags-divider {
  width: 1.5rem;
  height: 1px;
  margin-block: 0.75rem;
  background: var(--color-border);
}

.hero__tags-note {
  display: block;
  max-width: 8rem;
  color: var(--color-gold-dim);
  line-height: 1.6;
}

/* ---- Bottom row: scroll cue / pillars bar / pagination ---------------- */

.hero__bottom {
  position: relative;
  z-index: 2;
  grid-area: 2 / 1 / 3 / 2;
  align-self: end;
  padding-bottom: var(--space-4);
  display: flex;
  align-items: center;
  gap: var(--space-4);
}

.hero__scroll {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
  font-size: var(--fs-eyebrow);
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.hero__scroll svg {
  color: var(--color-gold);
}

.pillars-bar {
  display: flex;
  flex: 1;
  justify-content: space-between;
  gap: var(--space-3);
  padding-inline: var(--space-4);
  border-inline: var(--border-width) solid var(--color-border-soft);
}

.pillars-bar__item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  flex: 1;
  padding-inline: var(--space-3);
  text-align: center;
  border-left: var(--border-width) solid var(--color-border-soft);
}

.pillars-bar__item:first-child {
  border-left: 0;
}

.pillars-bar__icon {
  width: 2rem;
  height: 2rem;
  color: var(--color-gold);
}

.pillars-bar__item span {
  display: block;
  max-width: 7rem;
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-cream);
}

.hero__pagination {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-shrink: 0;
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

.hero__pagination-current {
  color: var(--color-cream);
}

.hero__pagination-line {
  width: 2rem;
  height: 1px;
  background: var(--color-border);
}

.hero__pagination button {
  display: grid;
  place-items: center;
  min-width: 2rem;
  min-height: 2.75rem;
  color: var(--color-gold);
  transition: opacity var(--transition-base);
}

.hero__pagination button:hover {
  opacity: 0.6;
}

.hero__pagination[hidden],
.hero__autoplay .hero__play-icon,
.hero__autoplay.is-paused .hero__pause-icon {
  display: none;
}

.hero__autoplay.is-paused .hero__play-icon {
  display: block;
}

.hero__pagination button:focus-visible {
  outline: 1px solid var(--color-gold);
  outline-offset: 3px;
}

/* ---- Responsive ---------------------------------------------------------- */

@media (max-width: 1100px) {
  .hero__tags {
    display: none;
  }
}

@media (max-width: 860px) {
  .hero__inner {
    padding-bottom: 24rem;
  }

  .hero__bottom {
    flex-wrap: wrap;
    justify-content: center;
  }

  .pillars-bar {
    order: 3;
    flex-basis: 100%;
    flex-wrap: wrap;
    justify-content: center;
    row-gap: var(--space-3);
    border-inline: 0;
    border-top: var(--border-width) solid var(--color-border-soft);
    padding-top: var(--space-3);
  }

  .pillars-bar__item {
    flex-basis: 30%;
    border-left: 0;
  }
}

@media (max-width: 600px) {
  .hero__inner {
    padding-bottom: 30rem;
  }

  .hero__top {
    padding-top: var(--space-5);
  }

  .hero__title {
    font-size: clamp(2.25rem, 9vw, 2.75rem);
  }

  .hero__scroll {
    display: none;
  }

  .pillars-bar__item {
    flex: 0 1 calc((100% - 1rem) / 2);
    padding-inline: 0.5rem;
  }

  .pillars-bar {
    padding-inline: 0;
    column-gap: 1rem;
  }
}

@media (max-width: 520px) {
  .hero__inner {
    padding-top: 6rem; /* doit correspondre à la hauteur du header à ce même breakpoint */
  }
}

/* ---------------------------------------------------------------------
   Sections sous le hero — aucune maquette au-delà du premier écran
   (pagination "01 — 04" du hero), construites à partir du design system.
   --------------------------------------------------------------------- */

/* ---- Philosophy ---------------------------------------------------------- */

.philosophy__grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr 1.2fr;
  gap: var(--space-5);
  align-items: center;
}

.philosophy__quote .quote__text {
  font-size: var(--fs-quote);
}

.philosophy__media img {
  width: 100%;
  aspect-ratio: 7 / 8;
  object-fit: cover;
}

.philosophy__note h2 {
  margin-top: var(--space-2);
}

.philosophy__note p {
  margin-top: var(--space-3);
  color: var(--color-text-body);
}

.philosophy__note .btn {
  margin-top: var(--space-4);
}

@media (max-width: 1100px) {
  .philosophy__grid {
    grid-template-columns: 1fr;
  }

  .philosophy__media {
    max-width: 24rem;
    order: -1;
  }
}

/* ---- Featured projects ---------------------------------------------------- */

.featured-projects__intro {
  display: grid;
  grid-template-columns: 1fr 1.6fr;
  gap: var(--space-5);
  align-items: start;
}

.featured-projects__intro p:last-child {
  color: var(--color-text-body);
  max-width: 48ch;
}

.featured-projects__grid {
  margin-top: var(--space-5);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--card-gap);
}

.featured-projects__grid .card-project {
  min-height: 20rem;
}

.featured-projects__all {
  margin-top: var(--space-4);
}

@media (max-width: 1100px) {
  .featured-projects__intro {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .featured-projects__grid {
    grid-template-columns: 1fr;
  }
}

/* ---- Global network teaser -------------------------------------------------- */

.network-teaser__grid {
  display: grid;
  grid-template-columns: 1fr 1.3fr;
  gap: var(--space-6);
  align-items: center;
}

.network-teaser__intro p {
  color: var(--color-text-body);
  max-width: 40ch;
}

.network-teaser__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

@media (max-width: 900px) {
  .network-teaser__grid {
    grid-template-columns: 1fr;
  }

  .network-teaser__media {
    order: -1;
  }
}

/* ---- Creative partners teaser -------------------------------------------- */

.creative-partners__intro {
  display: grid;
  grid-template-columns: 1fr 1.6fr;
  gap: var(--space-5);
  align-items: start;
}

.creative-partners__intro p:last-child {
  color: var(--color-text-body);
  max-width: 60ch;
}

.creative-partners__all {
  margin-top: var(--space-4);
}

@media (max-width: 1100px) {
  .creative-partners__intro {
    grid-template-columns: 1fr;
  }
}

/*!**************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/a-propos.css ***!
  \**************************************************************************************************************************************/
/* ==========================================================================
   Page About — styles spécifiques
   Source : /designs-png/ORYA_About_Page_Maquette.png
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.page-hero__lead + .page-hero__lead {
  margin-top: var(--space-2);
}

/* ---- Founder ---------------------------------------------------------- */

.founder {
  background: var(--color-bg);
}

.founder__grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr 1.2fr;
  gap: var(--space-5);
  align-items: center;
}

.founder__quote .quote__text {
  font-size: var(--fs-quote);
}

.founder__portrait img {
  width: 100%;
  aspect-ratio: 7 / 8;
  object-fit: cover;
}

.founder__title {
  margin-top: var(--space-2);
}

.founder__bio p {
  margin-top: var(--space-3);
  color: var(--color-text-body);
}

@media (max-width: 1100px) {
  .founder__grid {
    grid-template-columns: 1fr;
  }

  .founder__portrait {
    order: -1;
    max-width: 24rem;
  }
}

/* ---- Positioning + Values ---------------------------------------------- */

.positioning-grid {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr 1fr;
  gap: var(--space-6);
  align-items: center;
}

.positioning-intro p {
  color: var(--color-text-body);
}

.positioning {
  position: relative;
  width: 100%;
  max-width: 26rem;
  aspect-ratio: 1;
  margin-inline: auto;
}

.positioning__ring {
  position: absolute;
  inset: 12%;
  border: var(--border-width) solid var(--color-border);
  border-radius: 50%;
}

.positioning__center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
}

.positioning__center-mark {
  font-family: var(--font-serif);
  font-size: 1.75rem;
  letter-spacing: 0.1em;
  color: var(--color-gold);
}

.positioning__center-tagline {
  margin-top: 0.35rem;
  font-size: 0.5625rem;
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-gold-dim);
}

.positioning__node {
  position: absolute;
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-cream);
  text-align: center;
  line-height: 1.3;
}

.positioning__node--client    { top: 0;    left: 50%; transform: translate(-50%, 0); }
.positioning__node--designers { top: 16%;  right: 0;  text-align: right; }
.positioning__node--suppliers { top: 50%;  right: -2%; transform: translateY(-50%); text-align: right; }
.positioning__node--partners  { bottom: 12%; right: 0; text-align: right; }
.positioning__node--artisans  { bottom: 12%; left: 0; }
.positioning__node--technical { top: 50%;  left: -2%; transform: translateY(-50%); }
.positioning__node--architects{ top: 16%;  left: 0; }

@media (max-width: 1100px) {
  .positioning-grid {
    grid-template-columns: 1fr;
  }

  .positioning {
    max-width: 22rem;
  }
}

@media (max-width: 480px) {
  .positioning__node {
    font-size: 0.625rem;
  }
}

.values__list {
  margin-top: var(--space-3);
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.values__item {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
}

.values__icon {
  flex-shrink: 0;
  width: 1.75rem;
  height: 1.75rem;
  margin-top: 0.15rem;
  color: var(--color-gold);
}

.values__title {
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-cream);
}

.values__desc {
  margin-top: 0.2rem;
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}

/*!**************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/approche.css ***!
  \**************************************************************************************************************************************/
/* ==========================================================================
   Page Our Approach — styles spécifiques
   Source : /designs-png/ORYA_Discover_Our_Approach_Maquette.png
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.process__intro {
  display: grid;
  grid-template-columns: 1fr 1.4fr auto;
  gap: var(--space-5);
  align-items: start;
}

.process__intro h2 {
  max-width: 14ch;
}

.process__desc {
  color: var(--color-text-body);
  max-width: 48ch;
}

.process__tags {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding-left: var(--space-3);
  border-left: var(--border-width) solid var(--color-border);
  font-size: var(--fs-small);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-gold);
}

.steps {
  margin-top: var(--space-6);
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: var(--space-4);
}

@media (max-width: 1100px) {
  .process__intro {
    grid-template-columns: 1fr;
  }

  .process__tags {
    flex-direction: row;
    border-left: 0;
    border-top: var(--border-width) solid var(--color-border);
    padding-left: 0;
    padding-top: var(--space-2);
    gap: var(--space-4);
  }

  .steps {
    grid-template-columns: repeat(2, 1fr);
  }

  .step {
    border-right: 0;
    border-bottom: var(--border-width) solid var(--color-border-soft);
    padding-right: 0;
    padding-bottom: var(--space-3);
  }
}

@media (max-width: 560px) {
  .steps {
    grid-template-columns: 1fr;
  }
}

/* ---- Materials + quote -------------------------------------------------- */

.materials__grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr 1fr;
  gap: var(--space-5);
  align-items: center;
}

.materials__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.materials__quote {
  max-width: none;
}

.materials__note p:first-child {
  color: var(--color-text-body);
}

@media (max-width: 1000px) {
  .materials__grid {
    grid-template-columns: 1fr;
  }
}

/*!***************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/expertise.css ***!
  \***************************************************************************************************************************************/
/* ==========================================================================
   Page Expertise — styles spécifiques
   Source : /designs-png/ORYA_Partners_Maquette.png (contenu "écosystème",
   repositionné ici depuis Partners — voir docs/pages.md).
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.ecosystem__intro {
  display: grid;
  grid-template-columns: 1fr 1.6fr;
  gap: var(--space-5);
  align-items: start;
}

.ecosystem__intro p:last-child {
  color: var(--color-text-body);
  max-width: 48ch;
}

.ecosystem__grid {
  margin-top: var(--space-5);
  grid-template-columns: repeat(6, 1fr);
}

@media (max-width: 1100px) {
  .ecosystem__intro {
    grid-template-columns: 1fr;
  }

  .ecosystem__grid {
    grid-template-columns: repeat(3, 1fr);
    row-gap: var(--space-4);
  }

  .card-feature:nth-child(3n+1) {
    border-left: 0;
  }
}

@media (max-width: 600px) {
  .ecosystem__grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .card-feature:nth-child(3n+1) {
    border-left: var(--border-width) solid var(--color-border-soft);
  }

  .card-feature:nth-child(2n+1) {
    border-left: 0;
  }
}

/* ---- Relationships ---------------------------------------------------- */

.relationships__grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr 1fr;
  gap: var(--space-5);
  align-items: center;
}

.relationships__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.relationships__note p {
  margin-top: var(--space-2);
  color: var(--color-text-body);
}

@media (max-width: 1000px) {
  .relationships__grid {
    grid-template-columns: 1fr;
  }
}

/* ---- Global network ---------------------------------------------------- */

.network__grid {
  display: grid;
  grid-template-columns: 1fr 1.6fr auto;
  gap: var(--space-5);
  align-items: center;
}

.network__intro p {
  color: var(--color-text-body);
  max-width: 34ch;
}

.network__media img {
  width: 100%;
  aspect-ratio: 16 / 6;
  object-fit: cover;
}

.network__cities {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

@media (max-width: 1100px) {
  .network__grid {
    grid-template-columns: 1fr;
  }

  .network__cities {
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--space-3);
  }
}

/*!*************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/projets.css ***!
  \*************************************************************************************************************************************/
/* ==========================================================================
   Page Projects — styles spécifiques
   Source : /designs-png/ORYA_Nos_Realisations_Maquette.png
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.filters {
  border-bottom: var(--border-width) solid var(--color-border-soft);
  background: var(--color-bg);
}

.filters__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-block: var(--space-3);
  flex-wrap: wrap;
}

.filters__list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
}

.filters__link {
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
  transition: color var(--transition-base);
}

.filters__link:hover {
  color: var(--color-cream);
}

.filters__link--active {
  color: var(--color-cream);
  position: relative;
}

.filters__link--active::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.6rem;
  height: 2px;
  background: var(--color-gold);
}

.filters__map {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--fs-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

/* ---- Grid ---------------------------------------------------------------- */

.project-grid__empty {
  padding-block: var(--space-5);
  text-align: center;
  color: var(--color-text-muted);
}

.project-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--card-gap);
}

.project-grid__item--lg {
  grid-column: span 2;
  grid-row: span 2;
}

.project-grid .card-project {
  min-height: 16rem;
}

.project-grid__item--lg {
  min-height: unset;
}

@media (max-width: 900px) {
  .project-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .project-grid__item--lg {
    grid-column: span 2;
    grid-row: auto;
  }
}

@media (max-width: 600px) {
  .project-grid {
    grid-template-columns: 1fr;
  }

  .project-grid__item--lg {
    grid-column: auto;
  }
}

/* ---- Quote banner ---------------------------------------------------------- */

.quote-banner__grid {
  display: grid;
  grid-template-columns: 1fr 1fr 0.8fr;
  gap: var(--space-5);
  align-items: center;
}

.quote-banner__note p {
  color: var(--color-text-body);
}

.quote-banner__media img {
  width: 100%;
  aspect-ratio: 5 / 3;
  object-fit: cover;
}

@media (max-width: 1000px) {
  .quote-banner__grid {
    grid-template-columns: 1fr;
  }
}

/*!*****************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/partenaires.css ***!
  \*****************************************************************************************************************************************/
/* ==========================================================================
   Page Partners — styles spécifiques
   Source : /designs-png/ORYA_Partners_Creative_Network_Maquette.png
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.creative__intro {
  display: grid;
  grid-template-columns: 1fr 1.6fr;
  gap: var(--space-5);
  align-items: start;
}

.creative__intro p:last-child {
  color: var(--color-text-body);
  max-width: 60ch;
}

.values-row {
  margin-top: var(--space-6);
  grid-template-columns: repeat(5, 1fr);
  border-top: var(--border-width) solid var(--color-border-soft);
  padding-top: var(--space-4);
}

.values-row .card-feature__title {
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0.02em;
}

@media (max-width: 1100px) {
  .creative__intro {
    grid-template-columns: 1fr;
  }

  .values-row {
    grid-template-columns: repeat(3, 1fr);
    row-gap: var(--space-4);
  }
}

@media (max-width: 600px) {
  .values-row {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ---- Closing CTA (variante citation) ------------------------------------ */

.cta-banner .quote__text {
  color: var(--color-cream);
}

/*!************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/reseau.css ***!
  \************************************************************************************************************************************/
/* ==========================================================================
   Page Network — styles spécifiques
   Source : /designs-png/ORYA_Network_Maquette.png
   Dépend de variables.css, base.css, components.css.
   ========================================================================== */

.connected__grid {
  display: grid;
  grid-template-columns: 0.8fr 1.6fr auto;
  gap: var(--space-5);
  align-items: center;
}

.connected__intro p {
  color: var(--color-text-body);
  max-width: 34ch;
}

.connected__media img {
  width: 100%;
  aspect-ratio: 16 / 7;
  object-fit: cover;
}

.connected__note {
  max-width: 14rem;
}

.connected__note p {
  font-size: var(--fs-h4);
  color: var(--color-cream);
}

.connected__tags {
  margin-top: var(--space-3);
  padding-top: var(--space-3);
  border-top: var(--border-width) solid var(--color-border);
  font-size: var(--fs-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-gold);
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}

@media (max-width: 1100px) {
  .connected__grid {
    grid-template-columns: 1fr;
  }

  .connected__note {
    max-width: none;
  }
}

/* ---- City grid ---------------------------------------------------------- */

.city-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--card-gap);
}

.city-grid .card-project {
  min-height: 20rem;
}

@media (max-width: 900px) {
  .city-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 560px) {
  .city-grid {
    grid-template-columns: 1fr;
  }
}

/* ---- Quote banner (variante 2 colonnes) --------------------------------- */

.quote-banner__grid--reseau {
  grid-template-columns: 1fr 1.2fr;
}

.quote-banner__grid--reseau .quote {
  max-width: 34rem;
}

@media (max-width: 900px) {
  .quote-banner__grid--reseau {
    grid-template-columns: 1fr;
  }
}

/*!*************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/journal.css ***!
  \*************************************************************************************************************************************/
/* ==========================================================================
   Page Journal — styles spécifiques
   Aucune maquette fournie : liste d'articles construite à partir du
   design system existant (voir inc/journal-data.php pour le contenu).
   Le gabarit de détail (article.php) réutilise les classes génériques
   de components.css (breadcrumb, project-hero, project-content, etc.),
   partagées avec projet.php.
   ========================================================================== */

.journal-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--card-gap);
}

.journal-grid .card-project {
  min-height: 20rem;
}

@media (max-width: 900px) {
  .journal-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 560px) {
  .journal-grid {
    grid-template-columns: 1fr;
  }
}

/*!*************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/assets/frontend/css/pages/contact.css ***!
  \*************************************************************************************************************************************/
/* ==========================================================================
   Page Contact — styles spécifiques
   Aucune maquette fournie pour cette page : conçue à partir du design
   system existant (variables.css, components.css) et des coordonnées de
   la carte de visite (/designs-png/ORYA Carte Visite Adil 90x50.png).
   ========================================================================== */

.contact-hero .page-hero__content {
  max-width: 34rem;
}

/* ---- Contact grid ------------------------------------------------------- */

.contact__grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: var(--space-6);
  align-items: start;
}

.contact-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.contact-form__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
}

.contact-form__field {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.contact-form__field span {
  font-size: var(--fs-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}

.contact-form__field input,
.contact-form__field select,
.contact-form__field textarea {
  background: transparent;
  border: 0;
  border-bottom: var(--border-width) solid var(--color-border-soft);
  padding-block: 0.65rem;
  color: var(--color-cream);
  transition: border-color var(--transition-base);
}

.contact-form__field select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2710%27 height=%276%27 viewBox=%270 0 10 6%27 fill=%27none%27%3E%3Cpath d=%27M1 1l4 4 4-4%27 stroke=%27%23c9a77c%27 stroke-width=%271.2%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.25rem center;
}

.contact-form__field textarea {
  resize: vertical;
  font-family: inherit;
}

.contact-form__field input:focus,
.contact-form__field select:focus,
.contact-form__field textarea:focus {
  outline: none;
  border-color: var(--color-gold);
}

.contact-form .btn {
  align-self: flex-start;
  margin-top: var(--space-2);
}

/* ---- Contact info -------------------------------------------------------- */

.contact-info__list {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.contact-info__list dt {
  font-size: var(--fs-eyebrow);
  font-weight: 500;
  letter-spacing: var(--tracking-eyebrow);
  text-transform: uppercase;
  color: var(--color-gold);
}

.contact-info__list dd {
  margin-top: 0.35rem;
  color: var(--color-text-body);
}

.contact-info__list dd a {
  color: var(--color-text-body);
  transition: color var(--transition-base);
}

.contact-info__list dd a:hover {
  color: var(--color-gold);
}

.contact-info .signature {
  margin-top: var(--space-5);
}

@media (max-width: 900px) {
  .contact__grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 560px) {
  .contact-form__row {
    grid-template-columns: 1fr;
  }
}

/* ---- Offices -------------------------------------------------------------- */

.offices__grid {
  margin-top: var(--space-5);
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 700px) {
  .offices__grid {
    grid-template-columns: 1fr;
  }

  .offices__grid .card-feature {
    border-left: 0;
    border-top: var(--border-width) solid var(--color-border-soft);
    padding-left: 0;
    padding-top: var(--space-3);
  }

  .offices__grid .card-feature:first-child {
    border-top: 0;
  }
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzX2Fzc2V0c19mcm9udGVuZF9hcHBfanMuYjdmMWQ4MTUuY3NzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7OzsrRUFJK0U7O0FBRS9FO0VBQ0UseUVBQXlFO0VBQ3pFLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsd0JBQXdCO0VBQ3hCLHNCQUFzQjs7RUFFdEIscUJBQXFCO0VBQ3JCLDJCQUEyQjtFQUMzQix5QkFBeUI7O0VBRXpCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsMEJBQTBCO0VBQzFCLDJCQUEyQjs7RUFFM0IseUNBQXlDO0VBQ3pDLDhDQUE4QztFQUM5QyxxQ0FBcUM7RUFDckMsMkNBQTJDOztFQUUzQywyRUFBMkU7RUFDM0UsbUVBQW1FO0VBQ25FLDhEQUE4RDs7RUFFOUQsNENBQTRDO0VBQzVDLHNDQUFzQztFQUN0QyxzQ0FBc0M7RUFDdEMsc0NBQXNDO0VBQ3RDLGlCQUFpQjtFQUNqQix5Q0FBeUM7RUFDekMsc0JBQXNCO0VBQ3RCLGVBQWU7RUFDZixvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLHFCQUFxQjs7RUFFckIsa0JBQWtCO0VBQ2xCLGNBQWM7RUFDZCxlQUFlOztFQUVmLDBCQUEwQjtFQUMxQixzQkFBc0I7RUFDdEIsdUJBQXVCOztFQUV2QiwyRUFBMkU7RUFDM0UsaUJBQWlCLElBQUksUUFBUTtFQUM3QixlQUFlLE1BQU0sU0FBUztFQUM5QixpQkFBaUIsSUFBSSxTQUFTO0VBQzlCLGVBQWUsTUFBTSxTQUFTO0VBQzlCLGVBQWUsTUFBTSxTQUFTO0VBQzlCLGVBQWUsTUFBTSxTQUFTO0VBQzlCLGVBQWUsTUFBTSxTQUFTO0VBQzlCLGVBQWUsTUFBTSxVQUFVO0VBQy9CLGdCQUFnQixLQUFLLFVBQVU7O0VBRS9CLHdFQUF3RTtFQUN4RSx1QkFBdUI7RUFDdkIsOENBQThDO0VBQzlDLGtCQUFrQjs7RUFFbEIsMEVBQTBFO0VBQzFFLGdCQUFnQjtFQUNoQixnQkFBZ0I7O0VBRWhCLDBFQUEwRTtFQUMxRSxtQkFBbUI7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QUF3QjtBQUMxQjs7QUFFQTtFQUNFLDBCQUEwQjtBQUM1Qjs7QUFFQTtFQUNFO0lBQ0UsMEJBQTBCO0VBQzVCO0FBQ0Y7O0FBRUE7RUFDRTtJQUNFLDBCQUEwQjtFQUM1QjtBQUNGOztBQUVBLGdGQUFnRjs7QUFFaEY7RUFDRSwwQkFBMEI7RUFDMUIscUNBQXFDO0FBQ3ZDOztBQUVBO0VBQ0U7SUFDRSwwQkFBMEI7RUFDNUI7O0VBRUE7SUFDRSxjQUFjO0lBQ2QsOERBQThEO0lBQzlELGVBQWU7SUFDZiwyQkFBMkI7RUFDN0I7O0VBRUE7SUFDRSxhQUFhO0VBQ2Y7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3ZhcmlhYmxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Fzc2V0cy9mcm9udGVuZC9jc3MvYmFzZS5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Fzc2V0cy9mcm9udGVuZC9jc3MvY29tcG9uZW50cy5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Fzc2V0cy9mcm9udGVuZC9jc3MvcGFnZXMvYWNjdWVpbC5jc3MiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2Fzc2V0cy9mcm9udGVuZC9jc3MvcGFnZXMvYS1wcm9wb3MuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3BhZ2VzL2FwcHJvY2hlLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXNzZXRzL2Zyb250ZW5kL2Nzcy9wYWdlcy9leHBlcnRpc2UuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3BhZ2VzL3Byb2pldHMuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3BhZ2VzL3BhcnRlbmFpcmVzLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXNzZXRzL2Zyb250ZW5kL2Nzcy9wYWdlcy9yZXNlYXUuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3BhZ2VzL2pvdXJuYWwuY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9hc3NldHMvZnJvbnRlbmQvY3NzL3BhZ2VzL2NvbnRhY3QuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBPUllBIOKAlCBEZXNpZ24gdG9rZW5zXG4gICBTb3VyY2U6IGFuYWx5c2UgdmlzdWVsbGUgKyDDqWNoYW50aWxsb25uYWdlIHBpeGVsIGRlIC9kZXNpZ25zLXBuZ1xuICAgVm9pciAvZG9jcy9kZXNpZ24tc3lzdGVtLm1kIHBvdXIgbGUgZMOpdGFpbCBkZXMgbWVzdXJlcyBldCBoeXBvdGjDqHNlcy5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbjpyb290IHtcbiAgLyogLS0tLSBDb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1jb2xvci1iZzogIzBhMDkwNztcbiAgLS1jb2xvci1iZy1hbHQ6ICMxNDExMGQ7XG4gIC0tY29sb3Itc3VyZmFjZTogIzFjMTcxMjtcbiAgLS1jb2xvci1ibGFjazogIzAwMDAwMDtcblxuICAtLWNvbG9yLWdvbGQ6ICNjOWE3N2M7XG4gIC0tY29sb3ItZ29sZC1saWdodDogI2U4Yzc5NztcbiAgLS1jb2xvci1nb2xkLWRpbTogIzhhN2E2OTtcblxuICAtLWNvbG9yLXdoaXRlOiAjZmZmZmZmO1xuICAtLWNvbG9yLWNyZWFtOiAjZjNlZmU4O1xuICAtLWNvbG9yLXRleHQtYm9keTogI2M5YzZjMDtcbiAgLS1jb2xvci10ZXh0LW11dGVkOiAjOGE4NjdlO1xuXG4gIC0tY29sb3ItYm9yZGVyOiByZ2JhKDIwMSwgMTY3LCAxMjQsIDAuMzUpO1xuICAtLWNvbG9yLWJvcmRlci1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpO1xuICAtLWNvbG9yLW92ZXJsYXk6IHJnYmEoMTAsIDksIDcsIDAuNTUpO1xuICAtLWNvbG9yLW92ZXJsYXktc3Ryb25nOiByZ2JhKDEwLCA5LCA3LCAwLjgpO1xuXG4gIC8qIC0tLS0gVHlwb2dyYXBoeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1mb250LXNlcmlmOiBcIlBsYXlmYWlyIERpc3BsYXlcIiwgR2VvcmdpYSwgXCJUaW1lcyBOZXcgUm9tYW5cIiwgc2VyaWY7XG4gIC0tZm9udC1zYW5zOiBcIk1vbnRzZXJyYXRcIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtcblxuICAtLWZzLWRpc3BsYXk6IGNsYW1wKDIuNzVyZW0sIDQuNXZ3LCA0Ljc1cmVtKTtcbiAgLS1mcy1oMTogY2xhbXAoMi4yNXJlbSwgMy42dncsIDMuNXJlbSk7XG4gIC0tZnMtaDI6IGNsYW1wKDEuNzVyZW0sIDIuNnZ3LCAyLjVyZW0pO1xuICAtLWZzLWgzOiBjbGFtcCgxLjI1cmVtLCAxLjZ2dywgMS41cmVtKTtcbiAgLS1mcy1oNDogMS4xMjVyZW07XG4gIC0tZnMtcXVvdGU6IGNsYW1wKDEuMzc1cmVtLCAydncsIDEuNzVyZW0pO1xuICAtLWZzLWJvZHktbGc6IDEuMTI1cmVtO1xuICAtLWZzLWJvZHk6IDFyZW07XG4gIC0tZnMtc21hbGw6IDAuODc1cmVtO1xuICAtLWZzLW5hdjogMC44MTI1cmVtO1xuICAtLWZzLWV5ZWJyb3c6IDAuNzVyZW07XG5cbiAgLS1saC1oZWFkaW5nOiAxLjE1O1xuICAtLWxoLWJvZHk6IDEuNztcbiAgLS1saC10aWdodDogMS4xO1xuXG4gIC0tdHJhY2tpbmctZXllYnJvdzogMC4yNWVtO1xuICAtLXRyYWNraW5nLW5hdjogMC4xMmVtO1xuICAtLXRyYWNraW5nLXdpZGU6IDAuMTVlbTtcblxuICAvKiAtLS0tIFNwYWNpbmcgKGJhc2UgOHB4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gIC0tc3BhY2UtMTogMC41cmVtOyAgIC8qIDhweCAqL1xuICAtLXNwYWNlLTI6IDFyZW07ICAgICAvKiAxNnB4ICovXG4gIC0tc3BhY2UtMzogMS41cmVtOyAgIC8qIDI0cHggKi9cbiAgLS1zcGFjZS00OiAycmVtOyAgICAgLyogMzJweCAqL1xuICAtLXNwYWNlLTU6IDNyZW07ICAgICAvKiA0OHB4ICovXG4gIC0tc3BhY2UtNjogNHJlbTsgICAgIC8qIDY0cHggKi9cbiAgLS1zcGFjZS03OiA2cmVtOyAgICAgLyogOTZweCAqL1xuICAtLXNwYWNlLTg6IDhyZW07ICAgICAvKiAxMjhweCAqL1xuICAtLXNwYWNlLTk6IDEwcmVtOyAgICAvKiAxNjBweCAqL1xuXG4gIC8qIC0tLS0gTGF5b3V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1jb250YWluZXItbWF4OiAxNDAwcHg7XG4gIC0tY29udGFpbmVyLXBhZGRpbmc6IGNsYW1wKDEuMjVyZW0sIDZ2dywgNnJlbSk7XG4gIC0tY2FyZC1nYXA6IDAuNXJlbTtcblxuICAvKiAtLS0tIFJhZGl1cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1yYWRpdXMtbm9uZTogMDtcbiAgLS1yYWRpdXMtc206IDJweDtcblxuICAvKiAtLS0tIEJvcmRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1ib3JkZXItd2lkdGg6IDFweDtcblxuICAvKiAtLS0tIFNoYWRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS1zaGFkb3ctY2FyZDogMCAyNHB4IDYwcHggcmdiYSgwLCAwLCAwLCAwLjM1KTtcblxuICAvKiAtLS0tIE1vdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgLS10cmFuc2l0aW9uLWJhc2U6IDI1MG1zIGVhc2U7XG4gIC0tdHJhbnNpdGlvbi1zbG93OiA1MDBtcyBlYXNlO1xuXG4gIC8qIC0tLS0gWi1pbmRleCBzY2FsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4gIC0tei1oZWFkZXI6IDEwMDtcbiAgLS16LW92ZXJsYXk6IDIwMDtcbiAgLS16LW1vZGFsOiAzMDA7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgT1JZQSDigJQgQmFzZVxuICAgUmVzZXQgKyB0eXBvZ3JhcGhpZSBuYXRpdmUgKyB1dGlsaXRhaXJlcyBkZSBsYXlvdXQuXG4gICBEw6lwZW5kIGRlIHZhcmlhYmxlcy5jc3MgKGNoYXJnZXIgYXZhbnQgY2UgZmljaGllcikuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sIHtcbiAgZm9udC1zaXplOiAxMDAlO1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xufVxuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iZyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zYW5zKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1ib2R5KTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWxoLWJvZHkpO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbn1cblxuaW1nLFxucGljdHVyZSxcbnZpZGVvLFxuc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG51bCxcbm9sIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgbWFyZ2luOiAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zZXJpZik7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1saC1oZWFkaW5nKTtcbn1cblxuaDEgeyBmb250LXNpemU6IHZhcigtLWZzLWgxKTsgfVxuaDIgeyBmb250LXNpemU6IHZhcigtLWZzLWgyKTsgfVxuaDMgeyBmb250LXNpemU6IHZhcigtLWZzLWgzKTsgfVxuaDQge1xuICBmb250LXNpemU6IHZhcigtLWZzLWg0KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2Fucyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbnAge1xuICBtYXJnaW46IDA7XG59XG5cbnAgKyBwIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5lbSwgaSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuYnV0dG9uIHtcbiAgZm9udDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5pbnB1dCxcbnRleHRhcmVhLFxuc2VsZWN0IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbmhyIHtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gIG1hcmdpbjogMDtcbn1cblxuLyogLS0tLSBGb2N1cyAmIHNlbGVjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG46Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1nb2xkKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbn1cblxuOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1nb2xkKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJnKTtcbn1cblxuLyogLS0tLSBMYXlvdXQgdXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogdmFyKC0tY29udGFpbmVyLW1heCk7XG4gIG1hcmdpbi1pbmxpbmU6IGF1dG87XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1jb250YWluZXItcGFkZGluZyk7XG59XG5cbi5zZWN0aW9uIHtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc3BhY2UtOCk7XG59XG5cbi5zZWN0aW9uLS10aWdodCB7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNwYWNlLTYpO1xufVxuXG4uc2VjdGlvbi0tYWx0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmctYWx0KTtcbn1cblxuLyogLS0tLSBUZXh0IHV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmV5ZWJyb3cge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNhbnMpO1xuICBmb250LXNpemU6IHZhcigtLWZzLWV5ZWJyb3cpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctZXllYnJvdyk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnRleHQtc2VyaWYtaXRhbGljIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2VyaWYpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi50ZXh0LWJvZHktbGcge1xuICBmb250LXNpemU6IHZhcigtLWZzLWJvZHktbGcpO1xuICBtYXgtd2lkdGg6IDQ4Y2g7XG59XG5cbi50ZXh0LW11dGVkIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4ubWVhc3VyZSB7XG4gIG1heC13aWR0aDogNDJjaDtcbn1cblxuLyogLS0tLSBWaXN1YWxseSBoaWRkZW4gKGExMXkpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnNyLW9ubHkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJvcmRlcjogMDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBPUllBIOKAlCBDb21wb25lbnRzXG4gICBIZWFkZXIsIG5hdmlnYXRpb24sIGJvdXRvbnMsIGNhcnRlcywgY2l0YXRpb25zLCBmb290ZXIuXG4gICBEw6lwZW5kIGRlIHZhcmlhYmxlcy5jc3MgZXQgYmFzZS5jc3MgKGNoYXJnZXIgYXZhbnQgY2UgZmljaGllcikuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIEhlYWRlciAvIE5hdmlnYXRpb25cbiAgIENvbXBvcnRlbWVudCBhdSBzY3JvbGwgKGZvbmQgb3BhcXVlKSBub24gdmlzaWJsZSBzdXIgbGVzIG1hcXVldHRlc1xuICAgc3RhdGlxdWVzIOKAlCAuc2l0ZS1oZWFkZXItLXNvbGlkIGVzdCBmb3VybmkgcG91ciDDqnRyZSB0b2dnbMOpIGVuIEpTLlxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5zaXRlLWhlYWRlciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgaW5zZXQtaW5saW5lOiAwO1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IHZhcigtLXotaGVhZGVyKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tY29udGFpbmVyLXBhZGRpbmcpO1xuICBoZWlnaHQ6IDlyZW07XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTAsIDksIDcsIDAuNTUpLCB0cmFuc3BhcmVudCk7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKSwgaGVpZ2h0IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5zaXRlLWhlYWRlci0tc29saWQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gIGhlaWdodDogNi41cmVtO1xufVxuXG4uc2l0ZS1oZWFkZXJfX2xvZ28ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuMzVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uc2l0ZS1oZWFkZXJfX2xvZ28tbWFyayB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgZm9udC1zaXplOiAyLjc1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5zaXRlLWhlYWRlcl9fbG9nby10YWdsaW5lIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2Fucyk7XG4gIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctd2lkZSk7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkLWRpbSk7XG59XG5cbi5zaXRlLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5zaXRlLW5hdl9fbGluayB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1ibG9jazogMC41cmVtO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zZXJpZik7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHJnYmEoMjQzLCAyMzksIDIzMiwgMC44NSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5zaXRlLW5hdl9fbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnNpdGUtbmF2X19saW5rW2FyaWEtY3VycmVudD1cInBhZ2VcIl0ge1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xufVxuXG4uc2l0ZS1uYXZfX2xpbmtbYXJpYS1jdXJyZW50PVwicGFnZVwiXTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IC0wLjI1cmVtO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5zaXRlLWhlYWRlcl9fdXRpbGl0eSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctbmF2KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uc2l0ZS1oZWFkZXJfX3V0aWxpdHkgYnV0dG9uIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uc2l0ZS1oZWFkZXJfX3V0aWxpdHkgYnV0dG9uW2FyaWEtY3VycmVudD1cInRydWVcIl0sXG4uc2l0ZS1oZWFkZXJfX3V0aWxpdHkgYnV0dG9uOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnNpdGUtaGVhZGVyX19tZW51LXRvZ2dsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogNXB4O1xuICB3aWR0aDogMjhweDtcbn1cblxuLnNpdGUtaGVhZGVyX19tZW51LXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbn1cblxuLnNpdGUtaGVhZGVyX19tZW51LXRvZ2dsZSBzcGFuIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1nb2xkKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24tYmFzZSksIG9wYWNpdHkgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBIZWFkZXIg4oCUIG1vYmlsZSBuYXYgZHJhd2VyXG4gICBFbiBkZXNzb3VzIGRlIDk2MHB4LCBsYSBuYXZpZ2F0aW9uIGRldmllbnQgdW4gdGlyb2lyIHF1aSBnbGlzc2UgZGVwdWlzXG4gICBsYSBnYXVjaGUgKHRyYW5zbGF0ZVgpLCBhdmVjIHNvbiBwcm9wcmUgYm91dG9uIGRlIGZlcm1ldHVyZSBldCB1blxuICAgZm9uZCBhc3NvbWJyaSBjbGlxdWFibGUuIE91dmVydHVyZS9mZXJtZXR1cmUgdG9nZ2zDqWVzIGVuIEpTIHZpYSBsYVxuICAgY2xhc3NlIC5zaXRlLWhlYWRlci5uYXYtb3BlbiDigJQgdm9pciBqcy9tYWluLmpzLlxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5zaXRlLW5hdl9fY2xvc2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubmF2LWJhY2tkcm9wIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk2MHB4KSB7XG4gIC5zaXRlLW5hdiB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwIGF1dG8gMCAwO1xuICAgIHotaW5kZXg6IHZhcigtLXotb3ZlcmxheSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gICAgd2lkdGg6IG1pbig4NXZ3LCAyMnJlbSk7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwYWRkaW5nOiA3cmVtIHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnKTtcbiAgICBib3JkZXItcmlnaHQ6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGVhc2U7XG4gIH1cblxuICAuc2l0ZS1oZWFkZXIubmF2LW9wZW4gLnNpdGUtbmF2IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cblxuICAuc2l0ZS1uYXZfX2xpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZnMtaDQpO1xuICB9XG5cbiAgLnNpdGUtbmF2X19jbG9zZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogdmFyKC0tc3BhY2UtMyk7XG4gICAgcmlnaHQ6IHZhcigtLXNwYWNlLTMpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMi41cmVtO1xuICAgIGhlaWdodDogMi41cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gIH1cblxuICAuc2l0ZS1uYXZfX2Nsb3NlOmhvdmVyIHtcbiAgICBvcGFjaXR5OiAwLjY1O1xuICB9XG5cbiAgLm5hdi1iYWNrZHJvcCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIC8qIERvaXQgcmVzdGVyIHNvdXMgLnNpdGUtaGVhZGVyIChxdWkgY3LDqWUgc29uIHByb3ByZSBjb250ZXh0ZVxuICAgICAgIGQnZW1waWxlbWVudCkgcG91ciBuZSBwYXMgcGFzc2VyIGRldmFudCBsZSB0aXJvaXIgZGUgbmF2LCBxdWkgZXN0XG4gICAgICAgdW4gZW5mYW50IGR1IGhlYWRlci4gKi9cbiAgICB6LWluZGV4OiBjYWxjKHZhcigtLXotaGVhZGVyKSAtIDEpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAsIDksIDcsIDAuNyk7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2U7XG4gIH1cblxuICAuc2l0ZS1oZWFkZXIubmF2LW9wZW4gfiAubmF2LWJhY2tkcm9wIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1MjBweCkge1xuICAuc2l0ZS1oZWFkZXIge1xuICAgIGhlaWdodDogNnJlbTtcbiAgfVxuXG4gIC5zaXRlLW5hdiB7XG4gICAgcGFkZGluZy10b3A6IDZyZW07XG4gIH1cblxuICAuc2l0ZS1oZWFkZXJfX2xvZ28tbWFyayB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICB9XG5cbiAgLnNpdGUtaGVhZGVyX19sb2dvLXRhZ2xpbmUge1xuICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBCdXR0b25zXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICBwYWRkaW5nOiAxLjEyNXJlbSAycmVtO1xuICBib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW5vbmUpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2Fucyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtbmF2KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGUpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKSwgYmFja2dyb3VuZC1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uYnRuX19hcnJvdyB7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5idG46aG92ZXIge1xuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDIwMSwgMTY3LCAxMjQsIDAuMDgpO1xufVxuXG4uYnRuOmhvdmVyIC5idG5fX2Fycm93IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDZweCk7XG59XG5cbi5idG4tLXRleHQge1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5idG4tLXRleHQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgRGl2aWRlclxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5kaXZpZGVyIHtcbiAgd2lkdGg6IDNyZW07XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1nb2xkKTtcbiAgYm9yZGVyOiAwO1xuICBtYXJnaW4tYmxvY2s6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uZGl2aWRlci0tc29mdCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlci1zb2Z0KTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBDYXJkcyDigJQgcHJvamVjdCAvIGRlc3RpbmF0aW9uIChncmlsbGUgbW9zYcOvcXVlIHBob3RvKVxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5jYXJkLXByb2plY3Qge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgbWluLWhlaWdodDogMjJyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuXG4uY2FyZC1wcm9qZWN0IGltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tdHJhbnNpdGlvbi1zbG93KTtcbn1cblxuLmNhcmQtcHJvamVjdDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCB2YXIoLS1jb2xvci1vdmVybGF5LXN0cm9uZyksIHRyYW5zcGFyZW50IDYwJSk7XG59XG5cbi5jYXJkLXByb2plY3Q6aG92ZXIgaW1nIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLmNhcmQtcHJvamVjdF9fYm9keSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLmNhcmQtcHJvamVjdF9fdGl0bGUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zZXJpZik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtaDMpO1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xufVxuXG4uY2FyZC1wcm9qZWN0X19jYXB0aW9uIHtcbiAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xufVxuXG4uY2FyZC1wcm9qZWN0X19hcnJvdyB7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY2FyZC1wcm9qZWN0OmhvdmVyIC5jYXJkLXByb2plY3RfX2Fycm93IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgQ2FyZHMg4oCUIGZlYXR1cmUgLyBpY29uIChleC4gXCJBIENVUkFURUQgRUNPU1lTVEVNXCIpXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLmZlYXR1cmUtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoOXJlbSwgMWZyKSk7XG59XG5cbi5jYXJkLWZlYXR1cmUge1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLWxlZnQ6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLXNvZnQpO1xufVxuXG4uY2FyZC1mZWF0dXJlOmZpcnN0LWNoaWxkIHtcbiAgYm9yZGVyLWxlZnQ6IDA7XG59XG5cbi5jYXJkLWZlYXR1cmVfX2ljb24ge1xuICB3aWR0aDogMi4yNXJlbTtcbiAgaGVpZ2h0OiAyLjI1cmVtO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4uY2FyZC1mZWF0dXJlX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xufVxuXG4uY2FyZC1mZWF0dXJlX19kZXNjIHtcbiAgbWFyZ2luLXRvcDogMC41cmVtO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENhcmRzIOKAlCBudW1iZXJlZCBwcm9jZXNzIHN0ZXAgKGV4LiBcIjAxIOKAlCBVTkRFUlNUQU5EXCIpXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnN0ZXAge1xuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlci1zb2Z0KTtcbn1cblxuLnN0ZXA6bGFzdC1jaGlsZCB7XG4gIGJvcmRlci1yaWdodDogMDtcbn1cblxuLnN0ZXBfX251bWJlciB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNhbnMpO1xuICBmb250LXNpemU6IDEuNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4uc3RlcF9fdGl0bGUge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5zdGVwX19pY29uIHtcbiAgd2lkdGg6IDJyZW07XG4gIGhlaWdodDogMnJlbTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnN0ZXBfX2Rlc2Mge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBRdW90ZVxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5xdW90ZSB7XG4gIG1heC13aWR0aDogMzJyZW07XG59XG5cbi5xdW90ZV9fdGV4dCB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBmb250LXNpemU6IHZhcigtLWZzLXF1b3RlKTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnF1b3RlX19jaXRlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi5xdW90ZV9fbmFtZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4ucXVvdGVfX3JvbGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBGb290ZXJcbiAgIEV4dHJhcG9sw6kgZHUgbGFuZ2FnZSB2aXN1ZWwgKGF1Y3VuZSBtYXF1ZXR0ZSBkZSBmb290ZXIgZm91cm5pZSDigJRcbiAgIHZvaXIgZG9jcy9kZXNpZ24tc3lzdGVtLm1kIMKnOSBldCBkb2NzL3BhZ2VzLm1kKS5cbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uc2l0ZS1mb290ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgcGFkZGluZy1ibG9jazogdmFyKC0tc3BhY2UtNykgdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5zaXRlLWZvb3Rlcl9fZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS41ZnIgcmVwZWF0KDMsIDFmcik7XG4gIGdhcDogdmFyKC0tc3BhY2UtNSk7XG59XG5cbi5zaXRlLWZvb3Rlcl9fbG9nbyB7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgZm9udC1zaXplOiAxLjc1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMC4xMmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5zaXRlLWZvb3Rlcl9fdGFnbGluZSB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICBtYXgtd2lkdGg6IDI4Y2g7XG59XG5cbi5zaXRlLWZvb3Rlcl9faGVhZGluZyB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtZXllYnJvdyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFja2luZy1leWVicm93KTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLnNpdGUtZm9vdGVyX19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctYmxvY2s6IDAuMzc1cmVtO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5zaXRlLWZvb3Rlcl9fbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnNpdGUtZm9vdGVyX19ib3R0b20ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTcpO1xuICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLXNvZnQpO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLnNpdGUtZm9vdGVyX19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIH1cblxuICAuc2l0ZS1mb290ZXJfX2JvdHRvbSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIFBhZ2UgaGVybyDigJQgaW1hZ2UgcGxlaW4gw6ljcmFuIGV0IGNvbnRlbnUgc3VwZXJwb3PDqSwgY29tbWUgc3VyIGxhIEhvbWUuXG4gICBDb21tdW4gYXV4IHBhZ2VzIEFib3V0LCBBcHByb2FjaCwgRXhwZXJ0aXNlLCBQcm9qZWN0cywgUGFydG5lcnMsXG4gICBOZXR3b3JrLCBKb3VybmFsIGV0IENvbnRhY3QuXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnBhZ2UtaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgbWluLWhlaWdodDogMTAwc3ZoO1xuICBwYWRkaW5nOiA5cmVtIHZhcigtLWNvbnRhaW5lci1wYWRkaW5nKSB2YXIoLS1zcGFjZS02KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGFnZS1oZXJvX19ncmlkIHtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5wYWdlLWhlcm9fX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHBhZGRpbmctYmxvY2s6IHZhcigtLXNwYWNlLTUpO1xuICBtYXgtd2lkdGg6IDM0cmVtO1xufVxuXG4ucGFnZS1oZXJvX190aXRsZSB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBmb250LXNpemU6IHZhcigtLWZzLWRpc3BsYXkpO1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xufVxuXG4ucGFnZS1oZXJvX19sZWFkIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1heC13aWR0aDogNDNjaDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnBhZ2UtaGVyb19fY29udGVudCAuYnRuIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5wYWdlLWhlcm9fX21lZGlhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5wYWdlLWhlcm9fX21lZGlhOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6XG4gICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgcmdiYSgxMCwgOSwgNywgLjk0KSAwJSwgcmdiYSgxMCwgOSwgNywgLjgyKSAyNSUsIHJnYmEoMTAsIDksIDcsIC4zNSkgNTIlLCB0cmFuc3BhcmVudCA3NSUpLFxuICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTAsIDksIDcsIC40NSkgMCUsIHRyYW5zcGFyZW50IDI1JSksXG4gICAgbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgxMCwgOSwgNywgLjcpIDAlLCB0cmFuc3BhcmVudCAzNSUpO1xufVxuXG4ucGFnZS1oZXJvX19tZWRpYSBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgMzUlO1xufVxuXG4ucGFnZS1oZXJvX190YWdzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICB0b3A6IGNhbGMoOXJlbSArIHZhcigtLXNwYWNlLTUpKTtcbiAgcmlnaHQ6IHZhcigtLWNvbnRhaW5lci1wYWRkaW5nKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBnYXA6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1leWVicm93KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLWV5ZWJyb3cpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbiAgdGV4dC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAuODUpO1xufVxuXG4ucGFnZS1oZXJvX190YWdzLWRpdmlkZXIge1xuICB3aWR0aDogMS41cmVtO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luLWJsb2NrOiAwLjc1cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4ucGFnZS1oZXJvX190YWdzLW5vdGUge1xuICBtYXgtd2lkdGg6IDhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkLWRpbSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAucGFnZS1oZXJvX19tZWRpYTo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6XG4gICAgICBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHJnYmEoMTAsIDksIDcsIC44NiksIHJnYmEoMTAsIDksIDcsIC41KSksXG4gICAgICBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDEwLCA5LCA3LCAuNjUpLCB0cmFuc3BhcmVudCA1MCUpO1xuICB9XG5cbiAgLnBhZ2UtaGVyb19fdGFncyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLnBhZ2UtaGVybyB7XG4gICAgcGFkZGluZy10b3A6IDZyZW07XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xuICB9XG5cbiAgLnBhZ2UtaGVyb19fdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMi4yNXJlbSwgOXZ3LCAyLjc1cmVtKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIENUQSBiYW5uZXIg4oCUIGJhbmRlYXUgZGUgY2zDtHR1cmUgcGxlaW4gY2FkcmUgKGZpbiBkZSBjaGFxdWUgcGFnZSlcbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY3RhLWJhbm5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWluLWhlaWdodDogMzByZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jdGEtYmFubmVyX19tZWRpYSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIHotaW5kZXg6IDA7XG59XG5cbi5jdGEtYmFubmVyX19tZWRpYSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmN0YS1iYW5uZXJfX3NjcmltIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgYmFja2dyb3VuZDpcbiAgICBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCByZ2JhKDEwLCA5LCA3LCAuOTIpIDAlLCByZ2JhKDEwLCA5LCA3LCAuNykgMjglLCB0cmFuc3BhcmVudCA2MCUpLFxuICAgIGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMTAsIDksIDcsIC43KSAwJSwgdHJhbnNwYXJlbnQgMzUlKTtcbn1cblxuLmN0YS1iYW5uZXJfX2NvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIG1heC13aWR0aDogMzRyZW07XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1jb250YWluZXItcGFkZGluZyk7XG59XG5cbi5jdGEtYmFubmVyX190aXRsZSB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtaDIpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xufVxuXG4uY3RhLWJhbm5lcl9fdGFnbGluZSB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uY3RhLWJhbm5lcl9fY29udGVudCAuYnRuLFxuLmN0YS1iYW5uZXJfX2NvbnRlbnQgLmJ0bi0tdGV4dCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uY3RhLWJhbm5lcl9fdGFncyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgdG9wOiB2YXIoLS1zcGFjZS01KTtcbiAgcmlnaHQ6IHZhcigtLWNvbnRhaW5lci1wYWRkaW5nKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICBnYXA6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1leWVicm93KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLWV5ZWJyb3cpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbiAgdGV4dC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAuODUpO1xufVxuXG4uY3RhLWJhbm5lcl9fdGFncy1kaXZpZGVyIHtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbi1ibG9jazogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLmN0YS1iYW5uZXJfX3RhZ3Mtbm90ZSB7XG4gIG1heC13aWR0aDogOHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQtZGltKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDcwMHB4KSB7XG4gIC5jdGEtYmFubmVyX190YWdzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgU2lnbmF0dXJlIOKAlCBhdHRyaWJ1dGlvbiBtYW51c2NyaXRlIChleC4gXCJBZGlsIEVycmFpc3Mg4oCUIEZvdW5kZXIgJiBEaXJlY3RvclwiKVxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5zaWduYXR1cmUge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2VyaWYpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4uc2lnbmF0dXJlLXJvbGUge1xuICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgIFN0YXRzIOKAlCBjaGlmZnJlcyBjbMOpcyAoZXguIFwiMTUrIENPVU5UUklFUyAvIDMwKyBDSVRJRVMgLyDiiJ4gUE9TU0lCSUxJVElFU1wiKVxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5zdGF0cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5zdGF0c19fbnVtYmVyIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2VyaWYpO1xuICBmb250LXNpemU6IDIuMjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnN0YXRzX19sYWJlbCB7XG4gIG1hcmdpbi10b3A6IDAuMjVyZW07XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgUGFydG5lciBjYXJkIOKAlCBzdHVkaW8gcGFydGVuYWlyZSAocGhvdG8gKyBub20gKyB0YWdzICsgZGVzY3JpcHRpb24pXG4gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnBhcnRuZXItZ3JpZCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTYpO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gIC5wYXJ0bmVyLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5jYXJkLXBhcnRuZXJfX21lZGlhIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAyMHJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmNhcmQtcGFydG5lcl9fbWVkaWEgaW1nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLXNsb3cpO1xufVxuXG4uY2FyZC1wYXJ0bmVyOmhvdmVyIC5jYXJkLXBhcnRuZXJfX21lZGlhIGltZyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5jYXJkLXBhcnRuZXJfX21lZGlhOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHZhcigtLWNvbG9yLW92ZXJsYXktc3Ryb25nKSwgdHJhbnNwYXJlbnQgNTUlKTtcbn1cblxuLmNhcmQtcGFydG5lcl9fbWVkaWEtYm9keSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5jYXJkLXBhcnRuZXJfX25hbWUge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zZXJpZik7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtaDMpO1xuICBjb2xvcjogdmFyKC0tY29sb3Itd2hpdGUpO1xufVxuXG4uY2FyZC1wYXJ0bmVyX19sb2NhdGlvbiB7XG4gIG1hcmdpbi10b3A6IDAuMzVyZW07XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xufVxuXG4uY2FyZC1wYXJ0bmVyX19ib2R5IHtcbiAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uY2FyZC1wYXJ0bmVyX190YWdzIHtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkLWRpbSk7XG59XG5cbi5jYXJkLXBhcnRuZXJfX2Rlc2Mge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbi5jYXJkLXBhcnRuZXJfX2xpbmsge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICBEZXRhaWwgcGFnZSDigJQgZ2FiYXJpdCBkZSBmaWNoZSBnw6luw6lyaXF1ZSAocHJvamV0LCBhcnRpY2xlLi4uKVxuICAgVXRpbGlzw6kgcGFyIHByb2pldC5waHAgZXQgYXJ0aWNsZS5waHAgOiBmaWwgZCdBcmlhbmUsIGhlcm8gcGxlaW4gY2FkcmUsXG4gICBjb250ZW51ICsgc2lkZWJhciBcImZhY3RzXCIsIGdyaWxsZSBcInJlbGF0ZWRcIiwgcGFnZSA0MDQgaW50ZXJuZS5cbiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uYnJlYWRjcnVtYiB7XG4gIHBhZGRpbmctdG9wOiA3cmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi5icmVhZGNydW1iX19yb3cge1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zcGFjZS0zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5icmVhZGNydW1iX19yb3cgYSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLmJyZWFkY3J1bWJfX3JvdyBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4uYnJlYWRjcnVtYl9fcm93IFthcmlhLWN1cnJlbnQ9XCJwYWdlXCJdIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnByb2plY3QtaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMzJyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnByb2plY3QtaGVybyBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLnByb2plY3QtaGVyb19fc2NyaW0ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDEwLCA5LCA3LCAuOSkgMCUsIHJnYmEoMTAsIDksIDcsIC4yNSkgNDUlLCB0cmFuc3BhcmVudCA3MCUpO1xufVxuXG4ucHJvamVjdC1oZXJvX19jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS01KSB2YXIoLS1jb250YWluZXItcGFkZGluZyk7XG59XG5cbi5wcm9qZWN0LWhlcm9fX2NvbnRlbnQgaDEge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1oMSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi5wcm9qZWN0LWhlcm9fX2xvY2F0aW9uIHtcbiAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1ib2R5LWxnKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbi5wcm9qZWN0LWNvbnRlbnRfX2dyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuNmZyIDFmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4ucHJvamVjdC1jb250ZW50X19pbnRybyB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXNlcmlmKTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1oNCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5wcm9qZWN0LWNvbnRlbnRfX21haW4gcCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbn1cblxuLnByb2plY3QtY29udGVudF9fcXVvdGUge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS01KTtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLWxlZnQ6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG4ucHJvamVjdC1jb250ZW50X19xdW90ZSAucXVvdGVfX3RleHQge1xuICBmb250LXNpemU6IHZhcigtLWZzLWg0KTtcbn1cblxuLnByb2plY3QtZmFjdHMge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDdyZW07XG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcbn1cblxuLnByb2plY3QtZmFjdHNfX2xpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4ucHJvamVjdC1mYWN0c19fbGlzdCBkdCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5wcm9qZWN0LWZhY3RzX19saXN0IGRkIHtcbiAgbWFyZ2luLXRvcDogMC4zNXJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnByb2plY3QtZmFjdHNfX3NlcnZpY2VzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjI1cmVtO1xufVxuXG4ucHJvamVjdC1mYWN0c19fY3RhIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIC5wcm9qZWN0LWNvbnRlbnRfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLnByb2plY3QtZmFjdHMge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbn1cblxuLnJlbGF0ZWRfX2dyaWQge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1jYXJkLWdhcCk7XG59XG5cbi5yZWxhdGVkX19ncmlkIC5jYXJkLXByb2plY3Qge1xuICBtaW4taGVpZ2h0OiAxOHJlbTtcbn1cblxuLnJlbGF0ZWRfX2FsbCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcbiAgLnJlbGF0ZWRfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi5ub3QtZm91bmQge1xuICBwYWRkaW5nLXRvcDogMTByZW07XG4gIG1pbi1oZWlnaHQ6IDYwdmg7XG59XG5cbi5ub3QtZm91bmQgaDEge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLm5vdC1mb3VuZF9fZGVzYyB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZSBBY2N1ZWlsIOKAlCBzdHlsZXMgc3DDqWNpZmlxdWVzXG4gICBTb3VyY2UgOiAvZGVzaWducy1wbmcvT1JZQV9QYWdlX0FjY3VlaWxfSGVyby5wbmdcbiAgIETDqXBlbmQgZGUgdmFyaWFibGVzLmNzcywgYmFzZS5jc3MsIGNvbXBvbmVudHMuY3NzIChjaGFyZ2VyIGF2YW50IGNlIGZpY2hpZXIpLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmhlcm8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmciBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi5oZXJvX19zbGlkZXIub3dsLWNhcm91c2VsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGdyaWQtYXJlYTogMSAvIDEgLyAzIC8gMjtcbiAgbWluLXdpZHRoOiAwO1xufVxuXG4uaGVyb19fc2xpZGVyOm5vdCgub3dsLWxvYWRlZCkgLmhlcm9fX3NsaWRlOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmhlcm9fX3NsaWRlciAub3dsLXN0YWdlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmhlcm9fX3NsaWRlciAub3dsLXN0YWdlOjphZnRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5oZXJvX19zbGlkZXIgLm93bC1pdGVtIHtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5oZXJvX19zbGlkZXIgLm93bC1pdGVtLFxuLmhlcm9fX3NsaWRlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmhlcm9fX3NsaWRlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIG1pbi1oZWlnaHQ6IDEwMHN2aDtcbn1cblxuLmhlcm9fX21lZGlhIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogMDtcbn1cblxuLmhlcm9fX21lZGlhIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBvYmplY3QtcG9zaXRpb246IGNlbnRlciAzNSU7XG59XG5cbi5oZXJvX19zY3JpbSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6XG4gICAgbGluZWFyLWdyYWRpZW50KDEwMGRlZywgcmdiYSgxMCwgOSwgNywgLjk0KSAwJSwgcmdiYSgxMCwgOSwgNywgLjgpIDIwJSwgcmdiYSgxMCwgOSwgNywgLjM1KSA0MiUsIHRyYW5zcGFyZW50IDYyJSksXG4gICAgbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgxMCwgOSwgNywgLjkpIDAlLCByZ2JhKDEwLCA5LCA3LCAuMzUpIDIyJSwgdHJhbnNwYXJlbnQgNDAlKTtcbn1cblxuLmhlcm9fX2lubmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXRvcDogOXJlbTsgLyogZMOpZ2FnZSBsZSBoZWFkZXIgZml4ZSAoZG9pdCBjb3JyZXNwb25kcmUgw6Agc2EgaGF1dGV1cikgKi9cbiAgcGFkZGluZy1ib3R0b206IDEwcmVtOyAvKiByw6lzZXJ2ZSBsJ2VzcGFjZSBkZXMgY29tbWFuZGVzIGNvbW11bmVzICovXG59XG5cbi8qIExlIGhlcm8gZXN0IHBsZWluIGNhZHJlIChlZGdlLXRvLWVkZ2UpLCBjb250cmFpcmVtZW50IGF1eCBzZWN0aW9ucyBkZVxuICAgY29udGVudSBzdGFuZGFyZCA6IG9uIHJlcHJlbmQgbGUgcGFkZGluZyBmbHVpZGUgZGUgLmNvbnRhaW5lciBtYWlzIHNhbnNcbiAgIHNvbiBtYXgtd2lkdGgsIHNpbm9uIGxlIGNvbnRlbnUgc2UgcmVjZW50cmUgZXQgc2UgcmVzc2VycmUgc3VyIGdyYW5kXG4gICDDqWNyYW4gYXUgbGlldSBkZSBzdWl2cmUgbGVzIGJvcmRzIGR1IHZpZXdwb3J0IGNvbW1lIHN1ciBsYSBtYXF1ZXR0ZS4gKi9cbi5oZXJvX190b3AsXG4uaGVyb19fYm90dG9tIHtcbiAgcGFkZGluZy1pbmxpbmU6IHZhcigtLWNvbnRhaW5lci1wYWRkaW5nKTtcbn1cblxuLmhlcm9fX3RvcCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGdhcDogdmFyKC0tc3BhY2UtNSk7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS03KTtcbn1cblxuLmhlcm9fX2ludHJvIHtcbiAgbWF4LXdpZHRoOiAyOXJlbTtcbn1cblxuLmhlcm9fX3RpdGxlIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtZGlzcGxheSk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci13aGl0ZSk7XG59XG5cbi5oZXJvX19sZWFkIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIG1heC13aWR0aDogMzJjaDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbi5oZXJvX19pbnRybyAuYnRuIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi8qIC0tLS0gUmlnaHQtc2lkZSB2ZXJ0aWNhbCB0YWcgbGlzdCAoXCJCdWlsZCAvIERlc2lnbiAvIFNvdXJjZVwiKSAtLS0tLS0tLS0gKi9cblxuLmhlcm9fX3RhZ3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gIGdhcDogMC41cmVtO1xuICBmbGV4LXNocmluazogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1leWVicm93KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLWV5ZWJyb3cpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbiAgdGV4dC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAuODUpO1xufVxuXG4uaGVyb19fdGFncy1kaXZpZGVyIHtcbiAgd2lkdGg6IDEuNXJlbTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbi1ibG9jazogMC43NXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLmhlcm9fX3RhZ3Mtbm90ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXgtd2lkdGg6IDhyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkLWRpbSk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qIC0tLS0gQm90dG9tIHJvdzogc2Nyb2xsIGN1ZSAvIHBpbGxhcnMgYmFyIC8gcGFnaW5hdGlvbiAtLS0tLS0tLS0tLS0tLS0tICovXG5cbi5oZXJvX19ib3R0b20ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG4gIGdyaWQtYXJlYTogMiAvIDEgLyAzIC8gMjtcbiAgYWxpZ24tc2VsZjogZW5kO1xuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5oZXJvX19zY3JvbGwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgZmxleC1zaHJpbms6IDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtZXllYnJvdyk7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS10cmFja2luZy1leWVicm93KTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uaGVyb19fc2Nyb2xsIHN2ZyB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnBpbGxhcnMtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleDogMTtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICBwYWRkaW5nLWlubGluZTogdmFyKC0tc3BhY2UtNCk7XG4gIGJvcmRlci1pbmxpbmU6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLXNvZnQpO1xufVxuXG4ucGlsbGFycy1iYXJfX2l0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNzVyZW07XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zcGFjZS0zKTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBib3JkZXItbGVmdDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG59XG5cbi5waWxsYXJzLWJhcl9faXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci1sZWZ0OiAwO1xufVxuXG4ucGlsbGFycy1iYXJfX2ljb24ge1xuICB3aWR0aDogMnJlbTtcbiAgaGVpZ2h0OiAycmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5waWxsYXJzLWJhcl9faXRlbSBzcGFuIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1heC13aWR0aDogN3JlbTtcbiAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5oZXJvX19wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjc1cmVtO1xuICBmbGV4LXNocmluazogMDtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLmhlcm9fX3BhZ2luYXRpb24tY3VycmVudCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5oZXJvX19wYWdpbmF0aW9uLWxpbmUge1xuICB3aWR0aDogMnJlbTtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5oZXJvX19wYWdpbmF0aW9uIGJ1dHRvbiB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMnJlbTtcbiAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5oZXJvX19wYWdpbmF0aW9uIGJ1dHRvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLmhlcm9fX3BhZ2luYXRpb25baGlkZGVuXSxcbi5oZXJvX19hdXRvcGxheSAuaGVyb19fcGxheS1pY29uLFxuLmhlcm9fX2F1dG9wbGF5LmlzLXBhdXNlZCAuaGVyb19fcGF1c2UtaWNvbiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5oZXJvX19hdXRvcGxheS5pcy1wYXVzZWQgLmhlcm9fX3BsYXktaWNvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uaGVyb19fcGFnaW5hdGlvbiBidXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gIG91dGxpbmU6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1nb2xkKTtcbiAgb3V0bGluZS1vZmZzZXQ6IDNweDtcbn1cblxuLyogLS0tLSBSZXNwb25zaXZlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAuaGVyb19fdGFncyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogODYwcHgpIHtcbiAgLmhlcm9fX2lubmVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjRyZW07XG4gIH1cblxuICAuaGVyb19fYm90dG9tIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAucGlsbGFycy1iYXIge1xuICAgIG9yZGVyOiAzO1xuICAgIGZsZXgtYmFzaXM6IDEwMCU7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHJvdy1nYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIGJvcmRlci1pbmxpbmU6IDA7XG4gICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLnBpbGxhcnMtYmFyX19pdGVtIHtcbiAgICBmbGV4LWJhc2lzOiAzMCU7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gIC5oZXJvX19pbm5lciB7XG4gICAgcGFkZGluZy1ib3R0b206IDMwcmVtO1xuICB9XG5cbiAgLmhlcm9fX3RvcCB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTUpO1xuICB9XG5cbiAgLmhlcm9fX3RpdGxlIHtcbiAgICBmb250LXNpemU6IGNsYW1wKDIuMjVyZW0sIDl2dywgMi43NXJlbSk7XG4gIH1cblxuICAuaGVyb19fc2Nyb2xsIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLnBpbGxhcnMtYmFyX19pdGVtIHtcbiAgICBmbGV4OiAwIDEgY2FsYygoMTAwJSAtIDFyZW0pIC8gMik7XG4gICAgcGFkZGluZy1pbmxpbmU6IDAuNXJlbTtcbiAgfVxuXG4gIC5waWxsYXJzLWJhciB7XG4gICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgY29sdW1uLWdhcDogMXJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTIwcHgpIHtcbiAgLmhlcm9fX2lubmVyIHtcbiAgICBwYWRkaW5nLXRvcDogNnJlbTsgLyogZG9pdCBjb3JyZXNwb25kcmUgw6AgbGEgaGF1dGV1ciBkdSBoZWFkZXIgw6AgY2UgbcOqbWUgYnJlYWtwb2ludCAqL1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgU2VjdGlvbnMgc291cyBsZSBoZXJvIOKAlCBhdWN1bmUgbWFxdWV0dGUgYXUtZGVsw6AgZHUgcHJlbWllciDDqWNyYW5cbiAgIChwYWdpbmF0aW9uIFwiMDEg4oCUIDA0XCIgZHUgaGVybyksIGNvbnN0cnVpdGVzIMOgIHBhcnRpciBkdSBkZXNpZ24gc3lzdGVtLlxuICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIC0tLS0gUGhpbG9zb3BoeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5waGlsb3NvcGh5X19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMS4xZnIgMS4yZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNSk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5waGlsb3NvcGh5X19xdW90ZSAucXVvdGVfX3RleHQge1xuICBmb250LXNpemU6IHZhcigtLWZzLXF1b3RlKTtcbn1cblxuLnBoaWxvc29waHlfX21lZGlhIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBhc3BlY3QtcmF0aW86IDcgLyA4O1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLnBoaWxvc29waHlfX25vdGUgaDIge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLnBoaWxvc29waHlfX25vdGUgcCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTMpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbn1cblxuLnBoaWxvc29waHlfX25vdGUgLmJ0biB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTQpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gIC5waGlsb3NvcGh5X19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuXG4gIC5waGlsb3NvcGh5X19tZWRpYSB7XG4gICAgbWF4LXdpZHRoOiAyNHJlbTtcbiAgICBvcmRlcjogLTE7XG4gIH1cbn1cblxuLyogLS0tLSBGZWF0dXJlZCBwcm9qZWN0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5mZWF0dXJlZC1wcm9qZWN0c19faW50cm8ge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjZmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4uZmVhdHVyZWQtcHJvamVjdHNfX2ludHJvIHA6bGFzdC1jaGlsZCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xuICBtYXgtd2lkdGg6IDQ4Y2g7XG59XG5cbi5mZWF0dXJlZC1wcm9qZWN0c19fZ3JpZCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTUpO1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBnYXA6IHZhcigtLWNhcmQtZ2FwKTtcbn1cblxuLmZlYXR1cmVkLXByb2plY3RzX19ncmlkIC5jYXJkLXByb2plY3Qge1xuICBtaW4taGVpZ2h0OiAyMHJlbTtcbn1cblxuLmZlYXR1cmVkLXByb2plY3RzX19hbGwge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAuZmVhdHVyZWQtcHJvamVjdHNfX2ludHJvIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHtcbiAgLmZlYXR1cmVkLXByb2plY3RzX19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuXG4vKiAtLS0tIEdsb2JhbCBuZXR3b3JrIHRlYXNlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ubmV0d29yay10ZWFzZXJfX2dyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjNmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLm5ldHdvcmstdGVhc2VyX19pbnRybyBwIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIG1heC13aWR0aDogNDBjaDtcbn1cblxuLm5ldHdvcmstdGVhc2VyX19tZWRpYSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAubmV0d29yay10ZWFzZXJfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLm5ldHdvcmstdGVhc2VyX19tZWRpYSB7XG4gICAgb3JkZXI6IC0xO1xuICB9XG59XG5cbi8qIC0tLS0gQ3JlYXRpdmUgcGFydG5lcnMgdGVhc2VyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5jcmVhdGl2ZS1wYXJ0bmVyc19faW50cm8ge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjZmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4uY3JlYXRpdmUtcGFydG5lcnNfX2ludHJvIHA6bGFzdC1jaGlsZCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xuICBtYXgtd2lkdGg6IDYwY2g7XG59XG5cbi5jcmVhdGl2ZS1wYXJ0bmVyc19fYWxsIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcbiAgLmNyZWF0aXZlLXBhcnRuZXJzX19pbnRybyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQYWdlIEFib3V0IOKAlCBzdHlsZXMgc3DDqWNpZmlxdWVzXG4gICBTb3VyY2UgOiAvZGVzaWducy1wbmcvT1JZQV9BYm91dF9QYWdlX01hcXVldHRlLnBuZ1xuICAgRMOpcGVuZCBkZSB2YXJpYWJsZXMuY3NzLCBiYXNlLmNzcywgY29tcG9uZW50cy5jc3MuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucGFnZS1oZXJvX19sZWFkICsgLnBhZ2UtaGVyb19fbGVhZCB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiAtLS0tIEZvdW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uZm91bmRlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnKTtcbn1cblxuLmZvdW5kZXJfX2dyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjFmciAxLjJmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmZvdW5kZXJfX3F1b3RlIC5xdW90ZV9fdGV4dCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtcXVvdGUpO1xufVxuXG4uZm91bmRlcl9fcG9ydHJhaXQgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGFzcGVjdC1yYXRpbzogNyAvIDg7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4uZm91bmRlcl9fdGl0bGUge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmZvdW5kZXJfX2JpbyBwIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWJvZHkpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gIC5mb3VuZGVyX19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuXG4gIC5mb3VuZGVyX19wb3J0cmFpdCB7XG4gICAgb3JkZXI6IC0xO1xuICAgIG1heC13aWR0aDogMjRyZW07XG4gIH1cbn1cblxuLyogLS0tLSBQb3NpdGlvbmluZyArIFZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5wb3NpdGlvbmluZy1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAwLjhmciAxLjJmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNik7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5wb3NpdGlvbmluZy1pbnRybyBwIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbi5wb3NpdGlvbmluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMjZyZW07XG4gIGFzcGVjdC1yYXRpbzogMTtcbiAgbWFyZ2luLWlubGluZTogYXV0bztcbn1cblxuLnBvc2l0aW9uaW5nX19yaW5nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbnNldDogMTIlO1xuICBib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xufVxuXG4ucG9zaXRpb25pbmdfX2NlbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5wb3NpdGlvbmluZ19fY2VudGVyLW1hcmsge1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zZXJpZik7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5wb3NpdGlvbmluZ19fY2VudGVyLXRhZ2xpbmUge1xuICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICBmb250LXNpemU6IDAuNTYyNXJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLXdpZGUpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZC1kaW0pO1xufVxuXG4ucG9zaXRpb25pbmdfX25vZGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtc21hbGwpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi5wb3NpdGlvbmluZ19fbm9kZS0tY2xpZW50ICAgIHsgdG9wOiAwOyAgICBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApOyB9XG4ucG9zaXRpb25pbmdfX25vZGUtLWRlc2lnbmVycyB7IHRvcDogMTYlOyAgcmlnaHQ6IDA7ICB0ZXh0LWFsaWduOiByaWdodDsgfVxuLnBvc2l0aW9uaW5nX19ub2RlLS1zdXBwbGllcnMgeyB0b3A6IDUwJTsgIHJpZ2h0OiAtMiU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbi5wb3NpdGlvbmluZ19fbm9kZS0tcGFydG5lcnMgIHsgYm90dG9tOiAxMiU7IHJpZ2h0OiAwOyB0ZXh0LWFsaWduOiByaWdodDsgfVxuLnBvc2l0aW9uaW5nX19ub2RlLS1hcnRpc2FucyAgeyBib3R0b206IDEyJTsgbGVmdDogMDsgfVxuLnBvc2l0aW9uaW5nX19ub2RlLS10ZWNobmljYWwgeyB0b3A6IDUwJTsgIGxlZnQ6IC0yJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9XG4ucG9zaXRpb25pbmdfX25vZGUtLWFyY2hpdGVjdHN7IHRvcDogMTYlOyAgbGVmdDogMDsgfVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gIC5wb3NpdGlvbmluZy1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuXG4gIC5wb3NpdGlvbmluZyB7XG4gICAgbWF4LXdpZHRoOiAyMnJlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLnBvc2l0aW9uaW5nX19ub2RlIHtcbiAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICB9XG59XG5cbi52YWx1ZXNfX2xpc3Qge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbn1cblxuLnZhbHVlc19faXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuXG4udmFsdWVzX19pY29uIHtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAxLjc1cmVtO1xuICBoZWlnaHQ6IDEuNzVyZW07XG4gIG1hcmdpbi10b3A6IDAuMTVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLnZhbHVlc19fdGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWNyZWFtKTtcbn1cblxuLnZhbHVlc19fZGVzYyB7XG4gIG1hcmdpbi10b3A6IDAuMnJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQYWdlIE91ciBBcHByb2FjaCDigJQgc3R5bGVzIHNww6ljaWZpcXVlc1xuICAgU291cmNlIDogL2Rlc2lnbnMtcG5nL09SWUFfRGlzY292ZXJfT3VyX0FwcHJvYWNoX01hcXVldHRlLnBuZ1xuICAgRMOpcGVuZCBkZSB2YXJpYWJsZXMuY3NzLCBiYXNlLmNzcywgY29tcG9uZW50cy5jc3MuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ucHJvY2Vzc19faW50cm8ge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjRmciBhdXRvO1xuICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi5wcm9jZXNzX19pbnRybyBoMiB7XG4gIG1heC13aWR0aDogMTRjaDtcbn1cblxuLnByb2Nlc3NfX2Rlc2Mge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbiAgbWF4LXdpZHRoOiA0OGNoO1xufVxuXG4ucHJvY2Vzc19fdGFncyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMC41cmVtO1xuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNwYWNlLTMpO1xuICBib3JkZXItbGVmdDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xufVxuXG4uc3RlcHMge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKTtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAucHJvY2Vzc19faW50cm8ge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLnByb2Nlc3NfX3RhZ3Mge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3BhY2UtMik7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5zdGVwcyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxuXG4gIC5zdGVwIHtcbiAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG4gICAgcGFkZGluZy1yaWdodDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3BhY2UtMyk7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gIC5zdGVwcyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLyogLS0tLSBNYXRlcmlhbHMgKyBxdW90ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ubWF0ZXJpYWxzX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMS4yZnIgMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ubWF0ZXJpYWxzX19tZWRpYSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi5tYXRlcmlhbHNfX3F1b3RlIHtcbiAgbWF4LXdpZHRoOiBub25lO1xufVxuXG4ubWF0ZXJpYWxzX19ub3RlIHA6Zmlyc3QtY2hpbGQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMDBweCkge1xuICAubWF0ZXJpYWxzX19ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBhZ2UgRXhwZXJ0aXNlIOKAlCBzdHlsZXMgc3DDqWNpZmlxdWVzXG4gICBTb3VyY2UgOiAvZGVzaWducy1wbmcvT1JZQV9QYXJ0bmVyc19NYXF1ZXR0ZS5wbmcgKGNvbnRlbnUgXCLDqWNvc3lzdMOobWVcIixcbiAgIHJlcG9zaXRpb25uw6kgaWNpIGRlcHVpcyBQYXJ0bmVycyDigJQgdm9pciBkb2NzL3BhZ2VzLm1kKS5cbiAgIETDqXBlbmQgZGUgdmFyaWFibGVzLmNzcywgYmFzZS5jc3MsIGNvbXBvbmVudHMuY3NzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjb3N5c3RlbV9faW50cm8ge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjZmcjtcbiAgZ2FwOiB2YXIoLS1zcGFjZS01KTtcbiAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4uZWNvc3lzdGVtX19pbnRybyBwOmxhc3QtY2hpbGQge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbiAgbWF4LXdpZHRoOiA0OGNoO1xufVxuXG4uZWNvc3lzdGVtX19ncmlkIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNSk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDYsIDFmcik7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcbiAgLmVjb3N5c3RlbV9faW50cm8ge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG5cbiAgLmVjb3N5c3RlbV9fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICByb3ctZ2FwOiB2YXIoLS1zcGFjZS00KTtcbiAgfVxuXG4gIC5jYXJkLWZlYXR1cmU6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLmVjb3N5c3RlbV9fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxuXG4gIC5jYXJkLWZlYXR1cmU6bnRoLWNoaWxkKDNuKzEpIHtcbiAgICBib3JkZXItbGVmdDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG4gIH1cblxuICAuY2FyZC1mZWF0dXJlOm50aC1jaGlsZCgybisxKSB7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gIH1cbn1cblxuLyogLS0tLSBSZWxhdGlvbnNoaXBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnJlbGF0aW9uc2hpcHNfX2dyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjFmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtNSk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5yZWxhdGlvbnNoaXBzX19tZWRpYSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgYXNwZWN0LXJhdGlvOiA0IC8gMztcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi5yZWxhdGlvbnNoaXBzX19ub3RlIHAge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0yKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMDAwcHgpIHtcbiAgLnJlbGF0aW9uc2hpcHNfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG5cbi8qIC0tLS0gR2xvYmFsIG5ldHdvcmsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ubmV0d29ya19fZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuNmZyIGF1dG87XG4gIGdhcDogdmFyKC0tc3BhY2UtNSk7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5uZXR3b3JrX19pbnRybyBwIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIG1heC13aWR0aDogMzRjaDtcbn1cblxuLm5ldHdvcmtfX21lZGlhIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBhc3BlY3QtcmF0aW86IDE2IC8gNjtcbiAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbi5uZXR3b3JrX19jaXRpZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAubmV0d29ya19fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cblxuICAubmV0d29ya19fY2l0aWVzIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZSBQcm9qZWN0cyDigJQgc3R5bGVzIHNww6ljaWZpcXVlc1xuICAgU291cmNlIDogL2Rlc2lnbnMtcG5nL09SWUFfTm9zX1JlYWxpc2F0aW9uc19NYXF1ZXR0ZS5wbmdcbiAgIETDqXBlbmQgZGUgdmFyaWFibGVzLmNzcywgYmFzZS5jc3MsIGNvbXBvbmVudHMuY3NzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZpbHRlcnMge1xuICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlci1zb2Z0KTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xufVxuXG4uZmlsdGVyc19fcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IHZhcigtLXNwYWNlLTQpO1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zcGFjZS0zKTtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uZmlsdGVyc19fbGlzdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLmZpbHRlcnNfX2xpbmsge1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZmlsdGVyc19fbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG5cbi5maWx0ZXJzX19saW5rLS1hY3RpdmUge1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5maWx0ZXJzX19saW5rLS1hY3RpdmU6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAtMC42cmVtO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5maWx0ZXJzX19tYXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1zbWFsbCk7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbn1cblxuLyogLS0tLSBHcmlkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLnByb2plY3QtZ3JpZF9fZW1wdHkge1xuICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zcGFjZS01KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5wcm9qZWN0LWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICBnYXA6IHZhcigtLWNhcmQtZ2FwKTtcbn1cblxuLnByb2plY3QtZ3JpZF9faXRlbS0tbGcge1xuICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICBncmlkLXJvdzogc3BhbiAyO1xufVxuXG4ucHJvamVjdC1ncmlkIC5jYXJkLXByb2plY3Qge1xuICBtaW4taGVpZ2h0OiAxNnJlbTtcbn1cblxuLnByb2plY3QtZ3JpZF9faXRlbS0tbGcge1xuICBtaW4taGVpZ2h0OiB1bnNldDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gIC5wcm9qZWN0LWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIH1cblxuICAucHJvamVjdC1ncmlkX19pdGVtLS1sZyB7XG4gICAgZ3JpZC1jb2x1bW46IHNwYW4gMjtcbiAgICBncmlkLXJvdzogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgLnByb2plY3QtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cblxuICAucHJvamVjdC1ncmlkX19pdGVtLS1sZyB7XG4gICAgZ3JpZC1jb2x1bW46IGF1dG87XG4gIH1cbn1cblxuLyogLS0tLSBRdW90ZSBiYW5uZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ucXVvdGUtYmFubmVyX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDAuOGZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucXVvdGUtYmFubmVyX19ub3RlIHAge1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbn1cblxuLnF1b3RlLWJhbm5lcl9fbWVkaWEgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGFzcGVjdC1yYXRpbzogNSAvIDM7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTAwMHB4KSB7XG4gIC5xdW90ZS1iYW5uZXJfX2dyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZSBQYXJ0bmVycyDigJQgc3R5bGVzIHNww6ljaWZpcXVlc1xuICAgU291cmNlIDogL2Rlc2lnbnMtcG5nL09SWUFfUGFydG5lcnNfQ3JlYXRpdmVfTmV0d29ya19NYXF1ZXR0ZS5wbmdcbiAgIETDqXBlbmQgZGUgdmFyaWFibGVzLmNzcywgYmFzZS5jc3MsIGNvbXBvbmVudHMuY3NzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNyZWF0aXZlX19pbnRybyB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDEuNmZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi5jcmVhdGl2ZV9faW50cm8gcDpsYXN0LWNoaWxkIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIG1heC13aWR0aDogNjBjaDtcbn1cblxuLnZhbHVlcy1yb3cge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS02KTtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNSwgMWZyKTtcbiAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS00KTtcbn1cblxuLnZhbHVlcy1yb3cgLmNhcmQtZmVhdHVyZV9fdGl0bGUge1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuICAuY3JlYXRpdmVfX2ludHJvIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgfVxuXG4gIC52YWx1ZXMtcm93IHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICAgIHJvdy1nYXA6IHZhcigtLXNwYWNlLTQpO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkge1xuICAudmFsdWVzLXJvdyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuXG4vKiAtLS0tIENsb3NpbmcgQ1RBICh2YXJpYW50ZSBjaXRhdGlvbikgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5jdGEtYmFubmVyIC5xdW90ZV9fdGV4dCB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZSBOZXR3b3JrIOKAlCBzdHlsZXMgc3DDqWNpZmlxdWVzXG4gICBTb3VyY2UgOiAvZGVzaWducy1wbmcvT1JZQV9OZXR3b3JrX01hcXVldHRlLnBuZ1xuICAgRMOpcGVuZCBkZSB2YXJpYWJsZXMuY3NzLCBiYXNlLmNzcywgY29tcG9uZW50cy5jc3MuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY29ubmVjdGVkX19ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAwLjhmciAxLjZmciBhdXRvO1xuICBnYXA6IHZhcigtLXNwYWNlLTUpO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY29ubmVjdGVkX19pbnRybyBwIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIG1heC13aWR0aDogMzRjaDtcbn1cblxuLmNvbm5lY3RlZF9fbWVkaWEgaW1nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGFzcGVjdC1yYXRpbzogMTYgLyA3O1xuICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmNvbm5lY3RlZF9fbm90ZSB7XG4gIG1heC13aWR0aDogMTRyZW07XG59XG5cbi5jb25uZWN0ZWRfX25vdGUgcCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tZnMtaDQpO1xuICBjb2xvcjogdmFyKC0tY29sb3ItY3JlYW0pO1xufVxuXG4uY29ubmVjdGVkX190YWdzIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMyk7XG4gIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS0zKTtcbiAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdvbGQpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDAuMzVyZW07XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcbiAgLmNvbm5lY3RlZF9fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cblxuICAuY29ubmVjdGVkX19ub3RlIHtcbiAgICBtYXgtd2lkdGg6IG5vbmU7XG4gIH1cbn1cblxuLyogLS0tLSBDaXR5IGdyaWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY2l0eS1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ2FwOiB2YXIoLS1jYXJkLWdhcCk7XG59XG5cbi5jaXR5LWdyaWQgLmNhcmQtcHJvamVjdCB7XG4gIG1pbi1oZWlnaHQ6IDIwcmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLmNpdHktZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTYwcHgpIHtcbiAgLmNpdHktZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLyogLS0tLSBRdW90ZSBiYW5uZXIgKHZhcmlhbnRlIDIgY29sb25uZXMpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4ucXVvdGUtYmFubmVyX19ncmlkLS1yZXNlYXUge1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxLjJmcjtcbn1cblxuLnF1b3RlLWJhbm5lcl9fZ3JpZC0tcmVzZWF1IC5xdW90ZSB7XG4gIG1heC13aWR0aDogMzRyZW07XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAucXVvdGUtYmFubmVyX19ncmlkLS1yZXNlYXUge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICB9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZSBKb3VybmFsIOKAlCBzdHlsZXMgc3DDqWNpZmlxdWVzXG4gICBBdWN1bmUgbWFxdWV0dGUgZm91cm5pZSA6IGxpc3RlIGQnYXJ0aWNsZXMgY29uc3RydWl0ZSDDoCBwYXJ0aXIgZHVcbiAgIGRlc2lnbiBzeXN0ZW0gZXhpc3RhbnQgKHZvaXIgaW5jL2pvdXJuYWwtZGF0YS5waHAgcG91ciBsZSBjb250ZW51KS5cbiAgIExlIGdhYmFyaXQgZGUgZMOpdGFpbCAoYXJ0aWNsZS5waHApIHLDqXV0aWxpc2UgbGVzIGNsYXNzZXMgZ8OpbsOpcmlxdWVzXG4gICBkZSBjb21wb25lbnRzLmNzcyAoYnJlYWRjcnVtYiwgcHJvamVjdC1oZXJvLCBwcm9qZWN0LWNvbnRlbnQsIGV0Yy4pLFxuICAgcGFydGFnw6llcyBhdmVjIHByb2pldC5waHAuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uam91cm5hbC1ncmlkIHtcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgZ2FwOiB2YXIoLS1jYXJkLWdhcCk7XG59XG5cbi5qb3VybmFsLWdyaWQgLmNhcmQtcHJvamVjdCB7XG4gIG1pbi1oZWlnaHQ6IDIwcmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgLmpvdXJuYWwtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTYwcHgpIHtcbiAgLmpvdXJuYWwtZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQYWdlIENvbnRhY3Qg4oCUIHN0eWxlcyBzcMOpY2lmaXF1ZXNcbiAgIEF1Y3VuZSBtYXF1ZXR0ZSBmb3VybmllIHBvdXIgY2V0dGUgcGFnZSA6IGNvbsOndWUgw6AgcGFydGlyIGR1IGRlc2lnblxuICAgc3lzdGVtIGV4aXN0YW50ICh2YXJpYWJsZXMuY3NzLCBjb21wb25lbnRzLmNzcykgZXQgZGVzIGNvb3Jkb25uw6llcyBkZVxuICAgbGEgY2FydGUgZGUgdmlzaXRlICgvZGVzaWducy1wbmcvT1JZQSBDYXJ0ZSBWaXNpdGUgQWRpbCA5MHg1MC5wbmcpLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNvbnRhY3QtaGVybyAucGFnZS1oZXJvX19jb250ZW50IHtcbiAgbWF4LXdpZHRoOiAzNHJlbTtcbn1cblxuLyogLS0tLSBDb250YWN0IGdyaWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4uY29udGFjdF9fZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS40ZnIgMWZyO1xuICBnYXA6IHZhcigtLXNwYWNlLTYpO1xuICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi5jb250YWN0LWZvcm0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uY29udGFjdC1mb3JtX19yb3cge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gIGdhcDogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5jb250YWN0LWZvcm1fX2ZpZWxkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAwLjVyZW07XG59XG5cbi5jb250YWN0LWZvcm1fX2ZpZWxkIHNwYW4ge1xuICBmb250LXNpemU6IHZhcigtLWZzLXNtYWxsKTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uY29udGFjdC1mb3JtX19maWVsZCBpbnB1dCxcbi5jb250YWN0LWZvcm1fX2ZpZWxkIHNlbGVjdCxcbi5jb250YWN0LWZvcm1fX2ZpZWxkIHRleHRhcmVhIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXItc29mdCk7XG4gIHBhZGRpbmctYmxvY2s6IDAuNjVyZW07XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1jcmVhbSk7XG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uY29udGFjdC1mb3JtX19maWVsZCBzZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEwJyBoZWlnaHQ9JzYnIHZpZXdCb3g9JzAgMCAxMCA2JyBmaWxsPSdub25lJyUzRSUzQ3BhdGggZD0nTTEgMWw0IDQgNC00JyBzdHJva2U9JyUyM2M5YTc3Yycgc3Ryb2tlLXdpZHRoPScxLjInLyUzRSUzQy9zdmclM0VcIik7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDAuMjVyZW0gY2VudGVyO1xufVxuXG4uY29udGFjdC1mb3JtX19maWVsZCB0ZXh0YXJlYSB7XG4gIHJlc2l6ZTogdmVydGljYWw7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xufVxuXG4uY29udGFjdC1mb3JtX19maWVsZCBpbnB1dDpmb2N1cyxcbi5jb250YWN0LWZvcm1fX2ZpZWxkIHNlbGVjdDpmb2N1cyxcbi5jb250YWN0LWZvcm1fX2ZpZWxkIHRleHRhcmVhOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLmNvbnRhY3QtZm9ybSAuYnRuIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtMik7XG59XG5cbi8qIC0tLS0gQ29udGFjdCBpbmZvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5jb250YWN0LWluZm9fX2xpc3Qge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IHZhcigtLXNwYWNlLTMpO1xufVxuXG4uY29udGFjdC1pbmZvX19saXN0IGR0IHtcbiAgZm9udC1zaXplOiB2YXIoLS1mcy1leWVicm93KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLWV5ZWJyb3cpO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ29sZCk7XG59XG5cbi5jb250YWN0LWluZm9fX2xpc3QgZGQge1xuICBtYXJnaW4tdG9wOiAwLjM1cmVtO1xuICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1ib2R5KTtcbn1cblxuLmNvbnRhY3QtaW5mb19fbGlzdCBkZCBhIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtYm9keSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG59XG5cbi5jb250YWN0LWluZm9fX2xpc3QgZGQgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1nb2xkKTtcbn1cblxuLmNvbnRhY3QtaW5mbyAuc2lnbmF0dXJlIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAuY29udGFjdF9fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU2MHB4KSB7XG4gIC5jb250YWN0LWZvcm1fX3JvdyB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cbn1cblxuLyogLS0tLSBPZmZpY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi5vZmZpY2VzX19ncmlkIHtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNSk7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3MDBweCkge1xuICAub2ZmaWNlc19fZ3JpZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gIH1cblxuICAub2ZmaWNlc19fZ3JpZCAuY2FyZC1mZWF0dXJlIHtcbiAgICBib3JkZXItbGVmdDogMDtcbiAgICBib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlci1zb2Z0KTtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTMpO1xuICB9XG5cbiAgLm9mZmljZXNfX2dyaWQgLmNhcmQtZmVhdHVyZTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/