/* ============================================================
   Pages — Design-System Application
   Implements DESIGN_SYSTEM.md vocabulary for ALL customer-facing
   pages: home, products, cart, auth (login/register/forgot/reset),
   account, legal (impressum/datenschutz/agb), checkout pages.
   Out of scope: configurator door grid (production-fixed).
   ============================================================ */

/* ──────────────────────────────────────────────────────────
   1. Foundational tokens (additive — does not rename existing)
   ────────────────────────────────────────────────────────── */

:root {
    /* Motion: phi-stepped from a 200 ms base (DESIGN_SYSTEM §8) */
    --motion-1: 124ms;        /* 1/φ — micro-feedback */
    --motion-2: 200ms;        /* 1   — default */
    --motion-3: 324ms;        /* φ   — entrances */
    --motion-4: 524ms;        /* φ²  — section fade */
    --motion-5: 848ms;        /* φ³  — celebratory */

    /* Easings */
    --ease-settle: cubic-bezier(0.22, 1.0, 0.36, 1.0);
    --ease-celebrate: cubic-bezier(0.34, 1.56, 0.64, 1.0);

    /* Phi proportions */
    --phi: 1.618;
    --phi-inv: 0.618;
    --sqrt-phi: 1.272;
}

/* ──────────────────────────────────────────────────────────
   2. .moment-card — the golden-rectangle "moment" recipe.
      Used for auth panels, success/cancel pages, narrow
      single-purpose cards. (DESIGN_SYSTEM §9)
   ────────────────────────────────────────────────────────── */

.moment-section {
    position: relative;
    min-height: calc(100vh - 240px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3.4375rem 1rem;          /* Fib 55 px on tall axis */
    overflow: hidden;
    background:
        radial-gradient(ellipse at top, rgba(var(--color-primary-rgb), 0.05) 0%, transparent 55%),
        radial-gradient(ellipse at bottom, rgba(216, 204, 184, 0.35) 0%, transparent 55%),
        var(--color-bg-warm);
}

/* Decorative golden-spiral motif, lower-right corner */
.moment-spiral {
    position: absolute;
    right: -1.3125rem;
    bottom: -2.125rem;
    width: 18rem;
    height: auto;
    color: var(--color-primary-text);
    opacity: 0.08;
    pointer-events: none;
}

.moment-card {
    --card-padding-block: 3.4375rem;   /* 55 px Fib */
    --card-padding-inline: 2.125rem;   /* 34 px Fib */

    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 34rem;
    background: var(--color-bg-white);
    border: 1px solid rgba(var(--color-primary-rgb), 0.18);
    border-radius: 1.8125rem;          /* concentric: 8 px inner + 34 px padding ≈ 42 px outer */
    box-shadow:
        0 1px 2px rgba(45, 55, 72, 0.04),
        0 21px 55px -8px rgba(45, 55, 72, 0.10);
    padding: var(--card-padding-block) var(--card-padding-inline);
    text-align: center;
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

.moment-card--wide {
    max-width: 55rem;                  /* Fib 880 px — for product/legal-listing cards */
}

@keyframes momentCardEnter {
    from { opacity: 0; transform: translateY(13px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ──────────────────────────────────────────────────────────
   3. .moment-badge — concentric-ring icon (DESIGN_SYSTEM §5)
   ────────────────────────────────────────────────────────── */

.moment-badge {
    color: var(--color-primary-text);
    margin: 0 auto 2.125rem;
    width: 144px;
    height: 144px;
    display: grid;
    place-items: center;
    animation: momentBadgePop var(--motion-4) var(--ease-celebrate) var(--motion-1) both;
}

.moment-badge svg { width: 144px; height: 144px; }

.moment-badge__disc { fill: var(--color-primary); filter: drop-shadow(0 4px 14px rgba(var(--color-primary-rgb), 0.30)); }
.moment-badge__disc--secondary { fill: var(--color-secondary); filter: drop-shadow(0 4px 14px rgba(138, 115, 88, 0.30)); }
.moment-badge__disc--neutral { fill: var(--color-text-muted); filter: drop-shadow(0 4px 14px rgba(113, 128, 150, 0.20)); }
.moment-badge__disc--accent { fill: var(--color-accent); filter: drop-shadow(0 4px 14px rgba(var(--color-primary-rgb), 0.25)); }

@keyframes momentBadgePop {
    from { opacity: 0; transform: scale(0.62); }
    to   { opacity: 1; transform: scale(1); }
}

/* ──────────────────────────────────────────────────────────
   4. Typography ladder (phi-stepped) — applied to .moment-card
      and to global page titles via .page-title-block
   ────────────────────────────────────────────────────────── */

.moment-card__eyebrow,
.page-eyebrow {
    margin: 0 0 0.5rem;
    font-family: var(--font-subheading);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-primary-dark);
}

.moment-card__title,
.page-title {
    margin: 0 0 1.3125rem;             /* 21 px */
    font-family: var(--font-heading);
    font-size: 2.058rem;               /* φ × √φ */
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    letter-spacing: -0.01em;
}

.moment-card__lede,
.page-lede {
    margin: 0 auto 2.125rem;
    max-width: 28rem;
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: var(--phi);
    color: var(--color-text-muted);
}

.page-title-block {
    text-align: center;
    margin: 3.4375rem auto 2.125rem;
    max-width: 38rem;
    padding: 0 1rem;
}

/* ──────────────────────────────────────────────────────────
   5. Section ornament (flower of life) — DESIGN_SYSTEM §6
   ────────────────────────────────────────────────────────── */

.section-ornament {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 0.375rem;
    margin: 2.125rem auto;
    max-width: 8rem;
    flex-wrap: wrap;
}

.section-ornament span {
    display: block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--color-primary);
    opacity: 0.4;
}

.section-ornament span:nth-child(4) {
    width: 8px;
    height: 8px;
    opacity: 0.65;
}

.section-ornament--inverse span { background: var(--color-bg-white); opacity: 0.6; }
.section-ornament--inverse span:nth-child(4) { opacity: 0.85; }

/* ──────────────────────────────────────────────────────────
   6. .btn-ghost — secondary outlined action (used everywhere)
   ────────────────────────────────────────────────────────── */

.btn-ghost {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.75rem 1.5rem;
    background: transparent;
    color: var(--color-text);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: var(--font-subheading);
    font-weight: 500;
    text-decoration: none;
    transition: border-color var(--motion-2) var(--ease-settle),
                color var(--motion-2) var(--ease-settle),
                background var(--motion-2) var(--ease-settle);
    cursor: pointer;
}

.btn-ghost:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-dark);
    background: rgba(var(--color-primary-rgb), 0.06);
}

/* ──────────────────────────────────────────────────────────
   7. Auth pages — apply moment-card recipe to existing markup
      (overrides the loose styles in main.css without renaming)
   ────────────────────────────────────────────────────────── */

.auth-section {
    position: relative;
    min-height: calc(100vh - 240px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3.4375rem 1rem;
    overflow: hidden;
    background:
        radial-gradient(ellipse at top, rgba(var(--color-primary-rgb), 0.05) 0%, transparent 55%),
        radial-gradient(ellipse at bottom, rgba(216, 204, 184, 0.35) 0%, transparent 55%),
        var(--color-bg-warm);
}

.auth-section .container {
    width: 100%;
    display: flex;
    justify-content: center;
}

.auth-card {
    /* Compose with .moment-card visuals */
    width: 100%;
    max-width: 32rem;
    background: var(--color-bg-white);
    border: 1px solid rgba(var(--color-primary-rgb), 0.18);
    border-radius: 1.8125rem;
    box-shadow:
        0 1px 2px rgba(45, 55, 72, 0.04),
        0 21px 55px -8px rgba(45, 55, 72, 0.10);
    padding: 3.4375rem 2.125rem;
    text-align: center;
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

.auth-card h1 {
    margin: 0 0 0.5rem;
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    letter-spacing: -0.01em;
}

.auth-subtitle {
    margin: 0 auto 2.125rem;
    max-width: 26rem;
    color: var(--color-text-muted);
    font-size: 1rem;
    line-height: var(--phi);
}

/* Optional badge slot at the top of an auth card */
.auth-badge {
    color: var(--color-primary-text);
    margin: 0 auto 1.3125rem;
    width: 96px;
    height: 96px;
    display: grid;
    place-items: center;
    animation: momentBadgePop var(--motion-4) var(--ease-celebrate) var(--motion-1) both;
}
.auth-badge svg { width: 96px; height: 96px; }

/* Form layout */
.auth-form {
    text-align: left;
    margin: 0 auto;
    max-width: 26rem;
}
.auth-form .form-group { margin-bottom: 1.3125rem; }
.auth-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.8125rem; }
.auth-form label {
    display: block;
    margin-bottom: 0.5rem;
    font-family: var(--font-subheading);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--color-text);
}
.auth-form input[type="text"],
.auth-form input[type="email"],
.auth-form input[type="password"] {
    width: 100%;
    padding: 0.8125rem 1rem;
    background: var(--color-bg-warm);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--color-text);
    transition: border-color var(--motion-2) var(--ease-settle),
                background var(--motion-2) var(--ease-settle);
    box-sizing: border-box;
}
.auth-form input:focus {
    outline: none;
    border-color: var(--color-primary);
    background: var(--color-bg-white);
    box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb), 0.18);
}
.auth-form .form-error,
.auth-form .form-success {
    padding: 0.8125rem 1rem;
    border-radius: var(--radius-md);
    margin-bottom: 1.3125rem;
    font-size: 0.875rem;
    line-height: var(--phi);
}
.auth-form .form-error { background: rgba(166, 35, 26, 0.08); border: 1px solid rgba(166, 35, 26, 0.22); color: var(--color-error); }
.auth-form .form-success { background: rgba(47, 122, 80, 0.08); border: 1px solid rgba(47, 122, 80, 0.22); color: var(--color-success); }

.auth-form button[type="submit"],
.auth-form .btn.btn-primary {
    width: 100%;
    margin-top: 0.5rem;
}

.auth-links {
    margin-top: 2.125rem;
    padding-top: 1.3125rem;
    border-top: 1px solid var(--color-border);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.5rem 0.8125rem;
    font-size: 0.875rem;
}
.auth-links a {
    color: var(--color-primary-dark);
    text-decoration: none;
    font-weight: 500;
    border-bottom: 1px solid rgba(var(--color-primary-rgb), 0.3);
    transition: border-color var(--motion-2) var(--ease-settle);
}
.auth-links a:hover { border-bottom-color: var(--color-primary); }
.auth-links .divider { color: var(--color-text-light); }

/* ──────────────────────────────────────────────────────────
   8. Hero — phi-stepped typography, ornament between sections
   ────────────────────────────────────────────────────────── */

.hero-compact h1 {
    font-family: var(--font-heading);
    font-size: 2.618rem;               /* φ² — flagship display */
    line-height: 1.1;
    font-weight: 600;
    letter-spacing: -0.015em;
}

@media (max-width: 480px) {
    .hero-compact h1 { font-size: 2.058rem; }
}

/* ──────────────────────────────────────────────────────────
   9. Products & Cart — typography refresh
   ────────────────────────────────────────────────────────── */

.products-section h1,
.cart-section h1,
.checkout-section h1 {
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    letter-spacing: -0.01em;
    margin-bottom: 2.125rem;
    text-align: center;
}

.products-section h1::after,
.cart-section h1::after,
.checkout-section h1::after,
.legal-section h1::after {
    content: "";
    display: block;
    width: 3.4375rem;                  /* 55 px Fib */
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--color-primary) 50%, transparent);
    margin: 0.8125rem auto 0;
    opacity: 0.7;
}

/* ──────────────────────────────────────────────────────────
   10. Legal pages — Impressum / Datenschutz / AGB
   ────────────────────────────────────────────────────────── */

.legal-section {
    padding: 3.4375rem 1rem 5.5625rem;
    background: var(--color-bg-warm);
    min-height: calc(100vh - 240px);
}

.legal-content {
    max-width: 42rem;                  /* close to a golden-rect line length */
    margin: 0 auto;
    background: var(--color-bg-white);
    border: 1px solid rgba(var(--color-primary-rgb), 0.14);
    border-radius: 1.8125rem;
    padding: 3.4375rem 2.125rem;
    box-shadow: 0 1px 2px rgba(45, 55, 72, 0.04), 0 13px 34px -8px rgba(45, 55, 72, 0.08);
    animation: momentCardEnter var(--motion-5) var(--ease-settle) both;
}

@media (max-width: 480px) {
    .legal-content { padding: 2.125rem 1.3125rem; border-radius: 1.5rem; }
}

/* EN-Rechtsseiten: Hinweis "courtesy translation" (i18n 2026-07-08) */
.legal-disclaimer {
    font-size: 0.875rem;
    color: var(--color-text-muted, #6b6257);
    border-left: 3px solid rgba(var(--color-primary-rgb), 0.35);
    padding-left: 0.875rem;
    margin-bottom: 1.5rem;
}

.legal-content h1 {
    font-family: var(--font-heading);
    font-size: 2.058rem;
    line-height: var(--sqrt-phi);
    font-weight: 600;
    color: var(--color-text);
    margin: 0 0 0.5rem;
    letter-spacing: -0.01em;
}

.legal-content .legal-updated {
    margin: 0 0 2.125rem;
    font-family: var(--font-subheading);
    font-size: 0.75rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-light);
}

.legal-content h2 {
    font-family: var(--font-subheading);
    font-size: 1.272rem;               /* √φ */
    line-height: 1.4;
    font-weight: 600;
    color: var(--color-text);
    margin: 2.125rem 0 0.8125rem;
}

.legal-content h3 {
    font-family: var(--font-subheading);
    font-size: 1rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--color-secondary-dark);
    margin: 1.3125rem 0 0.5rem;
    letter-spacing: 0.01em;
}

.legal-content p,
.legal-content li {
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: var(--phi);           /* exact φ for prose */
    color: var(--color-text);
    margin: 0 0 0.8125rem;
}

.legal-content ul,
.legal-content ol {
    margin: 0 0 1.3125rem;
    padding-left: 1.3125rem;
}

.legal-content li { margin-bottom: 0.5rem; }

.legal-content a {
    color: var(--color-primary-dark);
    text-decoration: none;
    border-bottom: 1px solid rgba(var(--color-primary-rgb), 0.4);
    transition: border-color var(--motion-2) var(--ease-settle);
}
.legal-content a:hover { border-bottom-color: var(--color-primary); }

.legal-content strong { font-weight: 600; color: var(--color-text); }

.legal-content hr {
    border: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-primary-rgb), 0.4) 50%, transparent);
    margin: 2.125rem 0;
}

/* Address blocks inside legal content */
.legal-content .legal-address {
    background: var(--color-bg-warm);
    border-left: 3px solid var(--color-primary);
    padding: 1rem 1.3125rem;
    margin: 1.3125rem 0;
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    font-style: normal;
    line-height: var(--phi);
}
.legal-content .legal-address strong { display: block; margin-bottom: 0.25rem; }

/* ──────────────────────────────────────────────────────────
   11. Reduced motion — disable all phi-derived animation
   ────────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .moment-card,
    .auth-card,
    .moment-badge,
    .auth-badge,
    .legal-content {
        animation: none;
    }
}

/* ──────────────────────────────────────────────────────────
   12. Tablet / mobile shrink for moment cards
   ────────────────────────────────────────────────────────── */

@media (max-width: 480px) {
    .moment-section,
    .auth-section { padding: 2.125rem 0.8125rem; align-items: flex-start; }
    .moment-card,
    .auth-card { padding: 2.125rem 1.3125rem; border-radius: 1.5rem; }
    .moment-card__title,
    .auth-card h1 { font-size: 1.618rem; }
    .moment-card__lede,
    .auth-subtitle { font-size: 0.9375rem; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jc3MvcGFnZXMtZGVzaWduLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O2lFQU1pRTs7QUFFakU7OytEQUUrRDs7QUFFL0Q7SUFDSSw4REFBOEQ7SUFDOUQsaUJBQWlCLFNBQVMseUJBQXlCO0lBQ25ELGlCQUFpQixTQUFTLGtCQUFrQjtJQUM1QyxpQkFBaUIsU0FBUyxvQkFBb0I7SUFDOUMsaUJBQWlCLFNBQVMsdUJBQXVCO0lBQ2pELGlCQUFpQixTQUFTLHNCQUFzQjs7SUFFaEQsWUFBWTtJQUNaLGlEQUFpRDtJQUNqRCxxREFBcUQ7O0lBRXJELG9CQUFvQjtJQUNwQixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGlCQUFpQjtBQUNyQjs7QUFFQTs7OzsrREFJK0Q7O0FBRS9EO0lBQ0ksa0JBQWtCO0lBQ2xCLCtCQUErQjtJQUMvQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2Qix1QkFBdUIsV0FBVywyQkFBMkI7SUFDN0QsZ0JBQWdCO0lBQ2hCOzs7NEJBR3dCO0FBQzVCOztBQUVBLHVEQUF1RDtBQUN2RDtJQUNJLGtCQUFrQjtJQUNsQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLFlBQVk7SUFDWixZQUFZO0lBQ1osZ0NBQWdDO0lBQ2hDLGFBQWE7SUFDYixvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSwrQkFBK0IsSUFBSSxjQUFjO0lBQ2pELCtCQUErQixJQUFJLGNBQWM7O0lBRWpELGtCQUFrQjtJQUNsQixVQUFVO0lBQ1YsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixpQ0FBaUM7SUFDakMsc0RBQXNEO0lBQ3RELHdCQUF3QixXQUFXLHlEQUF5RDtJQUM1Rjs7K0NBRTJDO0lBQzNDLDZEQUE2RDtJQUM3RCxrQkFBa0I7SUFDbEIsa0VBQWtFO0FBQ3RFOztBQUVBO0lBQ0ksZ0JBQWdCLG1CQUFtQixpREFBaUQ7QUFDeEY7O0FBRUE7SUFDSSxPQUFPLFVBQVUsRUFBRSwyQkFBMkIsRUFBRTtJ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RTtpQkFDYSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRTtJQUNqRTtvQkFDZ0IsbUJBQW1CLEVBQUU7SUFDckM7cUJBQ2lCLG9CQUFvQixFQUFFO0FBQzNDIiwiZmlsZSI6InBhZ2VzLWRlc2lnbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBhZ2VzIOKAlCBEZXNpZ24tU3lzdGVtIEFwcGxpY2F0aW9uXG4gICBJbXBsZW1lbnRzIERFU0lHTl9TWVNURU0ubWQgdm9jYWJ1bGFyeSBmb3IgQUxMIGN1c3RvbWVyLWZhY2luZ1xuICAgcGFnZXM6IGhvbWUsIHByb2R1Y3RzLCBjYXJ0LCBhdXRoIChsb2dpbi9yZWdpc3Rlci9mb3Jnb3QvcmVzZXQpLFxuICAgYWNjb3VudCwgbGVnYWwgKGltcHJlc3N1bS9kYXRlbnNjaHV0ei9hZ2IpLCBjaGVja291dCBwYWdlcy5cbiAgIE91dCBvZiBzY29wZTogY29uZmlndXJhdG9yIGRvb3IgZ3JpZCAocHJvZHVjdGlvbi1maXhlZCkuXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAxLiBGb3VuZGF0aW9uYWwgdG9rZW5zIChhZGRpdGl2ZSDigJQgZG9lcyBub3QgcmVuYW1lIGV4aXN0aW5nKVxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbjpyb290IHtcbiAgICAvKiBNb3Rpb246IHBoaS1zdGVwcGVkIGZyb20gYSAyMDAgbXMgYmFzZSAoREVTSUdOX1NZU1RFTSDCpzgpICovXG4gICAgLS1tb3Rpb24tMTogMTI0bXM7ICAgICAgICAvKiAxL8+GIOKAlCBtaWNyby1mZWVkYmFjayAqL1xuICAgIC0tbW90aW9uLTI6IDIwMG1zOyAgICAgICAgLyogMSAgIOKAlCBkZWZhdWx0ICovXG4gICAgLS1tb3Rpb24tMzogMzI0bXM7ICAgICAgICAvKiDPhiAgIOKAlCBlbnRyYW5jZXMgKi9cbiAgICAtLW1vdGlvbi00OiA1MjRtczsgICAgICAgIC8qIM+GwrIgIOKAlCBzZWN0aW9uIGZhZGUgKi9cbiAgICAtLW1vdGlvbi01OiA4NDhtczsgICAgICAgIC8qIM+GwrMgIOKAlCBjZWxlYnJhdG9yeSAqL1xuXG4gICAgLyogRWFzaW5ncyAqL1xuICAgIC0tZWFzZS1zZXR0bGU6IGN1YmljLWJlemllcigwLjIyLCAxLjAsIDAuMzYsIDEuMCk7XG4gICAgLS1lYXNlLWNlbGVicmF0ZTogY3ViaWMtYmV6aWVyKDAuMzQsIDEuNTYsIDAuNjQsIDEuMCk7XG5cbiAgICAvKiBQaGkgcHJvcG9ydGlvbnMgKi9cbiAgICAtLXBoaTogMS42MTg7XG4gICAgLS1waGktaW52OiAwLjYxODtcbiAgICAtLXNxcnQtcGhpOiAxLjI3Mjtcbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAyLiAubW9tZW50LWNhcmQg4oCUIHRoZSBnb2xkZW4tcmVjdGFuZ2xlIFwibW9tZW50XCIgcmVjaXBlLlxuICAgICAgVXNlZCBmb3IgYXV0aCBwYW5lbHMsIHN1Y2Nlc3MvY2FuY2VsIHBhZ2VzLCBuYXJyb3dcbiAgICAgIHNpbmdsZS1wdXJwb3NlIGNhcmRzLiAoREVTSUdOX1NZU1RFTSDCpzkpXG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLm1vbWVudC1zZWN0aW9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDI0MHB4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDFyZW07ICAgICAgICAgIC8qIEZpYiA1NSBweCBvbiB0YWxsIGF4aXMgKi9cbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IHRvcCwgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMDUpIDAlLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCBib3R0b20sIHJnYmEoMjE2LCAyMDQsIDE4NCwgMC4zNSkgMCUsIHRyYW5zcGFyZW50IDU1JSksXG4gICAgICAgIHZhcigtLWNvbG9yLWJnLXdhcm0pO1xufVxuXG4vKiBEZWNvcmF0aXZlIGdvbGRlbi1zcGlyYWwgbW90aWYsIGxvd2VyLXJpZ2h0IGNvcm5lciAqL1xuLm1vbWVudC1zcGlyYWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogLTEuMzEyNXJlbTtcbiAgICBib3R0b206IC0yLjEyNXJlbTtcbiAgICB3aWR0aDogMThyZW07XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXRleHQpO1xuICAgIG9wYWNpdHk6IDAuMDg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5tb21lbnQtY2FyZCB7XG4gICAgLS1jYXJkLXBhZGRpbmctYmxvY2s6IDMuNDM3NXJlbTsgICAvKiA1NSBweCBGaWIgKi9cbiAgICAtLWNhcmQtcGFkZGluZy1pbmxpbmU6IDIuMTI1cmVtOyAgIC8qIDM0IHB4IEZpYiAqL1xuXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAzNHJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMTgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEuODEyNXJlbTsgICAgICAgICAgLyogY29uY2VudHJpYzogOCBweCBpbm5lciArIDM0IHB4IHBhZGRpbmcg4omIIDQyIHB4IG91dGVyICovXG4gICAgYm94LXNoYWRvdzpcbiAgICAgICAgMCAxcHggMnB4IHJnYmEoNDUsIDU1LCA3MiwgMC4wNCksXG4gICAgICAgIDAgMjFweCA1NXB4IC04cHggcmdiYSg0NSwgNTUsIDcyLCAwLjEwKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1jYXJkLXBhZGRpbmctYmxvY2spIHZhcigtLWNhcmQtcGFkZGluZy1pbmxpbmUpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IG1vbWVudENhcmRFbnRlciB2YXIoLS1tb3Rpb24tNSkgdmFyKC0tZWFzZS1zZXR0bGUpIGJvdGg7XG59XG5cbi5tb21lbnQtY2FyZC0td2lkZSB7XG4gICAgbWF4LXdpZHRoOiA1NXJlbTsgICAgICAgICAgICAgICAgICAvKiBGaWIgODgwIHB4IOKAlCBmb3IgcHJvZHVjdC9sZWdhbC1saXN0aW5nIGNhcmRzICovXG59XG5cbkBrZXlmcmFtZXMgbW9tZW50Q2FyZEVudGVyIHtcbiAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEzcHgpOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDMuIC5tb21lbnQtYmFkZ2Ug4oCUIGNvbmNlbnRyaWMtcmluZyBpY29uIChERVNJR05fU1lTVEVNIMKnNSlcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubW9tZW50LWJhZGdlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgICBtYXJnaW46IDAgYXV0byAyLjEyNXJlbTtcbiAgICB3aWR0aDogMTQ0cHg7XG4gICAgaGVpZ2h0OiAxNDRweDtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgYW5pbWF0aW9uOiBtb21lbnRCYWRnZVBvcCB2YXIoLS1tb3Rpb24tNCkgdmFyKC0tZWFzZS1jZWxlYnJhdGUpIHZhcigtLW1vdGlvbi0xKSBib3RoO1xufVxuXG4ubW9tZW50LWJhZGdlIHN2ZyB7IHdpZHRoOiAxNDRweDsgaGVpZ2h0OiAxNDRweDsgfVxuXG4ubW9tZW50LWJhZGdlX19kaXNjIHsgZmlsbDogdmFyKC0tY29sb3ItcHJpbWFyeSk7IGZpbHRlcjogZHJvcC1zaGFkb3coMCA0cHggMTRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4zMCkpOyB9XG4ubW9tZW50LWJhZGdlX19kaXNjLS1zZWNvbmRhcnkgeyBmaWxsOiB2YXIoLS1jb2xvci1zZWNvbmRhcnkpOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNHB4IDE0cHggcmdiYSgxMzgsIDExNSwgODgsIDAuMzApKTsgfVxuLm1vbWVudC1iYWRnZV9fZGlzYy0tbmV1dHJhbCB7IGZpbGw6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpOyBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgNHB4IDE0cHggcmdiYSgxMTMsIDEyOCwgMTUwLCAwLjIwKSk7IH1cbi5tb21lbnQtYmFkZ2VfX2Rpc2MtLWFjY2VudCB7IGZpbGw6IHZhcigtLWNvbG9yLWFjY2VudCk7IGZpbHRlcjogZHJvcC1zaGFkb3coMCA0cHggMTRweCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4yNSkpOyB9XG5cbkBrZXlmcmFtZXMgbW9tZW50QmFkZ2VQb3Age1xuICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHNjYWxlKDAuNjIpOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICA0LiBUeXBvZ3JhcGh5IGxhZGRlciAocGhpLXN0ZXBwZWQpIOKAlCBhcHBsaWVkIHRvIC5tb21lbnQtY2FyZFxuICAgICAgYW5kIHRvIGdsb2JhbCBwYWdlIHRpdGxlcyB2aWEgLnBhZ2UtdGl0bGUtYmxvY2tcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4ubW9tZW50LWNhcmRfX2V5ZWJyb3csXG4ucGFnZS1leWVicm93IHtcbiAgICBtYXJnaW46IDAgMCAwLjVyZW07XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMThlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspO1xufVxuXG4ubW9tZW50LWNhcmRfX3RpdGxlLFxuLnBhZ2UtdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIDEuMzEyNXJlbTsgICAgICAgICAgICAgLyogMjEgcHggKi9cbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDIuMDU4cmVtOyAgICAgICAgICAgICAgIC8qIM+GIMOXIOKIms+GICovXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNxcnQtcGhpKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbn1cblxuLm1vbWVudC1jYXJkX19sZWRlLFxuLnBhZ2UtbGVkZSB7XG4gICAgbWFyZ2luOiAwIGF1dG8gMi4xMjVyZW07XG4gICAgbWF4LXdpZHRoOiAyOHJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4ucGFnZS10aXRsZS1ibG9jayB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbjogMy40Mzc1cmVtIGF1dG8gMi4xMjVyZW07XG4gICAgbWF4LXdpZHRoOiAzOHJlbTtcbiAgICBwYWRkaW5nOiAwIDFyZW07XG59XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgNS4gU2VjdGlvbiBvcm5hbWVudCAoZmxvd2VyIG9mIGxpZmUpIOKAlCBERVNJR05fU1lTVEVNIMKnNlxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5zZWN0aW9uLW9ybmFtZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjM3NXJlbTtcbiAgICBtYXJnaW46IDIuMTI1cmVtIGF1dG87XG4gICAgbWF4LXdpZHRoOiA4cmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlY3Rpb24tb3JuYW1lbnQgc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDVweDtcbiAgICBoZWlnaHQ6IDVweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgb3BhY2l0eTogMC40O1xufVxuXG4uc2VjdGlvbi1vcm5hbWVudCBzcGFuOm50aC1jaGlsZCg0KSB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBvcGFjaXR5OiAwLjY1O1xufVxuXG4uc2VjdGlvbi1vcm5hbWVudC0taW52ZXJzZSBzcGFuIHsgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpOyBvcGFjaXR5OiAwLjY7IH1cbi5zZWN0aW9uLW9ybmFtZW50LS1pbnZlcnNlIHNwYW46bnRoLWNoaWxkKDQpIHsgb3BhY2l0eTogMC44NTsgfVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDYuIC5idG4tZ2hvc3Qg4oCUIHNlY29uZGFyeSBvdXRsaW5lZCBhY3Rpb24gKHVzZWQgZXZlcnl3aGVyZSlcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uYnRuLWdob3N0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3ViaGVhZGluZyk7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW1vdGlvbi0yKSB2YXIoLS1lYXNlLXNldHRsZSksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLW1vdGlvbi0yKSB2YXIoLS1lYXNlLXNldHRsZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYnRuLWdob3N0OmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspO1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA2KTtcbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICA3LiBBdXRoIHBhZ2VzIOKAlCBhcHBseSBtb21lbnQtY2FyZCByZWNpcGUgdG8gZXhpc3RpbmcgbWFya3VwXG4gICAgICAob3ZlcnJpZGVzIHRoZSBsb29zZSBzdHlsZXMgaW4gbWFpbi5jc3Mgd2l0aG91dCByZW5hbWluZylcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG4uYXV0aC1zZWN0aW9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDI0MHB4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDFyZW07XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOlxuICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCB0b3AsIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjA1KSAwJSwgdHJhbnNwYXJlbnQgNTUlKSxcbiAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgYm90dG9tLCByZ2JhKDIxNiwgMjA0LCAxODQsIDAuMzUpIDAlLCB0cmFuc3BhcmVudCA1NSUpLFxuICAgICAgICB2YXIoLS1jb2xvci1iZy13YXJtKTtcbn1cblxuLmF1dGgtc2VjdGlvbiAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYXV0aC1jYXJkIHtcbiAgICAvKiBDb21wb3NlIHdpdGggLm1vbWVudC1jYXJkIHZpc3VhbHMgKi9cbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDMycmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xOCk7XG4gICAgYm9yZGVyLXJhZGl1czogMS44MTI1cmVtO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAgIDAgMXB4IDJweCByZ2JhKDQ1LCA1NSwgNzIsIDAuMDQpLFxuICAgICAgICAwIDIxcHggNTVweCAtOHB4IHJnYmEoNDUsIDU1LCA3MiwgMC4xMCk7XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDIuMTI1cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IG1vbWVudENhcmRFbnRlciB2YXIoLS1tb3Rpb24tNSkgdmFyKC0tZWFzZS1zZXR0bGUpIGJvdGg7XG59XG5cbi5hdXRoLWNhcmQgaDEge1xuICAgIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDIuMDU4cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zcXJ0LXBoaSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5hdXRoLXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IDAgYXV0byAyLjEyNXJlbTtcbiAgICBtYXgtd2lkdGg6IDI2cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7XG59XG5cbi8qIE9wdGlvbmFsIGJhZGdlIHNsb3QgYXQgdGhlIHRvcCBvZiBhbiBhdXRoIGNhcmQgKi9cbi5hdXRoLWJhZGdlIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS10ZXh0KTtcbiAgICBtYXJnaW46IDAgYXV0byAxLjMxMjVyZW07XG4gICAgd2lkdGg6IDk2cHg7XG4gICAgaGVpZ2h0OiA5NnB4O1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBhbmltYXRpb246IG1vbWVudEJhZGdlUG9wIHZhcigtLW1vdGlvbi00KSB2YXIoLS1lYXNlLWNlbGVicmF0ZSkgdmFyKC0tbW90aW9uLTEpIGJvdGg7XG59XG4uYXV0aC1iYWRnZSBzdmcgeyB3aWR0aDogOTZweDsgaGVpZ2h0OiA5NnB4OyB9XG5cbi8qIEZvcm0gbGF5b3V0ICovXG4uYXV0aC1mb3JtIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogMjZyZW07XG59XG4uYXV0aC1mb3JtIC5mb3JtLWdyb3VwIHsgbWFyZ2luLWJvdHRvbTogMS4zMTI1cmVtOyB9XG4uYXV0aC1mb3JtIC5mb3JtLXJvdyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgZ2FwOiAwLjgxMjVyZW07IH1cbi5hdXRoLWZvcm0gbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuLmF1dGgtZm9ybSBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5hdXRoLWZvcm0gaW5wdXRbdHlwZT1cImVtYWlsXCJdLFxuLmF1dGgtZm9ybSBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0ge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDAuODEyNXJlbSAxcmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1tb3Rpb24tMikgdmFyKC0tZWFzZS1zZXR0bGUpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLmF1dGgtZm9ybSBpbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuMTgpO1xufVxuLmF1dGgtZm9ybSAuZm9ybS1lcnJvcixcbi5hdXRoLWZvcm0gLmZvcm0tc3VjY2VzcyB7XG4gICAgcGFkZGluZzogMC44MTI1cmVtIDFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjMxMjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tcGhpKTtcbn1cbi5hdXRoLWZvcm0gLmZvcm0tZXJyb3IgeyBiYWNrZ3JvdW5kOiByZ2JhKDE2NiwgMzUsIDI2LCAwLjA4KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxNjYsIDM1LCAyNiwgMC4yMik7IGNvbG9yOiB2YXIoLS1jb2xvci1lcnJvcik7IH1cbi5hdXRoLWZvcm0gLmZvcm0tc3VjY2VzcyB7IGJhY2tncm91bmQ6IHJnYmEoNDcsIDEyMiwgODAsIDAuMDgpOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ3LCAxMjIsIDgwLCAwLjIyKTsgY29sb3I6IHZhcigtLWNvbG9yLXN1Y2Nlc3MpOyB9XG5cbi5hdXRoLWZvcm0gYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0sXG4uYXV0aC1mb3JtIC5idG4uYnRuLXByaW1hcnkge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbn1cblxuLmF1dGgtbGlua3Mge1xuICAgIG1hcmdpbi10b3A6IDIuMTI1cmVtO1xuICAgIHBhZGRpbmctdG9wOiAxLjMxMjVyZW07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDAuNXJlbSAwLjgxMjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cbi5hdXRoLWxpbmtzIGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKHZhcigtLWNvbG9yLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tbW90aW9uLTIpIHZhcigtLWVhc2Utc2V0dGxlKTtcbn1cbi5hdXRoLWxpbmtzIGE6aG92ZXIgeyBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTsgfVxuLmF1dGgtbGlua3MgLmRpdmlkZXIgeyBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1saWdodCk7IH1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICA4LiBIZXJvIOKAlCBwaGktc3RlcHBlZCB0eXBvZ3JhcGh5LCBvcm5hbWVudCBiZXR3ZWVuIHNlY3Rpb25zXG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLmhlcm8tY29tcGFjdCBoMSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaGVhZGluZyk7XG4gICAgZm9udC1zaXplOiAyLjYxOHJlbTsgICAgICAgICAgICAgICAvKiDPhsKyIOKAlCBmbGFnc2hpcCBkaXNwbGF5ICovXG4gICAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMTVlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmhlcm8tY29tcGFjdCBoMSB7IGZvbnQtc2l6ZTogMi4wNThyZW07IH1cbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICA5LiBQcm9kdWN0cyAmIENhcnQg4oCUIHR5cG9ncmFwaHkgcmVmcmVzaFxuICAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovXG5cbi5wcm9kdWN0cy1zZWN0aW9uIGgxLFxuLmNhcnQtc2VjdGlvbiBoMSxcbi5jaGVja291dC1zZWN0aW9uIGgxIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1oZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDIuMDU4cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zcXJ0LXBoaSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAyLjEyNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5wcm9kdWN0cy1zZWN0aW9uIGgxOjphZnRlcixcbi5jYXJ0LXNlY3Rpb24gaDE6OmFmdGVyLFxuLmNoZWNrb3V0LXNlY3Rpb24gaDE6OmFmdGVyLFxuLmxlZ2FsLXNlY3Rpb24gaDE6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAzLjQzNzVyZW07ICAgICAgICAgICAgICAgICAgLyogNTUgcHggRmliICovXG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tY29sb3ItcHJpbWFyeSkgNTAlLCB0cmFuc3BhcmVudCk7XG4gICAgbWFyZ2luOiAwLjgxMjVyZW0gYXV0byAwO1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4gICAxMC4gTGVnYWwgcGFnZXMg4oCUIEltcHJlc3N1bSAvIERhdGVuc2NodXR6IC8gQUdCXG4gICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi9cblxuLmxlZ2FsLXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IDMuNDM3NXJlbSAxcmVtIDUuNTYyNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13YXJtKTtcbiAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQwcHgpO1xufVxuXG4ubGVnYWwtY29udGVudCB7XG4gICAgbWF4LXdpZHRoOiA0MnJlbTsgICAgICAgICAgICAgICAgICAvKiBjbG9zZSB0byBhIGdvbGRlbi1yZWN0IGxpbmUgbGVuZ3RoICovXG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjE0KTtcbiAgICBib3JkZXItcmFkaXVzOiAxLjgxMjVyZW07XG4gICAgcGFkZGluZzogMy40Mzc1cmVtIDIuMTI1cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDQ1LCA1NSwgNzIsIDAuMDQpLCAwIDEzcHggMzRweCAtOHB4IHJnYmEoNDUsIDU1LCA3MiwgMC4wOCk7XG4gICAgYW5pbWF0aW9uOiBtb21lbnRDYXJkRW50ZXIgdmFyKC0tbW90aW9uLTUpIHZhcigtLWVhc2Utc2V0dGxlKSBib3RoO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubGVnYWwtY29udGVudCB7IHBhZGRpbmc6IDIuMTI1cmVtIDEuMzEyNXJlbTsgYm9yZGVyLXJhZGl1czogMS41cmVtOyB9XG59XG5cbi8qIEVOLVJlY2h0c3NlaXRlbjogSGlud2VpcyBcImNvdXJ0ZXN5IHRyYW5zbGF0aW9uXCIgKGkxOG4gMjAyNi0wNy0wOCkgKi9cbi5sZWdhbC1kaXNjbGFpbWVyIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkLCAjNmI2MjU3KTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHJnYmEodmFyKC0tY29sb3ItcHJpbWFyeS1yZ2IpLCAwLjM1KTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuODc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmxlZ2FsLWNvbnRlbnQgaDEge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LWhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMi4wNThyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNxcnQtcGhpKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbiAgICBtYXJnaW46IDAgMCAwLjVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG5cbi5sZWdhbC1jb250ZW50IC5sZWdhbC11cGRhdGVkIHtcbiAgICBtYXJnaW46IDAgMCAyLjEyNXJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LWxpZ2h0KTtcbn1cblxuLmxlZ2FsLWNvbnRlbnQgaDIge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN1YmhlYWRpbmcpO1xuICAgIGZvbnQtc2l6ZTogMS4yNzJyZW07ICAgICAgICAgICAgICAgLyog4oiaz4YgKi9cbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xuICAgIG1hcmdpbjogMi4xMjVyZW0gMCAwLjgxMjVyZW07XG59XG5cbi5sZWdhbC1jb250ZW50IGgzIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdWJoZWFkaW5nKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zZWNvbmRhcnktZGFyayk7XG4gICAgbWFyZ2luOiAxLjMxMjVyZW0gMCAwLjVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbn1cblxuLmxlZ2FsLWNvbnRlbnQgcCxcbi5sZWdhbC1jb250ZW50IGxpIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1ib2R5KTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXBoaSk7ICAgICAgICAgICAvKiBleGFjdCDPhiBmb3IgcHJvc2UgKi9cbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG4gICAgbWFyZ2luOiAwIDAgMC44MTI1cmVtO1xufVxuXG4ubGVnYWwtY29udGVudCB1bCxcbi5sZWdhbC1jb250ZW50IG9sIHtcbiAgICBtYXJnaW46IDAgMCAxLjMxMjVyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjMxMjVyZW07XG59XG5cbi5sZWdhbC1jb250ZW50IGxpIHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9XG5cbi5sZWdhbC1jb250ZW50IGEge1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWRhcmspO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLW1vdGlvbi0yKSB2YXIoLS1lYXNlLXNldHRsZSk7XG59XG4ubGVnYWwtY29udGVudCBhOmhvdmVyIHsgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7IH1cblxuLmxlZ2FsLWNvbnRlbnQgc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWNvbG9yLXRleHQpOyB9XG5cbi5sZWdhbC1jb250ZW50IGhyIHtcbiAgICBib3JkZXI6IDA7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSh2YXIoLS1jb2xvci1wcmltYXJ5LXJnYiksIDAuNCkgNTAlLCB0cmFuc3BhcmVudCk7XG4gICAgbWFyZ2luOiAyLjEyNXJlbSAwO1xufVxuXG4vKiBBZGRyZXNzIGJsb2NrcyBpbnNpZGUgbGVnYWwgY29udGVudCAqL1xuLmxlZ2FsLWNvbnRlbnQgLmxlZ2FsLWFkZHJlc3Mge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdhcm0pO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgcGFkZGluZzogMXJlbSAxLjMxMjVyZW07XG4gICAgbWFyZ2luOiAxLjMxMjVyZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJhZGl1cy1tZCkgdmFyKC0tcmFkaXVzLW1kKSAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tcGhpKTtcbn1cbi5sZWdhbC1jb250ZW50IC5sZWdhbC1hZGRyZXNzIHN0cm9uZyB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9XG5cbi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuICAgMTEuIFJlZHVjZWQgbW90aW9uIOKAlCBkaXNhYmxlIGFsbCBwaGktZGVyaXZlZCBhbmltYXRpb25cbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5tb21lbnQtY2FyZCxcbiAgICAuYXV0aC1jYXJkLFxuICAgIC5tb21lbnQtYmFkZ2UsXG4gICAgLmF1dGgtYmFkZ2UsXG4gICAgLmxlZ2FsLWNvbnRlbnQge1xuICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbiAgIDEyLiBUYWJsZXQgLyBtb2JpbGUgc2hyaW5rIGZvciBtb21lbnQgY2FyZHNcbiAgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqL1xuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAubW9tZW50LXNlY3Rpb24sXG4gICAgLmF1dGgtc2VjdGlvbiB7IHBhZGRpbmc6IDIuMTI1cmVtIDAuODEyNXJlbTsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH1cbiAgICAubW9tZW50LWNhcmQsXG4gICAgLmF1dGgtY2FyZCB7IHBhZGRpbmc6IDIuMTI1cmVtIDEuMzEyNXJlbTsgYm9yZGVyLXJhZGl1czogMS41cmVtOyB9XG4gICAgLm1vbWVudC1jYXJkX190aXRsZSxcbiAgICAuYXV0aC1jYXJkIGgxIHsgZm9udC1zaXplOiAxLjYxOHJlbTsgfVxuICAgIC5tb21lbnQtY2FyZF9fbGVkZSxcbiAgICAuYXV0aC1zdWJ0aXRsZSB7IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9XG59XG4iXX0= */