/*!**********************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/scss/app.scss ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * SolidInvoice Main Application Stylesheet
 *
 * This is the main entry point for all application styles.
 * It imports Bootstrap, the design system, components, and layouts.
 */
/**
 * SolidInvoice Design System - Main Index
 *
 * Imports all design system foundation files.
 * This file should be imported early in app.scss,
 * after Bootstrap functions/variables but before components.
 */
/**
 * SolidInvoice Design System - Design Tokens
 *
 * Core design tokens defining colors, spacing, shadows, border radius,
 * and transitions. All values are exposed as CSS custom properties
 * with the `--swp-` prefix for runtime theming support.
 */
:root {
  --swp-primary: #2f6db5;
  --swp-primary-rgb: 47, 109, 181;
  --swp-primary-hover: #27619f;
  --swp-primary-dark: #1d4a7d;
  --swp-primary-light: #e4eefb;
  --swp-primary-lighter: #f1f7fd;
  --swp-primary-fg: #ffffff;
  --swp-primary-darken: #27619f;
  --swp-secondary: #0b2545;
  --swp-secondary-rgb: 11, 37, 69;
  --swp-secondary-hover: #123a6b;
  --swp-secondary-dark: #071830;
  --swp-secondary-light: #eef2f7;
  --swp-secondary-lighter: #f6f8fb;
  --swp-gray-50: #f8fafc;
  --swp-gray-100: #f1f5f9;
  --swp-gray-200: #e2e8f0;
  --swp-gray-300: #cbd5e1;
  --swp-gray-400: #94a3b8;
  --swp-gray-500: #64748b;
  --swp-gray-600: #475569;
  --swp-gray-700: #334155;
  --swp-gray-800: #1e293b;
  --swp-gray-900: #0f172a;
  --swp-success: #10b981;
  --swp-success-rgb: 16, 185, 129;
  --swp-success-hover: #059669;
  --swp-success-dark: #047857;
  --swp-success-light: #d1fae5;
  --swp-success-lighter: #ecfdf5;
  --swp-danger: #ef4444;
  --swp-danger-rgb: 239, 68, 68;
  --swp-danger-hover: #dc2626;
  --swp-danger-dark: #b91c1c;
  --swp-danger-fg: #ffffff;
  --swp-danger-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-dark: #92400e;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --swp-info-dark: #1d4ed8;
  --swp-info-light: #dbeafe;
  --swp-info-lighter: #eff6ff;
  --swp-body-bg: #f4f6f8;
  --swp-surface: #ffffff;
  --swp-surface-hover: #f8fafc;
  --swp-surface-elevated: #ffffff;
  --swp-surface-overlay: rgb(15 23 42 / 50%);
  --swp-loading-overlay: rgb(255 255 255 / 72%);
  --swp-body-color: var(--swp-text-primary);
  --swp-text-primary: #1e293b;
  --swp-text-secondary: #475569;
  --swp-text-muted: #64748b;
  --swp-text-light: #94a3b8;
  --swp-text-inverse: #ffffff;
  --swp-border: #e2e8f0;
  --swp-border-light: #f1f5f9;
  --swp-border-dark: #cbd5e1;
  --swp-link-color: var(--swp-primary);
  --swp-link-hover-color: var(--swp-primary-dark);
}

[data-bs-theme=dark] {
  --swp-primary: #6ea8e6;
  --swp-primary-rgb: 110, 168, 230;
  --swp-primary-hover: #8bbaf0;
  --swp-primary-dark: #a8ccf4;
  --swp-primary-light: #183552;
  --swp-primary-lighter: #12283e;
  --swp-primary-fg: #07111f;
  --swp-primary-darken: #5798df;
  --swp-secondary: #b8c7dc;
  --swp-secondary-rgb: 184, 199, 220;
  --swp-secondary-hover: #d3deec;
  --swp-secondary-dark: #e8eef7;
  --swp-secondary-light: #1d2b3d;
  --swp-secondary-lighter: #162233;
  --swp-gray-50: #172033;
  --swp-gray-100: #1c283b;
  --swp-gray-200: #26364c;
  --swp-gray-300: #3a4b63;
  --swp-gray-400: #718198;
  --swp-gray-500: #9aa8ba;
  --swp-gray-600: #b8c2d0;
  --swp-gray-700: #d0d8e3;
  --swp-gray-800: #e5eaf1;
  --swp-gray-900: #f4f7fb;
  --swp-success: #34d399;
  --swp-success-dark: #6ee7b7;
  --swp-success-light: #153c34;
  --swp-success-lighter: #102e29;
  --swp-danger: #fb7185;
  --swp-danger-dark: #fda4af;
  --swp-danger-fg: #ffffff;
  --swp-danger-light: #4a202a;
  --swp-danger-lighter: #371a22;
  --swp-warning: #fbbf24;
  --swp-warning-dark: #fcd34d;
  --swp-warning-light: #493718;
  --swp-warning-lighter: #342812;
  --swp-info: #60a5fa;
  --swp-info-dark: #93c5fd;
  --swp-info-light: #17365d;
  --swp-info-lighter: #122a49;
  --swp-body-bg: #0b1220;
  --swp-surface: #111a2a;
  --swp-surface-hover: #172235;
  --swp-surface-elevated: #182337;
  --swp-surface-overlay: rgb(2 6 23 / 72%);
  --swp-loading-overlay: rgb(11 18 32 / 78%);
  --swp-body-color: #dbe3ee;
  --swp-text-primary: #edf2f8;
  --swp-text-secondary: #bdc8d8;
  --swp-text-muted: #94a3b8;
  --swp-text-light: #718198;
  --swp-text-inverse: #07111f;
  --swp-border: #29384d;
  --swp-border-light: #202e41;
  --swp-border-dark: #3a4b63;
  --swp-link-color: #8bbaf0;
  --swp-link-hover-color: #b4d3f6;
  --swp-bg-forms: var(--swp-input-bg);
  --swp-bg-surface: var(--swp-surface);
  --swp-bg-surface-primary: var(--swp-surface);
  --swp-bg-surface-secondary: var(--swp-body-bg);
  --swp-bg-surface-tertiary: var(--swp-gray-50);
  --swp-border-color: var(--swp-border);
  --swp-border-color-translucent: var(--swp-border-light);
  --swp-sidebar-bg: #071526;
  --swp-sidebar-hover-bg: rgb(255 255 255 / 8%);
  --swp-sidebar-active-bg: #2f6db5;
  --swp-sidebar-active-bg-hover: #397ac3;
  --swp-ring-offset: 0 0 0 2px var(--swp-surface);
  --tblr-body-bg: var(--swp-body-bg);
  --tblr-body-color: var(--swp-body-color);
  --tblr-border-color: var(--swp-border);
  --tblr-card-bg: var(--swp-surface);
  --bs-body-bg: var(--swp-body-bg);
  --bs-body-color: var(--swp-body-color);
  --bs-border-color: var(--swp-border);
}

:root {
  --swp-space-0: 0;
  --swp-space-px: 1px;
  --swp-space-0-5: 0.125rem;
  --swp-space-1: 0.25rem;
  --swp-space-1-5: 0.375rem;
  --swp-space-2: 0.5rem;
  --swp-space-2-5: 0.625rem;
  --swp-space-3: 0.75rem;
  --swp-space-3-5: 0.875rem;
  --swp-space-4: 1rem;
  --swp-space-5: 1.25rem;
  --swp-space-6: 1.5rem;
  --swp-space-7: 1.75rem;
  --swp-space-8: 2rem;
  --swp-space-9: 2.25rem;
  --swp-space-10: 2.5rem;
  --swp-space-11: 2.75rem;
  --swp-space-12: 3rem;
  --swp-space-14: 3.5rem;
  --swp-space-16: 4rem;
  --swp-space-20: 5rem;
  --swp-space-24: 6rem;
}

:root {
  --swp-radius-none: 0;
  --swp-radius-sm: 0.375rem;
  --swp-radius-md: 0.5rem;
  --swp-radius-lg: 0.75rem;
  --swp-radius-xl: 1rem;
  --swp-radius-2xl: 1.5rem;
  --swp-radius-full: 9999px;
}

:root {
  --swp-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 5%);
  --swp-shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 10%), 0 1px 2px -1px rgb(0 0 0 / 10%);
  --swp-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
  --swp-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 10%), 0 4px 6px -4px rgb(0 0 0 / 10%);
  --swp-shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 10%), 0 8px 10px -6px rgb(0 0 0 / 10%);
  --swp-shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 25%);
  --swp-shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 5%);
  --swp-shadow-primary: 0 4px 14px 0 rgb(47 109 181 / 25%);
  --swp-shadow-primary-lg: 0 8px 20px 0 rgb(47 109 181 / 30%);
  --swp-shadow-danger: 0 4px 14px 0 rgb(239 68 68 / 25%);
  --swp-shadow-danger-lg: 0 8px 20px 0 rgb(239 68 68 / 30%);
  --swp-ring-primary: 0 0 0 3px rgb(47 109 181 / 18%);
  --swp-ring-danger: 0 0 0 3px rgb(239 68 68 / 15%);
  --swp-ring-offset: 0 0 0 2px var(--swp-surface);
}

:root {
  --swp-duration-fast: 150ms;
  --swp-duration-base: 200ms;
  --swp-duration-slow: 300ms;
  --swp-duration-slower: 400ms;
  --swp-ease-linear: linear;
  --swp-ease-in: cubic-bezier(0.4, 0, 1, 1);
  --swp-ease-out: cubic-bezier(0, 0, 0.2, 1);
  --swp-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --swp-transition-fast: var(--swp-duration-fast) var(--swp-ease-in-out);
  --swp-transition-base: var(--swp-duration-base) var(--swp-ease-in-out);
  --swp-transition-slow: var(--swp-duration-slow) var(--swp-ease-in-out);
  --swp-transition-colors: color var(--swp-transition-fast),
                           background-color var(--swp-transition-fast),
                           border-color var(--swp-transition-fast);
  --swp-transition-shadow: box-shadow var(--swp-transition-base);
  --swp-transition-transform: transform var(--swp-transition-base);
  --swp-transition-all: all var(--swp-transition-base);
}

:root {
  --swp-z-dropdown: 1000;
  --swp-z-sticky: 1020;
  --swp-z-fixed: 1030;
  --swp-z-modal-backdrop: 1040;
  --swp-z-modal: 1050;
  --swp-z-popover: 1060;
  --swp-z-tooltip: 1070;
  --swp-z-toast: 1080;
}

:root {
  --swp-card-bg: var(--swp-surface);
  --swp-card-border: var(--swp-border-light);
  --swp-card-radius: var(--swp-radius-lg);
  --swp-card-shadow: var(--swp-shadow-sm);
  --swp-card-padding: var(--swp-space-6);
  --swp-card-header-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-card-footer-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-input-bg: var(--swp-surface);
  --swp-input-border: var(--swp-border);
  --swp-input-disabled-bg: var(--swp-gray-100);
  --swp-input-disabled-color: var(--swp-text-muted);
  --swp-input-icon: var(--swp-text-muted);
  --swp-input-radius: var(--swp-radius-md);
  --swp-input-padding-y: var(--swp-space-2-5);
  --swp-input-padding-x: var(--swp-space-4);
  --swp-input-focus-border: var(--swp-primary);
  --swp-input-focus-ring: var(--swp-ring-primary);
  --swp-control-check-bg: var(--swp-surface);
  --swp-control-check-border: var(--swp-border-dark);
  --swp-menu-bg: var(--swp-surface-elevated);
  --swp-menu-hover-bg: var(--swp-surface-hover);
  --swp-btn-radius: var(--swp-radius-md);
  --swp-btn-padding-y: var(--swp-space-2-5);
  --swp-btn-padding-x: var(--swp-space-4);
  --swp-btn-font-weight: 500;
  --swp-modal-bg: var(--swp-surface);
  --swp-modal-radius: var(--swp-radius-xl);
  --swp-modal-shadow: var(--swp-shadow-xl);
  --swp-modal-padding: var(--swp-space-6);
  --swp-table-bg: var(--swp-surface);
  --swp-table-border: var(--swp-border-light);
  --swp-table-header-bg: var(--swp-gray-50);
  --swp-table-row-hover-bg: var(--swp-gray-50);
  --swp-table-cell-padding: var(--swp-space-4) var(--swp-space-6);
  --swp-alert-radius: var(--swp-radius-md);
  --swp-alert-padding: var(--swp-space-4);
  --swp-sidebar-width: 13.5rem;
  --swp-sidebar-collapsed-width: 4.75rem;
  --swp-navbar-height: 3.5rem;
  --swp-control-height: 2.25rem;
  --swp-sidebar-item-radius: var(--swp-radius-md);
  --swp-sidebar-bg: #0b2545;
  --swp-sidebar-border: rgb(255 255 255 / 8%);
  --swp-sidebar-item-fg: #a7b6cd;
  --swp-sidebar-item-fg-hover: #e6edf7;
  --swp-sidebar-icon: #8fa3bf;
  --swp-sidebar-heading: #8296b3;
  --swp-sidebar-hover-bg: rgb(255 255 255 / 7%);
  --swp-sidebar-active-bg: #3576c4;
  --swp-sidebar-active-bg-hover: #3372be;
  --swp-sidebar-active-fg: #ffffff;
  --swp-sidebar-active-parent-fg: #8fbef5;
  --swp-sidebar-submenu-bg: rgb(255 255 255 / 4%);
  --swp-sidebar-submenu-fg: #93a5bf;
  --swp-sidebar-ring: 0 0 0 2px var(--swp-sidebar-bg), 0 0 0 4px rgb(143 190 245 / 85%);
  --swp-sidebar-submenu-max-height: 26rem;
  --swp-money-currency: var(--swp-text-secondary);
  --swp-money-neutral: var(--swp-text-primary);
  --swp-money-paid: var(--swp-success-dark);
  --swp-money-overdue: var(--swp-danger-dark);
  --swp-money-total-scale: 1.125;
  --swp-money-currency-scale: 0.75em;
}

/**
 * SolidInvoice Design System - Typography
 *
 * Typography scale, font families, weights, and line heights.
 * Uses system fonts for optimal performance and native feel.
 */
:root {
  --swp-font-sans: -apple-system, blinkmacsystemfont, 'Segoe UI', roboto,
                   'Helvetica Neue', arial, 'Noto Sans', sans-serif,
                   'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',
                   'Noto Color Emoji';
  --swp-font-mono: ui-monospace, sfmono-regular, 'SF Mono', menlo, monaco,
                   consolas, 'Liberation Mono', 'Courier New', monospace;
  --swp-font-family: var(--swp-font-sans);
}

:root {
  --swp-text-xs: 0.75rem;
  --swp-text-sm: 0.8125rem;
  --swp-text-base: 0.9375rem;
  --swp-text-md: 1rem;
  --swp-text-lg: 1.125rem;
  --swp-text-xl: 1.25rem;
  --swp-text-2xl: 1.5rem;
  --swp-text-3xl: 1.875rem;
  --swp-text-4xl: 2.25rem;
  --swp-text-5xl: 3rem;
}

:root {
  --swp-leading-none: 1;
  --swp-leading-tight: 1.25;
  --swp-leading-snug: 1.375;
  --swp-leading-normal: 1.5;
  --swp-leading-relaxed: 1.625;
  --swp-leading-loose: 2;
}

:root {
  --swp-font-thin: 100;
  --swp-font-extralight: 200;
  --swp-font-light: 300;
  --swp-font-normal: 400;
  --swp-font-medium: 500;
  --swp-font-semibold: 600;
  --swp-font-bold: 700;
  --swp-font-extrabold: 800;
  --swp-font-black: 900;
}

:root {
  --swp-tracking-tighter: -0.05em;
  --swp-tracking-tight: -0.025em;
  --swp-tracking-normal: 0;
  --swp-tracking-wide: 0.025em;
  --swp-tracking-wider: 0.05em;
  --swp-tracking-widest: 0.1em;
}

.text-page-title {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-tight);
  color: var(--swp-text-primary);
  letter-spacing: var(--swp-tracking-tight);
}

.text-page-subtitle {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-card-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
}

.text-card-subtitle {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-snug);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.text-section-title svg,
.text-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.text-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-secondary);
}

.text-body {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-relaxed);
  color: var(--swp-body-color);
}

.text-help {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
}

.text-mono {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.text-table-header {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  line-height: var(--swp-leading-normal);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.text-emphasis {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

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

.text-link {
  color: var(--swp-link-color);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.text-link:hover {
  color: var(--swp-link-hover-color);
  text-decoration: underline;
}

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.text-line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.text-line-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/**
 * SolidInvoice Design System - Component Index
 *
 * Custom component styles that extend Bootstrap/Tabler.
 * Only add styles here that provide functionality beyond what Bootstrap/Tabler offer.
 *
 * Note: Most component styling comes from Bootstrap 5 and Tabler.
 * This file imports only custom extensions, not replacements.
 */
/**
 * SolidInvoice - Shared Form Page Styles
 *
 * Consolidated form-page layout pattern used across TaxBundle, ClientBundle,
 * UserBundle (Profile, Invite, ChangePassword) and similar form pages.
 *
 * Template structure:
 *   .form-page > .form-page-container[--narrow|--medium|--wide] >
 *     .form-page-header > .form-page-header-content >
 *       .form-page-icon[--security] + div(.form-page-title + .form-page-subtitle)
 *     .form-page-sections > .form-page-section >
 *       .section-header > .section-icon[--security] + .section-header-text
 *         (.section-title + .section-description)
 *       .section-content > .form-grid > .form-field[.form-field-wide]
 *     .form-page-actions > .form-page-actions-inner[--medium]
 */
.form-page {
  min-height: 100%;
}

.form-page-container {
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}
.form-page-container--narrow {
  max-width: 800px;
}
.form-page-container--medium {
  max-width: 900px;
}
.form-page-container--wide {
  max-width: 1100px;
}

.form-page-header {
  margin-bottom: var(--swp-space-8);
  padding: var(--swp-space-6) 0;
}

.form-page-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.form-page-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.form-page-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
}

.form-page-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.form-page-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.form-page-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-6);
}

.form-page-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.form-page-section:hover {
  border-color: var(--swp-border-dark);
}
.form-page-section:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.section-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.1) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.section-icon--security {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.15) 0%, rgba(var(--swp-success-rgb), 0.05) 100%);
  color: var(--swp-success);
}

.section-header-text {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.section-content {
  padding: var(--swp-space-6);
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .form-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-3);
  }
}

.form-field {
  display: flex;
  flex-direction: column;
}

.form-field-wide {
  grid-column: 1/-1;
}

.form-page-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.form-page-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 800px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}
.form-page-actions-inner--medium {
  max-width: 900px;
}

.btn-save,
.btn-save-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-save:hover,
.btn-save-primary:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-save:active,
.btn-save-primary:active {
  transform: translateY(0);
}

@media (width <= 767.98px) {
  .form-page {
    padding: var(--swp-space-4);
  }
  .form-page-header {
    padding: var(--swp-space-4) 0;
    margin-bottom: var(--swp-space-6);
  }
  .form-page-header-content {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--swp-space-3);
  }
  .form-page-icon {
    width: 48px;
    height: 48px;
  }
  .form-page-title {
    font-size: 1.5rem;
  }
  .section-header {
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: var(--swp-space-4) var(--swp-space-4) var(--swp-space-3);
  }
  .section-icon {
    width: 36px;
    height: 36px;
  }
  .section-content {
    padding: var(--swp-space-4);
  }
  .form-page-actions-inner {
    gap: var(--swp-space-3);
  }
  .form-page-actions-inner .btn {
    flex: 1;
  }
}
@media print {
  .form-page-actions {
    display: none !important;
  }
  .form-page {
    padding: 0;
  }
  .form-page-container {
    max-width: none;
  }
}
/**
 * SolidInvoice - Document View Shared Styles
 *
 * Shared layout and component styles for document detail pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Invoice, Quote, Purchase, Purchase Order and Delivery Note use these classes.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--swp-space-6);
}
.doc-view-page > .row,
.doc-view-page > .card {
  margin-bottom: var(--swp-space-4);
}
.doc-view-page > :last-child {
  margin-bottom: 0;
}

.doc-party-grid > [class*=col-] {
  display: flex;
}
.doc-party-grid .card {
  width: 100%;
}

.doc-view-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 768px) {
  .doc-view-header {
    flex-direction: column;
    align-items: flex-start;
  }
}

.doc-view-header-left {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.doc-view-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary-lighter) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.doc-view-title-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.doc-view-back {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: var(--swp-space-1-5);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  text-decoration: none;
}
.doc-view-back:hover, .doc-view-back:focus-visible {
  color: var(--swp-primary);
}

.doc-view-title {
  font-size: var(--swp-text-xl, 1.25rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
}

.doc-view-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}

.doc-view-meta-item {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.doc-view-meta-item svg {
  opacity: 0.7;
}

.doc-view-header-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--swp-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-start;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--swp-space-1);
}

.doc-view-header .dropdown-menu {
  min-width: 200px;
  padding: var(--swp-space-2);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-lg);
  border-radius: var(--swp-radius-lg);
}
.doc-view-header .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm, 0.875rem);
}
.doc-view-header .dropdown-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.doc-view-header .dropdown-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.doc-view-header .dropdown-menu .dropdown-item svg {
  opacity: 0.7;
}
.doc-view-header .dropdown-menu .dropdown-divider {
  margin: var(--swp-space-2) 0;
  border-color: var(--swp-border-light);
}

.btn-hero {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3) var(--swp-space-5);
  font-weight: var(--swp-font-semibold, 600);
  font-size: var(--swp-text-base, 1rem);
  box-shadow: var(--swp-shadow-primary);
  transition: all var(--swp-transition-base);
}
.btn-hero:hover {
  transform: translateY(-1px);
  box-shadow: var(--swp-shadow-primary-lg);
}
.btn-hero:active {
  transform: translateY(0);
}

.btn-hero-urgent {
  background: linear-gradient(135deg, var(--swp-danger) 0%, var(--swp-danger-hover) 100%);
  border-color: var(--swp-danger);
  box-shadow: var(--swp-shadow-danger);
}
.btn-hero-urgent:hover {
  background: linear-gradient(135deg, var(--swp-danger-hover) 0%, var(--swp-danger) 100%);
  box-shadow: var(--swp-shadow-danger-lg);
}

.doc-view-content {
  display: grid;
  grid-template-columns: 1fr 340px;
  gap: var(--swp-space-6);
}
@media (width <= 1024px) {
  .doc-view-content {
    grid-template-columns: 1fr;
  }
}

.doc-view-document {
  min-width: 0;
}

.doc-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-card .badge,
.doc-page-header .badge,
.doc-view-header .badge,
.doc-view-sidebar .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium, 500);
  letter-spacing: 0;
}
.doc-card .badge.bg-gray.text-gray-fg,
.doc-page-header .badge.bg-gray.text-gray-fg,
.doc-view-header .badge.bg-gray.text-gray-fg,
.doc-view-sidebar .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.doc-header-from-to {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-8);
  padding: var(--swp-space-6);
  background: linear-gradient(180deg, var(--swp-gray-50) 0%, var(--swp-surface) 100%);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 640px) {
  .doc-header-from-to {
    grid-template-columns: 1fr;
    gap: var(--swp-space-6);
  }
}

.doc-party {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.doc-party-label {
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
}

.doc-party-name {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-party-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  line-height: 1.5;
}
.doc-party-detail svg {
  flex-shrink: 0;
  margin-top: 2px;
  opacity: 0.6;
}
.doc-party-detail .detail-label {
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-muted);
}
.doc-party-detail .detail-label::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.doc-party-detail .detail-value {
  color: var(--swp-text-secondary);
}
.doc-party-detail a.detail-value {
  color: var(--swp-primary);
}
.doc-party-detail a.detail-value:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.doc-items {
  padding: var(--swp-space-6);
}
@media (width <= 640px) {
  .doc-items {
    padding: var(--swp-space-4);
  }
}

.doc-items-table {
  width: 100%;
  border-collapse: collapse;
}
.doc-items-table thead th {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-xs, 0.75rem);
  font-weight: var(--swp-font-semibold, 600);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border);
  text-align: left;
}
.doc-items-table thead th.column-price, .doc-items-table thead th.column-qty, .doc-items-table thead th.column-tax, .doc-items-table thead th.column-total {
  text-align: right;
}
@media (width <= 640px) {
  .doc-items-table thead {
    display: none;
  }
}
.doc-items-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.doc-items-table tbody tr:hover {
  background: var(--swp-gray-50);
}
@media (width <= 640px) {
  .doc-items-table tbody tr {
    display: block;
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border-radius: var(--swp-radius-md);
    border: 1px solid var(--swp-border-light);
  }
  .doc-items-table tbody tr:hover {
    background: var(--swp-gray-100);
  }
  .doc-items-table tbody tr:last-child {
    margin-bottom: 0;
  }
}
.doc-items-table tbody td {
  padding: var(--swp-space-4);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  border-bottom: 1px solid var(--swp-border-light);
  vertical-align: top;
}
.doc-items-table tbody td.column-description {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium, 500);
}
.doc-items-table tbody td.column-price, .doc-items-table tbody td.column-qty, .doc-items-table tbody td.column-tax, .doc-items-table tbody td.column-total {
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.doc-items-table tbody td.column-total {
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
@media (width <= 640px) {
  .doc-items-table tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: var(--swp-space-2) 0;
    border-bottom: 1px solid var(--swp-border-light);
    text-align: right;
  }
  .doc-items-table tbody td::before {
    content: attr(data-label);
    font-size: var(--swp-text-xs, 0.75rem);
    font-weight: var(--swp-font-semibold, 600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    text-align: left;
    flex-shrink: 0;
    margin-right: var(--swp-space-3);
  }
  .doc-items-table tbody td.column-description {
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    padding-bottom: var(--swp-space-3);
    margin-bottom: var(--swp-space-2);
    border-bottom: 2px solid var(--swp-border);
  }
  .doc-items-table tbody td.column-description::before {
    margin-bottom: var(--swp-space-1);
  }
  .doc-items-table tbody td.column-total {
    border-bottom: none;
    padding-bottom: 0;
  }
}
@media (width >= 641px) {
  .doc-items-table .column-description {
    width: auto;
  }
  .doc-items-table .column-price {
    width: 120px;
  }
  .doc-items-table .column-qty {
    width: 80px;
  }
  .doc-items-table .column-tax {
    width: 100px;
  }
  .doc-items-table .column-total {
    width: 120px;
  }
}

.doc-totals {
  display: flex;
  justify-content: flex-end;
  padding: var(--swp-space-6);
  padding-top: 0;
}
@media (width <= 640px) {
  .doc-totals {
    padding: 0 var(--swp-space-4) var(--swp-space-4);
  }
}

.doc-totals-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  min-width: 280px;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
}
@media (width <= 640px) {
  .doc-totals-grid {
    min-width: 0;
    width: 100%;
  }
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-2) 0;
}
.totals-row .totals-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.totals-row .totals-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.totals-row-payment .totals-value {
  color: var(--swp-success);
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-final {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-final .totals-label {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
}
.totals-row-final .totals-value {
  font-size: var(--swp-text-lg, 1.125rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}

.doc-currency-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--swp-space-2);
  width: 100%;
  margin-top: var(--swp-space-3);
}
@media (width <= 640px) {
  .doc-currency-summary {
    grid-template-columns: 1fr;
  }
}

.doc-currency-summary-card {
  min-width: 0;
  padding: var(--swp-space-3) var(--swp-space-2);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  background: var(--swp-surface);
  text-align: center;
}
.doc-currency-summary-card--converted {
  border-color: var(--swp-success-light);
  background: var(--swp-success-lighter);
}
.doc-currency-summary-card--converted .doc-currency-summary-amount {
  color: var(--swp-success-dark);
}

.doc-currency-summary-label {
  margin-bottom: var(--swp-space-1-5);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
  text-transform: uppercase;
}

.doc-currency-summary-amount {
  overflow-wrap: anywhere;
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  font-variant-numeric: tabular-nums;
}

.doc-footer {
  padding: var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.doc-footer-section + .doc-footer-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.doc-footer-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-2) 0;
}

.doc-footer-text {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
  margin: 0;
  line-height: 1.6;
  white-space: pre-wrap;
}

.doc-view-sidebar {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}
@media (width <= 1024px) {
  .doc-view-sidebar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  }
}

.doc-sidebar-card {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  overflow: hidden;
}

.doc-sidebar-card-muted {
  background: var(--swp-gray-50);
}

.doc-sidebar-card-success {
  border-left: 4px solid var(--swp-success);
}

.doc-sidebar-card-highlight {
  border-left: 4px solid var(--swp-primary);
}

.doc-sidebar-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.doc-sidebar-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-primary);
}

.doc-sidebar-card-success .doc-sidebar-card-icon {
  background: var(--swp-success-lighter);
  color: var(--swp-success);
}

.doc-sidebar-card-title {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-text-primary);
  margin: 0;
}

.doc-sidebar-card-body {
  padding: var(--swp-space-4);
}

.doc-summary-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-3);
}
.summary-item .summary-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
}
.summary-item .summary-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}
.summary-item .summary-value-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.summary-item .summary-value-balance {
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-warning);
}

.summary-item-overdue {
  padding: var(--swp-space-2);
  margin: calc(-1 * var(--swp-space-2));
  background: var(--swp-danger-lighter);
  border-radius: var(--swp-radius-sm);
}
.summary-item-overdue .summary-value {
  color: var(--swp-danger);
}

.summary-item-paid .summary-value {
  color: var(--swp-success);
}

.client-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-name {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-semibold, 600);
  color: var(--swp-primary);
  text-decoration: none;
}
.client-name:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.client-contacts {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.client-contact {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.contact-name {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-1);
}

.contact-email,
.contact-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.contact-email svg,
.contact-detail svg {
  opacity: 0.6;
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.payment-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base, 1rem);
  font-weight: var(--swp-font-bold, 700);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-method,
.payment-date {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-muted);
}
.payment-method svg,
.payment-date svg {
  opacity: 0.6;
}

.payment-message {
  font-size: var(--swp-text-xs, 0.75rem);
  color: var(--swp-text-secondary);
  font-style: italic;
  margin-top: var(--swp-space-1);
}

.related-quote-link,
.related-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.related-quote-link:hover,
.related-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.related-invoice-status {
  margin-top: var(--swp-space-2);
}

@media print {
  .doc-view-page {
    max-width: 100%;
    padding: 0;
    margin: 0;
  }
  .doc-view-content {
    display: block;
  }
  .doc-view-document {
    width: 100%;
  }
  .doc-card {
    box-shadow: none;
    border: none;
  }
  .doc-header-from-to {
    background: none;
    padding: 20px 0;
  }
  .doc-items-table thead th {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-totals-grid {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .doc-footer {
    background: var(--swp-gray-50) !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .no-print {
    display: none !important;
  }
}
/**
 * External Document View - Shared Styles
 *
 * Shared styles for public-facing invoice and quote views.
 * Invoice-specific: external-invoice-view.scss
 * Quote-specific: external-quote-view.scss
 */
.ext-doc-page {
  min-height: 100vh;
  background: var(--tblr-gray-50, #f8fafc);
}

.app-branding-header {
  padding: 1.5rem 0;
  border-bottom: 2px solid var(--tblr-border-color-light, #e2e8f0);
}
.app-branding-header .app-logo img {
  max-height: 40px;
  width: auto;
  display: block;
}
.app-branding-header .app-brand-name {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}
.app-branding-header .app-brand-tagline {
  font-size: 0.875rem;
  color: var(--tblr-secondary, #64748b);
  opacity: 0.8;
  line-height: 1.3;
}

.ext-doc-action-bar {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-action-bar .card-body {
  padding: 0.75rem 1.5rem;
}
.ext-doc-action-bar .btn {
  font-weight: 500;
}

.ext-doc-company-name {
  font-size: 1.5rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.3;
}

.ext-doc-number {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.ext-doc-number-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-vat-number {
  font-size: 0.9375rem;
  opacity: 0.75;
}

.ext-doc-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.ext-doc-metadata-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  transition: box-shadow 0.2s ease;
}
.ext-doc-metadata-card:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.ext-doc-metadata-card .card-body {
  padding: 1.5rem;
}

.ext-doc-metadata-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  margin-bottom: 0.375rem;
  opacity: 0.6;
}

.ext-doc-metadata-value {
  font-size: 1rem;
  color: var(--tblr-body-color, #1e293b);
}

.ext-doc-metadata-total {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1.2;
}

.ext-doc-parties-section {
  margin-bottom: 2rem;
}

.ext-doc-party-label {
  font-weight: 600;
  letter-spacing: 0.05em;
  opacity: 0.6;
}

.ext-doc-party-name {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.4;
}

.ext-doc-party-detail {
  color: var(--tblr-body-color, #1e293b);
  line-height: 1.6;
  margin-bottom: 0.375rem;
  font-size: 0.9375rem;
}

.ext-doc-items-table {
  margin-bottom: 2rem;
}
.ext-doc-items-table thead th {
  border-bottom: 2px solid var(--tblr-border-color, #cbd5e1);
  padding: 0.875rem 0.75rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
  opacity: 0.6;
}
.ext-doc-items-table tbody tr {
  border-bottom: 1px solid var(--tblr-border-color-light, #e2e8f0);
  transition: background-color 0.15s ease;
}
.ext-doc-items-table tbody tr:last-child {
  border-bottom: none;
}
.ext-doc-items-table tbody tr:hover {
  background-color: var(--tblr-gray-50, #f8fafc);
}
.ext-doc-items-table tbody td {
  padding: 1rem 0.75rem;
  color: var(--tblr-body-color, #1e293b);
  vertical-align: top;
}
.ext-doc-items-table .item-description {
  font-weight: 500;
  line-height: 1.5;
  color: var(--tblr-body-color, #1e293b);
}
.ext-doc-items-table .item-amount {
  font-weight: 600;
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-card {
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  border-radius: 0.5rem;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-totals-card .card-body {
  padding: 1.5rem;
}

.ext-doc-totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.625rem 0;
}
.ext-doc-totals-row:not(:last-child) {
  margin-bottom: 0.375rem;
}

.ext-doc-totals-label {
  font-size: 0.9375rem;
  color: var(--tblr-body-color, #1e293b);
  font-weight: 500;
}

.ext-doc-totals-value {
  font-weight: 600;
  color: var(--tblr-body-color, #1e293b);
  font-feature-settings: "tnum";
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.ext-doc-totals-final {
  border-top: 2px solid var(--tblr-border-color-dark, #94a3b8);
  padding-top: 1rem;
  margin-top: 0.75rem;
}
.ext-doc-totals-final .ext-doc-totals-row {
  padding: 0.5rem 0 0;
  margin-bottom: 0;
}
.ext-doc-totals-final .ext-doc-totals-label {
  font-size: 1.25rem;
  font-weight: 600;
}
.ext-doc-totals-final .ext-doc-totals-value {
  font-size: 2rem;
  font-weight: 700;
  color: var(--tblr-primary, #2e963a);
  line-height: 1;
}

.ext-doc-footer .card {
  background: var(--tblr-bg-surface, #ffffff);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
}
.ext-doc-footer .btn-sm {
  font-weight: 500;
  padding: 0.5rem 1rem;
}
.ext-doc-footer .app-logo img {
  max-height: 24px;
  width: auto;
  display: block;
}

.badge {
  font-weight: 600;
  letter-spacing: 0.025em;
}

hr {
  border-color: var(--tblr-border-color-light, #e2e8f0);
  opacity: 1;
}

.btn:focus-visible {
  outline: 2px solid var(--tblr-primary, #2e963a);
  outline-offset: 2px;
}

.card-lg {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--tblr-border-color-light, #e2e8f0);
}
.card-lg .card-body {
  padding: 2.5rem;
}

@media (width <= 991px) {
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1.25rem;
  }
  .card-lg .card-body {
    padding: 2rem;
  }
}
@media (width <= 767px) {
  .ext-doc-number {
    font-size: 1.75rem;
  }
  .ext-doc-metadata-total {
    font-size: 1.5rem;
  }
  .ext-doc-totals-final .ext-doc-totals-value {
    font-size: 1.75rem;
  }
  .ext-doc-parties-section .col-sm-6:first-child {
    margin-bottom: 1.5rem;
  }
}
@media (width <= 576px) {
  .container-xl {
    padding-left: 1rem;
    padding-right: 1rem;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  .ext-doc-metadata-card .card-body,
  .ext-doc-totals-card .card-body {
    padding: 1rem;
  }
  .app-branding-header {
    padding: 1rem 0;
  }
  .app-branding-header .d-flex {
    flex-direction: column;
    text-align: center;
  }
  .app-branding-header .app-brand-name {
    font-size: 1.25rem;
  }
  .app-branding-header .app-brand-tagline {
    font-size: 0.8125rem;
  }
  .ext-doc-footer .btn-sm {
    width: 100%;
    margin-bottom: 0.5rem;
  }
  .ext-doc-footer .btn-sm:last-child {
    margin-bottom: 0;
  }
  .ext-doc-metadata-card .col-sm-4,
  .ext-doc-metadata-card .col-sm-6 {
    margin-bottom: 1rem;
  }
  .ext-doc-metadata-card .col-sm-4:last-child,
  .ext-doc-metadata-card .col-sm-6:last-child {
    margin-bottom: 0;
  }
  .ext-doc-action-bar .d-flex.justify-content-between {
    flex-direction: column;
    gap: 0.75rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 {
    flex-direction: column;
    width: 100%;
    gap: 0.5rem;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .d-flex.gap-2 .btn {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-action-bar .d-flex.justify-content-between .btn-primary,
  .ext-doc-action-bar .d-flex.justify-content-between .btn-danger {
    width: 100%;
    justify-content: center;
  }
  .ext-doc-items-table {
    font-size: 0.875rem;
  }
  .ext-doc-items-table thead th {
    padding: 0.75rem 0.5rem;
  }
  .ext-doc-items-table tbody td {
    padding: 0.875rem 0.5rem;
  }
}
@media print {
  .no-print,
  .d-print-none {
    display: none !important;
    visibility: hidden !important;
  }
  @page {
    margin: 1cm;
  }
  html,
  body {
    background: #ffffff !important;
    height: auto !important;
    overflow: visible !important;
  }
  .ext-doc-page,
  .page-wrapper,
  .page-body {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    height: auto !important;
    overflow: visible !important;
    width: 100% !important;
    background: #ffffff !important;
  }
  .container-xl {
    max-width: 100% !important;
    padding: 0.5cm !important;
    margin: 0 !important;
  }
  .row {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
  .card,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    box-shadow: none !important;
    border: 1px solid #dee2e6;
    break-inside: avoid;
    display: block !important;
    visibility: visible !important;
  }
  .card-body {
    display: block !important;
    visibility: visible !important;
    break-inside: avoid;
  }
  .card-lg .card-body {
    padding: 1.5rem;
  }
  table {
    break-inside: auto;
  }
  tr {
    break-inside: avoid;
    break-after: auto;
  }
  thead {
    display: table-header-group;
  }
  .bg-light,
  .ext-doc-metadata-card,
  .ext-doc-totals-card {
    background-color: #f8f9fa !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .bg-danger {
    background-color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-primary,
  .ext-doc-metadata-total,
  .ext-doc-totals-final .ext-doc-totals-value {
    color: #2e963a !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-danger {
    color: #dc3545 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .text-success {
    color: #10b981 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
  .ext-doc-items-table tbody tr:hover {
    background-color: transparent !important;
  }
  .ext-doc-metadata-card:hover {
    box-shadow: none !important;
  }
  hr {
    border-color: #cbd5e1 !important;
    opacity: 1 !important;
  }
}
/**
 * SolidInvoice - Shared Marketplace Styles
 *
 * Common styles shared between PaymentBundle and NotificationBundle marketplace pages.
 * Page-specific styles remain in payment-marketplace.scss and notification-marketplace.scss.
 */
.marketplace-panel {
  position: sticky;
  top: var(--swp-space-4);
  max-height: calc(100vh - var(--swp-space-16));
  overflow-y: auto;
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
}
.marketplace-panel::-webkit-scrollbar {
  width: 6px;
}
.marketplace-panel::-webkit-scrollbar-track {
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}
.marketplace-panel::-webkit-scrollbar-thumb {
  background: var(--swp-gray-300);
  border-radius: var(--swp-radius-full);
  transition: var(--swp-transition-colors);
}
.marketplace-panel::-webkit-scrollbar-thumb:hover {
  background: var(--swp-gray-400);
}

.marketplace-header h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.marketplace-header p {
  line-height: 1.5;
}
.marketplace-header .input-group {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.marketplace-header .input-group .input-group-text {
  border-right: 0;
  color: var(--swp-text-muted);
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control {
  border-left: 0;
  padding-left: 0;
  background: var(--swp-surface);
}
.marketplace-header .input-group .form-control:focus {
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.1);
  border-color: var(--swp-primary);
}
.marketplace-header .input-group .form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 0.6;
}
.marketplace-header .input-group:has(.form-control:focus) .input-group-text {
  border-color: var(--swp-primary);
}

.delete-confirmation-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1060;
  animation: marketplace-fade-in 0.15s ease;
  backdrop-filter: blur(4px);
}

.delete-confirmation-modal {
  position: fixed;
  inset: 0;
  z-index: 1070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.15s ease;
}

.delete-confirmation-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  width: 100%;
  max-width: 480px;
  animation: marketplace-scale-in 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.delete-confirmation-header {
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
}
.delete-confirmation-header h4 {
  font-size: 1.125rem;
  font-weight: 600;
  color: var(--swp-text-primary);
}
.delete-confirmation-header .delete-icon-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-danger-light);
  flex-shrink: 0;
}

.delete-confirmation-body {
  padding: var(--swp-space-6);
  color: var(--swp-text-secondary);
  line-height: 1.6;
}

.delete-confirmation-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-bottom-left-radius: var(--swp-radius-lg);
  border-bottom-right-radius: var(--swp-radius-lg);
}

@keyframes marketplace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes marketplace-slide-up {
  from {
    opacity: 0;
    transform: translateY(20px) scale(0.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
@keyframes marketplace-scale-in {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.5rem;
  font-weight: 500;
  border-radius: var(--swp-radius-sm);
}

.marketplace-search-clear {
  z-index: 10;
  right: 8px !important;
}

/**
 * Global Search - Top navigation search bar with live results dropdown
 */
.global-search {
  position: relative;
  max-width: 600px;
}
.global-search-input-wrapper {
  position: relative;
  display: flex;
  align-items: center;
}
.global-search-icon {
  position: absolute;
  left: 0.75rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--swp-text-muted);
  pointer-events: none;
  display: flex;
  align-items: center;
  line-height: 1;
  z-index: 1;
}
.global-search-input {
  box-sizing: border-box;
  width: 100%;
  padding: 0 6.5rem 0 2.5rem;
  height: 38px;
  line-height: 38px;
  background-color: var(--swp-input-bg);
  border: 1px solid var(--swp-input-border);
  border-radius: var(--swp-input-radius);
  font-size: 0.875rem;
  color: var(--swp-text-primary);
  appearance: none;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.global-search-input::-webkit-search-cancel-button, .global-search-input::-webkit-search-decoration {
  appearance: none;
}
.global-search-input:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.12);
  background-color: var(--swp-input-bg);
  outline: none;
}
.global-search-input::placeholder {
  color: var(--swp-text-muted);
}
.global-search-actions {
  position: absolute;
  right: 0.625rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 6px;
}
.global-search-shortcut {
  display: flex;
  gap: 3px;
  pointer-events: none;
}
.global-search-shortcut kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.1rem 0.35rem;
  font-size: 0.7rem;
  font-family: var(--tblr-font-monospace);
  color: var(--swp-text-muted);
  background-color: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid var(--swp-border);
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--swp-text-muted);
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: var(--swp-text-primary);
  border-color: var(--swp-border-dark);
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--swp-text-muted);
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: var(--swp-gray-50);
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: var(--swp-text-primary);
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: var(--swp-surface-hover);
  border-radius: 6px;
  border-left: 3px solid var(--swp-primary);
}
.search-help-example code {
  font-size: 0.8rem;
  color: var(--swp-primary-dark);
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: var(--swp-text-muted);
}

#searchHelpModal .modal-body {
  padding: 0;
}

.search-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  right: 0;
  min-width: 520px;
  margin-left: -60px;
  margin-right: -60px;
  background-color: var(--swp-menu-bg);
  border: 1px solid var(--swp-border);
  border-radius: 8px;
  box-shadow: var(--swp-shadow-xl);
  isolation: isolate;
  z-index: 9999;
}
.search-dropdown.is-open {
  display: block;
  animation: search-dropdown-in 0.12s ease-out;
}

@keyframes search-dropdown-in {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.99);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
.search-spinner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 1.25rem;
  color: var(--swp-text-muted);
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: var(--swp-menu-bg);
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: var(--swp-border-dark);
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid var(--swp-border-light);
}
.search-group:last-child {
  padding-bottom: 0.25rem;
}
.search-group-label {
  padding: 0.625rem 0.875rem 0.25rem;
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--swp-text-muted);
}

.search-result-item.is-active .search-result-link {
  background-color: var(--swp-menu-hover-bg);
}
.search-result-item:hover .search-result-link {
  background-color: var(--swp-menu-hover-bg);
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color 0.08s ease;
}

.search-result-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  padding: 6px;
  border-radius: 8px;
}
.search-result-icon svg {
  display: block;
}

.search-result-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}

.search-result-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: var(--swp-text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 1px;
}

.search-result-aside {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.2rem;
  flex-shrink: 0;
  margin-left: auto;
  padding-left: 0.5rem;
}

.search-result-badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.15rem 0.45rem;
}

.search-result-meta {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: var(--swp-text-muted);
  background-color: var(--swp-menu-bg);
}
.search-empty-icon {
  margin-bottom: 0.625rem;
  opacity: 0.4;
  display: flex;
}
.search-empty-text {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
}

.search-error {
  padding: 1.25rem;
  font-size: 0.875rem;
  color: var(--swp-danger-dark);
  text-align: center;
  background-color: var(--swp-menu-bg);
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  border-radius: 4px;
  font-size: 0.8rem;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.search-chip-remove {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
  font-size: 0.9rem;
  line-height: 1;
}
.search-chip-remove:hover {
  opacity: 1;
}

.search-chips-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 0.25rem 0.5rem;
  border-bottom: 1px solid var(--swp-border-light);
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: var(--swp-menu-bg);
  border: 1px solid var(--swp-border);
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
  z-index: 10000;
  padding: 0.25rem 0;
  display: none;
}
.search-suggestions.is-open {
  display: block;
}
.search-suggestions-header {
  padding: 0.25rem 0.75rem 0.1rem;
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--swp-text-muted);
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: var(--swp-text-primary);
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: var(--swp-menu-hover-bg);
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  margin-left: 0.5rem;
}

/**
 * SolidInvoice DataGrid Component Styles
 *
 * Modern, clean data grid styling following the SolidInvoice design system.
 * Uses design tokens from _tokens.scss for consistency.
 */
.datagrid {
  position: relative;
  display: block;
}
.datagrid > .alert {
  margin-bottom: var(--swp-space-4);
}

.datagrid-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}

.datagrid-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.datagrid-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}
@media (width <= 768px) {
  .datagrid-toolbar {
    flex-direction: column;
    align-items: stretch;
  }
}

.datagrid-toolbar--prominent-search {
  align-items: flex-end;
}
.datagrid-toolbar--prominent-search .datagrid-search {
  max-width: none;
}

.datagrid-toolbar-start {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.datagrid-toolbar-end {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.datagrid-search {
  flex: 1;
  max-width: 320px;
}
.datagrid-search .datagrid-search-label {
  display: block;
  margin-bottom: var(--swp-space-1-5);
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.datagrid-search .datagrid-search-control {
  position: relative;
}
.datagrid-search .datagrid-search-icon {
  position: absolute;
  left: var(--swp-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--swp-text-muted);
  pointer-events: none;
  width: 18px;
  height: 18px;
}
.datagrid-search .datagrid-search-input {
  width: 100%;
  padding: var(--swp-space-2) var(--swp-space-4) var(--swp-space-2) var(--swp-space-10);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.datagrid-search .datagrid-search-input::placeholder {
  color: var(--swp-text-muted);
}
.datagrid-search .datagrid-search-input:hover {
  background: var(--swp-gray-100);
}
.datagrid-search .datagrid-search-input:focus {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-search--prominent .datagrid-search-input {
  min-height: 2.75rem;
  border-color: var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-xs);
}

.datagrid-active-filters {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}

.datagrid-active-filter {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.datagrid-active-filter:hover {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
.datagrid-active-filter:hover .datagrid-active-filter-remove {
  color: var(--swp-danger);
}
.datagrid-active-filter .datagrid-active-filter-key {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
}
.datagrid-active-filter .datagrid-active-filter-key::after {
  content: ":";
  margin-right: var(--swp-space-1);
}
.datagrid-active-filter .datagrid-active-filter-value {
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.datagrid-active-filter .datagrid-active-filter-remove {
  width: 14px;
  height: 14px;
  margin-left: var(--swp-space-1);
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}

.datagrid-filter-dropdown {
  position: relative;
}

.datagrid-filter-panel {
  width: 21.5rem;
  max-height: calc(100vh - 200px);
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}
.datagrid-filter-panel .dropdown-menu,
.datagrid-filter-panel .select2-container--open {
  z-index: 1060 !important;
}

.datagrid-filter-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-filter-panel-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-filter-panel-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-filter-panel-body {
  padding: var(--swp-space-4) var(--swp-space-4) 0;
  max-height: calc(100vh - 350px);
  overflow-y: auto;
}

.datagrid-filter-form {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.datagrid-filter-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.datagrid-filter-field .form-select,
.datagrid-filter-field select {
  position: relative;
  z-index: 1;
}
.datagrid-filter-field:has(.datagrid-date-range) > .datagrid-filter-label {
  display: none;
}

.datagrid-filter-label {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.datagrid-filter-widget > .datagrid-date-range {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-2);
}
.datagrid-filter-widget > .datagrid-date-range > div .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.datagrid-filter-widget > .datagrid-date-range > div input {
  width: 100%;
}
.datagrid-filter-widget .form-check {
  display: flex !important;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-widget .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-widget .form-check.form-switch {
  padding-left: var(--swp-space-3);
}
.datagrid-filter-widget .form-check .form-check-input {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px;
  margin: 0 !important;
  flex-shrink: 0;
  border-radius: 3px !important;
  border: 1px solid var(--swp-border-dark);
  background-color: var(--swp-surface);
  cursor: pointer;
}
.datagrid-filter-widget .form-check .form-check-input:checked {
  background-color: var(--swp-primary);
  border-color: var(--swp-primary);
}
.datagrid-filter-widget .form-check .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox] {
  border-radius: 3px !important;
  background-image: none;
}
.datagrid-filter-widget .form-check .form-check-input[type=checkbox]:checked {
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 20 20%27%3e%3cpath fill=%27none%27 stroke=%27%23fff%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%273%27 d=%27M6 10l3 3l6-6%27/%3e%3c/svg%3e");
}
.datagrid-filter-widget .form-check .form-check-label {
  display: inline-block !important;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-primary);
  cursor: pointer;
  margin-left: var(--swp-space-2);
  user-select: none;
}
.datagrid-filter-widget .form-check + .form-check {
  margin-top: var(--swp-space-1);
}

.datagrid-filter-panel-footer {
  position: sticky;
  bottom: 0;
  z-index: 2;
  padding-top: var(--swp-space-3);
  padding-bottom: var(--swp-space-3);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
  background-color: var(--swp-surface);
}

.datagrid-filter-panel .form-control,
.datagrid-filter-panel .form-select {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  border-color: var(--swp-border);
}
.datagrid-filter-panel .form-control:focus,
.datagrid-filter-panel .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.datagrid-filter-panel .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-2);
  margin: 0;
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast);
}
.datagrid-filter-panel .form-check:hover {
  background: var(--swp-gray-50);
}
.datagrid-filter-panel .form-check .form-check-input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
}
.datagrid-filter-panel .form-check .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  cursor: pointer;
}
.datagrid-filter-panel .form-check + .form-check {
  margin-top: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] {
  min-height: 120px;
  padding: var(--swp-space-1);
}
.datagrid-filter-panel select[multiple] option {
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-sm);
}
.datagrid-filter-panel select[multiple] option:checked {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.datagrid-export-dropdown {
  position: relative;
}

.datagrid-export-menu {
  width: 280px;
  padding: 0 !important;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-lg);
  overflow: hidden;
}

.datagrid-export-menu-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.datagrid-export-menu-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.datagrid-export-menu-title svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}

.datagrid-export-menu-subtitle {
  margin: var(--swp-space-1) 0 0;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-export-menu-body {
  display: flex;
  flex-direction: column;
  padding: var(--swp-space-2);
  gap: var(--swp-space-1);
}

.datagrid-export-option {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2) var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
  cursor: pointer;
}
.datagrid-export-option:hover, .datagrid-export-option:focus-visible {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  outline: none;
}

.datagrid-export-option-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  color: var(--swp-text-secondary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
}
.datagrid-export-option:hover .datagrid-export-option-icon, .datagrid-export-option:focus-visible .datagrid-export-option-icon {
  color: var(--swp-primary);
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
}

.datagrid-export-option-text {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.datagrid-export-option-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: 0.02em;
}

.datagrid-export-option-hint {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.datagrid-column-picker .dropdown-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-column-picker .dropdown-toggle:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
}
.datagrid-column-picker .dropdown-toggle::after {
  display: none;
}
.datagrid-column-picker .dropdown-menu {
  min-width: 200px;
  max-height: 320px;
  overflow-y: auto;
  padding: var(--swp-space-2);
}
.datagrid-column-picker .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-column-picker .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-column-picker .dropdown-item input[type=checkbox] {
  width: 16px;
  height: 16px;
  accent-color: var(--swp-primary);
}

.datagrid-table-wrapper {
  overflow-x: auto;
  contain: layout;
}

.datagrid-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--swp-text-sm);
}
.datagrid-table th,
.datagrid-table td {
  padding: var(--swp-space-3) var(--swp-space-4);
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--swp-border-light);
}
.datagrid-table th {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  background: var(--swp-gray-50);
  white-space: nowrap;
  user-select: none;
}
.datagrid-table tbody {
  font-variant-numeric: tabular-nums;
}
.datagrid-table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.datagrid-table tbody tr:hover {
  background: var(--swp-surface-hover);
}
.datagrid-table tbody tr.selected {
  background: var(--swp-primary-lighter);
}
.datagrid-table tbody tr.selected:hover {
  background: var(--swp-primary-light);
}
.datagrid-table .col-checkbox {
  width: 40px;
  text-align: center;
}
.datagrid-table th.col-checkbox {
  text-align: center;
}
.datagrid-table .col-id {
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.datagrid-table .col-date {
  white-space: nowrap;
}
.datagrid-table .col-amount,
.datagrid-table .col-money {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: var(--swp-font-medium);
}
.datagrid-table th.col-amount,
.datagrid-table th.col-money {
  text-align: right;
}
.datagrid-table th.col-amount .datagrid-sort-link,
.datagrid-table th.col-money .datagrid-sort-link {
  justify-content: flex-end;
}
.datagrid-table .col-status {
  white-space: nowrap;
}
.datagrid-table .col-actions {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}
.datagrid-table tbody .badge {
  border-radius: var(--swp-radius-full);
  padding: 2px 10px;
  font-weight: var(--swp-font-medium);
  letter-spacing: 0;
}
.datagrid-table tbody .badge.bg-gray.text-gray-fg {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.datagrid-sort-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.datagrid-sort-link:hover {
  color: var(--swp-text-primary);
}
.datagrid-sort-link.sorted {
  color: var(--swp-primary);
}
.datagrid-sort-link .datagrid-sort-icon {
  display: inline-flex;
  width: 14px;
  height: 14px;
  opacity: 0.35;
  transition: opacity var(--swp-transition-fast);
}
.datagrid-sort-link .datagrid-sort-icon.is-active {
  opacity: 1;
}
.datagrid-sort-link:hover .datagrid-sort-icon {
  opacity: 1;
}

.datagrid-row-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-1);
}

.datagrid-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-action-btn svg {
  width: 18px;
  height: 18px;
}
.datagrid-action-btn:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-view:hover {
  color: var(--swp-info);
  background: var(--swp-info-lighter);
}
.datagrid-action-btn.action-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.datagrid-action-btn.action-delete:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}

.datagrid-more-btn {
  opacity: 0.6;
  transition: opacity var(--swp-transition-fast), color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-more-btn:hover, .datagrid-more-btn[aria-expanded=true] {
  opacity: 1;
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-more-menu .dropdown-menu {
  min-width: 160px;
  padding: var(--swp-space-1);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-md);
}
.datagrid-more-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
}
.datagrid-more-menu .dropdown-item svg {
  width: 16px;
  height: 16px;
  color: var(--swp-text-muted);
}
.datagrid-more-menu .dropdown-item:hover {
  background: var(--swp-gray-50);
}
.datagrid-more-menu .dropdown-item.text-danger {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger svg {
  color: var(--swp-danger);
}
.datagrid-more-menu .dropdown-item.text-danger:hover {
  background: var(--swp-danger-lighter);
}
.datagrid-more-menu .dropdown-divider {
  margin: var(--swp-space-1) 0;
}

tbody tr:not(:hover) .datagrid-more-btn {
  opacity: 0;
}

tbody tr:hover .datagrid-more-btn,
.datagrid-more-menu.show .datagrid-more-btn {
  opacity: 0.6;
}

.datagrid-checkbox {
  display: flex;
  align-items: center;
  justify-content: center;
}
.datagrid-checkbox input[type=checkbox] {
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--swp-primary);
  cursor: pointer;
}

.datagrid-empty {
  padding: var(--swp-space-16) var(--swp-space-6);
  text-align: center;
}

.datagrid-empty-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 80px;
  height: 80px;
  margin: 0 auto var(--swp-space-6);
  color: var(--swp-gray-300);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-full);
}
.datagrid-empty-icon svg {
  width: 40px;
  height: 40px;
}

.datagrid-empty-title {
  margin: 0 0 var(--swp-space-2);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.datagrid-empty-message {
  margin: 0 0 var(--swp-space-6);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  max-width: 400px;
  margin-left: auto;
  margin-right: auto;
}

.datagrid-empty-action {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(100px);
  z-index: 9999;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s 300ms;
}
.datagrid-bulk-bar.visible {
  transform: translateX(-50%) translateY(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: transform 300ms cubic-bezier(0, 0, 0.2, 1), opacity 300ms cubic-bezier(0, 0, 0.2, 1), visibility 0s;
}

.datagrid-bulk-bar-inner {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-3) var(--swp-space-6);
  background: var(--swp-gray-900);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
}

.datagrid-bulk-count {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-inverse);
  white-space: nowrap;
}
.datagrid-bulk-count .count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  margin-right: var(--swp-space-1);
  font-size: var(--swp-text-xs);
  color: var(--swp-gray-900);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-full);
}

.datagrid-bulk-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.datagrid-bulk-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: background-color var(--swp-transition-fast);
}
.datagrid-bulk-btn svg {
  width: 16px;
  height: 16px;
}
.datagrid-bulk-btn:hover {
  background: rgba(255, 255, 255, 0.2);
}
.datagrid-bulk-btn.btn-danger {
  color: var(--swp-danger-light);
}
.datagrid-bulk-btn.btn-danger:hover {
  background: rgba(239, 68, 68, 0.2);
}

.datagrid-bulk-divider {
  width: 1px;
  height: 24px;
  background: rgba(255, 255, 255, 0.2);
}

.datagrid-bulk-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  color: var(--swp-gray-400);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-bulk-close svg {
  width: 18px;
  height: 18px;
}
.datagrid-bulk-close:hover {
  color: var(--swp-text-inverse);
  background: rgba(255, 255, 255, 0.1);
}

.datagrid-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-surface);
}
@media (width <= 768px) {
  .datagrid-footer {
    flex-direction: column;
    gap: var(--swp-space-3);
  }
}

.datagrid-footer-info {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.datagrid-per-page {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.datagrid-per-page select {
  padding: var(--swp-space-1-5) var(--swp-space-3);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
}
.datagrid-per-page select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  outline: none;
}

.datagrid-pagination .pagination {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  margin: 0;
  padding: 0;
  list-style: none;
}
.datagrid-pagination .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast), border-color var(--swp-transition-fast);
}
.datagrid-pagination .page-item .page-link:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-50);
  border-color: var(--swp-border);
}
.datagrid-pagination .page-item.active .page-link {
  color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary-light);
  font-weight: var(--swp-font-medium);
}
.datagrid-pagination .page-item.disabled .page-link {
  color: var(--swp-text-light);
  cursor: not-allowed;
  pointer-events: none;
}

.datagrid-status {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-0-5) var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
  border-radius: var(--swp-radius-sm);
}
.datagrid-status.status-success {
  color: var(--swp-success-dark);
  background: var(--swp-success-lighter);
}
.datagrid-status.status-danger {
  color: var(--swp-danger-dark);
  background: var(--swp-danger-lighter);
}
.datagrid-status.status-warning {
  color: var(--swp-warning-dark);
  background: var(--swp-warning-lighter);
}
.datagrid-status.status-info {
  color: var(--swp-info-dark);
  background: var(--swp-info-lighter);
}
.datagrid-status.status-primary {
  color: var(--swp-primary-dark);
  background: var(--swp-primary-lighter);
}
.datagrid-status.status-secondary {
  color: var(--swp-gray-700);
  background: var(--swp-gray-100);
}

.datagrid-relative-date {
  cursor: help;
  text-decoration: underline dotted var(--swp-border-dark);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.datagrid-loading {
  position: relative;
}
.datagrid-loading::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--swp-loading-overlay);
  z-index: 10;
}

.datagrid-loading-indicator {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 11;
}

@media (width <= 768px) {
  .datagrid-header {
    flex-direction: column;
    align-items: stretch;
  }
  .datagrid-search {
    max-width: none;
  }
  .datagrid-table th,
  .datagrid-table td {
    padding: var(--swp-space-2) var(--swp-space-3);
  }
  .datagrid-bulk-bar-inner {
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
  }
  .datagrid-bulk-divider {
    display: none;
  }
}
.datagrid-table .col-expand {
  width: 40px;
  text-align: center;
  padding-right: var(--swp-space-2);
}

.datagrid-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.datagrid-expand-btn span {
  display: inline-flex;
  transition: transform 200ms ease;
}
.datagrid-expand-btn:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}

.datagrid-detail-row {
  display: none;
  background: var(--swp-gray-50);
}
.datagrid-detail-row.visible {
  display: table-row;
}
.datagrid-detail-row td {
  padding: 0;
  border-bottom: none;
}

.datagrid-detail-content {
  padding: var(--swp-space-4) var(--swp-space-6);
  animation: datagrid-slide-down 200ms ease;
}
.datagrid-detail-content .card {
  box-shadow: none;
  border: 1px solid var(--swp-border-light);
}

@keyframes datagrid-slide-down {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.api-token-history h4 {
  font-size: 1rem;
  font-weight: var(--swp-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
}
.api-token-history .table thead th {
  font-size: 0.75rem;
  font-weight: var(--swp-font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-bottom: 2px solid var(--swp-border-light);
  padding: var(--swp-space-2) var(--swp-space-3);
}
.api-token-history .table tbody tr {
  transition: background-color var(--swp-transition-fast);
}
.api-token-history .table tbody tr:hover {
  background-color: var(--swp-surface-hover);
}
.api-token-history .table tbody tr td {
  padding: var(--swp-space-2) var(--swp-space-3);
  vertical-align: middle;
  font-size: 0.875rem;
  border-bottom: 1px solid var(--swp-border-light);
}
.api-token-history .table tbody tr:last-child td {
  border-bottom: none;
}
.api-token-history .badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-weight: var(--swp-font-weight-medium);
}

/**
 * Shared module workspace patterns.
 *
 * Lists across sales, purchasing and finance use the same summary cards and
 * DataGrid shell. Keeping the hierarchy here prevents each module from rebuilding
 * the same card, tab and responsive behaviour.
 */
.workspace-stats .workspace-stat-card {
  height: 100%;
}
.workspace-stats .workspace-stat-card .card-body {
  padding: var(--swp-space-4);
}
.workspace-stats .workspace-stat-card .fw-medium {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold) !important;
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
}
.workspace-stats .workspace-stat-card .text-secondary {
  margin-top: var(--swp-space-1);
  font-size: var(--swp-text-sm);
}

.workspace-list-card {
  overflow: hidden;
}
.workspace-list-card > .card-header {
  padding: 0;
  border-bottom: 1px solid var(--swp-border);
}
.workspace-list-card .card-header-tabs {
  width: 100%;
  margin: 0;
  padding: var(--swp-space-2) var(--swp-space-3) 0;
  border-radius: 0;
  background: var(--swp-gray-50);
}
.workspace-list-card > .card-body {
  padding: 0;
}
.workspace-list-card .datagrid > .card {
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.workspace-entity-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
  text-decoration: none;
}
.workspace-entity-link:hover, .workspace-entity-link:focus-visible {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.workspace-entity-link svg {
  width: 0.875rem;
  height: 0.875rem;
  opacity: 0.65;
}

@media (width <= 575.98px) {
  .workspace-list-card .card-header-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .workspace-list-card .card-header-tabs::-webkit-scrollbar {
    display: none;
  }
  .workspace-list-card .card-header-tabs .nav-item {
    flex-shrink: 0;
  }
  .workspace-list-card .datagrid-table:has(.datagrid-empty) {
    width: 100%;
    table-layout: fixed;
  }
  .workspace-list-card .datagrid-table:has(.datagrid-empty) thead {
    display: none;
  }
}
/**
 * SolidInvoice - Client Form Styles
 *
 * Client-specific styles for the client creation/edit form.
 * Outer form-page layout uses shared classes from _form-page.scss.
 */
.client-form-section-optional {
  background: var(--swp-gray-50);
  border-style: dashed;
}
.client-form-section-optional .section-header {
  background: transparent;
}

.section-icon-required {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.contact-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.contact-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.contact-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
}

.contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-primary);
}

.contact-card-title {
  flex: 1;
}

.contact-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.contact-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.contact-card-body {
  padding: var(--swp-space-4);
}

.contact-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .contact-form-grid {
    grid-template-columns: 1fr;
  }
}

.contact-field-email {
  grid-column: 1/-1;
}

.additional-details-section {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.additional-details-header {
  margin-bottom: var(--swp-space-3);
}

.additional-details-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.additional-details-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.additional-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr auto;
  gap: var(--swp-space-2);
  align-items: start;
}
@media (width <= 576px) {
  .additional-detail-row {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
  .additional-detail-row .additional-detail-action {
    justify-self: end;
  }
}

.additional-detail-action {
  display: flex;
  align-items: center;
  padding-top: var(--swp-space-1);
}

.additional-details-add {
  margin-top: var(--swp-space-3);
}

.add-detail-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm);
}

.addresses-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.address-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  overflow: hidden;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.address-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.address-card-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.address-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-info-light);
  border-radius: var(--swp-radius-full);
  color: var(--swp-info);
}

.address-card-title {
  flex: 1;
}

.address-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.address-card-actions {
  display: flex;
  gap: var(--swp-space-2);
}

.address-card-body {
  padding: var(--swp-space-4);
}

.address-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}
@media (width <= 576px) {
  .address-form-grid {
    grid-template-columns: 1fr;
  }
}

.add-item-action {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-4);
  font-weight: var(--swp-font-medium);
  border-style: dashed;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-style: solid;
}
.add-item-btn::before {
  content: "+";
  font-size: 1.25em;
  font-weight: 300;
}

@keyframes client-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.contact-card,
.address-card {
  animation: client-slide-in 0.2s ease-out;
}

.contacts-list:empty::before,
.addresses-list:empty::before {
  content: "";
  display: none;
}

.empty-contacts-hint,
.empty-addresses-hint {
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.empty-contacts-hint p,
.empty-addresses-hint p {
  font-size: var(--swp-text-sm);
}

.client-info-section {
  overflow: visible;
}
.client-info-section .section-header {
  border-top-left-radius: calc(var(--swp-radius-lg) - 1px);
  border-top-right-radius: calc(var(--swp-radius-lg) - 1px);
}

/**
 * SolidInvoice - Billing Form Styles
 *
 * Modern, clean invoice creation form with 2-column layout,
 * sticky totals sidebar, and collapsible sections.
 * Uses design system tokens for consistent styling.
 */
.billing-form-page {
  min-height: 100%;
}

.billing-form-container {
  max-width: 1100px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-24);
}

.procurement-form-card {
  padding: var(--swp-space-6);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
}
.procurement-form-card > form > .billing-section-heading:first-of-type {
  margin-top: 0;
}
.procurement-form-card .billing-form-actions {
  margin-right: calc(-1 * var(--swp-space-6));
  margin-bottom: calc(-1 * var(--swp-space-6));
  margin-left: calc(-1 * var(--swp-space-6));
  padding-inline: var(--swp-space-2);
  border-radius: 0 0 var(--swp-radius-lg) var(--swp-radius-lg);
}

.billing-form-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.billing-form-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.billing-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.billing-form-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.billing-form-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.billing-section-heading {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
  padding-bottom: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
}
.billing-section-heading .billing-section-heading-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 32px;
  width: 32px;
  height: 32px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.billing-section-heading h2 {
  margin: 0;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-section-heading p {
  margin: var(--swp-space-1) 0 0;
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.billing-details-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
  transition: box-shadow var(--swp-transition-base);
}
.billing-details-section:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-details-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
}
@media (width <= 768px) {
  .billing-details-grid {
    grid-template-columns: 1fr;
  }
}
.billing-details-grid--no-dates .billing-details-right {
  justify-content: flex-start;
  padding-top: var(--swp-space-2);
}

.billing-details-left {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-details-right {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.billing-id-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.billing-id-display .billing-id-label {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.billing-id-display .billing-id-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
}
.billing-id-display .billing-id-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: var(--swp-radius-sm);
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.billing-id-display .billing-id-edit:hover {
  color: var(--swp-primary);
  background: var(--swp-primary-light);
}

.billing-id-form {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.billing-id-form .form-control {
  max-width: 200px;
}
.billing-id-form .btn {
  padding: var(--swp-space-2);
}

.invoice-dates-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 576px) {
  .invoice-dates-row {
    grid-template-columns: 1fr;
  }
}

.client-selection {
  margin-bottom: var(--swp-space-4);
}

.selected-client-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}

.selected-client-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.selected-client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.selected-client-change {
  font-size: var(--swp-text-sm);
  color: var(--swp-primary);
  text-decoration: none;
}
.selected-client-change:hover {
  text-decoration: underline;
}

.selected-client-contacts {
  border-top: 1px dashed var(--swp-border);
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
}

.contacts-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.contact-checkbox {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-sm);
  transition: background var(--swp-transition-fast);
}
.contact-checkbox:hover {
  background: var(--swp-gray-100);
}
.contact-checkbox .form-check-input {
  margin: 0;
}
.contact-checkbox .contact-name {
  font-weight: var(--swp-font-medium);
}
.contact-checkbox .contact-email {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}

.billing-form-main {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 1100px) {
  .billing-form-main {
    grid-template-columns: 1fr 280px;
  }
}
@media (width <= 900px) {
  .billing-form-main {
    grid-template-columns: 1fr;
  }
}

.billing-items-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-items-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-items-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
}

.billing-items-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-items-body {
  padding: var(--swp-space-4);
}

.billing-items-list {
  margin-bottom: var(--swp-space-4);
}

.billing-items-header-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border);
}
.billing-items-header-row > div {
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  white-space: nowrap;
}
.billing-items-header-row .column-total {
  text-align: right;
}
.billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-header-row {
    display: none;
  }
}

.billing-items-list:not(:has(.column-tax), .delivery-note-items-list) .billing-items-header-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax), .delivery-note-items-list) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax), .delivery-note-items-list) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
.billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 24px;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  border-bottom: 1px solid var(--swp-border-light);
  align-items: start;
  transition: background var(--swp-transition-fast);
}
.billing-item-row > div {
  min-width: 0;
}
.billing-item-row:hover {
  background: var(--swp-gray-50);
}
.billing-item-row:last-child {
  border-bottom: none;
}
.billing-item-row .column-description {
  min-width: 0;
  overflow: hidden;
}
.billing-item-row .column-description textarea {
  min-height: 60px;
  resize: vertical;
  width: 100%;
  max-width: 100%;
}
.billing-item-row .line-description {
  margin-top: 0.25rem;
}
.billing-item-row .line-description > summary {
  color: var(--tblr-secondary);
  cursor: pointer;
  font-size: 0.75rem;
  list-style: none;
  width: fit-content;
}
.billing-item-row .line-description > summary::-webkit-details-marker {
  display: none;
}
.billing-item-row .line-description > summary::before {
  content: "+";
  margin-right: 0.25rem;
}
.billing-item-row .line-description > summary:hover {
  color: var(--tblr-primary);
}
.billing-item-row .line-description[open] > summary {
  margin-bottom: 0.25rem;
}
.billing-item-row .line-description[open] > summary::before {
  content: "−";
}
.billing-item-row .column-price input,
.billing-item-row .column-price select,
.billing-item-row .column-qty input,
.billing-item-row .column-qty select,
.billing-item-row .column-tax input,
.billing-item-row .column-tax select {
  width: 100%;
}
.billing-item-row .column-price .input-group-text {
  padding: 0.25rem 0.4rem;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  background: var(--swp-gray-50);
  border-color: var(--swp-border-light);
}
.billing-item-row .column-price input {
  min-width: 0;
}
.billing-item-row .column-qty input {
  text-align: center;
}
.billing-item-row .column-total {
  text-align: right;
  padding-top: var(--swp-space-1);
}
.billing-item-row .column-total .item-total-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.billing-item-row .column-actions {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 0;
}
.billing-item-row .column-drag {
  display: flex;
  align-items: center;
  justify-content: center;
  padding-top: var(--swp-space-2);
}
.billing-item-row .line-drag-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  border: 0;
  border-radius: var(--swp-radius-sm);
  background: none;
  color: var(--swp-text-muted);
  cursor: grab;
  opacity: 0;
  transition: opacity var(--swp-transition-fast), background var(--swp-transition-fast), color var(--swp-transition-fast);
}
.billing-item-row .line-drag-handle:hover {
  background: var(--swp-gray-100);
  color: var(--swp-text-primary);
}
.billing-item-row .line-drag-handle:active {
  cursor: grabbing;
}
.billing-item-row .line-drag-handle:focus-visible {
  opacity: 1;
  outline: 2px solid var(--swp-primary);
  outline-offset: 1px;
}
.billing-item-row:hover .line-drag-handle {
  opacity: 1;
}
.billing-item-row .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    position: relative;
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "price qty" "tax tax" "actions total";
    gap: var(--swp-space-3);
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-3);
    background: var(--swp-gray-50);
    border: 1px solid var(--swp-border);
    border-radius: var(--swp-radius-md);
  }
  .billing-item-row:hover {
    background: var(--swp-gray-50);
  }
  .billing-item-row:last-child {
    border-bottom: 1px solid var(--swp-border);
  }
  .billing-item-row .mobile-label {
    display: block;
    font-size: var(--swp-text-xs);
    font-weight: var(--swp-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--swp-text-muted);
    margin-bottom: var(--swp-space-1);
  }
  .billing-item-row .column-description {
    grid-area: desc;
  }
  .billing-item-row .column-description textarea {
    width: 100%;
    min-height: 80px;
  }
  .billing-item-row .column-price {
    grid-area: price;
  }
  .billing-item-row .column-price input {
    width: 100%;
  }
  .billing-item-row .column-qty {
    grid-area: qty;
  }
  .billing-item-row .column-qty input {
    width: 100%;
  }
  .billing-item-row .column-tax {
    grid-area: tax;
  }
  .billing-item-row .column-tax select {
    width: 100%;
  }
  .billing-item-row .column-actions {
    grid-area: actions;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-drag {
    position: absolute;
    top: var(--swp-space-2);
    right: var(--swp-space-2);
    padding-top: 0;
  }
  .billing-item-row .line-drag-handle {
    opacity: 1;
  }
  .billing-item-row .column-total {
    grid-area: total;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: var(--swp-space-2);
    padding-top: var(--swp-space-3);
    border-top: 1px dashed var(--swp-border);
  }
  .billing-item-row .column-total .mobile-label {
    display: inline;
    margin-bottom: 0;
  }
  .billing-item-row .column-total .item-total-value {
    font-size: var(--swp-text-lg);
    font-weight: var(--swp-font-semibold);
    color: var(--swp-primary);
  }
}

.remove-item-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  border: 1px solid var(--swp-border);
  background: var(--swp-surface);
  color: var(--swp-text-muted);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.remove-item-btn svg {
  width: 12px;
  height: 12px;
}
.remove-item-btn:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger);
}
.remove-item-btn:focus {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.add-item-action {
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}

.add-item-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  gap: var(--swp-space-2);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  background: transparent;
  border: 2px dashed var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.add-item-btn:hover {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  border-style: solid;
}

:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-items-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-items-header-row {
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  background: var(--swp-gray-50);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row {
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: background var(--swp-transition-fast), border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row:hover {
  border-color: var(--swp-border);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row:last-child {
  border-bottom: 1px solid var(--swp-border-light);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row:has(.is-invalid, .form-error-message, .invalid-feedback:not(:empty)) {
  border-color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row .form-control,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row .form-select,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row .ts-control {
  min-height: var(--swp-control-height);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row .invalid-feedback,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .billing-item-row .form-error-message {
  display: block;
  margin-top: var(--swp-space-1);
  font-size: var(--swp-text-xs);
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .remove-item-btn {
  width: 32px;
  height: 32px;
  padding: 0;
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .remove-item-btn svg {
  width: 14px;
  height: 14px;
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .add-item-btn::before {
  content: none;
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote]),
.billing-form-page:has(form[name=delivery_note]),
.billing-form-page:has(form[name=purchase]),
.billing-form-page:has(form[name=purchase_order])) .mb-3:has(> button[data-live-action-param=removeCollectionItem]:not(.remove-item-btn)) {
  display: none;
}

:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-items-header-row,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-item-row {
  grid-template-columns: 28px minmax(0, 2.6fr) minmax(130px, 1.1fr) 56px minmax(140px, 0.9fr) minmax(60px, 0.4fr) 32px;
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-items-list:not(:has(.column-tax)) .billing-items-header-row,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 32px;
}
@media (width <= 900px) {
  :is(.billing-form-page:has(form[name=invoice]),
  .billing-form-page:has(form[name=quote])) .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-items-header-row,
:is(.billing-form-page:has(form[name=invoice]),
.billing-form-page:has(form[name=quote])) .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
  grid-template-columns: 28px minmax(0, 3.2fr) minmax(130px, 1.1fr) 56px minmax(80px, 0.5fr) minmax(60px, 0.4fr) 32px;
}
@media (width <= 900px) {
  :is(.billing-form-page:has(form[name=invoice]),
  .billing-form-page:has(form[name=quote])) .billing-items-list:has(.column-tax):not(:has(.line-tax-row)) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}
@media (width <= 900px) {
  :is(.billing-form-page:has(form[name=invoice]),
  .billing-form-page:has(form[name=quote])) .billing-item-row {
    grid-template-columns: 1fr 1fr;
  }
}

.line-tax-collection {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.line-tax-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.line-tax-row {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}

.line-tax-field-tax {
  flex: 1 1 auto;
  min-width: 0;
}
.line-tax-field-tax select,
.line-tax-field-tax .form-select {
  width: 100%;
  min-width: 0;
  padding: 4px 22px 4px 8px;
  font-size: var(--swp-text-xs);
  line-height: 1.2;
  background-position: right 6px center;
  background-size: 12px;
}

.line-tax-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
}

.line-tax-remove-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 2px 4px;
  line-height: 1;
  color: var(--swp-text-muted);
  background: transparent;
  border: 0;
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: color var(--swp-transition-fast), background var(--swp-transition-fast);
}
.line-tax-remove-btn svg {
  width: 12px;
  height: 12px;
}
.line-tax-remove-btn:hover {
  color: var(--swp-danger);
  background: rgba(var(--swp-danger-rgb), 0.08);
}

.line-tax-add-btn {
  align-self: flex-start;
  padding: 2px 8px;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.4;
  color: var(--swp-primary);
  background: transparent;
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-sm);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.line-tax-add-btn:hover {
  color: var(--swp-primary-dark);
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}

.billing-invoice-taxes {
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-4) var(--swp-space-6) var(--swp-space-6);
  border-top: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.billing-invoice-taxes-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-taxes-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-invoice-taxes-subtitle {
  flex-basis: 100%;
  margin: 0;
  font-size: var(--swp-text-sm);
}

.billing-invoice-taxes-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-3);
}

.billing-invoice-tax-row {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, 3fr) auto;
  gap: var(--swp-space-3);
  align-items: start;
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
@media (width <= 768px) {
  .billing-invoice-tax-row {
    grid-template-columns: 1fr;
  }
}

.invoice-tax-field {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}
.invoice-tax-field .mobile-label {
  display: none;
  font-size: var(--swp-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--swp-text-muted);
}
@media (width <= 768px) {
  .invoice-tax-field .mobile-label {
    display: block;
  }
}

.invoice-tax-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

.billing-totals-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .billing-totals-sidebar {
    position: static;
  }
}

.billing-totals-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.billing-totals-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.billing-totals-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.billing-totals-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.billing-totals-body {
  padding: var(--swp-space-5);
}

.totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-3) 0;
}
.totals-row:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.totals-value {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.totals-row-total {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-dark);
}
.totals-row-total .totals-label {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.totals-row-total .totals-value {
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.discount-field {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px dashed var(--swp-border);
}
.discount-field .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
}

.billing-terms-section {
  margin-top: var(--swp-space-6);
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}
.billing-terms-section[open] {
  background: var(--swp-surface);
  border-style: solid;
}
.billing-terms-section[open] .terms-summary {
  border-bottom: 1px solid var(--swp-border-light);
}
.billing-terms-section[open] .terms-summary-icon {
  transform: rotate(90deg);
}

.terms-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  cursor: pointer;
  list-style: none;
  transition: background var(--swp-transition-fast);
}
.terms-summary::-webkit-details-marker {
  display: none;
}
.terms-summary:hover {
  background: var(--swp-gray-100);
}

.terms-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  color: var(--swp-text-muted);
  transition: transform var(--swp-transition-fast);
}

.terms-summary-text {
  flex: 1;
}

.terms-summary-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.terms-content {
  padding: var(--swp-space-6);
}

.terms-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-4);
}
@media (width <= 768px) {
  .terms-grid {
    grid-template-columns: 1fr;
  }
}

.billing-form-actions {
  position: sticky;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--swp-surface);
  border-top: 1px solid var(--swp-border);
  padding: var(--swp-space-4) 0;
  margin-top: var(--swp-space-8);
  z-index: 10;
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05);
}

.billing-form-actions-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 var(--swp-space-4);
}

.save-button-group {
  box-shadow: var(--swp-shadow-primary);
  border-radius: var(--swp-radius-md);
}
.save-button-group .btn-save-primary {
  box-shadow: none;
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
.save-button-group .btn-save-primary:hover {
  box-shadow: none;
  transform: none;
}
.save-button-group .dropdown-toggle-split {
  padding: var(--swp-space-3) var(--swp-space-3);
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}
.save-button-group .dropdown-toggle-split::after {
  vertical-align: middle;
}
.save-button-group .dropdown-menu {
  min-width: 180px;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
  border: 1px solid var(--swp-border);
}
.save-button-group .dropdown-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2-5) var(--swp-space-3);
  border-radius: var(--swp-radius-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-fast);
}
.save-button-group .dropdown-item svg {
  color: var(--swp-text-muted);
  transition: color var(--swp-transition-fast);
}
.save-button-group .dropdown-item:hover {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}
.save-button-group .dropdown-item:hover svg {
  color: var(--swp-primary);
}
.save-button-group:hover {
  box-shadow: var(--swp-shadow-primary-lg);
}

@media (width <= 768px) {
  .billing-items-table {
    display: none;
  }
  .billing-items-cards {
    display: flex;
    flex-direction: column;
    gap: var(--swp-space-4);
  }
}
@media (width >= 769px) {
  .billing-items-cards {
    display: none;
  }
}
.billing-item-card {
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  animation: billing-slide-in 0.2s ease-out;
}
.billing-item-card:focus-within {
  border-color: rgba(var(--swp-primary-rgb), 0.4);
  box-shadow: 0 0 0 3px rgba(var(--swp-primary-rgb), 0.08);
}

.billing-item-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-3);
}

.billing-item-card-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-muted);
}

.billing-item-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.billing-item-card-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: var(--swp-space-3);
}

.billing-item-card-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: var(--swp-space-3);
  margin-top: var(--swp-space-3);
  border-top: 1px dashed var(--swp-border);
}
.billing-item-card-total .item-total-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
}
.billing-item-card-total .item-total-value {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

@keyframes billing-slide-in {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@media (width <= 768px) {
  .billing-form-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-20);
  }
  .billing-form-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .billing-form-icon {
    width: 48px;
    height: 48px;
  }
  .billing-form-title {
    font-size: 1.5rem;
  }
  .billing-details-section,
  .billing-items-section,
  .billing-totals-card,
  .procurement-form-card {
    border-radius: var(--swp-radius-md);
  }
  .procurement-form-card {
    padding: var(--swp-space-4);
  }
  .procurement-form-card .billing-form-actions {
    margin-right: calc(-1 * var(--swp-space-4));
    margin-bottom: calc(-1 * var(--swp-space-4));
    margin-left: calc(-1 * var(--swp-space-4));
    border-radius: 0 0 var(--swp-radius-md) var(--swp-radius-md);
  }
  .billing-form-actions-inner {
    gap: var(--swp-space-3);
  }
  .billing-form-actions-inner .btn {
    flex: 1;
  }
  .billing-id-display {
    flex-wrap: wrap;
  }
  .billing-id-display .billing-id-label,
  .billing-id-display .billing-id-value {
    font-size: var(--swp-text-xl);
  }
}
.recurring-schedule-section {
  margin-block: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.recurring-schedule-section .section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-block-end: var(--swp-space-5);
  padding-block-end: var(--swp-space-4);
  border-block-end: 1px solid var(--swp-border-light);
}
.recurring-schedule-section .section-header .section-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--swp-radius-md);
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  flex-shrink: 0;
}
.recurring-schedule-section .section-header .section-header-content {
  flex: 1;
}
.recurring-schedule-section .section-header .section-header-content .section-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1) 0;
}
.recurring-schedule-section .section-header .section-header-content .section-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin: 0;
}
.recurring-schedule-section .recurring-schedule-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--swp-space-3);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_type], .recurring-options-wrapper [id$=_endType] {
    grid-template-columns: repeat(2, 1fr);
  }
}
.recurring-options-wrapper [id$=_type] .form-check-label.required::after, .recurring-options-wrapper [id$=_endType] .form-check-label.required::after {
  display: none;
}
.recurring-options-wrapper [id$=_type] > .form-check, .recurring-options-wrapper [id$=_endType] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio], .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_type] > .form-check label, .recurring-options-wrapper [id$=_endType] > .form-check label {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-3);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  transition: all 0.2s ease;
  min-height: 70px;
  cursor: pointer;
  margin: 0;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: center;
}
.recurring-options-wrapper [id$=_type] > .form-check:hover label, .recurring-options-wrapper [id$=_endType] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_type] > .form-check input[type=radio]:checked + label, .recurring-options-wrapper [id$=_endType] > .form-check input[type=radio]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff;
}
.recurring-options-wrapper [id$=_endType] {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
}
.recurring-options-wrapper [id$=_days] {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(80px, 1fr));
  gap: var(--swp-space-2);
  margin-block-start: var(--swp-space-2);
}
@media (width <= 768px) {
  .recurring-options-wrapper [id$=_days] {
    grid-template-columns: repeat(auto-fit, minmax(70px, 1fr));
  }
}
.recurring-options-wrapper [id$=_days] > .form-check {
  position: relative;
  margin: 0;
  padding: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}
.recurring-options-wrapper [id$=_days] > .form-check label {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-3) var(--swp-space-2);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary) !important;
  transition: all 0.2s ease;
  min-height: 44px;
  text-align: center;
  cursor: pointer;
  margin: 0;
  opacity: 1 !important;
  visibility: visible !important;
}
.recurring-options-wrapper [id$=_days] > .form-check label::before, .recurring-options-wrapper [id$=_days] > .form-check label::after {
  content: none !important;
}
.recurring-options-wrapper [id$=_days] > .form-check:hover label {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.recurring-options-wrapper [id$=_days] > .form-check input[type=checkbox]:checked + label {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: #ffffff !important;
}

.recurring-frequency-display {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-lighter) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
}
.recurring-frequency-display .recurring-frequency-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: var(--swp-primary-light);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.recurring-frequency-display .recurring-frequency-text {
  flex: 1;
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
}
.recurring-frequency-display .recurring-frequency-text strong {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
}

.recurring-variables-help {
  margin-block-start: var(--swp-space-3);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-bg-subtle);
}
.recurring-variables-help .variables-summary {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-info);
  cursor: pointer;
  list-style: none;
  user-select: none;
}
.recurring-variables-help .variables-summary::-webkit-details-marker {
  display: none;
}
.recurring-variables-help .variables-summary svg {
  flex-shrink: 0;
}
.recurring-variables-help .variables-summary:hover {
  color: var(--swp-info-emphasis);
}
.recurring-variables-help .variables-content {
  margin-block-start: var(--swp-space-3);
  padding-block-start: var(--swp-space-3);
  border-block-start: 1px solid var(--swp-info-border-subtle);
}
.recurring-variables-help .variables-content .variables-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-block-end: var(--swp-space-3);
}
.recurring-variables-help .variables-content .variables-list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--swp-space-3) 0;
}
.recurring-variables-help .variables-content .variables-list li {
  display: flex;
  align-items: baseline;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) 0;
  font-size: var(--swp-text-sm);
  line-height: 1.6;
}
.recurring-variables-help .variables-content .variables-list li code {
  padding: 2px 8px;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
  color: var(--swp-primary);
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.recurring-variables-help .variables-content .variables-list li .variable-description {
  color: var(--swp-text-muted);
}
.recurring-variables-help .variables-content .variable-example {
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border-inline-start: 3px solid var(--swp-info);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-sm);
}
.recurring-variables-help .variables-content .variable-example strong {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
}
.recurring-variables-help .variables-content .variable-example .example-text {
  display: block;
  margin-block-start: var(--swp-space-2);
  color: var(--swp-text-secondary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-xs);
}
.recurring-variables-help[open] .variables-summary {
  margin-block-end: 0;
}

.invoice-sidebar-card-highlight {
  border-left: 3px solid var(--swp-primary);
  background: linear-gradient(to right, rgba(var(--swp-primary-rgb), 0.03), transparent);
}

.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.recurring-schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: var(--swp-space-2) 0;
}
.recurring-schedule-item:not(:last-child) {
  border-bottom: 1px solid var(--swp-border-light);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
}

.recurring-schedule-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  text-align: right;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.occurrence-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  transform: translateX(2px);
}

.occurrence-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.occurrence-date {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
  padding: 0;
  margin: 0;
  list-style: none;
}

.generated-invoice-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.generated-invoice-item:hover {
  background: var(--swp-surface);
  border-color: rgba(var(--swp-primary-rgb), 0.3);
}

.generated-invoice-link {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}
.generated-invoice-link:hover {
  color: var(--swp-primary);
}
.generated-invoice-link:hover .generated-invoice-number {
  color: var(--swp-primary);
}

.generated-invoice-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-success);
  flex-shrink: 0;
}

.generated-invoice-number {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  transition: color var(--swp-transition-fast);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.generated-invoice-total {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}

.view-all-link {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-primary);
  text-decoration: none;
  background: var(--swp-primary-lighter);
  border: 1px solid rgba(var(--swp-primary-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  transition: all var(--swp-transition-fast);
}
.view-all-link:hover {
  background: rgba(var(--swp-primary-rgb), 0.15);
  border-color: var(--swp-primary);
  transform: translateY(-1px);
}

.delivery-note-items-list .billing-items-header-row,
.delivery-note-items-list .billing-item-row {
  grid-template-columns: 28px minmax(0, 1fr) 88px 40px;
}
.delivery-note-items-list .billing-items-header-row .column-qty {
  text-align: center;
}
.delivery-note-items-list .billing-items-header-row .column-actions {
  text-align: center;
}
@media (width <= 900px) {
  .delivery-note-items-list .billing-items-header-row {
    display: none;
  }
}
@media (width <= 900px) {
  .delivery-note-items-list .billing-item-row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "desc desc" "qty actions";
  }
}
@media (width <= 900px) {
  .delivery-note-items-list .billing-item-row .column-description {
    grid-area: desc;
  }
}
@media (width <= 900px) {
  .delivery-note-items-list .billing-item-row .column-qty {
    grid-area: qty;
  }
}
.delivery-note-items-list .billing-item-row .column-qty input {
  font-weight: var(--swp-font-medium);
  font-variant-numeric: tabular-nums;
}
@media (width <= 900px) {
  .delivery-note-items-list .billing-item-row .column-actions {
    grid-area: actions;
  }
}
.delivery-note-items-list .billing-item-row .line-drag-handle {
  opacity: 0.35;
}
.delivery-note-items-list .billing-item-row:hover .line-drag-handle {
  opacity: 1;
}
.delivery-note-items-list .billing-item-row .remove-item-btn {
  width: 32px;
  height: 32px;
  padding: 0;
}
.delivery-note-items-list .billing-item-row .remove-item-btn svg {
  width: 14px;
  height: 14px;
}

.delivery-note-items-body .add-item-action {
  border-top: 0;
  padding-top: var(--swp-space-3);
}

.billing-items-section .billing-items-list.purchase-items-list .billing-items-header-row,
.billing-items-section .billing-items-list.purchase-items-list .billing-item-row {
  grid-template-columns: minmax(0, 1.7fr) minmax(0, 2.1fr) 84px minmax(120px, 0.9fr) 40px;
}
.billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .billing-items-header-row,
.billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .billing-item-row {
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 2fr) 80px minmax(120px, 0.9fr) minmax(130px, 1fr) 40px;
}
.billing-items-section .billing-items-list.purchase-items-list:not(:has(.billing-item-row)) .billing-items-header-row {
  display: none;
}
.billing-items-section .billing-items-list.purchase-items-list .column-name input {
  width: 100%;
}
.billing-items-section .billing-items-list.purchase-items-list .column-qty input {
  text-align: center;
}
@media (width <= 900px) {
  .billing-items-section .billing-items-list.purchase-items-list .billing-item-row, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .billing-item-row {
    grid-template-columns: 1fr 1fr;
    grid-template-areas: "name name" "desc desc" "qty price" "tax tax" "actions actions";
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-name, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-name {
    grid-area: name;
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-description, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-description {
    grid-area: desc;
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-qty, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-qty {
    grid-area: qty;
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-price, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-price {
    grid-area: price;
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-tax, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-tax {
    grid-area: tax;
  }
  .billing-items-section .billing-items-list.purchase-items-list .column-actions, .billing-items-section .billing-items-list.purchase-items-list:has(.column-tax) .column-actions {
    grid-area: actions;
  }
}

.billing-items-body:has(.billing-item-row) .purchase-items-empty {
  display: none;
}

/**
 * SolidInvoice - Payment Page Styles
 *
 * Modern, clean payment page with two-column layout,
 * card-based payment method selection, and invoice summary.
 * Uses design system tokens for consistent styling.
 */
.payment-page {
  min-height: 100%;
}

.payment-container {
  max-width: 1200px;
  margin: 0 auto;
  padding-bottom: var(--swp-space-12);
}
.payment-container--record {
  max-width: 960px;
}

.payment-header {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-6) 0;
}

.payment-header-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
}

.payment-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-primary);
}

.payment-header-title {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  letter-spacing: -0.025em;
}

.payment-header-subtitle {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0 0;
}

.payment-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-6);
  align-items: start;
}
@media (width <= 992px) {
  .payment-layout {
    grid-template-columns: 1fr;
  }
}

.payment-layout--record {
  grid-template-columns: minmax(18rem, 0.85fr) minmax(0, 1.15fr);
}
@media (width <= 992px) {
  .payment-layout--record {
    grid-template-columns: 1fr;
  }
}

.payment-invoice-summary {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 992px) {
  .payment-invoice-summary {
    position: static;
    order: 2;
  }
}

.invoice-summary-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.invoice-summary-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.invoice-summary-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-info-light) 0%, rgba(var(--swp-info-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-info);
}

.invoice-summary-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.invoice-summary-body {
  padding: var(--swp-space-5);
}

.summary-section {
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.summary-section:first-child {
  padding-top: 0;
}
.summary-section:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.summary-section-label {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.summary-client-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
}
.summary-client-info .client-name {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.client-credit-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  margin-top: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  color: var(--swp-success);
  background: var(--swp-success-lighter);
  border-radius: var(--swp-radius-full);
}

.invoice-details-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}

.detail-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.line-items-preview {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.line-item-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.line-item-desc {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}

.line-item-amount {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.summary-totals {
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
}

.summary-totals .totals-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--swp-space-2) 0;
}

.summary-totals .totals-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
}

.summary-totals .totals-value {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.summary-totals .totals-row-discount .totals-value {
  color: var(--swp-text-muted);
}

.summary-totals .totals-row-payment .totals-value {
  color: var(--swp-success);
}

.summary-totals .totals-row-balance {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-dark);
}
.summary-totals .totals-row-balance .totals-label {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}
.summary-totals .totals-row-balance .totals-value {
  font-size: var(--swp-text-xl);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.manual-payment-balance {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-4);
  border: 1px solid var(--swp-warning-light);
  border-radius: var(--swp-radius-md);
  background: var(--swp-warning-lighter);
}
.manual-payment-balance span {
  color: var(--swp-warning-dark);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
  text-transform: uppercase;
}
.manual-payment-balance strong {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-2xl);
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}

@media (width <= 992px) {
  .payment-form-section {
    order: 1;
  }
}

.payment-form-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-form-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-form-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-success-light) 0%, rgba(var(--swp-success-rgb), 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-success);
}

.payment-form-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-form-body {
  padding: var(--swp-space-5);
}

.manual-payment-notice {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-5);
  padding: var(--swp-space-3);
  border: 1px solid var(--swp-info-light);
  border-radius: var(--swp-radius-md);
  background: var(--swp-info-lighter);
  color: var(--swp-info-dark);
}
.manual-payment-notice svg {
  flex-shrink: 0;
  margin-top: 0.1rem;
}
.manual-payment-notice p {
  margin: 0;
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-sm);
  line-height: 1.5;
}

.payment-form-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}

.payment-form-body .form-label {
  display: block;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.payment-form-body .form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}
.payment-form-body .form-text {
  display: block;
  margin-top: var(--swp-space-2);
}
.payment-form-body .input-group {
  flex-wrap: nowrap;
}
.payment-form-body textarea.form-control {
  min-height: 80px;
  resize: vertical;
}
.payment-form-body .mb-4:last-child {
  margin-bottom: 0 !important;
}

.payment-methods-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--swp-space-3);
}

.payment-method-card {
  position: relative;
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  cursor: pointer;
  transition: all var(--swp-transition-fast);
}
.payment-method-card:hover {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
}
.payment-method-card:has(.payment-method-input:checked) {
  border-color: var(--swp-primary);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-ring-primary);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-check {
  opacity: 1;
  transform: scale(1);
}
.payment-method-card:has(.payment-method-input:checked) .payment-method-icon {
  background: var(--swp-primary);
  color: #ffffff;
}
.payment-method-card:has(.payment-method-input:focus-visible) {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

.payment-method-preferred {
  order: -1;
}

.payment-method-input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.payment-method-content {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  flex: 1;
}

.payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-secondary);
  transition: all var(--swp-transition-fast);
}

.payment-method-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
}

.payment-method-badge {
  display: inline-flex;
  align-self: flex-start;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-method-badge-online {
  color: var(--swp-info);
  background: var(--swp-info-light);
}

.payment-method-badge-credit {
  color: var(--swp-success);
  background: var(--swp-success-light);
}

.payment-method-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: var(--swp-primary);
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  opacity: 0;
  transform: scale(0.8);
  transition: all var(--swp-transition-fast);
}

.amount-field-wrapper {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  flex-wrap: wrap;
}
.amount-field-wrapper .form-label,
.amount-field-wrapper .form-section-label {
  margin-bottom: 0;
}

.amount-balance-hint {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  white-space: nowrap;
  padding: var(--swp-space-1) var(--swp-space-2);
  background: var(--swp-primary-lighter);
  border-radius: var(--swp-radius-sm);
}
.amount-balance-hint strong {
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.capture-online-field {
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.capture-online-field .form-check {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  padding-left: 0;
}
.capture-online-field .form-check-input {
  float: none;
  margin-left: 0;
  margin-top: 0;
  width: 2.5rem;
  height: 1.25rem;
  flex-shrink: 0;
}
.capture-online-field .form-check-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.capture-online-field .form-help {
  margin-left: 0;
  padding-left: calc(2.5rem + var(--swp-space-2));
}

[data-payment-method-select-target=captureOnline].d-none {
  display: none !important;
}

.client-name-link,
.invoice-id-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-semibold);
  transition: color var(--swp-transition-fast);
}
.client-name-link svg,
.invoice-id-link svg {
  opacity: 0.5;
  transition: opacity var(--swp-transition-fast);
}
.client-name-link:hover,
.invoice-id-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}
.client-name-link:hover svg,
.invoice-id-link:hover svg {
  opacity: 1;
}

.client-name-link {
  font-size: var(--swp-text-lg);
}

.invoice-id-link {
  font-size: var(--swp-text-sm);
  font-family: var(--swp-font-mono, monospace);
}

.payment-history-card {
  margin-top: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
}

.payment-history-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-5);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border-light);
}

.payment-history-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background: linear-gradient(135deg, var(--swp-warning-light, #fef3c7) 0%, rgba(245, 158, 11, 0.2) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-warning, #f59e0b);
}

.payment-history-title {
  flex: 1;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-history-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-muted);
  background: var(--swp-gray-200);
  border-radius: var(--swp-radius-full);
}

.payment-history-body {
  padding: var(--swp-space-4) var(--swp-space-5);
}

.payments-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.payment-card {
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border-left: 3px solid var(--swp-gray-300);
  transition: all var(--swp-transition-fast);
}

.payment-card-captured {
  border-left-color: var(--swp-success);
  background: var(--swp-success-lighter, rgba(16, 185, 129, 0.05));
}

.payment-card-failed {
  border-left-color: var(--swp-danger);
  background: var(--swp-danger-lighter, rgba(239, 68, 68, 0.05));
}

.payment-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-2);
}

.payment-amount {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
}

.payment-card-body {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.payment-detail {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
}
.payment-detail svg {
  flex-shrink: 0;
  opacity: 0.7;
}

.payment-message {
  margin-top: var(--swp-space-2);
  padding-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
  font-size: var(--swp-text-xs);
  font-style: italic;
  color: var(--swp-text-secondary);
}

.btn-pay {
  padding: var(--swp-space-3) var(--swp-space-6);
  font-weight: var(--swp-font-semibold);
  box-shadow: var(--swp-shadow-primary);
}
.btn-pay:hover {
  box-shadow: var(--swp-shadow-primary-lg);
  transform: translateY(-1px);
}
.btn-pay:active {
  transform: translateY(0);
}

@media (width <= 768px) {
  .payment-container {
    padding: 0 var(--swp-space-4);
    padding-bottom: var(--swp-space-16);
  }
  .payment-header {
    margin-bottom: var(--swp-space-4);
    padding: var(--swp-space-4) 0;
  }
  .payment-header-icon {
    width: 48px;
    height: 48px;
  }
  .payment-header-title {
    font-size: 1.5rem;
  }
  .payment-methods-grid {
    grid-template-columns: 1fr;
  }
  .invoice-details-grid {
    grid-template-columns: 1fr;
  }
  .payment-form-footer {
    flex-direction: column-reverse;
    gap: var(--swp-space-3);
  }
  .payment-form-footer .btn {
    width: 100%;
    justify-content: center;
  }
  .amount-field-wrapper {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-1);
  }
}
/**
 * Payments List Page Styles
 *
 * Minimal styling for the payments list page with KPI cards.
 * Most styles come from Tabler/Bootstrap - this file only adds specific customizations.
 */
.row-deck .card-sm {
  transition: all 0.2s ease-in-out;
}
.row-deck .card-sm:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

/**
 * SolidInvoice - Users Page Styles
 *
 * Modern users list page with KPI cards and tabbed interface.
 * Uses design system tokens for consistent styling.
 */
.users-page {
  min-height: 100%;
}

/**
 * SolidInvoice - Profile Page Styles
 *
 * Styles for the user profile view and sidebar navigation.
 * Form pages (edit, change-password) use shared classes from _form-page.scss.
 * Includes: sidebar navigation, profile view, security status.
 */
.profile-sidebar {
  position: sticky;
  top: var(--swp-space-6);
}
@media (width <= 991.98px) {
  .profile-sidebar {
    position: static;
    margin-bottom: var(--swp-space-4);
  }
}

.profile-nav-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  box-shadow: var(--swp-shadow-sm);
}

.profile-nav {
  display: flex;
  flex-direction: column;
}

.profile-nav-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3) var(--swp-space-4);
  color: var(--swp-text-secondary);
  text-decoration: none;
  transition: all var(--swp-transition-base);
  border-left: 3px solid transparent;
  font-size: var(--swp-text-base);
}
.profile-nav-item:hover {
  background: var(--swp-gray-50);
  color: var(--swp-text-primary);
  text-decoration: none;
}
.profile-nav-item.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  border-left-color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

.profile-nav-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: currentcolor;
}

.profile-nav-text {
  flex: 1;
}

.profile-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}
@media (width <= 767.98px) {
  .profile-header {
    flex-direction: column;
    text-align: center;
    padding: var(--swp-space-5);
  }
}

.profile-avatar {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  flex-shrink: 0;
  letter-spacing: -0.02em;
}

.profile-header-info {
  flex: 1;
}

.profile-name {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.025em;
}

.profile-email {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin: var(--swp-space-1) 0 0;
}

.profile-section {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  overflow: hidden;
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.profile-section:hover {
  border-color: var(--swp-border-dark);
}

.profile-section-header {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-5) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-bottom: 1px solid var(--swp-border);
}

.profile-section-title {
  flex: 1;
  padding-top: var(--swp-space-1);
}

.profile-section-body {
  padding: var(--swp-space-6);
}

.profile-section-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border);
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-3);
}

.profile-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .profile-detail-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-4);
  }
}

.detail-item {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.detail-item-wide {
  grid-column: 1/-1;
}

.detail-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-medium);
  text-transform: uppercase;
  letter-spacing: 0.025em;
}

.detail-value {
  font-size: var(--swp-text-base);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
}

.security-status {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.security-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  transition: border-color var(--swp-transition-base);
}
.security-item:hover {
  border-color: var(--swp-border-dark);
}

.security-item-info {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
}

.security-item-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-md);
  flex-shrink: 0;
}

.security-item-icon-success {
  background: rgba(var(--swp-success-rgb), 0.1);
  color: var(--swp-success);
}

.security-item-icon-warning {
  background: rgba(var(--swp-warning-rgb), 0.1);
  color: var(--swp-warning);
}

.security-item-content {
  flex: 1;
}

.security-item-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
}

.security-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
}

.security-item-action {
  flex-shrink: 0;
  margin-left: var(--swp-space-3);
}

.google-signin-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  background: var(--swp-surface);
  border-color: var(--swp-border);
  color: var(--swp-text-primary);
  transition: all var(--swp-transition-base);
}
.google-signin-btn:hover {
  background: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-sm);
}
.google-signin-btn:active {
  transform: translateY(1px);
}
.google-signin-btn svg {
  flex-shrink: 0;
}

.password-requirements {
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  margin-bottom: var(--swp-space-6);
}

.password-requirements-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-3);
}
.password-requirements-header .section-icon {
  width: 32px;
  height: 32px;
  background: rgba(var(--swp-info-rgb), 0.15);
  color: var(--swp-info);
}
.password-requirements-header h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0;
}

.password-requirements-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.password-requirements-list li {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  padding: var(--swp-space-1) 0 var(--swp-space-1) var(--swp-space-6);
  position: relative;
}
.password-requirements-list li::before {
  content: "✓";
  position: absolute;
  left: var(--swp-space-2);
  color: var(--swp-info);
  font-weight: var(--swp-font-bold);
}

@media (width >= 768px) and (width <= 991.98px) {
  .profile-sidebar {
    margin-bottom: var(--swp-space-6);
  }
}
@media (width <= 767.98px) {
  .profile-section-footer {
    flex-direction: column;
  }
  .profile-section-footer .btn {
    width: 100%;
    justify-content: center;
  }
}
@media print {
  .profile-section-footer,
  .profile-sidebar {
    display: none !important;
  }
}
/**
 * SolidInvoice - Two-Factor Authentication Styles
 *
 * Modern 2FA configuration and login pages with elegant design.
 * Matches the profile page patterns and Tabler design system.
 */
.two-factor-settings .form-page-sections {
  gap: var(--swp-space-5);
}

.two-factor-section-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}
@media (width <= 767.98px) {
  .two-factor-section-content {
    flex-direction: column;
    align-items: flex-start;
    padding: var(--swp-space-4);
  }
}

.two-factor-section-info {
  flex: 1;
}

.two-factor-section-actions {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}
@media (width <= 767.98px) {
  .two-factor-section-actions {
    width: 100%;
    flex-direction: column;
  }
  .two-factor-section-actions .btn {
    width: 100%;
    justify-content: center;
  }
}

.totp-setup-container {
  padding: var(--swp-space-4) 0;
}

.setup-steps {
  display: flex;
  justify-content: center;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-6);
}
@media (width <= 575.98px) {
  .setup-steps {
    flex-direction: column;
    gap: var(--swp-space-2);
  }
}

.setup-steps .step {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-4);
  background: var(--swp-gray-100);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: all var(--swp-transition-base);
}
.setup-steps .step.active {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
  box-shadow: var(--swp-shadow-sm);
}
.setup-steps .step .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  background: currentcolor;
  color: #ffffff;
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-bold);
  opacity: 0.8;
}
.setup-steps .step.active .step-number {
  opacity: 1;
}

.qr-code-container {
  padding: var(--swp-space-6);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-5);
}
@media (width <= 575.98px) {
  .qr-code-container {
    padding: var(--swp-space-4);
  }
}

.qr-code-image {
  max-width: 300px;
  width: 100%;
  height: auto;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: #ffffff;
  padding: var(--swp-space-3);
  box-shadow: var(--swp-shadow-sm);
}

.manual-entry-details {
  text-align: center;
}
.manual-entry-details summary {
  cursor: pointer;
  color: var(--swp-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  user-select: none;
  list-style: none;
  padding: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-base);
}
.manual-entry-details summary:hover {
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.manual-entry-details summary::-webkit-details-marker {
  display: none;
}
.manual-entry-details .manual-entry-content {
  margin-top: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
}
.manual-entry-details .manual-entry-code {
  display: block;
  padding: var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-lg);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.1em;
  word-break: break-all;
  color: var(--swp-text-primary);
}

.verification-form-container {
  padding: var(--swp-space-4) 0;
}

.verification-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em !important;
  text-align: center;
  font-size: 1.5rem !important;
  padding: var(--swp-space-4) !important;
}
.verification-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.5;
}
.verification-code-input:focus {
  letter-spacing: 0.5em !important;
}

.backup-codes-modal-content {
  padding: var(--swp-space-2) 0;
}

.backup-codes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
}
@media (width <= 575.98px) {
  .backup-codes-grid {
    grid-template-columns: 1fr;
    gap: var(--swp-space-2);
  }
}

.backup-code-item code {
  display: block;
  padding: var(--swp-space-3);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-align: center;
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-medium);
  font-family: var(--swp-font-mono);
  letter-spacing: 0.05em;
  transition: all var(--swp-transition-base);
  color: var(--swp-text-primary);
}
.backup-code-item code:hover {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
  transform: translateY(-2px);
}

.two-factor-login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--swp-gray-50);
  padding: var(--swp-space-4);
}

.two-factor-login-card .card {
  border: none;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}
.two-factor-login-card .card-status-top {
  height: 4px;
  background: var(--swp-primary);
}
.two-factor-login-card .card-body {
  padding: var(--swp-space-8) var(--swp-space-6);
}
@media (width <= 575.98px) {
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
}

.two-factor-avatar {
  width: 72px;
  height: 72px;
  margin: 0 auto var(--swp-space-4);
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(var(--swp-primary-rgb), 0.2);
}
.two-factor-avatar.two-factor-avatar-success {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.2) 0%, rgba(var(--swp-success-rgb), 0.1) 100%);
  color: var(--swp-success);
  box-shadow: 0 4px 12px rgba(var(--swp-success-rgb), 0.2);
}

.two-factor-login-title {
  font-size: 1.5rem;
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-primary);
  margin-bottom: var(--swp-space-2);
  text-align: center;
}

.two-factor-login-description {
  font-size: var(--swp-text-base);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-6);
  text-align: center;
}

.two-factor-code-input {
  font-family: var(--swp-font-mono);
  letter-spacing: 0.5em;
  text-align: center;
  font-size: 1.75rem !important;
  padding: var(--swp-space-4) var(--swp-space-3) !important;
  border: 2px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  transition: all var(--swp-transition-base);
}
.two-factor-code-input::placeholder {
  letter-spacing: 0.3em;
  opacity: 0.4;
}
.two-factor-code-input:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 4px rgba(var(--swp-primary-rgb), 0.1);
  letter-spacing: 0.5em !important;
}
@media (width <= 575.98px) {
  .two-factor-code-input {
    font-size: 1.5rem !important;
    padding: var(--swp-space-3) !important;
  }
}

.two-factor-form-hint {
  text-align: center;
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-top: var(--swp-space-2);
}
.two-factor-form-hint a {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.two-factor-form-hint a:hover {
  text-decoration: underline;
}

.trust-device-option {
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
  border-radius: var(--swp-radius-md);
  margin: var(--swp-space-4) 0;
}
.trust-device-option .form-check {
  margin: 0;
}
.trust-device-option .form-check-input {
  margin-top: 0.15em;
}
.trust-device-option .form-check-label {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-medium);
  cursor: pointer;
}

.alternative-methods {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border);
  text-align: center;
}
.alternative-methods .alternative-methods-title {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}
.alternative-methods .alternative-methods-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.alternative-methods .btn {
  width: 100%;
  justify-content: center;
}

.two-factor-security-notice {
  text-align: center;
  margin-top: var(--swp-space-4);
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}

.email-resend-section {
  text-align: center;
  margin-top: var(--swp-space-4);
  padding: var(--swp-space-3);
  background: rgba(var(--swp-info-rgb), 0.05);
  border-radius: var(--swp-radius-md);
  border: 1px solid rgba(var(--swp-info-rgb), 0.2);
}
.email-resend-section .resend-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.email-resend-section .resend-link {
  color: var(--swp-primary);
  text-decoration: none;
  font-weight: var(--swp-font-medium);
}
.email-resend-section .resend-link:hover {
  text-decoration: underline;
}
.email-resend-section .expiry-warning {
  font-size: var(--swp-text-xs);
  color: var(--swp-warning);
  margin-top: var(--swp-space-2);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
}

@media (width <= 767.98px) {
  .totp-setup-container {
    padding: var(--swp-space-2) 0;
  }
  .setup-steps {
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-container {
    padding: var(--swp-space-4);
    margin-bottom: var(--swp-space-4);
  }
  .qr-code-image {
    max-width: 250px;
  }
  .verification-form-container {
    padding: var(--swp-space-3) 0;
  }
  .backup-codes-grid {
    padding: var(--swp-space-3);
  }
}
@media (width <= 575.98px) {
  .qr-code-image {
    max-width: 200px;
  }
  .two-factor-login-card .card-body {
    padding: var(--swp-space-6) var(--swp-space-4);
  }
  .two-factor-avatar {
    width: 64px;
    height: 64px;
  }
  .two-factor-login-title {
    font-size: 1.25rem;
  }
  .two-factor-login-description {
    font-size: var(--swp-text-sm);
  }
}
.backup-code-item code:focus-visible,
.manual-entry-details summary:focus-visible {
  outline: 2px solid var(--swp-primary);
  outline-offset: 2px;
}

@media (prefers-contrast: high) {
  .qr-code-image {
    border-width: 3px;
  }
  .backup-code-item code {
    border-width: 2px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .backup-code-item code,
  .setup-steps .step,
  .manual-entry-details summary,
  .two-factor-code-input {
    transition: none;
  }
}
/**
 * SolidInvoice - Notifications Page Styles
 *
 * Notification preferences page with card-based layout and category grouping.
 * Page container/header/footer use shared form-page-* classes from _form-page.scss.
 * This file contains only notification-specific styles.
 */
.integration-management-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  margin-bottom: var(--swp-space-6);
  box-shadow: var(--swp-shadow-sm);
}

.integration-management-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-4);
  padding: var(--swp-space-5);
}

.integration-management-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.15) 0%, rgba(var(--swp-primary-rgb), 0.05) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.integration-management-info {
  flex: 1;
}

.integration-management-title {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
  line-height: 1.4;
}

.integration-management-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.5;
}

.integration-management-list {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  padding: 0 var(--swp-space-5) var(--swp-space-5);
  border-top: 1px solid var(--swp-border);
  padding-top: var(--swp-space-4);
}

.integration-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  white-space: nowrap;
}
.integration-badge svg {
  flex-shrink: 0;
  color: var(--swp-primary);
}

.notification-groups {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-6);
  margin-bottom: var(--swp-space-6);
}

.notification-group {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.group-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-bold);
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 var(--swp-space-2);
}
.group-title svg {
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-cards {
  display: grid;
  gap: var(--swp-space-3);
}

.notification-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4) var(--swp-space-4);
  transition: all var(--swp-transition-base);
}
.notification-card:hover {
  border-color: var(--swp-border-dark);
  box-shadow: var(--swp-shadow-sm);
}
.notification-card:focus-within {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}

.notification-card-content {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex: 1;
  min-width: 0;
}

.notification-card-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.08) 100%);
  border-radius: var(--swp-radius-md);
  color: var(--swp-primary);
  flex-shrink: 0;
}

.notification-card-info {
  flex: 1;
  min-width: 0;
}

.notification-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-0-5);
  line-height: 1.4;
}

.notification-description {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: 1.4;
}

.notification-card-channels {
  flex-shrink: 0;
}

.notification-card-channels .form-check {
  margin: 0;
  padding: 0;
  min-height: auto;
  position: relative;
}
.notification-card-channels .form-check .form-check-input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
  pointer-events: none;
}
.notification-card-channels .form-check .form-check-input:focus + .form-check-label {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.notification-card-channels .form-check .form-check-label {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1-5) var(--swp-space-3);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: all var(--swp-transition-base);
  margin: 0;
  white-space: nowrap;
  user-select: none;
}
.notification-card-channels .form-check .form-check-label:hover {
  background: var(--swp-surface);
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
}
.notification-card-channels .form-check .form-check-input:checked + .form-check-label {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  font-weight: var(--swp-font-semibold);
}

@media (width <= 767.98px) {
  .integration-management-header {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
  }
  .integration-management-header .btn {
    width: 100%;
    justify-content: center;
  }
  .integration-management-list {
    padding: var(--swp-space-3) var(--swp-space-4) var(--swp-space-4);
  }
  .notification-groups {
    gap: var(--swp-space-5);
  }
  .group-title {
    font-size: var(--swp-text-xs);
  }
  .group-title svg {
    width: 16px;
    height: 16px;
  }
  .notification-card {
    flex-direction: column;
    align-items: stretch;
    gap: var(--swp-space-3);
    padding: var(--swp-space-3);
  }
  .notification-card-content {
    gap: var(--swp-space-2-5);
  }
  .notification-card-icon {
    width: 32px;
    height: 32px;
  }
  .notification-card-icon svg {
    width: 16px;
    height: 16px;
  }
  .notification-title {
    font-size: var(--swp-text-sm);
  }
  .notification-description {
    font-size: var(--swp-text-xs);
  }
  .notification-card-channels .notification-channels-list {
    flex-direction: column;
    gap: var(--swp-space-1-5);
  }
  .notification-card-channels .form-check .form-check-label {
    width: 100%;
    padding: var(--swp-space-2-5) var(--swp-space-3);
    font-size: var(--swp-text-sm);
    min-height: 44px;
  }
  .notifications-empty-state {
    padding: var(--swp-space-8) var(--swp-space-4);
  }
  .notifications-empty-state .empty-state-icon {
    width: 64px;
    height: 64px;
  }
  .notifications-empty-state .empty-state-icon svg {
    width: 48px;
    height: 48px;
  }
  .notifications-empty-state h3 {
    font-size: var(--swp-text-lg);
  }
  .notifications-empty-state p {
    font-size: var(--swp-text-sm);
  }
  .notifications-empty-state .btn {
    width: 100%;
  }
}
@media (width >= 768px) {
  .notification-groups {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media print {
  .notification-card {
    break-inside: avoid;
  }
}
/**
 * SolidInvoice - Subscription Pages Styles
 *
 * Billing, plan-picker, and subscription-state pages (pricing, overview,
 * change, cancelled, paused, pending, trial expired).
 *
 * All values are `--swp-*` design tokens. State is carried by a soft icon
 * medallion + heading, never by a decorative accent stripe, a colored glow, or
 * a looping animation. Colour stays on the brand: Trust Green is the only
 * accent; there is no Tabler blue and no amber-by-accident here.
 */
.subscription-page {
  min-height: calc(100vh - var(--swp-space-24));
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-12) var(--swp-space-4);
}

.subscription-container {
  max-width: 640px;
  width: 100%;
  text-align: center;
  padding: var(--swp-space-10);
  background: var(--swp-surface);
  border: none;
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-xl);
  animation: subscription-fade-in 0.3s ease-out;
}

@keyframes subscription-fade-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
.subscription-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-sm);
}
.subscription-page-header .h4 {
  font-weight: 600;
  color: var(--swp-text-primary);
}

.subscription-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: var(--swp-radius-xl);
  margin: 0 auto var(--swp-space-8);
}
.subscription-icon svg {
  width: 32px;
  height: 32px;
}

.subscription-icon-warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}

.subscription-icon-danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}

.subscription-icon-info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.subscription-icon-paused {
  background: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.subscription-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-3);
  letter-spacing: -0.02em;
  line-height: 1.2;
}

.subscription-subtitle {
  font-size: var(--swp-text-lg);
  color: var(--swp-text-secondary);
  margin: 0 0 var(--swp-space-10);
  line-height: 1.7;
}

.subscription-benefits {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  padding: var(--swp-space-6);
  margin-bottom: var(--swp-space-8);
  text-align: left;
  box-shadow: var(--swp-shadow-xs);
}
.subscription-benefits h3 {
  font-size: var(--swp-text-md);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-4);
}
.subscription-benefits ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.subscription-benefits li {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-2-5) 0;
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}
.subscription-benefits li svg {
  width: 20px;
  height: 20px;
  color: var(--swp-success);
  flex-shrink: 0;
}

.subscription-cancelled-page .subscription-benefits li svg {
  color: var(--swp-text-muted);
}

.subscription-actions {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}
.subscription-actions .btn-lg {
  padding: var(--swp-space-3-5) var(--swp-space-6);
  font-size: var(--swp-text-md);
  font-weight: 600;
  box-shadow: var(--swp-shadow-sm);
  transition: box-shadow var(--swp-transition-base);
}
.subscription-actions .btn-lg svg {
  width: 20px;
  height: 20px;
}
.subscription-actions .btn-lg:hover {
  box-shadow: var(--swp-shadow-md);
}
.subscription-actions .btn-lg:focus-visible {
  outline: none;
  box-shadow: var(--swp-shadow-md), var(--swp-ring-primary);
}
.subscription-actions .btn-ghost svg {
  width: 18px;
  height: 18px;
}
.subscription-actions .btn-ghost:hover {
  background: var(--swp-gray-50);
}
.subscription-actions .btn-ghost:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.subscription-paused-page .subscription-benefits li svg {
  color: var(--swp-text-secondary);
}

.alert-banner {
  border-radius: 0;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  margin-bottom: 0;
  padding: var(--swp-space-3) var(--swp-space-4);
}
.alert-banner .d-flex {
  align-items: center;
}
.alert-banner .alert-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.alert-banner .btn-sm {
  white-space: nowrap;
  flex-shrink: 0;
}
.alert-banner.alert-warning {
  background: var(--swp-warning-lighter);
  border-bottom-color: var(--swp-warning-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-warning .btn-warning {
  background: var(--swp-warning);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-warning .btn-warning:hover {
  background: var(--swp-warning-hover);
}
.alert-banner.alert-danger {
  background: var(--swp-danger-lighter);
  border-bottom-color: var(--swp-danger-light);
  color: var(--swp-text-primary);
}
.alert-banner.alert-danger .btn-danger {
  background: var(--swp-danger);
  color: var(--swp-text-inverse);
  border: none;
}
.alert-banner.alert-danger .btn-danger:hover {
  background: var(--swp-danger-hover);
}

.subscription-pricing-page .subscription-container {
  max-width: 1100px;
  text-align: center;
}

.plan-card {
  position: relative;
  overflow: hidden;
  transition: box-shadow var(--swp-transition-base), border-color var(--swp-transition-base);
}
.plan-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.plan-card > .card-body {
  padding-top: var(--swp-space-9);
}

.plan-card-recommended {
  border-width: 2px;
  box-shadow: var(--swp-shadow-md);
}
.plan-card-recommended:hover {
  box-shadow: var(--swp-shadow-xl);
}

.plan-card-banner {
  position: absolute;
  top: 0;
  inset-inline: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-inverse);
  background: var(--swp-primary);
}
.plan-card-banner svg {
  flex-shrink: 0;
}

.plan-card-free {
  background: var(--swp-gray-50);
  border: 1px dashed var(--swp-border);
  box-shadow: none;
  transition: border-color var(--swp-transition-base), background var(--swp-transition-base);
}
.plan-card-free:hover {
  border-color: var(--swp-primary);
  background: var(--swp-surface);
}
.plan-card-free .card-body {
  padding: var(--swp-space-4) var(--swp-space-6);
}
.plan-card-free .plan-card-features {
  font-size: var(--swp-text-sm);
}
.plan-card-free .plan-card-features li {
  margin-bottom: var(--swp-space-1);
}

.plan-card-free-header {
  flex-shrink: 0;
  min-width: 0;
}

.plan-card-free-cta {
  flex-shrink: 0;
}

.plan-card-features-inline {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2) var(--swp-space-4);
  font-size: var(--swp-text-sm);
}
.plan-card-features-inline li {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  white-space: nowrap;
}

.plan-card-price {
  font-size: var(--swp-text-4xl);
  line-height: 1.1;
}

.plan-card-interval {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-normal);
}

.plan-card-features {
  text-align: start;
}

.subscription-coupon {
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-primary-light);
  border-radius: var(--swp-radius-lg);
}
.subscription-coupon .badge {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
}

.subscription-welcome-page .subscription-container {
  max-width: 720px;
}

.welcome-plan {
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-xs);
}
.welcome-plan .card-body {
  padding: var(--swp-space-6);
}
.welcome-plan .plan-card-features {
  margin-bottom: 0;
}

.welcome-plan-pricing {
  white-space: nowrap;
}

.welcome-plan-price {
  font-size: var(--swp-text-2xl);
  font-weight: 700;
  line-height: 1.1;
}

.welcome-reassure-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2-5);
  height: 100%;
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-lg);
}
.welcome-reassure-item svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

@media (width <= 767.98px) {
  .subscription-page {
    padding: var(--swp-space-6) var(--swp-space-3);
  }
  .subscription-page-header .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .subscription-page-header .btn-group {
    width: 100%;
  }
  .subscription-page-header .btn-group .btn {
    width: 100%;
  }
  .subscription-container {
    padding: var(--swp-space-6);
  }
  .subscription-icon {
    width: 48px;
    height: 48px;
  }
  .subscription-icon svg {
    width: 28px;
    height: 28px;
  }
  .subscription-title {
    font-size: 1.375rem;
  }
  .subscription-subtitle {
    font-size: var(--swp-text-md);
  }
  .subscription-benefits {
    padding: var(--swp-space-4);
  }
  .subscription-actions .btn {
    width: 100%;
  }
  .alert-banner .d-flex {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-3);
  }
  .alert-banner .btn-sm {
    width: 100%;
  }
}
@media (width >= 768px) and (width <= 991.98px) {
  .subscription-container {
    max-width: 600px;
    padding: var(--swp-space-8);
  }
}
@media (prefers-reduced-motion: reduce) {
  .subscription-container {
    animation: none;
  }
  .plan-card,
  .plan-card-free,
  .subscription-actions .btn-lg {
    transition: none;
  }
}
@media print {
  .subscription-page {
    padding: 0;
  }
  .subscription-container {
    box-shadow: none;
    border: 1px solid var(--swp-border);
  }
  .subscription-actions {
    display: none;
  }
  .alert-banner {
    display: none;
  }
}
/**
 * Onboarding Checklist - Dashboard widget
 *
 * The first component a new user meets. Priorities, in order:
 *   1. Convey state (todo / done / hovered / focused). Never decoration.
 *   2. Stay on the SolidInvoice design system - `--swp-*` tokens only.
 *   3. Read correctly whether a row is an <a> (actionable) or a <span> (done).
 *
 * Structure comes from Tabler (`card`, `card-stamp`, `card-link-pop`,
 * `offcanvas`, `visually-hidden`). This file only adds what Tabler does not
 * already provide - it does not restate or fight it.
 */
.card.card-active {
  border-color: var(--swp-success);
  background: var(--swp-success-lighter);
}

.card-stamp-icon {
  opacity: 0.15;
}

.checklist-items-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2-5);
}

.checklist-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: color var(--swp-duration-fast) var(--swp-ease-out), background-color var(--swp-duration-fast) var(--swp-ease-out), border-color var(--swp-duration-fast) var(--swp-ease-out), box-shadow var(--swp-duration-fast) var(--swp-ease-out);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) {
  background: var(--swp-primary-lighter);
  border-color: var(--swp-primary);
}
.checklist-item:not(.completed):is(:hover, :focus-visible) .checklist-item-action {
  color: var(--swp-primary);
}
.checklist-item:not(.completed):focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.checklist-item.completed {
  background: var(--swp-success-lighter);
  border-color: var(--swp-success-light);
  cursor: default;
}
.checklist-item.completed .item-name {
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-normal);
  text-decoration: line-through;
}
.checklist-item.completed .item-icon {
  color: var(--swp-text-light);
}
.checklist-item.completed .checklist-item-action {
  display: none;
}

.checklist-item-icon {
  width: 20px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-success);
}

.checklist-item:not(.completed) .checklist-item-icon {
  color: var(--swp-gray-400);
}

.checklist-item-content {
  flex: 1;
  min-width: 0;
}

.checklist-item-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-1);
}

.checklist-item .item-icon {
  display: flex;
  align-items: center;
  color: var(--swp-primary);
}

.checklist-item .item-name {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

.checklist-item-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0;
  line-height: var(--swp-leading-normal);
}

.checklist-item-action {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-text-light);
}

.onboarding-offcanvas {
  width: 420px;
  max-width: 100%;
}

.onboarding-offcanvas .offcanvas-body .card {
  border: 1px solid var(--swp-border-light);
  background: var(--swp-primary-lighter);
  box-shadow: var(--swp-shadow-sm);
}

.onboarding-progress-label {
  min-width: 3rem;
}

@media (prefers-reduced-motion: reduce) {
  .checklist-item {
    transition: none;
  }
}
/**
 * Onboarding Wizard - the first-run flow (/onboarding)
 *
 * This is the first screen every new user meets: post-install and post-signup,
 * a user with no company is redirected here to create their company, an
 * optional first client, and a first invoice.
 *
 * It used to be styled with inline <style> blocks that contradicted the design
 * system wholesale - Bootstrap blue (#066fd1) instead of Trust Green, gradients
 * on the canvas / step icon / badge, a 3px `border-left` side-stripe on the
 * benefits box (a hard ban), and a bounce/elastic celebration with an infinite
 * pulse and no reduced-motion fallback. This file replaces all of it with
 * `--swp-*` tokens, flat surfaces, and ease-out motion.
 *
 * Everything is scoped under `.onboarding-container` because the class names
 * (`step-icon`, `step-benefits`, `welcome-badge`, ...) are generic and used
 * nowhere else - scoping keeps them from leaking into the rest of the app.
 *
 * Structure (Bootstrap grid, `card`, `btn`, `form-control`, `progress`) comes
 * from Tabler; this file only styles the custom wizard chrome.
 */
.onboarding-container {
  background: var(--swp-body-bg);
}
.onboarding-container .onboarding-progress {
  box-shadow: var(--swp-shadow-xs);
}
.onboarding-container .step-indicator {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.onboarding-container .step-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out), color var(--swp-duration-slow) var(--swp-ease-out), box-shadow var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-number {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-number {
  background: var(--swp-primary);
  color: var(--swp-text-inverse);
  box-shadow: var(--swp-ring-primary);
}
.onboarding-container .step-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-muted);
  transition: color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-indicator.active .step-label,
.onboarding-container .step-indicator.current .step-label {
  color: var(--swp-primary-dark);
}
.onboarding-container .step-indicator.current .step-label {
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-connector {
  flex: 1;
  height: 2px;
  margin: 0 var(--swp-space-4);
  background: var(--swp-border);
  transition: background-color var(--swp-duration-slow) var(--swp-ease-out);
}
.onboarding-container .step-connector.completed {
  background: var(--swp-primary);
}
.onboarding-container .onboarding-step-card {
  padding: var(--swp-space-12);
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-xl);
  box-shadow: var(--swp-shadow-sm);
}
.onboarding-container .step-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 4rem;
  height: 4rem;
  margin: 0 auto var(--swp-space-6);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.onboarding-container .welcome-section {
  margin-bottom: var(--swp-space-8);
  text-align: center;
}
.onboarding-container .welcome-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
  padding: var(--swp-space-2) var(--swp-space-4);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}
.onboarding-container .step-benefits {
  margin-bottom: var(--swp-space-6);
  padding: var(--swp-space-5);
  background: var(--swp-primary-lighter);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
}
.onboarding-container .step-benefits ul {
  margin: 0;
  padding-left: var(--swp-space-5);
  color: var(--swp-text-secondary);
}
.onboarding-container .step-benefits li + li {
  margin-top: var(--swp-space-2);
}
.onboarding-container .celebration-icon {
  display: flex;
  justify-content: center;
}
.onboarding-container .success-checkmark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 6rem;
  height: 6rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
  animation: onboarding-celebrate var(--swp-duration-slow) var(--swp-ease-out) both;
}
.onboarding-container .onboarding-tip {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  background: var(--swp-gray-50);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  text-align: left;
  color: var(--swp-text-secondary);
}
.onboarding-container .onboarding-tip svg {
  flex-shrink: 0;
  margin-top: var(--swp-space-0-5);
  color: var(--swp-secondary-dark);
}
@media (width <= 768px) {
  .onboarding-container .onboarding-step-card {
    padding: var(--swp-space-8) var(--swp-space-6);
  }
  .onboarding-container .step-connector {
    margin: 0 var(--swp-space-2);
  }
}

@keyframes onboarding-celebrate {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .onboarding-container .step-number,
  .onboarding-container .step-label,
  .onboarding-container .step-connector {
    transition: none;
  }
  .onboarding-container .success-checkmark {
    animation: none;
  }
}
/**
 * SolidInvoice Design System - Money Display
 *
 * The signature component (DESIGN.md section 5). Every currency value in the
 * application renders through `.money`; it is the single source of truth for
 * money display, and raw `{{ amount }}` rendering is prohibited.
 *
 * Contract:
 *   <span class="money">
 *     <span class="money-currency">USD</span>
 *     <strong class="money-amount">1,234.56</strong>
 *   </span>
 *
 * Modifiers (on the `.money` root, combinable):
 *   .money--paid      Amount in AA-safe success. ONLY valid alongside an
 *                     explicit "Paid" label (the Money-Color Rule).
 *   .money--overdue   Amount in AA-safe danger. Same labelling rule.
 *   .money--total     Weight 600, amount one size step up.
 *   (none)            Neutral - the default and the common case.
 *
 * The component never sets its own font-size. It inherits from context, so the
 * same markup is correct inline in a table cell, in a heading, and at
 * `.stat-value` scale in the dashboard hero tiles. Only `.money--total` steps
 * the amount, and it steps relatively so the result is right at every base.
 */
.money {
  display: inline-flex;
  align-items: baseline;
  gap: var(--swp-space-1);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.money-currency {
  color: var(--swp-money-currency);
}

.money-amount {
  color: var(--swp-money-neutral);
  font-weight: var(--swp-font-medium);
}

.money--paid .money-amount {
  color: var(--swp-money-paid);
}

.money--overdue .money-amount {
  color: var(--swp-money-overdue);
}

.money--total .money-amount {
  font-size: calc(1em * var(--swp-money-total-scale));
  font-weight: var(--swp-font-semibold);
}

.money--total .money-currency {
  font-size: var(--swp-money-currency-scale);
}

/**
 * SolidInvoice Design System - Status Chip
 *
 * The one status chip (DESIGN.md section 5). Every status word in the
 * application renders through `.status-chip`, on a five-value semantic set:
 * neutral, info, success, warning, danger.
 *
 * Contract:
 *   <span class="status-chip status-chip--success">Paid</span>
 *
 * Every variant is an AA-safe text colour on its own tint:
 *   neutral   gray-100      / text-secondary   6.92:1
 *   info      info-light    / info-dark        5.49:1
 *   success   success-light / success-dark     4.84:1
 *   warning   warning-light / warning-dark     6.37:1
 *   danger    danger-light  / danger-dark      5.30:1
 *
 * The tint itself measures 1.05-1.22:1 against the page. That is deliberate.
 * The chip's meaning is carried by its text label, so the pill is decoration
 * around legible text, not a control whose boundary must be perceivable.
 *
 * A chip is never interactive: no shadow, no border, no hover, no transition,
 * and it is never a focus target. A chip is also never truncated - a
 * half-shown status is worse than a wider column.
 */
.status-chip {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-0-5) var(--swp-space-2-5);
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-medium);
  line-height: 1.25;
  letter-spacing: 0;
  white-space: nowrap;
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--neutral {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}
.status-chip--info {
  background-color: var(--swp-info-light);
  color: var(--swp-info-dark);
}
.status-chip--success {
  background-color: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.status-chip--warning {
  background-color: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.status-chip--danger {
  background-color: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}

/**
 * Reports Workspace
 *
 * The reports pages share one visual grammar: a page header, a filter bar,
 * KPI tiles, chart panels and currency-aware tables. Layout only - money,
 * buttons, tables and form controls keep their Bootstrap/Tabler styling.
 */
.reports-page {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-6);
  padding-block: var(--swp-space-6);
}

.reports-header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--swp-space-4);
}

.reports-header__eyebrow {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
  color: var(--swp-primary);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wider);
  text-transform: uppercase;
}

.reports-header__icon {
  width: 1rem;
  height: 1rem;
}

.reports-header__title {
  margin: 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-3xl);
  font-weight: var(--swp-font-bold);
  letter-spacing: var(--swp-tracking-tight);
}

.reports-header__subtitle {
  max-width: 52rem;
  margin: var(--swp-space-2) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}

.reports-header__as-of {
  display: block;
  margin-top: var(--swp-space-1);
  color: var(--swp-text-light);
  font-size: var(--swp-text-xs);
}

.reports-header__period {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: var(--swp-space-1);
  text-align: right;
}

.reports-header__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-2);
}
.reports-header__actions .btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.reports-section-nav {
  display: flex;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1);
  overflow-x: auto;
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-sm);
  scrollbar-width: none;
}
.reports-section-nav::-webkit-scrollbar {
  display: none;
}

.reports-section-nav__link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  flex: 0 0 auto;
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  text-decoration: none;
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.reports-section-nav__link:hover, .reports-section-nav__link:focus-visible {
  background: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.reports-section-nav__link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.reports-section-nav__link.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.reports-section-nav__icon {
  width: 1rem;
  height: 1rem;
  flex-shrink: 0;
}

.reports-period__badge {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  border: 1px solid var(--swp-primary-light);
  border-radius: var(--swp-radius-full);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}

.reports-period__icon {
  width: 1rem;
  height: 1rem;
}

.reports-period__dates {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-variant-numeric: tabular-nums;
}

.reports-period__separator {
  padding-inline: var(--swp-space-1);
}

.reports-filter {
  padding: var(--swp-space-5);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-sm);
}

.reports-filter__header {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}

.reports-filter__title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin: 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
}

.reports-filter__title-icon {
  width: 1.1rem;
  height: 1.1rem;
  color: var(--swp-text-muted);
}

.reports-filter__hint,
.reports-filter__note {
  margin: var(--swp-space-1) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
}

.reports-filter__reset {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  text-decoration: none;
}
.reports-filter__reset:hover {
  color: var(--swp-primary);
}

.reports-filter__reset-icon {
  width: 1rem;
  height: 1rem;
}

.reports-filter__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-4);
  align-items: end;
}
@media (width >= 768px) {
  .reports-filter__grid {
    grid-template-columns: minmax(12rem, 1.2fr) repeat(2, minmax(10rem, 1fr)) auto;
  }
}
@media (width >= 1200px) {
  .reports-filter__grid {
    grid-template-columns: minmax(12rem, 1.2fr) repeat(2, minmax(10rem, 1fr)) minmax(8rem, 0.7fr) auto;
  }
}

.reports-filter__field {
  min-width: 0;
}
.reports-filter__field .form-label {
  margin-bottom: var(--swp-space-1);
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wide);
}
.reports-filter__field .form-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
}

.reports-filter__field--check {
  align-self: center;
}
.reports-filter__field--check .form-check {
  margin-bottom: 0;
}

.reports-filter__actions {
  display: flex;
  align-items: end;
  gap: var(--swp-space-2);
}
.reports-filter__actions .btn {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  white-space: nowrap;
}
.reports-filter__actions .icon {
  width: 1rem;
  height: 1rem;
}

.reports-alert {
  display: flex;
  gap: var(--swp-space-3);
  align-items: flex-start;
}
.reports-alert .icon {
  width: 1.25rem;
  height: 1.25rem;
  flex-shrink: 0;
}

.reports-kpi-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-4);
}
@media (width >= 577px) {
  .reports-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .reports-kpi-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .reports-kpi-grid--two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .reports-kpi-grid--three {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .reports-kpi-grid--counts {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

.reports-kpi {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: var(--swp-space-5);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-sm);
}
.reports-kpi--primary .reports-kpi__icon {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.reports-kpi--success .reports-kpi__icon {
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.reports-kpi--danger .reports-kpi__icon {
  background: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}
.reports-kpi--warning .reports-kpi__icon {
  background: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.reports-kpi--info .reports-kpi__icon {
  background: var(--swp-info-light);
  color: var(--swp-info-dark);
}
.reports-kpi--danger .reports-kpi__value {
  color: var(--swp-danger-dark);
}
.reports-kpi--success .reports-kpi__value {
  color: var(--swp-success-dark);
}

.reports-kpi__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-3);
}

.reports-kpi__label {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wider);
  text-transform: uppercase;
}

.reports-kpi__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--swp-radius-md);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  flex-shrink: 0;
}
.reports-kpi__icon svg {
  width: 1.1rem;
  height: 1.1rem;
}

.reports-kpi__value {
  margin-top: var(--swp-space-3);
  color: var(--swp-text-primary);
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  line-height: 1.2;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.reports-kpi__value--empty {
  color: var(--swp-text-light);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-medium);
}

.reports-kpi__currency {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
}

.reports-kpi__stack {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  margin-top: var(--swp-space-3);
}

.reports-kpi__stack-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--swp-space-3);
  min-width: 0;
}

.reports-kpi__stack-value {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.reports-kpi__basis,
.reports-kpi__note {
  margin-top: auto;
  padding-top: var(--swp-space-3);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  line-height: 1.4;
}

.reports-kpi__note {
  padding-top: var(--swp-space-1);
  color: var(--swp-text-light);
}

.reports-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-4);
}
@media (width >= 992px) {
  .reports-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (width >= 992px) {
  .reports-grid--two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.reports-panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: var(--swp-space-5);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-sm);
}

@media (width >= 992px) {
  .reports-panel--span-2 {
    grid-column: span 2;
  }
}

.reports-panel__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}

.reports-panel__title {
  margin: 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
}

.reports-panel__subtitle {
  margin: var(--swp-space-1) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
}

.reports-panel__badge {
  padding: var(--swp-space-1) var(--swp-space-2);
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  white-space: nowrap;
}

.reports-chart {
  position: relative;
  min-height: 280px;
  flex: 1;
}

.reports-chart__canvas {
  width: 100% !important;
  height: 100% !important;
}

.reports-chart--tall {
  min-height: 340px;
}

.reports-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-10) var(--swp-space-4);
  text-align: center;
}
.reports-empty--compact {
  min-height: 220px;
}

.reports-empty__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 3rem;
  height: 3rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-100);
  color: var(--swp-text-light);
}
.reports-empty__icon svg {
  width: 1.5rem;
  height: 1.5rem;
}

.reports-empty__title {
  margin: var(--swp-space-2) 0 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
}

.reports-empty__text {
  max-width: 34rem;
  margin: 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}

.reports-table-wrap {
  overflow-x: auto;
}

.reports-table {
  margin: 0;
  color: var(--swp-text-primary);
}
.reports-table thead th {
  border-bottom: 1px solid var(--swp-border);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
  text-transform: uppercase;
  white-space: nowrap;
}
.reports-table tbody th,
.reports-table tbody td {
  border-bottom-color: var(--swp-border-light);
  font-size: var(--swp-text-sm);
}
.reports-table tbody tr:last-child th,
.reports-table tbody tr:last-child td {
  border-bottom: 0;
}
.reports-table__number {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.reports-currency {
  display: inline-flex;
  align-items: center;
  padding: var(--swp-space-1) var(--swp-space-2);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-sm);
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
}

.transaction-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: var(--swp-space-4);
}

.transaction-summary-card {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
}

.transaction-summary-card__header {
  padding: var(--swp-space-3) var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
  background: var(--swp-gray-50);
}

.transaction-summary-card__metrics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
  margin: 0;
}

.transaction-summary-card__metric {
  min-width: 0;
  padding: var(--swp-space-4);
}
.transaction-summary-card__metric + .transaction-summary-card__metric {
  border-left: 1px solid var(--swp-border-light);
}
.transaction-summary-card__metric dt {
  margin-bottom: var(--swp-space-2);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wide);
  text-transform: uppercase;
}
.transaction-summary-card__metric dd {
  margin: 0;
  overflow-wrap: anywhere;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  font-variant-numeric: tabular-nums;
}
.transaction-summary-card__metric--success dd {
  color: var(--swp-success-dark);
}
.transaction-summary-card__metric--warning dd {
  color: var(--swp-warning-dark);
}
@media (width < 576px) {
  .transaction-summary-card__metric + .transaction-summary-card__metric {
    border-top: 1px solid var(--swp-border-light);
    border-left: 0;
  }
}

.reports-status-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
}

.reports-status-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-1-5) var(--swp-space-3);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-full);
  background: var(--swp-surface);
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-sm);
}
.reports-status-chip__dot {
  width: 0.5rem;
  height: 0.5rem;
  border-radius: var(--swp-radius-full);
  background: var(--swp-gray-400);
}
.reports-status-chip__count {
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
  font-variant-numeric: tabular-nums;
}
.reports-status-chip[data-status=paid] .reports-status-chip__dot, .reports-status-chip[data-status=accepted] .reports-status-chip__dot, .reports-status-chip[data-status=captured] .reports-status-chip__dot {
  background: var(--swp-success);
}
.reports-status-chip[data-status=pending] .reports-status-chip__dot {
  background: var(--swp-warning);
}
.reports-status-chip[data-status=overdue] .reports-status-chip__dot, .reports-status-chip[data-status=failed] .reports-status-chip__dot, .reports-status-chip[data-status=declined] .reports-status-chip__dot {
  background: var(--swp-danger);
}
.reports-status-chip[data-status=active] .reports-status-chip__dot, .reports-status-chip[data-status=converted] .reports-status-chip__dot {
  background: var(--swp-info);
}
.reports-status-chip[data-status=refunded] .reports-status-chip__dot {
  background: #8b5cf6;
}

.reports-change {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  padding: var(--swp-space-1) var(--swp-space-2);
  border-radius: var(--swp-radius-full);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.reports-change__icon {
  width: 0.85rem;
  height: 0.85rem;
}
.reports-change--up {
  background: var(--swp-success-lighter);
  color: var(--swp-success-dark);
}
.reports-change--down {
  background: var(--swp-danger-lighter);
  color: var(--swp-danger-dark);
}
.reports-change--flat, .reports-change--muted {
  background: var(--swp-gray-100);
  color: var(--swp-text-muted);
}
.reports-change--new {
  background: var(--swp-info-lighter);
  color: var(--swp-info-dark);
}

.reports-nav-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--swp-space-3);
}
@media (width >= 577px) {
  .reports-nav-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .reports-nav-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

.reports-nav-card {
  display: flex;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  color: inherit;
  text-decoration: none;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast), transform var(--swp-transition-fast);
}
.reports-nav-card:hover {
  border-color: var(--swp-primary-light);
  box-shadow: var(--swp-shadow-md);
  color: inherit;
  transform: translateY(-1px);
}
.reports-nav-card:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.reports-nav-card__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  flex-shrink: 0;
}
.reports-nav-card__icon svg {
  width: 1.2rem;
  height: 1.2rem;
}

.reports-nav-card__title {
  display: block;
  margin: 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}

.reports-nav-card__text {
  display: block;
  margin: var(--swp-space-1) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  line-height: 1.4;
}

.reports-kpi__meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-2);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
}

@media (prefers-reduced-motion: reduce) {
  .reports-nav-card {
    transition: none;
  }
  .reports-nav-card:hover {
    transform: none;
  }
}
/**
 * Date picker - calendar attached to every day-first date field by the
 * `datepicker` Stimulus controller.
 *
 * Litepicker ships its own structural CSS, imported by the controller. These
 * rules only align it with the design tokens and give the text field the
 * calendar affordance the native input used to draw.
 */
.litepicker {
  --litepicker-month-weekday-color: var(--swp-text-muted);
  --litepicker-button-prev-month-color: var(--swp-text-muted);
  --litepicker-button-next-month-color: var(--swp-text-muted);
  --litepicker-button-prev-month-color-hover: var(--swp-primary);
  --litepicker-button-next-month-color-hover: var(--swp-primary);
  --litepicker-day-color: var(--swp-body-color);
  --litepicker-day-color-hover: var(--swp-primary);
  --litepicker-is-start-color-bg: var(--swp-primary);
  --litepicker-is-end-color-bg: var(--swp-primary);
  --litepicker-is-today-color: var(--swp-primary);
  --litepicker-month-header-color: var(--swp-body-color);
  --litepicker-container-months-color-bg: var(--swp-surface);
  font: inherit;
  user-select: none;
}
.litepicker .container__main {
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-input-radius);
  box-shadow: var(--swp-shadow-md);
}
.litepicker .container__months .month-item-name,
.litepicker .container__months .month-item-year {
  font-weight: 600;
}
.litepicker .container__days .day-item {
  cursor: pointer;
}
.litepicker .container__days .day-item:hover {
  background-color: var(--swp-primary-light);
}

input[data-controller~=datepicker] {
  padding-right: calc(var(--swp-input-padding-x) + 1.25rem);
  background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2724%27 height=%2724%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%2364748b%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z%27/%3E%3Cpath d=%27M16 3v4%27/%3E%3Cpath d=%27M8 3v4%27/%3E%3Cpath d=%27M4 11h16%27/%3E%3Cpath d=%27M11 15h1%27/%3E%3Cpath d=%27M12 15v3%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.5rem center;
  background-size: 1rem 1rem;
  cursor: pointer;
}

/**
 * Shared component colour contract.
 *
 * Bootstrap, Tabler and Symfony UX all ship their own surface assumptions. This final layer maps
 * those reusable controls onto Finzaro tokens so server-rendered and live-rendered markup behaves
 * identically in both themes.
 */
.form-control,
.form-select,
textarea.form-control,
.input-group-text,
.ts-wrapper .ts-control,
.ts-dropdown,
.ts-dropdown .dropdown-input {
  background-color: var(--swp-input-bg);
  border-color: var(--swp-input-border);
  color: var(--swp-text-primary);
}

.form-control:hover:not(:disabled, [readonly]),
.form-select:hover:not(:disabled, [readonly]),
.ts-wrapper .ts-control:hover:not(:disabled, [readonly]) {
  border-color: var(--swp-border-dark);
}
.form-control:focus, .form-control.focus,
.form-select:focus,
.form-select.focus,
.ts-wrapper .ts-control:focus,
.ts-wrapper .ts-control.focus {
  border-color: var(--swp-input-focus-border);
  background-color: var(--swp-input-bg);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control:disabled, .form-control[readonly],
.form-select:disabled,
.form-select[readonly],
.ts-wrapper .ts-control:disabled,
.ts-wrapper .ts-control[readonly] {
  background-color: var(--swp-input-disabled-bg);
  color: var(--swp-input-disabled-color);
  opacity: 1;
}

.form-control::placeholder,
.ts-wrapper .ts-control input::placeholder,
.ts-dropdown .dropdown-input::placeholder {
  color: var(--swp-text-muted);
  opacity: 1;
}

.form-select option,
.form-select optgroup {
  background: var(--swp-menu-bg);
  color: var(--swp-text-primary);
}

.form-label,
.col-form-label,
legend,
.form-check-label {
  color: var(--swp-text-secondary);
}

.form-text,
.form-help,
.form-help-text,
.text-muted,
.text-secondary {
  color: var(--swp-text-muted) !important;
}

.form-check-input {
  border-color: var(--swp-control-check-border);
  background-color: var(--swp-control-check-bg);
}
.form-check-input:hover {
  border-color: var(--swp-primary);
}
.form-check-input:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.form-check-input:checked, .form-check-input:indeterminate {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary);
}
.form-check-input:disabled {
  border-color: var(--swp-border);
  background-color: var(--swp-input-disabled-bg);
  opacity: 0.7;
}

.invalid-feedback,
.form-error-message,
.text-danger {
  color: var(--swp-danger-dark) !important;
}

.valid-feedback,
.text-success {
  color: var(--swp-success-dark) !important;
}

.ts-wrapper.multi .ts-control > div {
  border: 1px solid var(--swp-border);
  background: var(--swp-gray-100);
  color: var(--swp-text-primary);
}
.ts-wrapper.disabled .ts-control {
  background: var(--swp-input-disabled-bg);
  color: var(--swp-input-disabled-color);
}

.ts-dropdown {
  border-radius: var(--swp-radius-md);
  box-shadow: var(--swp-shadow-lg);
}
.ts-dropdown .option,
.ts-dropdown .create,
.ts-dropdown .no-results {
  color: var(--swp-text-secondary);
}
.ts-dropdown .active,
.ts-dropdown .option:hover {
  background: var(--swp-menu-hover-bg);
  color: var(--swp-text-primary);
}

.litepicker {
  --litepicker-is-in-range-color-bg: var(--swp-primary-lighter);
  --litepicker-day-color: var(--swp-text-primary);
  --litepicker-day-color-hover: var(--swp-primary);
  --litepicker-month-header-color: var(--swp-text-primary);
  --litepicker-month-weekday-color: var(--swp-text-muted);
  --litepicker-container-months-color-bg: var(--swp-surface-elevated);
}
.litepicker .container__main,
.litepicker .container__months,
.litepicker .container__days {
  background: var(--swp-surface-elevated);
  color: var(--swp-text-primary);
}
.litepicker .day-item.is-locked,
.litepicker .day-item.is-previous-month,
.litepicker .day-item.is-next-month {
  color: var(--swp-text-light);
}

.card,
.panel,
.list-group,
.list-group-item,
.accordion-item,
.accordion-button,
.offcanvas,
.modal-content,
.popover,
.toast {
  border-color: var(--swp-border);
  background-color: var(--swp-surface);
  color: var(--swp-body-color);
}

.surface-subtle {
  background-color: var(--swp-gray-50) !important;
  color: var(--swp-body-color);
}

.card-header,
.card-footer,
.modal-header,
.modal-footer,
.offcanvas-header,
.offcanvas-footer,
.accordion-button:not(.collapsed) {
  border-color: var(--swp-border-light);
  background-color: var(--swp-surface);
  color: var(--swp-text-primary);
}

.dropdown-menu,
.dropdown-menu-arrow,
.popover,
.tooltip-inner {
  border-color: var(--swp-border);
  background-color: var(--swp-menu-bg);
  color: var(--swp-text-primary);
}

.dropdown-divider {
  border-color: var(--swp-border-light);
}

.dropdown-item,
.list-group-item-action {
  color: var(--swp-text-secondary);
}
.dropdown-item:hover, .dropdown-item:focus, .dropdown-item.active,
.list-group-item-action:hover,
.list-group-item-action:focus,
.list-group-item-action.active {
  background-color: var(--swp-menu-hover-bg);
  color: var(--swp-text-primary);
}

.table,
.datagrid-table {
  background: var(--swp-table-bg);
  color: var(--swp-body-color);
}
.table th,
.table td,
.datagrid-table th,
.datagrid-table td {
  border-color: var(--swp-table-border);
  background-color: transparent;
  color: inherit;
}
.table thead th,
.datagrid-table thead th {
  background: var(--swp-table-header-bg);
  color: var(--swp-text-muted);
}

.btn {
  border-radius: var(--swp-btn-radius);
  font-weight: var(--swp-btn-font-weight);
}
.btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.btn-primary {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: var(--swp-primary-fg);
}
.btn-primary:hover, .btn-primary:focus, .btn-primary:active {
  border-color: var(--swp-primary-hover);
  background: var(--swp-primary-hover);
  color: var(--swp-primary-fg);
}

.btn-outline-primary {
  border-color: var(--swp-primary);
  color: var(--swp-primary-dark);
}
.btn-outline-primary:hover, .btn-outline-primary:focus {
  border-color: var(--swp-primary);
  background: var(--swp-primary);
  color: var(--swp-primary-fg);
}

.btn-secondary {
  border-color: var(--swp-secondary);
  background: var(--swp-secondary);
  color: var(--swp-text-inverse);
}
.btn-secondary:hover, .btn-secondary:focus {
  border-color: var(--swp-secondary-hover);
  background: var(--swp-secondary-hover);
  color: var(--swp-text-inverse);
}

.btn-success {
  border-color: var(--swp-success-dark);
  background: var(--swp-success-dark);
  color: var(--swp-text-inverse);
}

.btn-danger {
  border-color: var(--swp-danger-hover);
  background: var(--swp-danger-hover);
  color: var(--swp-danger-fg);
}

.btn-outline-secondary,
.btn-ghost,
.btn-light {
  border-color: var(--swp-border);
  background: transparent;
  color: var(--swp-text-secondary);
}
.btn-outline-secondary:hover, .btn-outline-secondary:focus,
.btn-ghost:hover,
.btn-ghost:focus,
.btn-light:hover,
.btn-light:focus {
  border-color: var(--swp-border-dark);
  background: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}

.alert {
  border-radius: var(--swp-alert-radius);
  color: var(--swp-text-primary);
}

.alert-primary {
  border-color: var(--swp-primary-light);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.alert-secondary {
  border-color: var(--swp-border);
  background: var(--swp-gray-100);
  color: var(--swp-text-secondary);
}

.alert-success,
.bg-success-lt {
  border-color: var(--swp-success-light);
  background: var(--swp-success-lighter) !important;
  color: var(--swp-success-dark) !important;
}

.alert-danger,
.bg-danger-lt {
  border-color: var(--swp-danger-light);
  background: var(--swp-danger-lighter) !important;
  color: var(--swp-danger-dark) !important;
}

.alert-warning,
.bg-warning-lt {
  border-color: var(--swp-warning-light);
  background: var(--swp-warning-lighter) !important;
  color: var(--swp-warning-dark) !important;
}

.alert-info,
.bg-info-lt {
  border-color: var(--swp-info-light);
  background: var(--swp-info-lighter) !important;
  color: var(--swp-info-dark) !important;
}

.bg-primary-lt {
  background: var(--swp-primary-lighter) !important;
  color: var(--swp-primary-dark) !important;
}

.bg-secondary-lt,
.bg-gray-lt {
  background: var(--swp-gray-100) !important;
  color: var(--swp-text-secondary) !important;
}

.empty,
.datagrid-empty,
.dashboard-chart-empty,
.attention-empty {
  color: var(--swp-text-secondary);
}

.datagrid-loading::after,
[data-loading=true]::after {
  background: var(--swp-loading-overlay);
}

.spinner-border,
.spinner-grow {
  color: var(--swp-primary);
}

.icon,
.tabler-icon,
svg[data-icon] {
  color: inherit;
  stroke: currentcolor;
}

[data-bs-theme=dark] .btn-close {
  filter: invert(1) grayscale(100%) brightness(180%);
}
[data-bs-theme=dark] code,
[data-bs-theme=dark] pre,
[data-bs-theme=dark] kbd {
  border-color: var(--swp-border);
  background: var(--swp-gray-100);
  color: var(--swp-primary-dark);
}

/**
 * SolidInvoice Design System - Layout Index
 *
 * Layout pattern styles that extend Tabler/Bootstrap.
 * Only add layout files for patterns not covered by the frameworks.
 *
 * Note: Most layout styling comes from Tabler (page-wrapper, page-header, etc.)
 * This file imports only custom extensions when needed.
 */
/**
 * Finzaro application foundation: shared surfaces, typography and shell controls.
 */
html,
body {
  min-height: 100%;
  background: var(--swp-body-bg);
  color: var(--swp-body-color);
  font-family: var(--swp-font-family);
}

body {
  font-size: var(--swp-text-base);
  line-height: var(--swp-leading-normal);
}

.page,
.page-wrapper,
.page-body {
  background: var(--swp-body-bg);
}

.page-wrapper {
  min-width: 0;
  transition: margin-inline-start var(--swp-transition-base);
}

.page-header {
  margin-block: var(--swp-space-6) var(--swp-space-4);
}
.page-header .page-title {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-tight);
}

.card,
.dropdown-menu,
.modal-content,
.offcanvas,
.popover {
  background-color: var(--swp-surface);
  border-color: var(--swp-border);
  color: var(--swp-body-color);
}

.card {
  border-radius: var(--swp-card-radius);
  box-shadow: var(--swp-shadow-xs);
}

.dropdown-menu,
.modal-content {
  box-shadow: var(--swp-shadow-lg);
}

.dropdown-item {
  color: var(--swp-text-secondary);
}
.dropdown-item:hover, .dropdown-item:focus {
  background: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}

.form-control,
.form-select,
.input-group-text {
  background-color: var(--swp-input-bg);
  border-color: var(--swp-input-border);
  color: var(--swp-text-primary);
}

.form-control::placeholder {
  color: var(--swp-text-muted);
  opacity: 1;
}

.table {
  --tblr-table-bg: var(--swp-table-bg);
  --tblr-table-border-color: var(--swp-table-border);
  --tblr-table-hover-bg: var(--swp-table-row-hover-bg);
  color: var(--swp-body-color);
}

.brand-wordmark {
  display: inline-flex;
  align-items: center;
  color: var(--swp-text-primary);
  line-height: 1;
}

.brand-wordmark-text {
  font-size: 1.75rem;
  font-weight: var(--swp-font-bold);
  letter-spacing: -0.045em;
}

.app-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: var(--swp-control-height);
  height: var(--swp-control-height);
  padding: 0;
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-radius-md);
  background: var(--swp-surface);
  color: var(--swp-text-secondary);
  cursor: pointer;
  transition: var(--swp-transition-colors), var(--swp-transition-shadow);
}
.app-theme-toggle:hover, .app-theme-toggle:focus {
  border-color: var(--swp-border-dark);
  background: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.app-theme-toggle:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.app-theme-toggle .theme-toggle-sun {
  display: none;
}

[data-bs-theme=dark] .app-theme-toggle .theme-toggle-moon {
  display: none;
}
[data-bs-theme=dark] .app-theme-toggle .theme-toggle-sun {
  display: inline-flex;
}

.auth-theme-control {
  position: fixed;
  z-index: var(--swp-z-fixed);
  inset-block-start: var(--swp-space-4);
  inset-inline-end: var(--swp-space-4);
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto !important;
  }
  .page-wrapper,
  .navbar-vertical,
  .nav-link,
  .dropdown-menu,
  .app-theme-toggle,
  .btn,
  .form-control {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}
/**
 * SolidInvoice — Top Navbar
 *
 * The header the app layout puts above the page. Its contents come from three different
 * places (the company switcher, the create menu and the platform's user menu), and each
 * arrived with its own vertical padding and its own horizontal margin - which is why the
 * controls did not share a baseline, a height or a gap. This file sets all three from the
 * shell tokens instead.
 *
 * Scoped to `.page > header.navbar`: the sidebar renders a copy of the same user menu for
 * small screens and must not inherit the header's measurements.
 */
.page > header.navbar {
  min-height: var(--swp-navbar-height);
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-xs);
}
.page > header.navbar > .container-xl,
.page > header.navbar > .container-fluid {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
}
.page > header.navbar .navbar-nav.flex-row {
  align-items: center;
  gap: var(--swp-space-2);
  margin-inline-start: auto;
}
.page > header.navbar .btn,
.page > header.navbar .nav-link {
  display: inline-flex;
  align-items: center;
  height: var(--swp-control-height);
  min-height: var(--swp-control-height);
}
.page > header.navbar .btn {
  padding-block: 0;
  font-size: 0.875rem;
  font-weight: var(--swp-font-medium);
  white-space: nowrap;
}
.page > header.navbar .btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.page > header.navbar .nav-company-switch {
  gap: var(--swp-space-2);
  padding-inline: var(--swp-space-2) var(--swp-space-3);
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border);
  border-radius: var(--swp-btn-radius);
  color: var(--swp-text-primary);
  font-weight: var(--swp-font-semibold);
  max-width: 16rem;
}
.page > header.navbar .nav-company-switch .navbar-brand-image {
  margin: 0;
  flex: none;
  border-radius: var(--swp-radius-sm);
  object-fit: contain;
}
.page > header.navbar .nav-company-switch > :last-child {
  overflow: hidden;
  text-overflow: ellipsis;
}
.page > header.navbar .nav-company-switch:hover, .page > header.navbar .nav-company-switch:focus {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border-dark);
  color: var(--swp-text-primary);
}
.page > header.navbar .nav-company-switch::after {
  margin-inline-start: var(--swp-space-1);
}
.page > header.navbar .navbar-nav .nav-link {
  padding-inline: var(--swp-space-2);
  border-radius: var(--swp-radius-md);
  font-size: 0.875rem;
  color: var(--swp-text-secondary);
}
.page > header.navbar .navbar-nav .nav-link:hover, .page > header.navbar .navbar-nav .nav-link:focus {
  background-color: var(--swp-gray-100);
  color: var(--swp-text-primary);
}
.page > header.navbar .navbar-nav .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.page > header.navbar .avatar {
  flex: none;
  color: var(--swp-primary-dark);
  background-color: var(--swp-primary-light);
  font-weight: var(--swp-font-semibold);
}

.navbar-vertical .app-theme-toggle {
  border-color: var(--swp-sidebar-border);
  background: transparent;
  color: var(--swp-sidebar-item-fg);
}
.navbar-vertical .app-theme-toggle:hover, .navbar-vertical .app-theme-toggle:focus {
  border-color: rgba(255, 255, 255, 0.18);
  background: var(--swp-sidebar-hover-bg);
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar-vertical .app-theme-toggle:focus-visible {
  box-shadow: var(--swp-sidebar-ring);
}

@media (width < 576px) {
  .page > header.navbar .nav-company-switch {
    max-width: 9rem;
  }
}
/**
 * Finzaro — vertical navigation (the rail)
 *
 * The navigation is the one surface that stays dark in both themes: it anchors the shell and
 * the light content beside it reads as the page the rail frames. Its whole palette is declared
 * in the `--swp-sidebar-*` tokens, so nothing here reaches for a global colour.
 *
 * Two things to know before editing:
 *
 *   1. Tabler compiles most of its sidebar rules against
 *      `.navbar-vertical.navbar-expand-{breakpoint} .navbar-collapse ...`, which is more
 *      specific than a plain `.navbar-vertical .nav-link`. The rules below are nested
 *      through `.navbar-collapse` so they match or beat that, instead of silently losing.
 *   2. The rail's width is a token, because Tabler writes 15rem into two places: the rail
 *      itself and the offset it puts on the page wrapper. Both have to move together.
 */
@media (width >= 992px) {
  .navbar.navbar-expand-lg.navbar-vertical {
    width: var(--swp-sidebar-width);
    transition: width var(--swp-transition-base);
  }
  .navbar.navbar-expand-lg.navbar-vertical ~ .navbar,
  .navbar.navbar-expand-lg.navbar-vertical ~ .page-wrapper {
    margin-left: var(--swp-sidebar-width);
  }
}
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--swp-sidebar-bg);
  color: var(--swp-sidebar-item-fg);
  border: 0;
  box-shadow: none;
}
.navbar.navbar-vertical > .container-fluid,
.navbar.navbar-vertical.navbar-dark > .container-fluid {
  padding-inline: var(--swp-space-2);
}
.navbar.navbar-vertical .navbar-brand.sidebar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand.sidebar-brand {
  min-height: var(--swp-navbar-height);
  padding: var(--swp-space-2) 1rem;
  justify-content: flex-start;
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .shell-brand,
.navbar.navbar-vertical.navbar-dark .shell-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-2-5);
  min-width: 0;
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .shell-brand-monogram,
.navbar.navbar-vertical.navbar-dark .shell-brand-monogram {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.875rem;
  height: 1.875rem;
  flex: none;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--swp-radius-sm);
  background: var(--swp-sidebar-active-bg);
  color: #ffffff;
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-bold);
  letter-spacing: var(--swp-tracking-tight);
}
.navbar.navbar-vertical .shell-brand-wordmark,
.navbar.navbar-vertical.navbar-dark .shell-brand-wordmark {
  overflow: hidden;
  color: var(--swp-sidebar-item-fg-hover);
  font-size: 1.125rem;
  font-weight: var(--swp-font-bold);
  letter-spacing: -0.04em;
  text-overflow: ellipsis;
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-sidebar-item-fg);
  border-color: var(--swp-sidebar-border);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-sidebar-ring);
}
.navbar.navbar-vertical .btn:focus-visible,
.navbar.navbar-vertical.navbar-dark .btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-sidebar-ring);
}
.navbar.navbar-vertical .sidebar-brand a:focus-visible,
.navbar.navbar-vertical.navbar-dark .sidebar-brand a:focus-visible {
  outline: none;
  border-radius: var(--swp-radius-sm);
  box-shadow: var(--swp-sidebar-ring);
}
.navbar.navbar-vertical .navbar-collapse,
.navbar.navbar-vertical.navbar-dark .navbar-collapse {
  min-height: 0;
}
.navbar.navbar-vertical .navbar-collapse .navbar-nav,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .navbar-nav {
  row-gap: 2px;
}
.navbar.navbar-vertical .navbar-collapse .nav-link,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link {
  gap: 0.625rem;
  min-height: var(--swp-control-height);
  padding: var(--swp-space-2) 1rem;
  font-size: 0.875rem;
  font-weight: var(--swp-font-medium);
  line-height: 1.25rem;
  color: var(--swp-sidebar-item-fg);
  border-radius: var(--swp-sidebar-item-radius);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.navbar.navbar-vertical .navbar-collapse .nav-link .nav-link-icon,
.navbar.navbar-vertical .navbar-collapse .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .navbar-collapse .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link .nav-link-icon {
  width: 1.125rem;
  height: 1.125rem;
  margin: 0;
  color: var(--swp-sidebar-icon);
}
.navbar.navbar-vertical .navbar-collapse .nav-link .nav-link-icon svg,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link .nav-link-icon svg {
  display: block;
  width: 100%;
  height: 100%;
}
.navbar.navbar-vertical .navbar-collapse .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link .nav-link-title {
  font-size: 0.875rem;
}
.navbar.navbar-vertical .navbar-collapse .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link:hover {
  background-color: var(--swp-sidebar-hover-bg);
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .navbar-collapse .nav-link:hover .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link:hover .nav-link-icon {
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .navbar-collapse .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-sidebar-ring);
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.active,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.active {
  background-color: var(--swp-sidebar-active-bg);
  color: var(--swp-sidebar-active-fg);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .navbar-collapse .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.active .nav-link-title {
  color: var(--swp-sidebar-active-fg);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.active:hover {
  background-color: var(--swp-sidebar-active-bg-hover);
  color: var(--swp-sidebar-active-fg);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.active:hover .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.active:hover .nav-link-icon {
  color: var(--swp-sidebar-active-fg);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.dropdown-toggle::after {
  content: "";
  flex: none;
  width: 1rem;
  height: 1rem;
  margin: 0 0 0 auto;
  margin-inline-start: auto;
  border: 0;
  vertical-align: 0;
  transform: rotate(0deg);
  background-color: currentcolor;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27%23fff%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m6 9 6 6 6-6%27/%3E%3C/svg%3E");
  mask-position: center;
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
  opacity: 0.75;
  transition: transform var(--swp-transition-fast), opacity var(--swp-transition-fast);
}
.navbar.navbar-vertical .navbar-collapse .nav-link.dropdown-toggle.show::after,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-link.dropdown-toggle.show::after {
  transform: rotate(180deg);
  opacity: 1;
}
.navbar.navbar-vertical .navbar-collapse .nav-item.active > .nav-link:not(.active),
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-item.active > .nav-link:not(.active) {
  color: var(--swp-sidebar-active-parent-fg);
}
.navbar.navbar-vertical .navbar-collapse .nav-item.active > .nav-link:not(.active) .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-item.active > .nav-link:not(.active) .nav-link-icon {
  color: inherit;
}
.navbar.navbar-vertical .navbar-collapse .nav-item.active::after,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-item.active::after {
  content: none;
}
.navbar.navbar-vertical .navbar-collapse .nav-subtitle,
.navbar.navbar-vertical .navbar-collapse .nav-header,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .nav-header {
  color: var(--swp-sidebar-heading);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  letter-spacing: var(--swp-tracking-wider);
  text-transform: uppercase;
}
.navbar.navbar-vertical .navbar-collapse .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu {
  position: relative;
  margin: 2px 0 var(--swp-space-1);
  padding: 0.25rem;
  min-width: 0;
  border: 0;
  border-radius: var(--swp-radius-md);
  background-color: var(--swp-sidebar-submenu-bg);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu .dropdown-item {
  padding: var(--swp-space-1-5) var(--swp-space-3);
  padding-inline-start: 2.5rem;
  width: auto;
  font-size: var(--swp-text-sm);
  color: var(--swp-sidebar-submenu-fg);
  border-radius: var(--swp-radius-sm);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.navbar.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu .dropdown-item:focus {
  background-color: var(--swp-sidebar-hover-bg);
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu .dropdown-item:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px var(--swp-sidebar-active-parent-fg);
}
.navbar.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-collapse .dropdown-menu .dropdown-item.active {
  background-color: var(--swp-sidebar-active-bg);
  color: var(--swp-sidebar-active-fg);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .sidebar-shell-footer,
.navbar.navbar-vertical.navbar-dark .sidebar-shell-footer {
  margin-top: auto;
  padding: var(--swp-space-3) var(--swp-space-2) var(--swp-space-4);
  border-top: 1px solid var(--swp-sidebar-border);
}
.navbar.navbar-vertical .sidebar-collapse-toggle,
.navbar.navbar-vertical.navbar-dark .sidebar-collapse-toggle {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  width: 100%;
  min-height: var(--swp-control-height);
  padding: var(--swp-space-2) var(--swp-space-3);
  border: 0;
  border-radius: var(--swp-sidebar-item-radius);
  background: transparent;
  color: var(--swp-sidebar-item-fg);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  text-align: start;
}
.navbar.navbar-vertical .sidebar-collapse-toggle:hover, .navbar.navbar-vertical .sidebar-collapse-toggle:focus,
.navbar.navbar-vertical.navbar-dark .sidebar-collapse-toggle:hover,
.navbar.navbar-vertical.navbar-dark .sidebar-collapse-toggle:focus {
  background: var(--swp-sidebar-hover-bg);
  color: var(--swp-sidebar-item-fg-hover);
}
.navbar.navbar-vertical .sidebar-collapse-toggle:focus-visible,
.navbar.navbar-vertical.navbar-dark .sidebar-collapse-toggle:focus-visible {
  outline: none;
  box-shadow: var(--swp-sidebar-ring);
}

@media (width >= 992px) {
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical {
    width: var(--swp-sidebar-collapsed-width);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical ~ .navbar,
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical ~ .page-wrapper {
    margin-left: var(--swp-sidebar-collapsed-width);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical > .container-fluid {
    padding-inline: var(--swp-space-2);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-brand.sidebar-brand {
    justify-content: center;
    padding-inline: 0;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .shell-brand-wordmark,
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .sidebar-collapse-label,
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .nav-link-title,
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .nav-subtitle,
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .nav-header {
    display: none;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .navbar-nav > .nav-item {
    position: relative;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .nav-link {
    justify-content: center;
    padding-inline: 0;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .nav-link.dropdown-toggle::after {
    display: none;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .dropdown-menu {
    position: absolute;
    z-index: var(--swp-z-dropdown);
    inset-block-start: 0;
    inset-inline-start: calc(100% + var(--swp-space-2));
    min-width: 13rem;
    padding: var(--swp-space-2);
    border: 1px solid var(--swp-border);
    background: var(--swp-surface-elevated);
    box-shadow: var(--swp-shadow-lg);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item {
    padding: var(--swp-space-2) var(--swp-space-3);
    color: var(--swp-text-secondary);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item:hover, html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .navbar-collapse .dropdown-menu .dropdown-item:focus {
    background: var(--swp-surface-hover);
    color: var(--swp-text-primary);
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .sidebar-shell-footer {
    padding-inline: 0;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .sidebar-collapse-toggle {
    justify-content: center;
    padding-inline: 0;
  }
  html[data-sidebar-collapsed=true] .navbar.navbar-expand-lg.navbar-vertical .sidebar-collapse-icon {
    transform: rotate(180deg);
  }
}
@media (prefers-reduced-motion: no-preference) {
  .navbar.navbar-vertical .navbar-collapse .dropdown-menu {
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition-property: max-height, opacity, display;
    transition-duration: var(--swp-duration-base), var(--swp-duration-fast), var(--swp-duration-base);
    transition-timing-function: var(--swp-ease-in-out), linear, linear;
    transition-behavior: allow-discrete;
  }
  .navbar.navbar-vertical .navbar-collapse .dropdown-menu.show {
    max-height: var(--swp-sidebar-submenu-max-height);
    opacity: 1;
  }
  @starting-style {
    .navbar.navbar-vertical .navbar-collapse .dropdown-menu.show {
      max-height: 0;
      opacity: 0;
    }
  }
}
@media (prefers-reduced-motion: reduce) {
  .navbar.navbar-vertical .navbar-collapse .nav-link.dropdown-toggle::after {
    transition: none;
  }
}
@media (width < 992px) {
  .navbar.navbar-vertical > .container-fluid {
    padding-inline: var(--swp-space-3);
  }
  .navbar.navbar-vertical .navbar-collapse {
    padding-block: var(--swp-space-2);
    background-color: var(--swp-sidebar-bg);
  }
  .navbar.navbar-vertical .navbar-collapse.show, .navbar.navbar-vertical .navbar-collapse.collapsing {
    position: fixed;
    z-index: var(--swp-z-fixed);
    inset-block: var(--swp-navbar-height) 0;
    inset-inline-start: 0;
    width: min(20rem, 100vw - 3rem);
    height: auto !important;
    padding: var(--swp-space-4) var(--swp-space-3);
    overflow-y: auto;
    border-top: 1px solid var(--swp-sidebar-border);
    box-shadow: var(--swp-shadow-xl);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row {
    align-items: center;
    gap: var(--swp-space-2);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-company-switch {
    background-color: transparent;
    border-color: var(--swp-sidebar-border);
    color: var(--swp-sidebar-item-fg-hover);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-company-switch .navbar-brand-image {
    margin: 0;
    flex: none;
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-company-switch:hover, .navbar.navbar-vertical .navbar-nav.flex-row .nav-company-switch:focus {
    background-color: var(--swp-sidebar-hover-bg);
    border-color: rgba(255, 255, 255, 0.18);
    color: var(--swp-sidebar-active-fg);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-link {
    color: var(--swp-sidebar-item-fg);
    border-radius: var(--swp-sidebar-item-radius);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-link:hover, .navbar.navbar-vertical .navbar-nav.flex-row .nav-link:focus {
    background-color: var(--swp-sidebar-hover-bg);
    color: var(--swp-sidebar-item-fg-hover);
  }
  .navbar.navbar-vertical .navbar-nav.flex-row .nav-link:focus-visible {
    outline: none;
    box-shadow: var(--swp-sidebar-ring);
  }
}
/**
 * SolidInvoice Design System - Form Styles
 *
 * Generic form component styles for the entire application.
 * Uses design system tokens for consistent styling.
 */
.form-control,
.form-select {
  border-radius: var(--swp-input-radius);
  border-color: var(--swp-input-border);
  padding: var(--swp-input-padding-y) var(--swp-input-padding-x);
  font-size: var(--swp-text-base);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-control:focus,
.form-select:focus {
  border-color: var(--swp-input-focus-border);
  box-shadow: var(--swp-input-focus-ring);
}
.form-control::placeholder,
.form-select::placeholder {
  color: var(--swp-text-light);
}

.form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}
.form-label.required::after {
  content: " *";
  color: var(--swp-danger);
}

.form-field .form-label {
  font-weight: var(--swp-font-medium);
  color: var(--swp-body-color);
  margin-bottom: var(--swp-space-2);
}
.form-field .form-control,
.form-field .form-select {
  border-color: var(--swp-border);
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.form-field .form-control:focus,
.form-field .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.form-field .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}

.form-help,
.form-text,
.form-help-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  line-height: var(--swp-leading-normal);
  margin-top: var(--swp-space-1);
}
.form-help small,
.form-text small,
.form-help-text small {
  font-size: inherit;
}

.form-switch-field {
  padding: var(--swp-space-3-5) var(--swp-space-4);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-md);
  border: 1px solid var(--swp-border);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
}
.form-switch-field:hover {
  border-color: rgba(var(--swp-primary-rgb), 0.3);
  background-color: var(--swp-primary-lighter);
}

.form-switch-wrapper {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  margin-bottom: 0;
}
.form-switch-wrapper .form-check-input {
  width: 2.5rem;
  height: 1.25rem;
  margin-top: 0;
  cursor: pointer;
  background-color: var(--swp-gray-300);
  border: none;
  transition: background-color var(--swp-transition-fast);
}
.form-switch-wrapper .form-check-input:checked {
  background-color: var(--swp-primary);
}
.form-switch-wrapper .form-check-input:focus {
  box-shadow: var(--swp-ring-primary);
}
.form-switch-wrapper .form-check-label {
  font-weight: var(--swp-font-medium);
  cursor: pointer;
  margin-bottom: 0;
  margin-left: 0.5rem;
  flex: 1;
}

.input-icon-group .input-group-text {
  background-color: var(--swp-gray-50);
  border-color: var(--swp-border);
  color: var(--swp-text-muted);
}
.input-icon-group .input-group-text svg {
  width: 18px;
  height: 18px;
}
.input-icon-group .form-control {
  border-left: none;
}
.input-icon-group .form-control:focus {
  border-color: var(--swp-primary);
  box-shadow: var(--swp-ring-primary);
}
.input-icon-group .form-control:focus ~ .input-group-text,
.input-icon-group .form-control:focus + .input-group-text {
  border-color: var(--swp-primary);
}
.input-icon-group .input-group-text:first-child {
  border-right: none;
}
.input-icon-group .input-group-text:first-child + .form-control {
  border-left: none;
}

.input-validate-group .btn-validate {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: var(--swp-text-sm);
}
.input-validate-group .btn-validate svg {
  width: 16px;
  height: 16px;
}

.form-group-card {
  padding: var(--swp-space-5);
  background-color: var(--swp-gray-50);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border);
}
.form-group-card .form-group-header {
  margin-bottom: var(--swp-space-4);
}
.form-group-card .form-group-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  margin: 0;
}
.form-group-card .form-group-content .mb-3:last-child,
.form-group-card .form-group-content .mb-4:last-child {
  margin-bottom: 0 !important;
}

.address-widget .card-body {
  padding: var(--swp-space-4);
}
.address-widget .form-label {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.address-widget .form-control,
.address-widget .form-select {
  font-size: var(--swp-text-base);
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--swp-danger);
  padding-right: calc(1.5em + 0.75rem);
  background-image: url("data:image/svg+xml,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 12 12%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ef4444%27%3e%3ccircle cx=%276%27 cy=%276%27 r=%274.5%27/%3e%3cpath stroke-linejoin=%27round%27 d=%27M5.8 3.6h.4L6 6.5z%27/%3e%3ccircle cx=%276%27 cy=%278.2%27 r=%27.6%27 fill=%27%23ef4444%27 stroke=%27none%27/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right calc(0.375em + 0.1875rem) center;
  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
}
.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--swp-danger);
  box-shadow: var(--swp-ring-danger);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--swp-success);
}
.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--swp-success);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.15);
}

.invalid-feedback {
  color: var(--swp-danger);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.valid-feedback {
  color: var(--swp-success);
  font-size: var(--swp-text-sm);
  margin-top: var(--swp-space-1-5);
}

.file-upload-area {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-6);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  cursor: pointer;
}
.file-upload-area:hover, .file-upload-area.dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}
.file-upload-area .upload-icon {
  color: var(--swp-text-light);
  margin-bottom: var(--swp-space-2);
}
.file-upload-area .upload-icon svg {
  width: 32px;
  height: 32px;
}
.file-upload-area .upload-text {
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}
.file-upload-area .upload-hint {
  color: var(--swp-text-light);
  font-size: var(--swp-text-xs);
  margin-top: var(--swp-space-1);
}

.dropzone {
  border: 2px dashed var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  padding: var(--swp-space-4);
  text-align: center;
  background: var(--swp-surface);
  transition: border-color var(--swp-transition-fast), background-color var(--swp-transition-fast);
  min-height: auto;
}
.dropzone:hover, .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: var(--swp-primary-lighter);
}

.form-section-title {
  font-size: var(--swp-text-md);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-body-color);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-4);
}
.form-section-title svg,
.form-section-title i {
  color: var(--swp-primary);
  opacity: 0.9;
  width: 20px;
  height: 20px;
}

/**
 * Standard Form Actions Pattern:
 *
 * ┌─────────────────────────────────────────────────────────────┐
 * │ [Cancel (ghost)]                      [Save (primary + icon)]│
 * └─────────────────────────────────────────────────────────────┘
 *
 * - Cancel: Left side OR ghost style
 * - Save: Right side, primary style, with save icon
 */
.form-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) var(--swp-space-6);
  background: var(--swp-gray-50);
  border-top: 1px solid var(--swp-border-light);
}
.card-footer .form-actions {
  padding: 0;
  background: transparent;
  border-top: none;
}
.form-actions.form-actions-spread {
  justify-content: space-between;
}

.form-inline {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  flex-wrap: wrap;
}
.form-inline .form-control,
.form-inline .form-select {
  width: auto;
}

.form-horizontal .form-group,
.form-horizontal .mb-3,
.form-horizontal .mb-4 {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: var(--swp-space-4);
  align-items: start;
}
@media (width <= 768px) {
  .form-horizontal .form-group,
  .form-horizontal .mb-3,
  .form-horizontal .mb-4 {
    grid-template-columns: 1fr;
  }
}
.form-horizontal .form-label {
  padding-top: var(--swp-space-2-5);
  margin-bottom: 0;
  text-align: right;
}
@media (width <= 768px) {
  .form-horizontal .form-label {
    text-align: left;
    padding-top: 0;
  }
}

.form-compact .mb-3,
.form-compact .mb-4 {
  margin-bottom: var(--swp-space-3) !important;
}
.form-compact .form-control,
.form-compact .form-select {
  padding: var(--swp-space-2) var(--swp-space-3);
  font-size: var(--swp-text-sm);
}
.form-compact .form-label {
  font-size: var(--swp-text-xs);
  margin-bottom: var(--swp-space-1);
}

.btn {
  gap: var(--swp-space-2);
}

.btn-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: var(--swp-radius-md);
}
.btn-icon svg {
  width: 18px;
  height: 18px;
}

.btn-ghost-danger {
  color: var(--swp-text-muted);
  background: transparent;
  border: none;
}
.btn-ghost-danger:hover {
  color: var(--swp-danger);
  background: var(--swp-danger-lighter);
}
.btn-ghost-danger:focus {
  box-shadow: var(--swp-ring-danger);
}

.card-header-tabs .nav-link {
  font-size: 0.875rem;
}

.fw-medium {
  font-weight: 500 !important;
}

@media (width <= 576px) {
  .form-switch-field {
    padding: var(--swp-space-3);
  }
  .form-switch-wrapper .form-check-input {
    width: 2.25rem;
    height: 1.125rem;
  }
  .form-group-card {
    padding: var(--swp-space-4);
  }
  .form-actions {
    padding: var(--swp-space-3) var(--swp-space-4);
    flex-wrap: wrap;
  }
  .form-actions .btn {
    flex: 1;
    min-width: 100px;
  }
}
/**
 * Company Pages Styles
 *
 * Styles for company selection and creation pages
 * All styles are scoped to .company-select-page and .company-create-page
 * to avoid conflicts with other pages.
 */
.company-select-page,
.company-create-page {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
.company-select-page .company-page-header,
.company-create-page .company-page-header {
  background: var(--swp-surface);
  border-bottom: 1px solid var(--swp-border);
  box-shadow: var(--swp-shadow-xs);
}
.company-select-page .company-page-logo,
.company-create-page .company-page-logo {
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-page-logo img,
.company-create-page .company-page-logo img {
  height: 48px;
  width: auto;
}
.company-select-page .company-page-brand h1,
.company-create-page .company-page-brand h1 {
  font-weight: 700;
  color: var(--swp-text-primary);
}
.company-select-page .company-page-intro h2,
.company-create-page .company-page-intro h2 {
  font-weight: 600;
  color: var(--swp-text-primary);
  font-size: 1.75rem;
}
.company-select-page .company-page-intro p,
.company-create-page .company-page-intro p {
  font-size: 1.125rem;
}
.company-select-page .avatar-md,
.company-create-page .avatar-md {
  width: 2.5rem;
  height: 2.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-lg,
.company-create-page .avatar-lg {
  width: 3.5rem;
  height: 3.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-2xl,
.company-create-page .avatar-2xl {
  width: 4rem;
  height: 4rem;
  font-size: 1.25rem;
  font-weight: 600;
}
.company-select-page .avatar-xl,
.company-create-page .avatar-xl {
  width: 5rem;
  height: 5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .avatar-initials,
.company-create-page .avatar-initials {
  font-weight: 600;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.company-select-page .form-hint,
.company-create-page .form-hint {
  font-size: 0.875rem;
  color: var(--swp-text-secondary);
  display: flex;
  align-items: center;
}
@media (width <= 767.98px) {
  .company-select-page .avatar-lg,
  .company-create-page .avatar-lg {
    width: 3rem;
    height: 3rem;
  }
  .company-select-page .avatar-lg svg,
  .company-create-page .avatar-lg svg {
    width: 24px;
    height: 24px;
  }
  .company-select-page .avatar-2xl,
  .company-create-page .avatar-2xl {
    width: 3rem;
    height: 3rem;
    font-size: 1rem;
  }
  .company-select-page .h2, .company-select-page h2,
  .company-create-page .h2,
  .company-create-page h2 {
    font-size: 1.5rem;
  }
}

.company-select-page .card.shadow-sm {
  box-shadow: var(--swp-shadow-lg) !important;
  border: none;
  background: var(--swp-surface);
}
.company-select-page .card-company {
  transition: var(--swp-transition-all);
  border: 2px solid var(--swp-border);
  background: var(--swp-surface);
  box-shadow: var(--swp-shadow-md);
  border-radius: var(--swp-radius-lg);
}
.company-select-page .card-company:hover {
  transform: translateY(-4px);
  box-shadow: var(--swp-shadow-xl);
  border-color: var(--swp-primary);
}
.company-select-page .card-company:hover .company-arrow {
  transform: translateX(4px);
}
.company-select-page .card-company:hover h3 {
  color: var(--swp-primary);
}
.company-select-page .card-company:active {
  transform: translateY(-2px);
}
.company-select-page .company-avatar {
  flex-shrink: 0;
}
.company-select-page .company-avatar .avatar {
  box-shadow: var(--swp-shadow-sm);
}
.company-select-page .company-avatar .avatar img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: var(--swp-space-2);
}
.company-select-page .company-avatar .avatar.bg-primary {
  background-color: var(--swp-primary) !important;
  background-image: none !important;
}
.company-select-page .company-avatar .avatar-initials,
.company-select-page .company-avatar .avatar.bg-primary span {
  color: var(--swp-text-inverse) !important;
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .company-arrow {
  flex-shrink: 0;
  transition: transform var(--swp-duration-base) var(--swp-ease-in-out);
  display: flex;
  align-items: center;
  justify-content: center;
}
.company-select-page .min-w-0 {
  min-width: 0;
}
.company-select-page .card-create-company {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border: 2px dashed var(--swp-border);
  transition: var(--swp-transition-all);
}
.company-select-page .card-create-company:hover {
  border-color: var(--swp-success);
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
}
.company-select-page .w-md-auto {
  width: auto !important;
}
@media (width >= 768px) {
  .company-select-page .w-md-auto {
    width: auto !important;
  }
}

.company-create-page .form-smooth .form-control:focus,
.company-create-page .form-smooth .form-select:focus {
  border-color: var(--swp-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--swp-primary-rgb), 0.1);
}
.company-create-page .card {
  box-shadow: var(--swp-shadow-lg);
  border: none;
}
.company-create-page .alert {
  border-radius: var(--swp-radius-lg);
  border: 1px solid transparent;
}
.company-create-page .alert.alert-info {
  background-color: rgba(var(--swp-info-rgb), 0.08);
  border-color: rgba(var(--swp-info-rgb), 0.2);
}
.company-create-page .alert.alert-warning {
  background-color: rgba(var(--swp-warning-rgb), 0.08);
  border-color: rgba(var(--swp-warning-rgb), 0.2);
}
.company-create-page .alert.alert-success {
  background-color: rgba(var(--swp-success-rgb), 0.08);
  border-color: rgba(var(--swp-success-rgb), 0.2);
}
.company-create-page .btn-primary {
  font-weight: 600;
  letter-spacing: 0.01em;
}

/**
 * Settings Page Styles
 * Only custom styles that can't be achieved with Bootstrap/Tabler utilities
 */
.settings-page {
  max-width: 900px;
  margin: 0 auto;
  padding-bottom: 2rem;
}

.settings-navigation {
  gap: var(--swp-space-1);
  padding: var(--swp-space-1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  background: var(--swp-surface);
}
.settings-navigation .nav-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  padding: var(--swp-space-2) var(--swp-space-3);
  border: 0;
  border-radius: var(--swp-radius-md);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
}
.settings-navigation .nav-link:hover, .settings-navigation .nav-link:focus-visible {
  background: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.settings-navigation .nav-link.active {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}

.settings-section-heading {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  margin-bottom: var(--swp-space-4);
}
.settings-section-heading h2 {
  margin: 0;
  color: var(--swp-text-primary);
  font-size: var(--swp-text-xl);
  font-weight: var(--swp-font-semibold);
}
.settings-section-heading p {
  max-width: 65ch;
  margin: var(--swp-space-1) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}

.settings-section-heading__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}

@media (max-width: 767.98px) {
  .settings-page > .nav-underline {
    margin-left: -1rem;
    margin-right: -1rem;
    padding-left: 1rem;
    padding-right: 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
  }
  .settings-page > .nav-underline::-webkit-scrollbar {
    display: none;
  }
  .settings-page > .nav-underline .nav-item {
    flex-shrink: 0;
  }
  .settings-section-heading {
    padding-inline: var(--swp-space-1);
  }
}
.settings-content-card {
  border-radius: var(--swp-radius-lg);
}
.settings-content-card:hover {
  transform: none;
}
.settings-content-card > .card-body {
  padding: var(--swp-space-6);
}
@media (min-width: 768px) {
  .settings-content-card > .card-body {
    padding: var(--swp-space-8) var(--swp-space-8) var(--swp-space-6);
  }
}
.settings-content-card > .card-footer {
  padding: var(--swp-space-4) var(--swp-space-6);
  border-top-color: var(--swp-border-light);
}
@media (min-width: 768px) {
  .settings-content-card > .card-footer {
    padding: var(--swp-space-4) var(--swp-space-8);
  }
}
.settings-content-card .card-body > .border-bottom {
  border-bottom-color: var(--swp-border-light) !important;
}
.settings-content-card .card-body h3 {
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.settings-content-card .card-body h3 > svg {
  color: var(--swp-text-muted);
}
.settings-content-card .card-body h3 + p.text-muted {
  max-width: 65ch;
}

.logo-upload-card .logo-preview-frame {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ffffff;
  border-radius: var(--swp-radius-md);
  border: 1px solid var(--swp-border);
  overflow: hidden;
}
.logo-upload-card .logo-preview-frame img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}
.logo-upload-card .dropzone {
  border: 2px dashed var(--swp-border-dark);
  border-radius: var(--swp-radius-md);
  min-height: auto;
}
.logo-upload-card .dropzone:hover, .logo-upload-card .dropzone.dropzone-dragover {
  border-color: var(--swp-primary);
  background-color: rgba(var(--swp-primary-rgb), 0.02);
}

.settings-danger-zone .card {
  border-radius: var(--swp-radius-lg);
  border-color: var(--swp-danger-light);
}
.settings-danger-zone .card:hover {
  transform: none;
}
.settings-danger-zone .card .card-header {
  background: var(--swp-danger-lighter) !important;
  border-bottom-color: var(--swp-danger-light) !important;
  padding: var(--swp-space-3) var(--swp-space-6);
}
.settings-danger-zone .card .card-header .card-title {
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-danger-dark);
}
.settings-danger-zone .card .card-body {
  padding: var(--swp-space-5) var(--swp-space-6);
}
.settings-danger-zone .card .card-body h3 {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
}

#deleteCompanyModal .modal-content {
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
}
#deleteCompanyModal .font-monospace {
  background-color: var(--swp-danger-lighter);
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
}

.custom-field-list .custom-field-row {
  transition: background-color 120ms ease;
}
.custom-field-list .custom-field-row:hover .custom-field-handle {
  color: var(--tblr-body-color, #1e293b);
}
.custom-field-list .custom-field-row.sortable-ghost {
  opacity: 0.4;
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.06);
}
.custom-field-list .custom-field-row.sortable-chosen {
  background-color: rgba(var(--swp-primary-rgb, 99 102 241), 0.04);
}
.custom-field-list .custom-field-handle {
  cursor: grab;
  padding: 0.25rem;
  color: var(--tblr-muted, #94a3b8);
  line-height: 1;
  border-radius: 0.25rem;
}
.custom-field-list .custom-field-handle:active {
  cursor: grabbing;
}

@media print {
  .settings-page .nav-underline,
  .settings-page .settings-danger-zone,
  .settings-page .card-footer {
    display: none !important;
  }
}
.template-picker .template-picker-card {
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.template-picker .template-picker-card:has(.template-picker-input:checked) {
  border-color: var(--tblr-primary, #206bc4);
  box-shadow: 0 0 0 2px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.25);
}
.template-picker .template-picker-card:has(.template-picker-input:focus-visible) {
  box-shadow: 0 0 0 3px rgba(var(--tblr-primary-rgb, 32, 107, 196), 0.5);
}
.template-picker .template-picker-option {
  display: block;
  position: relative;
  margin: 0;
  cursor: pointer;
}
.template-picker .template-picker-input {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  padding: 0;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
.template-picker .template-picker-thumb {
  display: block;
  position: relative;
  width: 100%;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--tblr-bg-surface-secondary, #f1f5f9);
}
.template-picker .template-picker-thumb iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 400%;
  height: 400%;
  border: 0;
  transform: scale(0.25);
  transform-origin: 0 0;
  pointer-events: none;
}
.template-picker .template-picker-check {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  display: none;
  align-items: center;
  justify-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: var(--tblr-primary, #206bc4);
  color: #ffffff;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.25);
}
.template-picker .template-picker-option:has(.template-picker-input:checked) .template-picker-check {
  display: flex;
}
.template-picker.template-picker-disabled .template-picker-option {
  cursor: not-allowed;
}
.template-picker.template-picker-disabled .template-picker-thumb {
  opacity: 0.6;
}

/**
 * SolidInvoice Dashboard Styles
 *
 * Styles for the redesigned dashboard including hero stats,
 * charts, attention required section, quick actions, and activity feed.
 */
.dashboard-page {
  width: 100%;
  max-width: 100rem;
  margin-inline: auto;
}

.dashboard-intro {
  margin: calc(var(--swp-space-2) * -1) 0 var(--swp-space-5);
}
.dashboard-intro p {
  max-width: 52rem;
  margin: 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-base);
}

.dashboard-overview {
  margin-bottom: var(--swp-space-6);
}
.dashboard-overview > .col-12 {
  padding-inline: 0;
}

.dashboard-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(20rem, 0.75fr);
  gap: var(--swp-space-6);
  align-items: start;
}

.dashboard-main-column,
.dashboard-side-column {
  min-width: 0;
}
.dashboard-main-column > .col-12,
.dashboard-side-column > .col-12 {
  padding-inline: 0;
  margin-bottom: var(--swp-space-6) !important;
}

.dashboard-side-column {
  position: sticky;
  top: calc(var(--swp-navbar-height) + var(--swp-space-4));
}

@media (width < 1200px) {
  .dashboard-workspace {
    grid-template-columns: 1fr;
  }
  .dashboard-side-column {
    position: static;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--swp-space-6);
  }
  .dashboard-side-column > .col-12 {
    margin-bottom: 0 !important;
  }
}
@media (width < 768px) {
  .dashboard-workspace,
  .dashboard-side-column {
    display: block;
  }
  .dashboard-main-column > .col-12,
  .dashboard-side-column > .col-12 {
    margin-bottom: var(--swp-space-4) !important;
  }
}
.dashboard-hero-stats {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: minmax(0, 1fr);
}
@media (width >= 577px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (width >= 1201px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(9, minmax(0, 1fr));
  }
}

.stat-card {
  min-width: 0;
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-xs);
  padding: var(--swp-space-6);
  container-type: inline-size;
}
@media (width >= 1201px) {
  .stat-card {
    grid-column: span 2;
  }
}
.stat-card--danger {
  background: var(--swp-danger-lighter);
  border-color: var(--swp-danger-light);
}
@media (width >= 1201px) {
  .stat-card--urgent {
    grid-column: span 3;
  }
}
.stat-card--urgent .stat-value {
  font-size: clamp(var(--swp-text-xl), 9cqi, var(--swp-text-3xl));
}

.stat-card-content {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-4);
  min-width: 0;
}

.stat-icon {
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.stat-icon--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.stat-icon--success {
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.stat-icon--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}
.stat-icon--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.stat-icon--info {
  background: var(--swp-info-light);
  color: var(--swp-info-dark);
}

.stat-info {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
  min-width: 0;
}

.stat-label {
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
}

.stat-value {
  font-size: clamp(var(--swp-text-lg), 9cqi, var(--swp-text-2xl));
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1.2;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}
.stat-value--danger {
  color: var(--swp-danger-dark);
}
.stat-value .money--total .money-amount {
  font-size: 1em;
}

.stat-subvalue {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.stat-value,
.stat-subvalue,
.attention-item-amount,
.activity-amount {
  min-width: 0;
  overflow-wrap: anywhere;
}

.stat-value .money,
.stat-subvalue .money,
.attention-item-amount .money,
.activity-amount .money {
  max-width: 100%;
  min-width: 0;
}

.stat-value .money-amount,
.stat-subvalue .money-amount,
.attention-item-amount .money-amount,
.activity-amount .money-amount {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.dashboard-page .card {
  overflow: clip;
}
.dashboard-page .card .card-header {
  min-height: 4rem;
  padding: var(--swp-space-4) var(--swp-space-5);
}
.dashboard-page .card .card-body {
  padding: var(--swp-space-5);
}

.dashboard-revenue-chart {
  height: 280px !important;
}

.dashboard-donut-container {
  min-height: 280px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-donut-chart {
  height: 280px !important;
}

.dashboard-donut-center {
  position: absolute;
  top: 50%;
  left: 50%;
  max-width: calc(100% - var(--swp-space-8));
  transform: translate(-50%, calc(-50% - var(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  max-width: 100%;
  overflow-wrap: anywhere;
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  line-height: 1;
  letter-spacing: var(--swp-tracking-tight);
  font-variant-numeric: tabular-nums;
}

.dashboard-donut-label {
  display: block;
  font-size: var(--swp-text-xs);
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  margin-top: var(--swp-space-1);
}

.dashboard-chart-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-empty-icon {
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-3);
}

.dashboard-chart-empty-text {
  color: var(--swp-text-secondary);
  margin-bottom: var(--swp-space-2);
}

.dashboard-chart-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.dashboard-chart-error-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-danger-light);
  color: var(--swp-danger-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}
.dashboard-chart-error-icon svg {
  width: 32px;
  height: 32px;
}

.dashboard-chart-error-title {
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  margin: 0 0 var(--swp-space-1);
}

.dashboard-chart-error-text {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  margin: 0 0 var(--swp-space-4);
  max-width: 42ch;
}

.attention-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-8);
  text-align: center;
}

.attention-empty-icon {
  width: 64px;
  height: 64px;
  border-radius: var(--swp-radius-full);
  background: var(--swp-success-lighter);
  color: var(--swp-success-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: var(--swp-space-3);
}

.attention-empty-text {
  color: var(--swp-text-secondary);
  margin: 0;
}

.attention-sections {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-4);
}

.attention-section:not(:last-child) {
  padding-bottom: var(--swp-space-4);
  border-bottom: 1px solid var(--swp-border-light);
}

.attention-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  margin-bottom: var(--swp-space-3);
}
.attention-section-header--danger {
  color: var(--swp-danger-dark);
}
.attention-section-header--warning {
  color: var(--swp-warning-dark);
}
.attention-section-header--info {
  color: var(--swp-info-dark);
}
.attention-section-header--primary {
  color: var(--swp-primary-dark);
}

.attention-badge {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: var(--swp-text-xs);
  padding: 2px 6px;
  border-radius: var(--swp-radius-full);
  font-weight: var(--swp-font-semibold);
}
.attention-badge--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}
.attention-badge--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-dark);
}
.attention-badge--info {
  background: var(--swp-info-light);
  color: var(--swp-info-dark);
}
.attention-badge--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}

.attention-items {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--swp-space-3);
  padding: var(--swp-space-3);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  color: inherit;
  transition: background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.attention-item:hover {
  background: var(--swp-surface-hover);
}
.attention-item:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.attention-item--danger {
  background: var(--swp-danger-lighter);
}
.attention-item--danger:hover {
  background: var(--swp-danger-light);
}
.attention-item--danger:focus-visible {
  box-shadow: var(--swp-ring-danger);
}

.attention-item-main {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  min-width: 0;
  flex: 1;
}

.attention-item-id {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
}

.attention-item-client {
  color: var(--swp-text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.attention-item-meta {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--swp-space-3);
  min-width: 0;
  margin-left: auto;
}

.attention-item-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

.attention-item-date {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  font-variant-numeric: tabular-nums;
}

.quick-actions-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--swp-space-3);
}

.quick-action-btn {
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-4);
  border-radius: var(--swp-radius-md);
  text-decoration: none;
  transition: transform var(--swp-transition-fast), background-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast);
}
.quick-action-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--swp-shadow-md);
}
.quick-action-btn:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}
.quick-action-btn--primary {
  background: var(--swp-primary-lighter);
  color: var(--swp-primary-dark);
}
.quick-action-btn--primary:hover {
  background: var(--swp-primary-light);
}
.quick-action-btn--secondary {
  background: var(--swp-secondary-lighter);
  color: var(--swp-secondary-dark);
}
.quick-action-btn--secondary:hover {
  background: var(--swp-secondary-light);
}
.quick-action-btn--info {
  background: var(--swp-info-lighter);
  color: var(--swp-info-dark);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-dark);
}
.quick-action-btn--success:hover {
  background: var(--swp-success-light);
}
@media (prefers-reduced-motion: reduce) {
  .quick-action-btn, .quick-action-btn:hover {
    transition: none;
    transform: none;
  }
}

.quick-action-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.quick-action-label {
  min-width: 0;
  overflow-wrap: anywhere;
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
  text-align: center;
}

.activity-timeline {
  display: flex;
  flex-direction: column;
}

.activity-item {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.activity-item:last-child {
  border-bottom: none;
}

.activity-icon {
  width: 36px;
  height: 36px;
  border-radius: var(--swp-radius-full);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.activity-icon--payment {
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.activity-icon--quote_accepted {
  background: var(--swp-success-light);
  color: var(--swp-success-dark);
}
.activity-icon--quote_declined {
  background: var(--swp-danger-light);
  color: var(--swp-danger-dark);
}
.activity-icon--recurring_generated {
  background: var(--swp-info-light);
  color: var(--swp-info-dark);
}

.activity-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.activity-description {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  line-height: 1.4;
}

.activity-text {
  color: var(--swp-text-secondary);
  font-size: var(--swp-text-base);
}

.activity-doc-link {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-primary);
  text-decoration: none;
  font-family: var(--swp-font-mono);
  font-size: var(--swp-text-sm);
  border-radius: var(--swp-radius-sm);
}
.activity-doc-link:hover {
  text-decoration: underline;
  color: var(--swp-primary-dark);
}
.activity-doc-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.activity-details {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  flex-wrap: wrap;
  font-size: var(--swp-text-sm);
}

.activity-client-link {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--swp-text-secondary);
  text-decoration: none;
  overflow-wrap: anywhere;
  border-radius: var(--swp-radius-sm);
  transition: color var(--swp-transition-fast);
}
.activity-client-link:hover {
  color: var(--swp-primary);
}
.activity-client-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-primary);
}
.activity-client-link svg {
  opacity: 0.6;
}

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

.activity-amount {
  font-weight: var(--swp-font-semibold);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

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

/**
 * Client Page Styles
 *
 * Custom styles for the Client view page.
 * Follows the design system tokens and modern SaaS aesthetic.
 */
.partner-stat-card .card-body {
  padding: var(--swp-space-4);
}

.partner-stat-value {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-lg);
  font-weight: var(--swp-font-semibold);
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
}

.partner-stat-value--money {
  font-size: var(--swp-text-base);
}

.partner-stat-label {
  margin-top: var(--swp-space-1);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}

.partner-navigation-card {
  height: 100%;
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast), transform var(--swp-transition-fast);
}
.partner-navigation-card .card-body {
  display: flex;
  align-items: center;
  gap: var(--swp-space-3);
  padding: var(--swp-space-4);
}
.partner-navigation-card:hover, .partner-navigation-card:focus-visible {
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-sm);
  transform: translateY(-1px);
}
.partner-navigation-card:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.partner-navigation-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}

.partner-navigation-title,
.partner-navigation-description {
  display: block;
}

.partner-navigation-title {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}

.partner-navigation-description {
  margin-top: var(--swp-space-1);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-xs);
  line-height: 1.35;
}

.partner-list-card {
  overflow: hidden;
}
.partner-list-card > .card-header {
  padding: 0;
  border-bottom: 1px solid var(--swp-border);
}
.partner-list-card .card-header-tabs {
  width: 100%;
  margin: 0;
  padding: var(--swp-space-2) var(--swp-space-3) 0;
  border-radius: 0;
  background: var(--swp-gray-50);
}
.partner-list-card > .card-body {
  padding: 0;
}
.partner-list-card .datagrid > .card {
  border: 0;
  border-radius: 0;
  box-shadow: none;
}

.client-hero {
  padding: var(--swp-space-6);
  background: var(--swp-surface);
  border-radius: var(--swp-radius-lg);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-sm);
  margin-bottom: var(--swp-space-6);
}

.client-hero-layout {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--swp-space-5);
}

.client-hero-identity {
  min-width: 0;
}

.client-hero-back {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  margin-bottom: var(--swp-space-3);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-medium);
  text-decoration: none;
}
.client-hero-back:hover, .client-hero-back:focus-visible {
  color: var(--swp-primary);
}

.client-hero-heading {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}

.client-hero-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  flex-shrink: 0;
}

.client-hero-title {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  line-height: 1.2;
}

.client-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--swp-space-4);
  color: var(--swp-text-muted);
  font-size: 0.875rem;
}
.client-hero-meta a {
  color: var(--swp-text-muted);
  text-decoration: none;
  transition: color var(--swp-transition-fast);
}
.client-hero-meta a:hover {
  color: var(--swp-primary);
}

.client-hero-meta-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-1-5);
}

.client-stat-label {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-2);
}

.client-stat-value {
  font-size: 1.75rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.client-stat-value--success {
  color: var(--swp-success);
}

.client-stat-value--warning,
.client-stat-value--danger {
  color: var(--swp-warning);
}

.client-stat-badges {
  display: flex;
  flex-wrap: wrap;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-2);
}

.client-credit-card {
  margin-bottom: var(--swp-space-6);
}
.client-credit-card .card-body {
  padding: var(--swp-space-5);
}

.client-credit-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: var(--swp-radius-lg);
  background: var(--swp-info-lighter);
  color: var(--swp-info);
}

.client-credit-amount {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}

.client-credit-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.client-tabs-card .card-header {
  padding: 0;
  border-bottom: 1px solid var(--swp-border);
}
.client-tabs-card .card-header-tabs {
  width: 100%;
  margin: 0;
  padding: var(--swp-space-2) var(--swp-space-3) 0;
  border-radius: var(--swp-radius-lg) var(--swp-radius-lg) 0 0;
  background: var(--swp-gray-50);
}
.client-tabs-card .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  transition: color var(--swp-transition-fast), border-color var(--swp-transition-fast);
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}
.client-tabs-card .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.client-tabs-card .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
}
.client-tabs-card .nav-link .badge {
  font-size: 0.65rem;
  font-weight: 600;
  padding: 0.2em 0.5em;
}
.client-tabs-card .tab-content {
  padding-top: var(--swp-space-4);
}

.business-partner-role-card .card-body {
  padding: var(--swp-space-4) var(--swp-space-5);
}

.supplier-activity-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--swp-space-4);
  margin-bottom: var(--swp-space-4);
}

.supplier-activity-description {
  margin: var(--swp-space-1) 0 0;
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
}

.supplier-activity-card {
  height: 100%;
  color: var(--swp-text-primary);
  text-decoration: none;
  transition: border-color var(--swp-transition-fast), box-shadow var(--swp-transition-fast), transform var(--swp-transition-fast);
}
.supplier-activity-card .card-body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  height: 100%;
  padding: var(--swp-space-5);
}
.supplier-activity-card:hover, .supplier-activity-card:focus-visible {
  border-color: var(--swp-primary);
  color: var(--swp-text-primary);
  box-shadow: var(--swp-shadow-md);
  transform: translateY(-2px);
}
.supplier-activity-card:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

.supplier-activity-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  margin-bottom: var(--swp-space-4);
}

.supplier-activity-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
}

.supplier-activity-count {
  color: var(--swp-text-primary);
  font-size: var(--swp-text-2xl);
  font-weight: var(--swp-font-bold);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.supplier-activity-title {
  margin: 0 0 var(--swp-space-1);
  color: var(--swp-text-primary);
  font-size: var(--swp-text-base);
  font-weight: var(--swp-font-semibold);
}

.supplier-activity-card-description {
  flex: 1;
  margin: 0 0 var(--swp-space-4);
  color: var(--swp-text-muted);
  font-size: var(--swp-text-sm);
  line-height: 1.5;
}

.supplier-activity-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  color: var(--swp-primary);
  font-size: var(--swp-text-sm);
  font-weight: var(--swp-font-semibold);
}

.client-profile-card {
  margin-bottom: var(--swp-space-6);
}

.client-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--swp-space-4);
}

.client-section-title {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 1rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
}
.client-section-title .badge {
  font-size: 0.7rem;
  font-weight: 600;
}

.client-contact-card,
.client-address-card {
  height: 100%;
  transition: box-shadow var(--swp-transition-base);
}
.client-contact-card:hover,
.client-address-card:hover {
  box-shadow: var(--swp-shadow-md);
}
.client-contact-card .card-header,
.client-address-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.client-contact-card .card-body,
.client-address-card .card-body {
  padding: var(--swp-space-4);
}

.client-contact-avatar {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: var(--swp-radius-md);
  background: var(--swp-primary-lighter);
  color: var(--swp-primary);
  font-size: 0.875rem;
}

.client-contact-name {
  font-weight: 500;
  color: var(--swp-text-primary);
}

.client-contact-detail {
  display: flex;
  align-items: flex-start;
  gap: var(--swp-space-2);
  margin-bottom: var(--swp-space-2);
}
.client-contact-detail:last-child {
  margin-bottom: 0;
}

.client-contact-detail-icon {
  color: var(--swp-text-muted);
  flex-shrink: 0;
  margin-top: 2px;
}

.client-contact-detail-label {
  font-size: 0.75rem;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.client-contact-detail-value {
  color: var(--swp-text-primary);
}
.client-contact-detail-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.client-contact-detail-value a:hover {
  text-decoration: underline;
}

.btn-icon-sm {
  width: 28px;
  height: 28px;
  padding: var(--swp-space-1);
}

.btn-ghost-secondary {
  color: var(--swp-text-secondary);
  background: transparent;
  border: none;
}
.btn-ghost-secondary:hover {
  color: var(--swp-text-primary);
  background: var(--swp-gray-100);
}
.btn-ghost-secondary:focus {
  box-shadow: var(--swp-ring-primary);
}

.client-form-actions {
  display: flex;
  justify-content: flex-end;
  gap: var(--swp-space-2);
  margin-top: var(--swp-space-4);
  padding-top: var(--swp-space-4);
  border-top: 1px solid var(--swp-border-light);
}

.client-address-text {
  white-space: pre-line;
  color: var(--swp-text-primary);
  line-height: 1.5;
  margin-bottom: var(--swp-space-3);
}

.client-address-map-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.875rem;
}

.client-contact-extra {
  margin-top: var(--swp-space-3);
  padding-top: var(--swp-space-3);
  border-top: 1px solid var(--swp-border-light);
}

.client-contact-extra-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--swp-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-bottom: var(--swp-space-2);
}

.client-contact-extra-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: 0.875rem;
  margin-bottom: var(--swp-space-1);
}
.client-contact-extra-item:last-child {
  margin-bottom: 0;
}

.client-contact-extra-label {
  color: var(--swp-text-muted);
  min-width: 80px;
}

.client-contact-extra-value {
  color: var(--swp-text-primary);
}

.custom-fields-card .card-header {
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-card .card-body {
  padding: var(--swp-space-2) var(--swp-space-4);
}

.custom-fields-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-1);
}

.custom-fields-item {
  display: grid;
  grid-template-columns: minmax(140px, 30%) 1fr;
  gap: var(--swp-space-3);
  align-items: baseline;
  padding: var(--swp-space-2) 0;
  border-bottom: 1px solid var(--swp-border-light);
}
.custom-fields-item:last-child {
  border-bottom: none;
}

.custom-fields-label {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1-5);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--swp-text-muted);
  margin: 0;
  text-transform: none;
  letter-spacing: 0;
}

.custom-fields-value {
  font-size: 0.875rem;
  color: var(--swp-text-primary);
  word-break: break-all;
}
.custom-fields-value a {
  color: var(--swp-primary);
  text-decoration: none;
}
.custom-fields-value a:hover {
  text-decoration: underline;
}
.custom-fields-value .badge {
  margin-right: var(--swp-space-1);
  font-weight: 500;
}

@media (width <= 575.98px) {
  .custom-fields-item {
    grid-template-columns: 1fr;
    gap: var(--swp-space-1);
  }
}
@media (width <= 991.98px) {
  .client-hero {
    padding: var(--swp-space-4);
  }
  .client-hero-title {
    font-size: 1.5rem;
  }
  .client-stat-value {
    font-size: 1.5rem;
  }
}
@media (width <= 767.98px) {
  .client-hero-layout {
    align-items: stretch;
    flex-direction: column;
  }
  .client-hero-meta {
    gap: var(--swp-space-2) var(--swp-space-4);
  }
  .client-hero-actions {
    justify-content: flex-start;
    width: 100%;
  }
  .client-hero-actions > .btn {
    flex: 1 1 auto;
  }
  .client-tabs-card .nav-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .client-tabs-card .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .client-tabs-card .nav-item {
    flex-shrink: 0;
  }
  .client-section-header {
    flex-direction: column;
    align-items: flex-start;
    gap: var(--swp-space-2);
  }
  .supplier-activity-heading {
    align-items: flex-start;
    flex-direction: column;
  }
}
@media print {
  .client-hero .dropdown,
  .client-hero .btn,
  .client-section-header .btn,
  .btn-ghost-secondary,
  .btn-ghost-danger,
  .client-form-actions {
    display: none !important;
  }
  .client-hero {
    box-shadow: none;
    border: 1px solid #DDDDDD;
  }
}
/**
 * Invoice View Page
 *
 * All shared document view styles are in components/_document-view.scss.
 * Invoice-specific recurring invoice styles are also in that shared component.
 */
.recurring-schedule-grid {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
}

.schedule-item {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--swp-space-2);
}

.recurring-schedule-label {
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-muted);
  flex-shrink: 0;
}

.schedule-value {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.occurrences-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.occurrence-item {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm, 0.875rem);
  color: var(--swp-text-secondary);
}
.occurrence-item svg {
  opacity: 0.6;
  flex-shrink: 0;
}

.occurrence-date {
  color: var(--swp-text-primary);
}

.generated-invoices-list {
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}

.generated-invoice-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--swp-space-2);
  padding: var(--swp-space-2) var(--swp-space-3);
  background: var(--swp-gray-50);
  border-radius: var(--swp-radius-sm);
}

.generated-invoice-link {
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-primary);
  text-decoration: none;
}
.generated-invoice-link:hover {
  color: var(--swp-primary-dark);
  text-decoration: underline;
}

.generated-invoice-id {
  font-weight: var(--swp-font-semibold, 600);
}

.generated-invoice-meta {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
}

.generated-invoice-amount {
  font-size: var(--swp-text-sm, 0.875rem);
  font-weight: var(--swp-font-medium, 500);
  color: var(--swp-text-primary);
  font-variant-numeric: tabular-nums;
}

/**
 * External Invoice View
 *
 * Invoice-specific styles for the public-facing invoice page.
 * All shared external document styles are in components/_external-doc-view.scss.
 */
.btn-invoice-action {
  padding: 0.75rem 1.25rem;
  font-weight: 500;
  border-radius: 0.375rem;
  transition: all 0.2s ease;
}
.btn-invoice-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
.btn-invoice-action:active {
  transform: translateY(0);
}

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

@media print {
  .btn-invoice-action:hover {
    box-shadow: none !important;
    transform: none !important;
  }
}
/**
 * External Quote View
 *
 * All shared external document styles (including quote styles) are in
 * components/_external-doc-view.scss.
 *
 * There are currently no quote-specific styles beyond what is shared.
 */
/**
 * Quote View Page - Quote-Specific Styles
 *
 * Shared document layout is in components/_document-view.scss.
 * This file is intentionally minimal - all shared doc view styles are in the component.
 */
/**
 * Payment Marketplace Styles
 * Only payment-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.payment-marketplace {
  padding-bottom: var(--swp-space-8);
}

.payment-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.payment-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.payment-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.payment-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.payment-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.gateway-grid {
  display: grid;
  gap: var(--swp-space-3);
}

.gateway-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
  position: relative;
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
}
.gateway-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px var(--swp-primary);
  transform: translateY(-2px);
}
.gateway-card:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, var(--swp-primary) 100%);
  color: var(--swp-primary);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05) 0%, rgba(var(--swp-success-rgb), 0.02) 100%);
  border-color: rgba(var(--swp-success-rgb), 0.3);
}
.gateway-card.is-configured .gateway-icon {
  background: linear-gradient(135deg, var(--swp-success-light) 0%, var(--swp-success) 100%);
  color: #ffffff;
}
.gateway-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.08) 0%, rgba(var(--swp-success-rgb), 0.04) 100%);
  border-color: var(--swp-success);
}
.gateway-card.is-custom-gateway {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.04) 0%, rgba(var(--swp-primary-rgb), 0.01) 100%);
  border: 2px dashed rgba(var(--swp-primary-rgb), 0.3);
  position: relative;
  margin-bottom: var(--swp-space-6);
}
.gateway-card.is-custom-gateway::after {
  content: "";
  position: absolute;
  bottom: calc(-1 * var(--swp-space-6) / 2);
  left: var(--swp-space-4);
  right: var(--swp-space-4);
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, var(--swp-border) 15%, var(--swp-border) 85%, transparent 100%);
}
.gateway-card.is-custom-gateway::before {
  content: "";
  position: absolute;
  inset: -2px;
  background: linear-gradient(135deg, var(--swp-primary), var(--swp-primary-dark));
  border-radius: var(--swp-radius-lg);
  opacity: 0;
  z-index: -1;
  transition: opacity 0.2s ease;
}
.gateway-card.is-custom-gateway .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.2) 100%);
  color: var(--swp-primary);
  border: 2px solid rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card.is-custom-gateway:hover {
  background: linear-gradient(135deg, rgba(var(--swp-primary-rgb), 0.08) 0%, rgba(var(--swp-primary-rgb), 0.02) 100%);
  border-color: var(--swp-primary);
  border-style: solid;
}
.gateway-card.is-custom-gateway:hover::before {
  opacity: 0.08;
}
.gateway-card.is-custom-gateway:hover .gateway-icon {
  background: linear-gradient(135deg, var(--swp-primary) 0%, var(--swp-primary-dark) 100%);
  color: #ffffff;
  border-color: var(--swp-primary);
}
.gateway-card .gateway-card-body {
  padding: var(--swp-space-4);
}
.gateway-card .gateway-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.gateway-card h6 {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.gateway-card .text-muted {
  font-size: var(--swp-text-sm);
  line-height: 1.5;
  color: var(--swp-text-muted);
}
.gateway-card .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
}
.gateway-card .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(var(--swp-primary-rgb), 0.2);
}
.gateway-card .badge-sm {
  font-size: 0.625rem;
  padding: 0.2rem 0.5rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
}

.active-methods-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.active-methods-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.active-methods-list {
  display: grid;
  gap: var(--swp-space-3);
}

.active-method-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.active-method-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.active-method-card:hover .payment-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.active-method-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.active-method-card .card-body {
  padding: var(--swp-space-5);
}
.active-method-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.active-method-card .payment-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.active-method-card .payment-method-icon svg {
  width: 28px;
  height: 28px;
}
.active-method-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.active-method-card .badge.bg-success {
  background: linear-gradient(135deg, var(--swp-success) 0%, var(--swp-success-hover) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(var(--swp-success-rgb), 0.2);
}
.active-method-card .badge.bg-secondary {
  background: linear-gradient(135deg, var(--swp-gray-400) 0%, var(--swp-gray-500) 100%) !important;
  color: #ffffff;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.active-method-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.active-method-card .btn:hover {
  transform: translateY(-1px);
}
.active-method-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.active-method-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.payment-marketplace .card-header .d-flex {
  width: 100%;
}
.payment-marketplace .card-header .d-flex > div:first-child {
  flex: 1;
}
.payment-marketplace .card-header .d-flex .btn-icon {
  flex-shrink: 0;
}
.payment-marketplace form .form-switch-field + .form-switch-field {
  margin-top: var(--swp-space-4);
}
.payment-marketplace form .mb-3 + .mb-3 {
  margin-top: var(--swp-space-3);
}

.payment-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.payment-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.payment-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 920px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.payment-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.payment-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.payment-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.payment-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.payment-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.payment-modal-body > div > .card .card-header {
  display: none;
}
.payment-modal-body > div > .card .card-body {
  padding: 0;
}
.payment-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .payment-modal {
    padding: 0;
    align-items: flex-end;
  }
  .payment-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: marketplace-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes marketplace-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.payment-modal) {
  overflow: hidden;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .gateway-grid {
    grid-template-columns: 1fr;
  }
  .active-method-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .active-method-card .d-flex .btn-group,
  .active-method-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .active-method-card .d-flex .btn-group .btn,
  .active-method-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .payment-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .payment-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .payment-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
}
@media print {
  .payment-marketplace .nav-tabs,
  .payment-marketplace .marketplace-panel,
  .payment-marketplace .btn {
    display: none !important;
  }
  .payment-marketplace .active-method-card {
    break-inside: avoid;
  }
}
.gateway-group {
  margin-bottom: var(--swp-space-4);
}
.gateway-group .gateway-group-header h6 {
  letter-spacing: 0.04em;
}
.gateway-group .is-custom-gateway {
  margin-bottom: var(--swp-space-3);
}
.gateway-group .is-custom-gateway::after {
  display: none;
}

.gateway-group--more {
  border-top: 1px solid var(--swp-border-light);
  padding-top: var(--swp-space-3);
}
.gateway-group--more > summary {
  cursor: pointer;
  list-style: none;
}
.gateway-group--more > summary::-webkit-details-marker {
  display: none;
}
.gateway-group--more > summary:hover h6 {
  color: var(--swp-primary);
}

.payment-gateway-about .alert-title {
  margin-bottom: var(--swp-space-1);
}
.payment-gateway-about .payment-gateway-compare summary {
  cursor: pointer;
  list-style: none;
}
.payment-gateway-about .payment-gateway-compare summary::-webkit-details-marker {
  display: none;
}

/**
 * Notification Marketplace Styles
 * Notification-specific styles. Shared marketplace styles are in components/_marketplace.scss.
 */
.notification-marketplace {
  padding-bottom: var(--swp-space-8);
}

.notification-marketplace > .nav-tabs {
  border-bottom: 1px solid var(--swp-border);
}
.notification-marketplace > .nav-tabs .nav-link {
  padding: var(--swp-space-3) var(--swp-space-4);
  font-size: var(--swp-text-sm);
  font-weight: 500;
  color: var(--swp-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  background: transparent;
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  transition: var(--swp-transition-colors);
}
.notification-marketplace > .nav-tabs .nav-link:hover {
  color: var(--swp-primary);
  border-bottom-color: rgba(var(--swp-primary-rgb), 0.3);
}
.notification-marketplace > .nav-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}
.notification-marketplace > .nav-tabs .nav-link .badge-sm {
  font-size: 0.625rem;
  padding: 0.125rem 0.375rem;
  font-weight: 600;
}

.marketplace-tabs {
  border-bottom: 2px solid var(--swp-border);
  margin-bottom: 0;
}
.marketplace-tabs .nav-item {
  flex: 1;
}
.marketplace-tabs .nav-link {
  border: none;
  border-bottom: 3px solid transparent;
  color: var(--swp-text-secondary);
  font-weight: 600;
  padding: var(--swp-space-3) var(--swp-space-4);
  background: transparent;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
}
.marketplace-tabs .nav-link .nav-link-icon {
  display: flex;
  align-items: center;
}
.marketplace-tabs .nav-link:hover:not(.active) {
  color: var(--swp-primary-hover);
  background: rgba(var(--swp-primary-rgb), 0.05);
}
.marketplace-tabs .nav-link.active {
  color: var(--swp-primary);
  border-bottom-color: var(--swp-primary);
  background: transparent;
}

.integration-section-header {
  display: flex;
  align-items: center;
  gap: var(--swp-space-2);
  font-size: var(--swp-text-sm);
  font-weight: 600;
  color: var(--swp-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: var(--swp-space-3);
  padding-bottom: var(--swp-space-2);
  border-bottom: 1px solid var(--swp-border-light);
}

.integration-section {
  margin-bottom: var(--swp-space-6);
}
.integration-section:last-child {
  margin-bottom: 0;
}

.integration-cards-grid {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .integration-cards-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.integration-card {
  background: var(--swp-surface);
  border: 1.5px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.integration-card:hover {
  border-color: var(--swp-primary);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
}
.integration-card:hover .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-primary-light), rgba(var(--swp-primary-rgb), 0.2));
  color: var(--swp-primary);
  transform: scale(1.05);
}
.integration-card:hover .btn {
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.25);
}
.integration-card.is-configured {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.03), rgba(var(--swp-success-rgb), 0.01));
  border-color: rgba(var(--swp-success-rgb), 0.25);
}
.integration-card.is-configured .integration-card-icon {
  background: linear-gradient(135deg, var(--swp-success-light), var(--swp-success));
  color: #ffffff;
}
.integration-card.is-configured:hover {
  background: linear-gradient(135deg, rgba(var(--swp-success-rgb), 0.05), rgba(var(--swp-success-rgb), 0.02));
  border-color: var(--swp-success);
}
.integration-card .integration-card-body {
  padding: var(--swp-space-5);
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-3);
  height: 100%;
}
.integration-card .integration-card-icon {
  width: 64px;
  height: 64px;
  background: linear-gradient(135deg, var(--swp-gray-100), var(--swp-gray-200));
  border-radius: var(--swp-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  transition: all 0.25s ease;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}
.integration-card .integration-card-icon svg {
  width: 32px;
  height: 32px;
}
.integration-card .integration-card-content {
  flex: 1;
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-title {
  font-size: var(--swp-text-base);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-2);
}
.integration-card .integration-card-description {
  font-size: var(--swp-text-sm);
  color: var(--swp-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.integration-card .integration-card-action {
  margin-top: auto;
}
.integration-card .integration-card-action .btn {
  font-size: var(--swp-text-sm);
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--swp-space-1);
  font-weight: 500;
  transition: all 0.2s ease;
  width: 100%;
}

.configured-integrations-panel h5 {
  font-size: var(--swp-text-lg);
  font-weight: 600;
  color: var(--swp-text-primary);
  letter-spacing: -0.01em;
}
.configured-integrations-panel > .d-flex > .badge {
  font-size: 0.75rem;
  padding: 0.35rem 0.75rem;
  font-weight: 600;
  border-radius: var(--swp-radius-full);
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  color: var(--swp-text-primary);
  border: 1px solid var(--swp-border-light);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.configured-integrations-list {
  display: grid;
  gap: var(--swp-space-3);
}

.configured-integration-card {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.05);
  background: var(--swp-surface);
}
.configured-integration-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(var(--swp-primary-rgb), 0.1);
  transform: translateY(-2px);
  border-color: rgba(var(--swp-primary-rgb), 0.2);
}
.configured-integration-card:hover .integration-method-icon {
  background: linear-gradient(135deg, var(--swp-primary-light) 0%, rgba(var(--swp-primary-rgb), 0.15) 100%);
  box-shadow: 0 4px 8px rgba(var(--swp-primary-rgb), 0.15);
  color: var(--swp-primary);
}
.configured-integration-card:hover .btn-outline-secondary {
  border-color: var(--swp-primary);
  color: var(--swp-primary);
  background: rgba(var(--swp-primary-rgb), 0.04);
}
.configured-integration-card .card-body {
  padding: var(--swp-space-5);
}
.configured-integration-card h6 {
  font-size: 1.0625rem;
  font-weight: 600;
  color: var(--swp-text-primary);
  margin-bottom: 0;
  letter-spacing: -0.01em;
}
.configured-integration-card .integration-method-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  background: linear-gradient(135deg, var(--swp-gray-100) 0%, var(--swp-gray-200) 100%);
  border-radius: var(--swp-radius-lg);
  color: var(--swp-text-secondary);
  flex-shrink: 0;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
}
.configured-integration-card .integration-method-icon svg {
  width: 28px;
  height: 28px;
}
.configured-integration-card .badge {
  font-size: 0.6875rem;
  padding: 0.3rem 0.75rem;
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: var(--swp-space-1);
  border-radius: var(--swp-radius-full);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.configured-integration-card .btn {
  padding: var(--swp-space-2) var(--swp-space-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
  border-radius: var(--swp-radius-md);
  min-width: 40px;
  min-height: 40px;
}
.configured-integration-card .btn:hover {
  transform: translateY(-1px);
}
.configured-integration-card .btn.btn-outline-secondary {
  border-width: 1.5px;
  font-weight: 500;
}
.configured-integration-card .btn.btn-outline-secondary svg {
  width: 18px;
  height: 18px;
}

.notification-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  z-index: 1040;
  animation: marketplace-fade-in 0.2s ease;
  backdrop-filter: blur(2px);
}

.notification-modal {
  position: fixed;
  inset: 0;
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--swp-space-4);
  animation: marketplace-fade-in 0.2s ease;
  overflow-y: auto;
}

.notification-modal-container {
  background: var(--swp-surface);
  border-radius: var(--swp-radius-xl);
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  width: 100%;
  max-width: 800px;
  max-height: calc(100vh - var(--swp-space-8));
  display: flex;
  flex-direction: column;
  animation: marketplace-slide-up 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.notification-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--swp-space-6);
  border-bottom: 1px solid var(--swp-border);
  flex-shrink: 0;
}

.notification-modal-title {
  font-size: var(--swp-text-xl);
  font-weight: 600;
  color: var(--swp-text-primary);
  margin: 0;
}

.notification-modal-close {
  flex-shrink: 0;
  margin-left: var(--swp-space-4);
}

.notification-modal-body {
  flex: 1;
  overflow-y: auto;
  padding: var(--swp-space-6);
}
.notification-modal-body > div > .card {
  border: none;
  box-shadow: none;
  background: transparent;
}
.notification-modal-body > div > .card .card-header {
  display: none;
}
.notification-modal-body > div > .card .card-body {
  padding: 0;
}
.notification-modal-body > div > .card .card-footer {
  padding: var(--swp-space-6) 0 0 0;
  border-top: 1px solid var(--swp-border);
  margin-top: var(--swp-space-6);
  background: transparent;
}

@media (max-width: 767.98px) {
  .marketplace-panel {
    position: static;
    max-height: none;
    margin-bottom: var(--swp-space-4);
  }
  .configured-integration-card .d-flex {
    flex-direction: column;
    align-items: flex-start !important;
    gap: var(--swp-space-3);
  }
  .configured-integration-card .d-flex .btn-group,
  .configured-integration-card .d-flex .d-flex.gap-2 {
    width: 100%;
  }
  .configured-integration-card .d-flex .btn-group .btn,
  .configured-integration-card .d-flex .d-flex.gap-2 .btn {
    flex: 1;
  }
  .notification-marketplace > .nav-tabs {
    margin-left: calc(var(--swp-space-4) * -1);
    margin-right: calc(var(--swp-space-4) * -1);
    padding-left: var(--swp-space-4);
    padding-right: var(--swp-space-4);
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    flex-wrap: nowrap;
    scrollbar-width: none;
  }
  .notification-marketplace > .nav-tabs::-webkit-scrollbar {
    display: none;
  }
  .notification-marketplace > .nav-tabs .nav-item {
    flex-shrink: 0;
  }
  .notification-modal {
    padding: 0;
    align-items: flex-end;
  }
  .notification-modal-container {
    max-width: 100%;
    max-height: 90vh;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    animation: notification-slide-up-mobile 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  @keyframes notification-slide-up-mobile {
    from {
      transform: translateY(100%);
    }
    to {
      transform: translateY(0);
    }
  }
}
body:has(.notification-modal) {
  overflow: hidden;
}

@media print {
  .notification-marketplace .nav-tabs,
  .notification-marketplace .marketplace-panel,
  .notification-marketplace .btn {
    display: none !important;
  }
  .notification-marketplace .configured-integration-card {
    break-inside: avoid;
  }
}
/* .nav-link.active {
    background-color: #eef2ff;
    color: #4f46e5;
    border-radius: 8px;
    font-weight: 600;
} */

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUFZQTtFQVFJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQVVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBU0E7RUFDQTtFQUNBO0VBQ0E7RUFLQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBTUE7RUFDQTtBRnBESjs7QUUwREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGNURKOztBRW1FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGaEVKOztBRXVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGcEVKOztBRTJFQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7QUYvRUo7O0FFc0ZBO0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUdBOztrRUFBQTtFQUdBO0VBQ0E7RUFDQTtBRjFGSjs7QUVpR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FGOUZKOztBRXFHQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBTUE7RUFLQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBSUE7QUY1SUo7O0FHNVRBOzs7OztFQUFBO0FBV0E7RUFFSTs7O3FDQUFBO0VBTUE7d0VBQUE7RUFJQTtBSHFUSjs7QUc5U0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSGlUSjs7QUcxU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUg2U0o7O0FHdFNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIeVNKOztBR2xTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHFTSjs7QUc1UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIK1JKOztBRzFSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FINlJKOztBR3hSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIMlJKOztBR3RSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIeVJKOztBR3BSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIdVJKO0FHclJJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUh1UlI7O0FHalJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhvUko7O0FHL1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhrUko7O0FHN1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUhnUko7O0FHM1FBO0VBQ0k7RUFDQTtBSDhRSjs7QUd6UUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUg0UUo7O0FHdlFBO0VBQ0k7RUFDQTtBSDBRSjs7QUdyUUE7RUFDSTtBSHdRSjs7QUduUUE7RUFDSTtFQUNBO0VBQ0E7QUhzUUo7QUdwUUk7RUFDSTtFQUNBO0FIc1FSOztBR2hRQTtFQUNJO0VBQ0E7RUFDQTtBSG1RSjs7QUc5UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSGlRSjs7QUc5UEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSGlRSjs7QUloZkE7Ozs7Ozs7O0VBQUE7QUNBQTs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUFxQkE7RUFDSTtBTHVmSjs7QUtoZkE7RUFDSTtFQUNBO0FMbWZKO0FLamZJO0VBQVk7QUxvZmhCO0FLbGZJO0VBQVk7QUxxZmhCO0FLbmZJO0VBQVk7QUxzZmhCOztBSy9lQTtFQUNJO0VBQ0E7QUxrZko7O0FLL2VBO0VBQ0k7RUFDQTtFQUNBO0FMa2ZKOztBSy9lQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTGtmSjtBS2hmSTtFQUNJO0VBQ0E7QUxrZlI7O0FLOWVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTGlmSjs7QUs5ZUE7RUFDSTtFQUNBO0VBQ0E7QUxpZko7O0FLMWVBO0VBQ0k7RUFDQTtFQUNBO0FMNmVKOztBS3RlQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUx5ZUo7QUt0ZUk7RUFDSTtBTHdlUjtBS3JlSTtFQUNJO0VBQ0E7QUx1ZVI7O0FLL2RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMa2VKOztBSy9kQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTGtlSjtBS2hlSTtFQUNJO0VBQ0E7QUxrZVI7O0FLOWRBO0VBQ0k7RUFDQTtBTGllSjs7QUs5ZEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxpZUo7O0FLOWRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUxpZUo7O0FLMWRBO0VBQ0k7QUw2ZEo7O0FLdGRBO0VBQ0k7RUFDQTtFQUNBO0FMeWRKO0FLdmRJO0VBTEo7SUFNUTtJQUNBO0VMMGROO0FBQ0Y7O0FLdmRBO0VBQ0k7RUFDQTtBTDBkSjs7QUt2ZEE7RUFDSTtBTDBkSjs7QUtuZEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHNkSjs7QUtuZEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUxzZEo7QUtwZEk7RUFBWTtBTHVkaEI7O0FLaGRBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTG1kSjtBS2pkSTs7RUFDSTtFQUNBO0FMb2RSO0FLamRJOztFQUNJO0FMb2RSOztBSzVjQTtFQUVJO0lBQ0k7RUw4Y047RUszY0U7SUFDSTtJQUNBO0VMNmNOO0VLMWNFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUw0Y047RUt6Y0U7SUFDSTtJQUNBO0VMMmNOO0VLeGNFO0lBQ0k7RUwwY047RUt2Y0U7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFTHljTjtFS3RjRTtJQUNJO0lBQ0E7RUx3Y047RUtyY0U7SUFDSTtFTHVjTjtFS3BjRTtJQUNJO0VMc2NOO0VLcGNNO0lBQ0k7RUxzY1Y7QUFDRjtBSzliQTtFQUVJO0lBQ0k7RUwrYk47RUs1YkU7SUFDSTtFTDhiTjtFSzNiRTtJQUNJO0VMNmJOO0FBQ0Y7QU1wd0JBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0FOaXdCSjtBTS92Qkk7O0VBRUk7QU5pd0JSO0FNOXZCSTtFQUNJO0FOZ3dCUjs7QU0xdkJJO0VBQ0k7QU42dkJSO0FNMXZCSTtFQUNJO0FONHZCUjs7QU1wdkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOdXZCSjtBTXJ2Qkk7RUFYSjtJQVlRO0lBQ0E7RU53dkJOO0FBQ0Y7O0FNcnZCQTtFQUNJO0VBQ0E7RUFDQTtBTnd2Qko7O0FNcnZCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU53dkJKOztBTXJ2QkE7RUFDSTtFQUNBO0VBQ0E7QU53dkJKOztBTXJ2QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd3ZCSjtBTXR2Qkk7RUFFSTtBTnV2QlI7O0FNbnZCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5zdkJKOztBTW52QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnN2Qko7O0FNbnZCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5zdkJKO0FNcHZCSTtFQUNJO0FOc3ZCUjs7QU1odkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5tdkJKO0FNanZCSTtFQU5KO0lBT1E7SUFDQTtFTm92Qk47QUFDRjs7QU1qdkJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5vdkJKOztBTS91QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOa3ZCSjtBTWh2Qkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5rdkJSO0FNaHZCUTtFQUNJO0FOa3ZCWjtBTS91QlE7RUFDSTtBTml2Qlo7QU05dUJRO0VBQ0k7QU5ndkJaO0FNNXVCSTtFQUNJO0VBQ0E7QU44dUJSOztBTXR1QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOeXVCSjtBTXZ1Qkk7RUFDSTtFQUNBO0FOeXVCUjtBTXR1Qkk7RUFDSTtBTnd1QlI7O0FNcHVCQTtFQUNJO0VBQ0E7RUFDQTtBTnV1Qko7QU1ydUJJO0VBQ0k7RUFDQTtBTnV1QlI7O0FNL3RCQTtFQUNJO0VBQ0E7RUFDQTtBTmt1Qko7QU1odUJJO0VBTEo7SUFNUTtFTm11Qk47QUFDRjs7QU01dEJBO0VBQ0k7QU4rdEJKOztBTTV0QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTit0Qko7O0FNenRCQTs7OztFQUlJO0VBQ0E7RUFDQTtFQUNBO0FONHRCSjtBTXR0Qkk7Ozs7RUFDSTtFQUNBO0FOMnRCUjs7QU1ydEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd3RCSjtBTXR0Qkk7RUFSSjtJQVNRO0lBQ0E7RU55dEJOO0FBQ0Y7O0FNdHRCQTtFQUNJO0VBQ0E7RUFDQTtBTnl0Qko7O0FNdHRCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU55dEJKOztBTXR0QkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnl0Qko7O0FNdHRCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnl0Qko7QU12dEJJO0VBQ0k7RUFDQTtFQUNBO0FOeXRCUjtBTXR0Qkk7RUFDSTtFQUNBO0FOd3RCUjtBTXR0QlE7RUFDSTtFQUNBO0FOd3RCWjtBTXB0Qkk7RUFDSTtBTnN0QlI7QU1udEJJO0VBQ0k7QU5xdEJSO0FNbnRCUTtFQUNJO0VBQ0E7QU5xdEJaOztBTTlzQkE7RUFDSTtBTml0Qko7QU0vc0JJO0VBSEo7SUFJUTtFTmt0Qk47QUFDRjs7QU0vc0JBO0VBQ0k7RUFDQTtBTmt0Qko7QU05c0JRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOZ3RCWjtBTTlzQlk7RUFJSTtBTjZzQmhCO0FNeHNCUTtFQXRCSjtJQXVCUTtFTjJzQlY7QUFDRjtBTXRzQlE7RUFDSTtBTndzQlo7QU10c0JZO0VBQ0k7QU53c0JoQjtBTXBzQlk7RUFSSjtJQVNRO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTnVzQmQ7RU1yc0JjO0lBQ0k7RU51c0JsQjtFTXBzQmM7SUFDSTtFTnNzQmxCO0FBQ0Y7QU1sc0JRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTm9zQlo7QU1sc0JZO0VBQ0k7RUFDQTtBTm9zQmhCO0FNanNCWTtFQUlJO0VBQ0E7RUFDQTtBTmdzQmhCO0FNN3JCWTtFQUNJO0VBQ0E7QU4rckJoQjtBTTNyQlk7RUEzQko7SUE0QlE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VOOHJCZDtFTTVyQmM7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU44ckJsQjtFTTNyQmM7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU42ckJsQjtFTTNyQmtCO0lBQ0k7RU42ckJ0QjtFTXpyQmM7SUFDSTtJQUNBO0VOMnJCbEI7QUFDRjtBTXJyQkk7RUFFSTtJQUNJO0VOc3JCVjtFTW5yQk07SUFDSTtFTnFyQlY7RU1sckJNO0lBQ0k7RU5vckJWO0VNanJCTTtJQUNJO0VObXJCVjtFTWhyQk07SUFDSTtFTmtyQlY7QUFDRjs7QU01cUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU4rcUJKO0FNN3FCSTtFQU5KO0lBT1E7RU5nckJOO0FBQ0Y7O0FNN3FCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOZ3JCSjtBTTlxQkk7RUFUSjtJQVVRO0lBQ0E7RU5pckJOO0FBQ0Y7O0FNOXFCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5pckJKO0FNL3FCSTtFQUNJO0VBQ0E7QU5pckJSO0FNOXFCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5nckJSOztBTTFxQkE7RUFDSTtBTjZxQko7O0FNeHFCQTtFQUNJO0FOMnFCSjs7QU14cUJBO0VBQ0k7RUFDQTtFQUNBO0FOMnFCSjtBTXpxQkk7RUFDSTtFQUNBO0VBQ0E7QU4ycUJSO0FNcnFCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOdXFCUjs7QU1ucUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnNxQko7QU1wcUJJO0VBUEo7SUFRUTtFTnVxQk47QUFDRjs7QU1wcUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOdXFCSjtBTXJxQkk7RUFDSTtFQUNBO0FOdXFCUjtBTXJxQlE7RUFDSTtBTnVxQlo7O0FNbHFCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFxQko7O0FNbHFCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFxQko7O0FNaHFCQTtFQUNJO0VBQ0E7RUFDQTtBTm1xQko7O0FNOXBCSTtFQUNJO0VBQ0E7RUFDQTtBTmlxQlI7O0FNN3BCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOZ3FCSjs7QU03cEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTmdxQko7O0FNenBCQTtFQUNJO0VBQ0E7RUFDQTtBTjRwQko7QU0xcEJJO0VBTEo7SUFNUTtJQUNBO0VONnBCTjtBQUNGOztBTTFwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjZwQko7O0FNMXBCQTtFQUNJO0FONnBCSjs7QU0xcEJBO0VBQ0k7QU42cEJKOztBTTFwQkE7RUFDSTtBTjZwQko7O0FNMXBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU42cEJKOztBTTFwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONnBCSjs7QU0xcEJBO0VBQ0k7RUFDQTtBTjZwQko7O0FNMXBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FONnBCSjs7QU0xcEJBO0VBQ0k7QU42cEJKOztBTXhwQkE7RUFDSTtFQUNBO0VBQ0E7QU4ycEJKOztBTXRwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnlwQko7QU12cEJJO0VBQ0k7RUFDQTtBTnlwQlI7QU10cEJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU53cEJSO0FNbHBCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOb3BCUjtBTS9vQkk7RUFDSTtFQUNBO0FOaXBCUjs7QU03b0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5ncEJKO0FNOW9CSTtFQUNJO0FOZ3BCUjs7QU0xb0JJO0VBQ0k7QU42b0JSOztBTXZvQkE7RUFDSTtFQUNBO0VBQ0E7QU4wb0JKOztBTXZvQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjBvQko7QU14b0JJO0VBQ0k7RUFDQTtBTjBvQlI7O0FNdG9CQTtFQUNJO0VBQ0E7RUFDQTtBTnlvQko7O0FNdG9CQTtFQUNJO0VBQ0E7RUFDQTtBTnlvQko7O0FNdG9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOeW9CSjs7QU10b0JBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU55b0JKO0FNdm9CSTs7RUFDSTtBTjBvQlI7O0FNcG9CQTtFQUNJO0VBQ0E7RUFDQTtBTnVvQko7O0FNcG9CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU51b0JKOztBTXBvQkE7RUFDSTtFQUNBO0FOdW9CSjs7QU1wb0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU51b0JKOztBTXBvQkE7RUFDSTtFQUNBO0VBQ0E7QU51b0JKOztBTXBvQkE7RUFDSTtFQUNBO0VBQ0E7QU51b0JKOztBTXBvQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnVvQko7QU1yb0JJOztFQUNJO0FOd29CUjs7QU1wb0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU51b0JKOztBTWxvQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5xb0JKO0FNbm9CSTs7RUFDSTtFQUNBO0FOc29CUjs7QU1sb0JBO0VBQ0k7QU5xb0JKOztBTTluQkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFTmdvQk47RU03bkJFO0lBQ0k7RU4rbkJOO0VNNW5CRTtJQUNJO0VOOG5CTjtFTTNuQkU7SUFDSTtJQUNBO0VONm5CTjtFTTFuQkU7SUFDSTtJQUNBO0VONG5CTjtFTXZuQk07SUFDSTtJQUNBO0lBQ0E7RU55bkJWO0VNcm5CRTtJQUNJO0lBQ0E7SUFDQTtFTnVuQk47RU1wbkJFO0lBQ0k7SUFDQTtJQUNBO0VOc25CTjtFTW5uQkU7SUFDSTtFTnFuQk47QUFDRjtBT2psREE7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0FQOGtESjs7QU92a0RBO0VBQ0k7RUFDQTtBUDBrREo7QU90a0RRO0VBQ0k7RUFDQTtFQUNBO0FQd2tEWjtBT3BrREk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHNrRFI7QU9ua0RJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBxa0RSOztBTzdqREE7RUFDSTtFQUNBO0VBQ0E7QVBna0RKO0FPOWpESTtFQUNJO0FQZ2tEUjtBTzdqREk7RUFDSTtBUCtqRFI7O0FPcmpEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQd2pESjs7QU9uakRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHNqREo7O0FPbmpEQTtFQUNJO0VBQ0E7RUFDQTtBUHNqREo7O0FPampEQTtFQUNJO0VBQ0E7QVBvakRKOztBTzdpREk7RUFDSTtFQUNBO0VBQ0E7QVBnakRSOztBT3hpREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDJpREo7QU96aURJO0VBQ0k7QVAyaURSO0FPeGlESTtFQUNJO0FQMGlEUjs7QU90aURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB5aURKOztBT3RpREE7RUFDSTtFQUNBO0FQeWlESjs7QU90aURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB5aURKOztBT2xpREE7RUFDSTtBUHFpREo7O0FPbGlEQTtFQUNJO0VBQ0E7RUFDQTtBUHFpREo7O0FPbGlEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQcWlESjs7QU9saURBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBxaURKOztBTzloREE7RUFDSTtBUGlpREo7QU83aERRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQK2hEWjtBT3poRFE7RUFDSTtFQUNBO0FQMmhEWjtBT3poRFk7RUFDSTtBUDJoRGhCO0FPeGhEWTtFQUNJO0FQMGhEaEI7QU90aERRO0VBQ0k7RUFDQTtFQUNBO0FQd2hEWjtBT3BoREk7RUFDSTtFQUNBO0VBQ0E7QVBzaERSO0FPbmhESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQcWhEUjs7QU83Z0RBO0VBQ0k7RUFDQTtFQUNBO0FQZ2hESjtBTzlnREk7RUFDSTtBUGdoRFI7O0FPNWdEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQK2dESjtBTzdnREk7RUFDSTtBUCtnRFI7O0FPM2dEQTtFQUNJO0VBQ0E7RUFDQTtBUDhnREo7O0FPM2dEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA4Z0RKOztBTzNnREE7RUFDSTtFQUNBO0VBQ0E7QVA4Z0RKO0FPNWdESTtFQUNJO0VBQ0E7QVA4Z0RSO0FPM2dESTtFQUNJO0VBQ0E7QVA2Z0RSO0FPMWdESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQNGdEUjs7QU9sZ0RJO0VBQ0k7RUFDQTtFQUNBO0FQcWdEUjtBT2xnREk7RUFDSTtFQUNBO0FQb2dEUjtBT2pnREk7RUFDSTtFQUNBO0VBQ0E7QVBtZ0RSOztBT3ovQ0E7RUFDSTtFQUNBO0FQNC9DSjs7QU92L0NBO0VBQ0k7RUFDQTtBUDAvQ0o7O0FPci9DQTtFQUNJO0VBQ0E7QVB3L0NKOztBT3IvQ0E7RUFDSTtFQUNBO0FQdy9DSjtBT3QvQ0k7RUFDSTtBUHcvQ1I7O0FPaC9DQTtFQUVJOztJQUVJO0VQay9DTjtFTy8rQ0U7SUFDSTtFUGkvQ047QUFDRjtBTzkrQ0E7RUFFSTtJQUNJO0VQKytDTjtFTzUrQ0U7SUFDSTtFUDgrQ047RU8zK0NFO0lBQ0k7RVA2K0NOO0VPeCtDTTtJQUNJO0VQMCtDVjtBQUNGO0FPdCtDQTtFQUVJO0lBQ0k7SUFDQTtFUHUrQ047RU9wK0NFO0lBQ0k7RVBzK0NOO0VPbitDRTs7SUFFSTtFUHErQ047RU9oK0NFO0lBQ0k7RVBrK0NOO0VPaCtDTTtJQUNJO0lBQ0E7RVBrK0NWO0VPLzlDTTtJQUNJO0VQaStDVjtFTzk5Q007SUFDSTtFUGcrQ1Y7RU94OUNNO0lBQ0k7SUFDQTtFUDA5Q1Y7RU94OUNVO0lBQ0k7RVAwOUNkO0VPajlDTTs7SUFFSTtFUG05Q1Y7RU9qOUNVOztJQUNJO0VQbzlDZDtFTzM4Q007SUFDSTtJQUNBO0VQNjhDVjtFTzM4Q1U7SUFDSTtJQUNBO0lBQ0E7RVA2OENkO0VPMzhDYztJQUNJO0lBQ0E7RVA2OENsQjtFT3o4Q1U7O0lBRUk7SUFDQTtFUDI4Q2Q7RU9wOENFO0lBQ0k7RVBzOENOO0VPcDhDTTtJQUNJO0VQczhDVjtFT244Q007SUFDSTtFUHE4Q1Y7QUFDRjtBTzc3Q0E7RUFFSTs7SUFFSTtJQUNBO0VQODdDTjtFTzM3Q0U7SUFDSTtFUDY3Q047RU8xN0NFOztJQUVJO0lBQ0E7SUFDQTtFUDQ3Q047RU96N0NFOzs7SUFHSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUDI3Q047RU94N0NFO0lBQ0k7SUFDQTtJQUNBO0VQMDdDTjtFT3Y3Q0U7SUFDSTtJQUNBO0VQeTdDTjtFT3Q3Q0U7OztJQUdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVB3N0NOO0VPcjdDRTtJQUNJO0lBQ0E7SUFDQTtFUHU3Q047RU9wN0NFO0lBQ0k7RVBzN0NOO0VPbjdDRTtJQUNJO0VQcTdDTjtFT2w3Q0U7SUFDSTtJQUNBO0VQbzdDTjtFT2o3Q0U7SUFDSTtFUG03Q047RU9oN0NFOzs7SUFHSTtJQUNBO0lBQ0E7RVBrN0NOO0VPLzZDRTtJQUNJO0lBQ0E7SUFDQTtFUGk3Q047RU85NkNFOzs7SUFHSTtJQUNBO0lBQ0E7RVBnN0NOO0VPNzZDRTtJQUNJO0lBQ0E7SUFDQTtFUCs2Q047RU81NkNFO0lBQ0k7SUFDQTtJQUNBO0VQODZDTjtFTzM2Q0U7SUFDSTtFUDY2Q047RU8xNkNFO0lBQ0k7RVA0NkNOO0VPejZDRTtJQUNJO0lBQ0E7RVAyNkNOO0FBQ0Y7QVF6aEVBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJzaEVKO0FRcGhFSTtFQUNJO0FSc2hFUjtBUW5oRUk7RUFDSTtFQUNBO0FScWhFUjtBUWxoRUk7RUFDSTtFQUNBO0VBQ0E7QVJvaEVSO0FRbGhFUTtFQUNJO0FSb2hFWjs7QVE3Z0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVJnaEVSO0FRN2dFSTtFQUNJO0FSK2dFUjtBUTVnRUk7RUFDSTtFQUNBO0VBQ0E7QVI4Z0VSO0FRNWdFUTtFQUNJO0VBQ0E7RUFDQTtBUjhnRVo7QVEzZ0VRO0VBQ0k7RUFDQTtFQUNBO0FSNmdFWjtBUTNnRVk7RUFDSTtFQUNBO0FSNmdFaEI7QVExZ0VZO0VBQ0k7RUFDQTtBUjRnRWhCO0FRdGdFWTtFQUNJO0FSd2dFaEI7O0FROS9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUmlnRUo7O0FROS9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJpZ0VKOztBUTkvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJpZ0VKOztBUTkvREE7RUFDSTtFQUNBO0FSaWdFSjtBUS8vREk7RUFDSTtFQUNBO0VBQ0E7QVJpZ0VSO0FROS9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJnZ0VSOztBUTUvREE7RUFDSTtFQUNBO0VBQ0E7QVIrL0RKOztBUTUvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSKy9ESjs7QVF4L0RBO0VBRUk7SUFBTztFUjIvRFQ7RVF6L0RFO0lBQUs7RVI0L0RQO0FBQ0Y7QVExL0RBO0VBRUk7SUFDSTtJQUNBO0VSMi9ETjtFUXgvREU7SUFDSTtJQUNBO0VSMC9ETjtBQUNGO0FRdi9EQTtFQUVJO0lBQ0k7SUFDQTtFUncvRE47RVFyL0RFO0lBQ0k7SUFDQTtFUnUvRE47QUFDRjtBUWgvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUmsvREo7O0FRLytEQTtFQUNJO0VBQ0E7QVJrL0RKOztBU3ZzRUE7O0VBQUE7QUFJQTtFQUNJO0VBQ0E7QVR5c0VKO0FTdnNFSTtFQUNJO0VBQ0E7RUFDQTtBVHlzRVI7QVN0c0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR3c0VSO0FTcnNFSTtFQUNJO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVG9zRVI7QVNoc0VRO0VBRUk7QVRpc0VaO0FTOXJFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUZ3NFWjtBUzdyRVE7RUFDSTtBVCtyRVo7QVMzckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2ckVSO0FTMXJFSTtFQUNJO0VBQ0E7RUFDQTtBVDRyRVI7QVMxckVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDRyRVo7O0FTdnJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQwckVKO0FTeHJFSTtFQUNJO0VBQ0E7QVQwckVSOztBU3RyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5ckVKOztBU3RyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5ckVKOztBU3RyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHlyRUo7QVN2ckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHlyRVI7QVN0ckVJO0VBQ0k7RUFDQTtBVHdyRVI7O0FTcHJFQTtFQUdJO0FUcXJFSjs7QVNsckVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBVGlyRUo7QVMvcUVJO0VBQ0k7RUFDQTtBVGlyRVI7O0FTN3FFQTtFQUVJO0lBQ0k7SUFDQTtFVCtxRU47RVM1cUVFO0lBQ0k7SUFDQTtFVDhxRU47QUFDRjtBUzNxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDZxRUo7O0FTMXFFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2cUVKO0FTM3FFSTtFQUNJO0FUNnFFUjtBUzFxRUk7RUFDSTtBVDRxRVI7QVN6cUVJO0VBQ0k7RUFDQTtBVDJxRVI7O0FTcnFFSTtFQUNJO0FUd3FFUjtBU3JxRUk7RUFDSTtBVHVxRVI7QVNwcUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUc3FFUjs7QVNocUVJO0VBQ0k7QVRtcUVSO0FTaHFFSTtFQUNJO0VBQ0E7QVRrcUVSOztBUzlwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGlxRUo7O0FTOXBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRpcUVKO0FTL3BFSTtFQUNJO0FUaXFFUjs7QVM3cEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVRncUVKOztBUzdwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRncUVKOztBUzdwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRncUVKOztBUzdwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGdxRUo7O0FTN3BFQTtFQUNJO0VBQ0E7RUFDQTtBVGdxRUo7O0FTN3BFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUZ3FFSjs7QVM3cEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRncUVKO0FTOXBFSTtFQUNJO0VBQ0E7RUFDQTtBVGdxRVI7QVM3cEVJO0VBQ0k7RUFDQTtFQUNBO0FUK3BFUjs7QVMzcEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDhwRUo7O0FTM3BFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ4cEVKO0FTNXBFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ4cEVSO0FTNXBFUTtFQUNJO0FUOHBFWjs7QVN6cEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUNHBFSjtBUzFwRUk7RUFDSTtBVDRwRVI7O0FTeHBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQycEVKO0FTenBFSTtFQUNJO0FUMnBFUjtBU3hwRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQwcEVSO0FTdnBFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUeXBFUjtBU3ZwRVE7RUFFSTtBVHdwRVo7QVNycEVRO0VBQ0k7RUFDQTtFQUNBO0FUdXBFWjs7QVV6bEZBOzs7OztFQUFBO0FBV0E7RUFHSTtFQUNBO0FWcWxGSjtBVWpsRkk7RUFDSTtBVm1sRlI7O0FVL2tGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWa2xGSjs7QVUva0ZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZrbEZKOztBVTNrRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjhrRko7QVU1a0ZJO0VBVEo7SUFVUTtJQUNBO0VWK2tGTjtBQUNGOztBVTVrRkE7RUFDSTtBVitrRko7QVU3a0ZJO0VBQ0k7QVYra0ZSOztBVTNrRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWOGtGSjs7QVUza0ZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY4a0ZKOztBVTNrRkE7RUFDSTtFQUNBO0FWOGtGSjtBVTVrRkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWOGtGUjtBVTNrRkk7RUFDSTtBVjZrRlI7QVUxa0ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjRrRlI7QVV6a0ZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjJrRlI7QVV2a0ZRO0VBQ0k7QVZ5a0ZaO0FVdGtGUTtFQUNJO0FWd2tGWjtBVXJrRlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnVrRlo7O0FVaGtGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWbWtGUjs7QVUzakZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY4akZKOztBVTNqRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWOGpGSjtBVTVqRkk7RUFDSTtFQUNBO0FWOGpGUjtBVTVqRlE7RUFDSTtBVjhqRlo7QVUxakZJO0VBQ0k7RUFDQTtBVjRqRlI7QVUxakZRO0VBQ0k7RUFDQTtBVjRqRlo7QVV4akZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYwakZSO0FVdmpGSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5akZSOztBVWpqRkE7RUFDSTtBVm9qRko7O0FVampGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWb2pGSjtBVWhqRkk7O0VBRUk7QVZrakZSOztBVTlpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpakZKOztBVTlpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmlqRko7QVUvaUZJO0VBQ0k7RUFDQTtFQUNBO0FWaWpGUjs7QVU3aUZBO0VBQ0k7RUFDQTtFQUNBO0FWZ2pGSjs7QVU3aUZBO0VBQ0k7RUFDQTtFQUNBO0FWZ2pGSjs7QVU3aUZBO0VBQ0k7RUFDQTtFQUNBO0FWZ2pGSjtBVTVpRkk7O0VBRUk7RUFDQTtBVjhpRlI7QVV0aUZJO0VBQ0k7QVZ3aUZSOztBVXBpRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWdWlGSjs7QVU5aEZJO0VBQ0k7RUFDQTtFQUNBO0FWaWlGUjtBVTVoRlk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWOGhGaEI7QVUzaEZZO0VBQ0k7QVY2aEZoQjtBVXRoRkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVndoRlI7QVV0aEZRO0VBQ0k7QVZ3aEZaO0FVbmhGUTtFQUNJO0FWcWhGWjtBVWxoRlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZvaEZaO0FVbGhGWTtFQUNJO0VBQ0E7QVZvaEZoQjtBVWpoRlk7RUFDSTtBVm1oRmhCO0FVOWdGWTtFQUNJO0VBQ0E7QVZnaEZoQjtBVTlnRmdCO0VBQ0k7QVZnaEZwQjtBVTNnRlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjZnRlo7QVV2Z0ZJO0VBQ0k7QVZ5Z0ZSOztBVXJnRkE7RUFJSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcWdGSjs7QVU3L0VJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0FWZ2dGUjtBVTkvRVE7O0VBQ0k7RUFDQTtBVmlnRlo7QVUzL0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY2L0VSO0FVMy9FUTtFQUNJO0FWNi9FWjtBVTEvRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjQvRVo7QVV6L0VRO0VBQ0k7RUFDQTtFQUNBO0FWMi9FWjtBVXIvRUk7RUFDSTtBVnUvRVI7QVVsL0VJO0VBQ0k7RUFDQTtBVm8vRVI7QVVsL0VRO0VBQ0k7RUFDQTtBVm8vRVo7QVVsL0VZO0VBQ0k7RUFDQTtBVm8vRWhCOztBVTErRUE7RUFDSTtBVjYrRUo7O0FVMStFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjYrRUo7O0FVMStFQTtFQUNJO0VBQ0E7RUFDQTtBVjYrRUo7O0FVMStFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNitFSjtBVTMrRUk7RUFDSTtFQUNBO0VBQ0E7QVY2K0VSOztBVXorRUE7RUFDSTtFQUNBO0VBQ0E7QVY0K0VKOztBVXorRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjQrRUo7O0FVeitFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBVjIrRUo7QVV6K0VJO0VBRUk7RUFDQTtFQUNBO0FWMCtFUjs7QVV0K0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5K0VKO0FVditFSTtFQUVJO0VBQ0E7RUFDQTtBVncrRVI7O0FVcCtFQTtFQUNJO0VBQ0E7RUFDQTtBVnUrRUo7O0FVcCtFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWdStFSjs7QVVwK0VBO0VBQ0k7RUFDQTtBVnUrRUo7O0FVOTlFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmkrRVI7QVU3OUVRO0VBQ0k7RUFDQTtFQUNBO0FWKzlFWjtBVTU5RVE7RUFDSTtBVjg5RVo7QVUxOUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY0OUVSO0FVejlFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYyOUVSO0FVejlFUTtFQUNJO0FWMjlFWjtBVXg5RVE7RUFDSTtFQUNBO0VBQ0E7QVYwOUVaOztBVXI4RUE7RUFDSTtFQUNBO0FWdzhFSjs7QVVyOEVBO0VBQ0k7RUFDQTtFQUNBO0FWdzhFSjtBVXQ4RUk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QVZ3OEVSO0FVcjhFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ1OEVSO0FVcDhFSTtFQUVJO0FWcThFUjtBVWw4RUk7RUFDSTtBVm84RVI7QVVsOEVRO0VBQ0k7QVZvOEVaO0FVajhFUTtFQUNJO0FWbThFWjtBVWo4RVk7RUFDSTtBVm04RWhCO0FVNTdFSTtFQUNJO0VBQ0E7QVY4N0VSO0FVMzdFSTtFQUVJO0FWNDdFUjtBVXo3RUk7RUFDSTtFQUNBO0VBQ0E7QVYyN0VSO0FVeDdFSTtFQUNJO0FWMDdFUjtBVXA3RUk7O0VBRUk7RUFDQTtFQUNBO0FWczdFUjtBVW43RUk7O0VBRUk7QVZxN0VSO0FVaDdFSTs7RUFFSTtBVms3RVI7QVUvNkVJO0VBQ0k7QVZpN0VSO0FVOTZFSTtFQUNJO0VBQ0E7RUFDQTtBVmc3RVI7QVUzNkVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY2NkVSO0FVejZFUTtFQUNJO0VBQ0E7QVYyNkVaOztBVXA2RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ1NkVKO0FVcjZFSTtFQUNJO0FWdTZFUjtBVXA2RUk7RUFDSTtBVnM2RVI7QVVuNkVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnE2RVI7QVVuNkVRO0VBQ0k7QVZxNkVaO0FVajZFSTtFQUNJO0FWbTZFUjs7QVUzNUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY4NUVKOztBVTM1RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjg1RUo7QVUzNUVJO0VBQ0k7RUFDQTtBVjY1RVI7QVUxNUVJO0VBQ0k7RUFDQTtBVjQ1RVI7QVV6NUVJO0VBQ0k7RUFDQTtBVjI1RVI7QVV4NUVJO0VBQ0k7RUFDQTtBVjA1RVI7QVV2NUVJO0VBQ0k7RUFDQTtBVnk1RVI7O0FVbjVFQTtFQUNJO0VBQ0E7QVZzNUVKO0FVbDVFSTtFQUVJO0VBQ0E7RUFDQTtBVm01RVI7O0FVMzRFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWODRFUjtBVTM0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNjRFUjtBVTM0RVE7RUFDSTtFQUNBO0VBQ0E7QVY2NEVaO0FVMTRFUTtFQUNJO0FWNDRFWjtBVXo0RVE7RUFDSTtBVjI0RVo7QVV6NEVZO0VBQ0k7QVYyNEVoQjtBVXg0RVk7RUFDSTtBVjA0RWhCO0FVcjRFSTtFQUNJO0FWdTRFUjs7QVVqNEVBO0VBQ0k7QVZvNEVKOztBVWo0RUE7O0VBRUk7QVZvNEVKOztBVTczRUE7RUFDSTtFQUNBO0VBQ0E7QVZnNEVKO0FVOTNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnNEVSOztBVXgzRUE7RUFDSTtFQUNBO0FWMjNFSjs7QVV4M0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMjNFSjtBVXozRUk7RUFDSTtFQUNBO0FWMjNFUjs7QVV2M0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYwM0VKOztBVXYzRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwM0VKOztBVXYzRUE7RUFDSTtFQUNBO0VBQ0E7QVYwM0VKOztBVW4zRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzM0VKO0FVbDNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZvM0VSOztBVTkyRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmkzRUo7O0FVOTJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWaTNFSjtBVS8yRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWaTNFUjs7QVU3MkVBO0VBQ0k7RUFDQTtFQUNBO0FWZzNFSjs7QVU3MkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZzNFSjtBVTkyRUk7RUFDSTtFQUNBO0FWZzNFUjtBVTcyRUk7RUFDSTtBVisyRVI7QVU1MkVJO0VBQ0k7QVY4MkVSO0FVNTJFUTtFQUNJO0FWODJFWjs7QVV6MkVBO0VBQ0k7RUFDQTtFQUNBO0FWNDJFSjs7QVV6MkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNDJFSjtBVXoyRUk7RUFDSTtFQUNBO0FWMjJFUjtBVXgyRUk7RUFDSTtFQUNBO0FWMDJFUjs7QVVsMkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZxMkVKO0FVbjJFSTtFQVRKO0lBVVE7SUFDQTtFVnMyRU47QUFDRjs7QVVuMkVBO0VBQ0k7RUFDQTtBVnMyRUo7O0FVbjJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzMkVKO0FVcDJFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWczJFUjtBVXAyRVE7RUFDSTtFQUNBO0VBQ0E7QVZzMkVaOztBVS8xRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZrMkVSO0FVNzFFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWKzFFWjtBVTMxRVk7RUFDSTtFQUNBO0VBQ0E7QVY2MUVoQjtBVXoxRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjIxRVo7QVV4MUVRO0VBQ0k7RUFDQTtFQUNBO0FWMDFFWjs7QVVqMUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWbzFFSjtBVWwxRUk7RUFDSTtFQUNBO0FWbzFFUjtBVWoxRUk7RUFDSTtFQUNBO0FWbTFFUjtBVWgxRUk7RUFDSTtFQUNBO0FWazFFUjtBVS8wRUk7RUFDSTtFQUNBO0FWaTFFUjtBVTkwRUk7RUFDSTtFQUNBO0FWZzFFUjtBVTcwRUk7RUFDSTtFQUNBO0FWKzBFUjs7QVV2MEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYwMEVKOztBVW4wRUE7RUFDSTtBVnMwRUo7QVVwMEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnMwRVI7O0FVbDBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZxMEVKOztBVTl6RUE7RUFFSTtJQUNJO0lBQ0E7RVZnMEVOO0VVN3pFRTtJQUNJO0VWK3pFTjtFVTF6RU07O0lBRUk7RVY0ekVWO0VVeHpFRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VWMHpFTjtFVXZ6RUU7SUFDSTtFVnl6RU47QUFDRjtBVS95RUk7RUFDSTtFQUNBO0VBQ0E7QVZpekVSOztBVTd5RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZnekVKO0FVN3lFSTtFQUNJO0VBQ0E7QVYreUVSO0FVNXlFSTtFQUNJO0VBQ0E7QVY4eUVSOztBVXh5RUE7RUFDSTtFQUNBO0FWMnlFSjtBVXp5RUk7RUFDSTtBVjJ5RVI7QVV4eUVJO0VBQ0k7RUFDQTtBVjB5RVI7O0FVdHlFQTtFQUNJO0VBQ0E7QVZ5eUVKO0FVcnlFSTtFQUNJO0VBQ0E7QVZ1eUVSOztBVW55RUE7RUFFSTtJQUNJO0lBQ0E7RVZxeUVOO0VVbHlFRTtJQUNJO0lBQ0E7RVZveUVOO0FBQ0Y7QVUzeEVJO0VBQ0k7RUFDQTtFQUNBO0FWNnhFUjtBVTF4RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHhFUjtBVTF4RVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNHhFWjtBVXZ4RVk7RUFDSTtBVnl4RWhCO0FVdnhFZ0I7RUFDSTtBVnl4RXBCO0FVdHhFZ0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnd4RXBCO0FVcHhFWTtFQUNJO0FWc3hFaEI7QVVqeEVJO0VBQ0k7RUFDQTtFQUNBO0FWbXhFUjs7QVd4dkhBOzs7Ozs7RUFBQTtBQVVJO0VBQ0k7QVh3dkhSO0FXdHZIUTtFQUNJO0FYd3ZIWjtBV3J2SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYdXZIWjtBV3B2SFE7RUFDSTtFQUNBO0FYc3ZIWjs7QVdqdkhBO0VBQ0k7QVhvdkhKO0FXbHZISTtFQUNJO0VBQ0E7QVhvdkhSO0FXanZISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhtdkhSO0FXaHZISTtFQUNJO0FYa3ZIUjtBVy91SEk7RUFDSTtFQUNBO0VBQ0E7QVhpdkhSOztBVzd1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhndkhKO0FXOXVISTtFQUVJO0VBQ0E7QVgrdUhSO0FXNXVISTtFQUNJO0VBQ0E7RUFDQTtBWDh1SFI7O0FXMXVIQTtFQUVJO0lBQ0k7SUFDQTtJQUNBO0VYNHVITjtFVzF1SE07SUFDSTtFWDR1SFY7RVd6dUhNO0lBQ0k7RVgydUhWO0VXdnVIRTtJQUNJO0lBQ0E7RVh5dUhOO0VXdnVITTtJQUNJO0VYeXVIVjtBQUNGO0FZLzBIQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtBWjQwSEo7QVkxMEhJO0VBQ0k7QVo0MEhSOztBWXAwSEE7RUFDSTtBWnUwSEo7O0FZL3pIQTtFQUNJO0VBQ0E7RUFDQTtBWmswSEo7O0FZL3pIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaazBISjtBWS96SEk7RUFDSTtFQUNBO0FaaTBIUjs7QVk3ekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZzBISjs7QVk3ekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmcwSEo7O0FZN3pIQTtFQUNJO0FaZzBISjs7QVk3ekhBO0VBQ0k7RUFDQTtFQUNBO0FaZzBISjs7QVk3ekhBO0VBQ0k7RUFDQTtBWmcwSEo7O0FZN3pIQTtFQUNJO0FaZzBISjs7QVk3ekhBO0VBQ0k7RUFDQTtFQUNBO0FaZzBISjtBWTl6SEk7RUFMSjtJQU1RO0VaaTBITjtBQUNGOztBWTl6SEE7RUFDSTtBWmkwSEo7O0FZMXpIQTtFQUNJO0VBQ0E7RUFDQTtBWjZ6SEo7O0FZMXpIQTtFQUNJO0FaNnpISjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNnpISjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0FaNnpISjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo2ekhKO0FZM3pISTtFQU5KO0lBT1E7SUFDQTtFWjh6SE47RVk1ekhNO0lBQ0k7RVo4ekhWO0FBQ0Y7O0FZMXpIQTtFQUNJO0VBQ0E7RUFDQTtBWjZ6SEo7O0FZMXpIQTtFQUNJO0FaNnpISjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo2ekhKOztBWXR6SEE7RUFDSTtFQUNBO0VBQ0E7QVp5ekhKOztBWXR6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeXpISjtBWXR6SEk7RUFDSTtFQUNBO0Fad3pIUjs7QVlwekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadXpISjs7QVlwekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnV6SEo7O0FZcHpIQTtFQUNJO0FadXpISjs7QVlwekhBO0VBQ0k7RUFDQTtFQUNBO0FadXpISjs7QVlwekhBO0VBQ0k7RUFDQTtBWnV6SEo7O0FZcHpIQTtFQUNJO0FadXpISjs7QVlwekhBO0VBQ0k7RUFDQTtFQUNBO0FadXpISjtBWXJ6SEk7RUFMSjtJQU1RO0Vad3pITjtBQUNGOztBWWp6SEE7RUFDSTtFQUNBO0VBQ0E7QVpvekhKOztBWWp6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm96SEo7QVlsekhJO0VBQ0k7RUFDQTtBWm96SFI7QVlqekhJO0VBQ0k7RUFDQTtFQUNBO0FabXpIUjs7QVkzeUhBO0VBRUk7SUFDSTtJQUNBO0VaNnlITjtFWTF5SEU7SUFDSTtJQUNBO0VaNHlITjtBQUNGO0FZenlIQTs7RUFFSTtBWjJ5SEo7O0FZcHlIQTs7RUFFSTtFQUNBO0FadXlISjs7QVlweUhBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1eUhKO0FZcnlISTs7RUFDSTtBWnd5SFI7O0FZM3hIQTtFQUNJO0FaOHhISjtBWXp4SEk7RUFDSTtFQUNBO0FaMnhIUjs7QWF4bUlBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7QWJzbUlKOztBYW5tSUE7RUFDSTtFQUNBO0VBQ0E7QWJzbUlKOztBYW5tSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnNtSUo7QWFwbUlJO0VBQ0k7QWJzbUlSO0Fhbm1JSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxbUlSOztBYTdsSUE7RUFDSTtFQUNBO0FiZ21JSjs7QWE3bElBO0VBQ0k7RUFDQTtFQUNBO0FiZ21JSjs7QWE3bElBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmdtSUo7O0FhN2xJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJnbUlKOztBYTdsSUE7RUFDSTtFQUNBO0VBQ0E7QWJnbUlKOztBYXpsSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI0bElKO0FhMWxJSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjRsSVI7QWF6bElJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWIybElSO0FheGxJSTtFQUNJO0VBQ0E7RUFDQTtBYjBsSVI7O0FhbGxJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnFsSUo7QWFubElJO0VBQ0k7RUFDQTtBYnFsSVI7O0FhamxJQTtFQUNJO0VBQ0E7RUFDQTtBYm9sSUo7QWFsbElJO0VBTEo7SUFNUTtFYnFsSU47QUFDRjtBYS9rSVE7RUFDSTtFQUNBO0FiaWxJWjs7QWE1a0lBO0VBQ0k7RUFDQTtFQUNBO0FiK2tJSjs7QWE1a0lBO0VBQ0k7RUFDQTtFQUNBO0FiK2tJSjs7QWExa0lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2a0lKO0FhM2tJSTtFQUNJO0VBQ0E7RUFDQTtBYjZrSVI7QWExa0lJO0VBQ0k7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FiMGtJUjtBYXZrSUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FieWtJUjtBYXZrSVE7RUFDSTtFQUNBO0FieWtJWjs7QWFwa0lBO0VBQ0k7RUFDQTtFQUNBO0FidWtJSjtBYXJrSUk7RUFDSTtBYnVrSVI7QWFwa0lJO0VBQ0k7QWJza0lSOztBYWhrSUE7RUFDSTtFQUNBO0VBQ0E7QWJta0lKO0FhamtJSTtFQUxKO0lBTVE7RWJva0lOO0FBQ0Y7O0FhN2pJQTtFQUNJO0FiZ2tJSjs7QWE3aklBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmdrSUo7O0FhN2pJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiZ2tJSjs7QWE3aklBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiZ2tJSjs7QWE3aklBO0VBQ0k7RUFDQTtFQUNBO0FiZ2tJSjtBYTlqSUk7RUFDSTtBYmdrSVI7O0FhNWpJQTtFQUNJO0VBQ0E7RUFDQTtBYitqSUo7O0FhNWpJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK2pJSjs7QWE1aklBO0VBQ0k7RUFDQTtFQUNBO0FiK2pJSjs7QWE1aklBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIraklKO0FhN2pJSTtFQUNJO0FiK2pJUjtBYTVqSUk7RUFDSTtBYjhqSVI7QWEzaklJO0VBQ0k7QWI2aklSO0FhMWpJSTtFQUNJO0VBQ0E7QWI0aklSOztBYXBqSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnVqSUo7QWFyaklJO0VBTko7SUFPUTtFYndqSU47QUFDRjtBYXRqSUk7RUFWSjtJQVdRO0VieWpJTjtBQUNGOztBYWxqSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnFqSUo7O0FhbGpJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnFqSUo7O0FhbGpJQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxaklKOztBYWxqSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnFqSUo7O0FhbGpJQTtFQUNJO0FicWpJSjs7QWFoaklBO0VBQ0k7QWJtaklKOztBYWhqSUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibWpJSjtBYWpqSUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtaklSO0FhaGpJSTtFQUNJO0Fia2pJUjtBYS9pSUk7RUFDSTtBYmlqSVI7QWE5aUlJO0VBeEJKO0lBeUJRO0ViaWpJTjtBQUNGOztBYXhpSUk7RUFDSTtBYjJpSVI7QWF4aUlJO0VBQ0k7QWIwaUlSO0FheGlJUTtFQUhKO0lBT1E7RWJ3aUlWO0FBQ0Y7O0FhOWhJSTs7RUFFSTtBYmlpSVI7QWE3aElRO0VBREo7SUFLUTtFYjZoSVY7QUFDRjs7QWF6aElBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI0aElKO0FhMWhJSTtFQUNJO0FiNGhJUjtBYXpoSUk7RUFDSTtBYjJoSVI7QWF4aElJO0VBQ0k7QWIwaElSO0FhdmhJSTtFQUNJO0VBQ0E7QWJ5aElSO0FhdmhJUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FieWhJWjtBYWpoSUk7RUFDSTtBYm1oSVI7QWFqaElRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm1oSVo7QWFqaElZO0VBQ0k7QWJtaEloQjtBYWhoSVk7RUFDSTtFQUNBO0Fia2hJaEI7QWEvZ0lZO0VBQ0k7QWJpaEloQjtBYTdnSVE7RUFDSTtBYitnSVo7QWE3Z0lZO0VBQ0k7QWIrZ0loQjtBYXRnSVE7Ozs7OztFQUVJO0FiNGdJWjtBYXBnSVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJzZ0laO0FhbmdJUTtFQUNJO0FicWdJWjtBYS8vSFE7RUFDSTtBYmlnSVo7QWE3L0hJO0VBQ0k7RUFDQTtBYisvSFI7QWE3L0hRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYisvSFo7QWEzL0hJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2L0hSO0FhMS9ISTtFQUNJO0VBQ0E7RUFDQTtFQUdBO0FiMC9IUjtBYXAvSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSx1SEFDSTtBYnEvSFo7QWFqL0hRO0VBQ0k7RUFDQTtBYm0vSFo7QWFoL0hRO0VBQ0k7QWJrL0haO0FhLytIUTtFQUNJO0VBQ0E7RUFDQTtBYmkvSFo7QWE3K0hJO0VBQ0k7QWIrK0hSO0FhNStISTtFQUNJO0FiOCtIUjtBYTErSEk7RUFwTEo7SUFxTFE7SUFDQTtJQUNBO0lBQ0Esc0VBQ0k7SUFJSjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWJ5K0hOO0VhditITTtJQUNJO0VieStIVjtFYXQrSE07SUFDSTtFYncrSFY7RWFyK0hNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWJ1K0hWO0VhcCtITTtJQUNJO0VicytIVjtFYXArSFU7SUFDSTtJQUNBO0VicytIZDtFYWwrSE07SUFDSTtFYm8rSFY7RWFsK0hVO0lBQ0k7RWJvK0hkO0VhaCtITTtJQUNJO0ViaytIVjtFYWgrSFU7SUFDSTtFYmsrSGQ7RWE5OUhNO0lBQ0k7RWJnK0hWO0VhOTlIVTtJQUNJO0ViZytIZDtFYTU5SE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWI4OUhWO0VheDlITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0ViMDlIVjtFYXY5SE07SUFDSTtFYnk5SFY7RWF0OUhNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWJ3OUhWO0VhdDlIVTtJQUNJO0lBQ0E7RWJ3OUhkO0VhcjlIVTtJQUNJO0lBQ0E7SUFDQTtFYnU5SGQ7QUFDRjs7QWFoOUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm05SEo7QWFqOUhJO0VBQ0k7RUFDQTtBYm05SFI7QWFoOUhJO0VBQ0k7RUFDQTtFQUNBO0FiazlIUjtBYS84SEk7RUFDSTtFQUNBO0FiaTlIUjs7QWEzOEhBO0VBQ0k7RUFDQTtBYjg4SEo7O0FhMzhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjg4SEo7QWE1OEhJO0VBQ0k7RUFDQTtFQUNBO0FiODhIUjs7QWE5N0hJOzs7OztFQUNJO0VBQ0E7RUFDQTtBYnE4SFI7QWFsOEhJOzs7OztFQUNJO0VBQ0E7RUFDQTtBYnc4SFI7QWFyOEhJOzs7OztFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiMjhIUjtBYXY4SFE7Ozs7O0VBQ0k7QWI2OEhaO0FhMThIUTs7Ozs7RUFDSTtBYmc5SFo7QWE3OEhROzs7OztFQUNJO0VBQ0E7QWJtOUhaO0FhaDlIUTs7Ozs7RUFDSTtFQUNBO0FiczlIWjtBYW45SFE7Ozs7Ozs7Ozs7Ozs7OztFQUdJO0FiaStIWjtBYTk5SFE7Ozs7Ozs7Ozs7RUFFSTtFQUNBO0VBQ0E7QWJ3K0haO0FhcCtISTs7Ozs7RUFDSTtFQUNBO0VBQ0E7QWIwK0hSO0FheCtIUTs7Ozs7RUFDSTtFQUNBO0FiOCtIWjtBYTErSEk7Ozs7O0VBQ0k7QWJnL0hSO0FheitISTs7Ozs7RUFDSTtBYisrSFI7O0FhbitISTs7OztFQUVJO0FidytIUjtBYW4rSFE7Ozs7RUFFSTtBYnUrSFo7QWFuK0hZO0VBREo7O0lBRVE7RWJ1K0hkO0FBQ0Y7QWFqK0hROzs7O0VBRUk7QWJxK0haO0FhaitIWTtFQURKOztJQUVRO0VicStIZDtBQUNGO0FhaCtIUTtFQURKOztJQUVRO0VibytIVjtBQUNGOztBYXI5SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnc5SEo7O0FhcjlIQTtFQUNJO0VBQ0E7RUFDQTtBYnc5SEo7O0FhcjlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidzlISjs7QWFyOUhBO0VBQ0k7RUFDQTtBYnc5SEo7QWF0OUhJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidzlIUjs7QWFwOUhBO0VBQ0k7RUFDQTtFQUNBO0FidTlISjs7QWFwOUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnU5SEo7QWFyOUhJO0VBQ0k7RUFDQTtBYnU5SFI7QWFwOUhJO0VBQ0k7RUFDQTtBYnM5SFI7O0FhbDlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJxOUhKO0FhbjlISTtFQUNJO0VBQ0E7RUFDQTtBYnE5SFI7O0FhNzhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiZzlISjs7QWE3OEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmc5SEo7O0FhNzhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiZzlISjs7QWE3OEhBO0VBQ0k7RUFDQTtFQUNBO0FiZzlISjs7QWE3OEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWJnOUhKOztBYTc4SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiZzlISjtBYTk4SEk7RUFWSjtJQVdRO0ViaTlITjtBQUNGOztBYTk4SEE7RUFDSTtFQUNBO0VBQ0E7QWJpOUhKO0FhLzhISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpOUhSO0FhLzhIUTtFQVBKO0lBUVE7RWJrOUhWO0FBQ0Y7O0FhOThIQTtFQUNJO0VBQ0E7RUFDQTtBYmk5SEo7O0FhMThIQTtFQUNJO0VBQ0E7QWI2OEhKO0FhMzhISTtFQUpKO0lBS1E7RWI4OEhOO0FBQ0Y7O0FhMzhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiODhISjs7QWEzOEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiODhISjs7QWEzOEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjg4SEo7O0FhMzhIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiODhISjs7QWEzOEhBO0VBQ0k7QWI4OEhKOztBYTM4SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjg4SEo7QWE1OEhJO0VBQ0k7QWI4OEhSOztBYTE4SEE7RUFDSTtFQUNBO0FiNjhISjs7QWExOEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2OEhKOztBYXY4SEk7RUFDSTtBYjA4SFI7O0FhdDhIQTtFQUNJO0VBQ0E7RUFDQTtBYnk4SEo7QWF2OEhJO0VBQ0k7RUFDQTtFQUNBO0FieThIUjtBYW44SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FicThIUjs7QWEvN0hBO0VBQ0k7RUFDQTtFQUNBO0FiazhISjtBYWg4SEk7RUFDSTtFQUNBO0VBQ0E7QWJrOEhSOztBYTE3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNjdISjtBYTM3SEk7RUFDSTtFQUNBO0FiNjdIUjtBYTM3SFE7RUFDSTtBYjY3SFo7QWExN0hRO0VBQ0k7QWI0N0haOztBYXY3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjA3SEo7QWF4N0hJO0VBQ0k7QWIwN0hSO0FhdjdISTtFQUNJO0FieTdIUjs7QWFyN0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ3N0hKOztBYXI3SEE7RUFDSTtBYnc3SEo7O0FhcjdIQTtFQUNJO0VBQ0E7RUFDQTtBYnc3SEo7O0FhcDdIQTtFQUNJO0FidTdISjs7QWFwN0hBO0VBQ0k7RUFDQTtFQUNBO0FidTdISjtBYXI3SEk7RUFMSjtJQU1RO0VidzdITjtBQUNGOztBYWo3SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm83SEo7O0FhajdIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm83SEo7O0FhLzZIQTtFQUNJO0VBQ0E7QWJrN0hKO0FhaDdISTtFQUNJO0VBQ0E7RUFDQTtBYms3SFI7QWFoN0hRO0VBQ0k7RUFDQTtBYms3SFo7QWE5NkhJO0VBQ0k7RUFDQTtBYmc3SFI7QWE5NkhRO0VBQ0k7QWJnN0haO0FhNTZISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI4NkhSO0FhMzZISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2NkhSO0FhMzZIUTtFQUNJO0VBQ0E7QWI2NkhaO0FhMTZIUTtFQUNJO0VBQ0E7QWI0NkhaO0FhMTZIWTtFQUNJO0FiNDZIaEI7QWF2NkhJO0VBQ0k7QWJ5NkhSOztBYWo2SEE7RUFFSTtJQUNJO0VibTZITjtFYWg2SEU7SUFDSTtJQUNBO0lBQ0E7RWJrNkhOO0FBQ0Y7QWEvNUhBO0VBRUk7SUFDSTtFYmc2SE47QUFDRjtBYTc1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiKzVISjtBYTc1SEk7RUFDSTtFQUNBO0FiKzVIUjs7QWEzNUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI4NUhKOztBYTM1SEE7RUFDSTtFQUNBO0VBQ0E7QWI4NUhKOztBYTM1SEE7RUFDSTtFQUNBO0VBQ0E7QWI4NUhKOztBYTM1SEE7RUFDSTtFQUNBO0VBQ0E7QWI4NUhKOztBYTM1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI4NUhKO0FhNTVISTtFQUNJO0VBQ0E7QWI4NUhSO0FhMzVISTtFQUNJO0VBQ0E7RUFDQTtBYjY1SFI7O0FhcjVIQTtFQUVJO0lBQ0k7SUFDQTtFYnU1SE47RWFwNUhFO0lBQ0k7SUFDQTtFYnM1SE47QUFDRjtBYS80SEE7RUFFSTtJQUNJO0lBQ0E7RWJnNUhOO0VhNzRIRTtJQUNJO0lBQ0E7RWIrNEhOO0VhNTRIRTtJQUNJO0lBQ0E7RWI4NEhOO0VhMzRIRTtJQUNJO0ViNjRITjtFYTE0SEU7Ozs7SUFJSTtFYjQ0SE47RWF6NEhFO0lBQ0k7RWIyNEhOO0VhejRITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0ViMjRIVjtFYXY0SEU7SUFDSTtFYnk0SE47RWF2NEhNO0lBQ0k7RWJ5NEhWO0VhcjRIRTtJQUNJO0VidTRITjtFYXI0SE07O0lBRUk7RWJ1NEhWO0FBQ0Y7QWE1M0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjgzSEo7QWE1M0hJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiODNIUjtBYTUzSFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI4M0haO0FhMzNIUTtFQUNJO0FiNjNIWjtBYTMzSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjYzSGhCO0FhMTNIWTtFQUNJO0VBQ0E7RUFDQTtBYjQzSGhCO0FhdjNISTtFQUNJO0VBQ0E7RUFDQTtBYnkzSFI7O0FhaDNISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FibTNIUjtBYWozSFE7RUFOSjtJQU9RO0VibzNIVjtBQUNGO0FhbDNIUTtFQUNJO0FibzNIWjtBYWozSFE7RUFDSTtFQUNBO0VBQ0E7QWJtM0haO0FhajNIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FibTNIaEI7QWFoM0hZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmszSGhCO0FhLzJIWTtFQUNJO0VBQ0E7QWJpM0hoQjtBYTkySFk7RUFDSTtFQUNBO0VBQ0E7QWJnM0hoQjtBYTMySEk7RUFDSTtFQUNBO0FiNjJIUjtBYXgySEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjAySFI7QWF4MkhRO0VBTko7SUFPUTtFYjIySFY7QUFDRjtBYXoySFE7RUFDSTtFQUNBO0VBQ0E7QWIyMkhaO0FhejJIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiMjJIaEI7QWF4MkhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjAySGhCO0FhdDJIZ0I7RUFFSTtBYnUySHBCO0FhbjJIWTtFQUNJO0VBQ0E7QWJxMkhoQjtBYWwySFk7RUFDSTtFQUNBO0VBQ0E7QWJvMkhoQjs7QWE5MUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpMkhKO0FhLzFISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmkySFI7QWE5MUhJO0VBQ0k7RUFDQTtFQUNBO0FiZzJIUjtBYTkxSFE7RUFDSTtFQUNBO0FiZzJIWjs7QWF6MUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjQxSEo7QWExMUhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiNDFIUjtBYTExSFE7RUFDSTtBYjQxSFo7QWF6MUhRO0VBQ0k7QWIyMUhaO0FheDFIUTtFQUNJO0FiMDFIWjtBYXQxSEk7RUFDSTtFQUNBO0VBQ0E7QWJ3MUhSO0FhdDFIUTtFQUNJO0VBQ0E7RUFDQTtBYncxSFo7QWFyMUhRO0VBQ0k7RUFDQTtFQUNBO0FidTFIWjtBYXIxSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ1MUhoQjtBYXIxSGdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FidTFIcEI7QWFwMUhnQjtFQUNJO0FiczFIcEI7QWFqMUhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm0xSFo7QWFqMUhZO0VBQ0k7RUFDQTtBYm0xSGhCO0FhaDFIWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJrMUhoQjtBYTcwSEk7RUFDSTtBYiswSFI7O0FhcjBIQTtFQUNJO0VBQ0E7QWJ3MEhKOztBYW4wSEE7RUFDSTtFQUNBO0VBQ0E7QWJzMEhKOztBYW4wSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnMwSEo7QWFwMEhJO0VBQ0k7QWJzMEhSOztBYWwwSEE7RUFDSTtFQUNBO0VBQ0E7QWJxMEhKOztBYWwwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnEwSEo7O0FhaDBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYm0wSEo7O0FhaDBIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtMEhKO0FhajBISTtFQUNJO0VBQ0E7RUFDQTtBYm0wSFI7O0FhL3pIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmswSEo7O0FhL3pIQTtFQUNJO0VBQ0E7RUFDQTtBYmswSEo7O0FhN3pIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmcwSEo7O0FhN3pIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmcwSEo7QWE5ekhJO0VBQ0k7RUFDQTtBYmcwSFI7O0FhNXpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIrekhKO0FhN3pISTtFQUNJO0FiK3pIUjtBYTd6SFE7RUFDSTtBYit6SFo7O0FhMXpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjZ6SEo7O0FhMXpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiNnpISjs7QWExekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWI2ekhKOztBYTF6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjZ6SEo7O0FhMXpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWI2ekhKO0FhM3pISTtFQUNJO0VBQ0E7RUFDQTtBYjZ6SFI7O0FhL3lISTs7RUFFSTtBYmt6SFI7QWEzeUhRO0VBQ0k7QWI2eUhaO0FhMXlIUTtFQUNJO0FiNHlIWjtBYXp5SFE7RUFaSjtJQWFRO0ViNHlIVjtBQUNGO0FheHlIUTtFQURKO0lBRVE7SUFDQSw4Q0FDSTtFYjB5SGQ7QUFDRjtBYXR5SFk7RUFESjtJQUVRO0VieXlIZDtBQUNGO0FhcnlIWTtFQURKO0lBRVE7RWJ3eUhkO0FBQ0Y7QWF0eUhZO0VBQ0k7RUFDQTtBYnd5SGhCO0FhbnlIWTtFQURKO0lBRVE7RWJzeUhkO0FBQ0Y7QWE5eEhRO0VBQ0k7QWJneUhaO0FhN3hIUTtFQUNJO0FiK3hIWjtBYXp4SFE7RUFDSTtFQUNBO0VBQ0E7QWIyeEhaO0FhenhIWTtFQUNJO0VBQ0E7QWIyeEhoQjs7QWFqeEhBO0VBQ0k7RUFDQTtBYm94SEo7O0FheHdISTs7RUFFSTtBYjJ3SFI7QWF0d0hROztFQUVJO0Fid3dIWjtBYWp3SEk7RUFDSTtBYm13SFI7QWFod0hJO0VBQ0k7QWJrd0hSO0FhL3ZISTtFQUNJO0FiaXdIUjtBYTN2SEk7RUFLUTtJQUNJO0lBQ0Esb0ZBQ0k7RWJ3dkhsQjtFYWp2SFU7SUFDSTtFYm12SGQ7RWFodkhVO0lBQ0k7RWJrdkhkO0VhL3VIVTtJQUNJO0ViaXZIZDtFYTl1SFU7SUFDSTtFYmd2SGQ7RWE3dUhVO0lBQ0k7RWIrdUhkO0VhNXVIVTtJQUNJO0ViOHVIZDtBQUNGOztBYXJ1SEE7RUFDSTtBYnd1SEo7O0FjNTlMQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0FkMDlMSjs7QWN2OUxBO0VBQ0k7RUFDQTtFQUNBO0FkMDlMSjtBY3g5TEk7RUFDSTtBZDA5TFI7O0FjbDlMQTtFQUNJO0VBQ0E7QWRxOUxKOztBY2w5TEE7RUFDSTtFQUNBO0VBQ0E7QWRxOUxKOztBY2w5TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkcTlMSjs7QWNsOUxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHE5TEo7O0FjbDlMQTtFQUNJO0VBQ0E7RUFDQTtBZHE5TEo7O0FjOThMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkaTlMSjtBYy84TEk7RUFOSjtJQU9RO0VkazlMTjtBQUNGOztBYy84TEE7RUFDSTtBZGs5TEo7QWNoOUxJO0VBSEo7SUFJUTtFZG05TE47QUFDRjs7QWM1OExBO0VBQ0k7RUFDQTtBZCs4TEo7QWM3OExJO0VBSko7SUFLUTtJQUNBO0VkZzlMTjtBQUNGOztBYzc4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZGc5TEo7O0FjNzhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZGc5TEo7O0FjNzhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRnOUxKOztBYzc4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZGc5TEo7O0FjNzhMQTtFQUNJO0FkZzlMSjs7QWMzOExBO0VBQ0k7RUFDQTtBZDg4TEo7QWM1OExJO0VBQ0k7QWQ4OExSO0FjMzhMSTtFQUNJO0VBQ0E7QWQ2OExSOztBY3o4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQ0OExKOztBY3o4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZDQ4TEo7QWMxOExJO0VBQ0k7RUFDQTtFQUNBO0FkNDhMUjs7QWN4OExBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkMjhMSjs7QWN0OExBO0VBQ0k7RUFDQTtFQUNBO0FkeThMSjs7QWN0OExBO0VBQ0k7RUFDQTtFQUNBO0FkeThMSjs7QWN0OExBO0VBQ0k7RUFDQTtBZHk4TEo7O0FjdDhMQTtFQUNJO0VBQ0E7RUFDQTtBZHk4TEo7O0FjcDhMQTtFQUNJO0VBQ0E7RUFDQTtBZHU4TEo7O0FjcDhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHU4TEo7O0FjcDhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHU4TEo7O0FjcDhMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWR1OExKOztBY2w4TEE7RUFDSTtFQUNBO0VBQ0E7QWRxOExKOztBY2w4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZHE4TEo7O0FjbDhMQTtFQUNJO0VBQ0E7QWRxOExKOztBY2w4TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZHE4TEo7O0FjaDhMQTtFQUNJO0FkbThMSjs7QWM5N0xBO0VBQ0k7QWRpOExKOztBYzk3TEE7RUFDSTtFQUNBO0VBQ0E7QWRpOExKO0FjLzdMSTtFQUNJO0VBQ0E7RUFDQTtBZGk4TFI7QWMxN0xJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZDQ3TFI7O0FjeDdMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQyN0xKO0FjejdMSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQyN0xSO0FjeDdMSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkMDdMUjs7QWNqN0xJO0VBREo7SUFFUTtFZHE3TE47QUFDRjs7QWNsN0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWRxN0xKOztBY2w3TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRxN0xKOztBY2w3TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkcTdMSjs7QWNsN0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWRxN0xKOztBY2w3TEE7RUFDSTtBZHE3TEo7O0FjbDdMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHE3TEo7QWNuN0xJO0VBQ0k7RUFDQTtBZHE3TFI7QWNsN0xJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWRvN0xSOztBY2g3TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRtN0xKOztBY3o2TEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkNDZMUjtBYzE2TFE7RUFDSTtFQUNBO0FkNDZMWjtBY3Q2TEk7RUFDSTtFQUNBO0FkdzZMUjtBY242TEk7RUFDSTtBZHE2TFI7QWNoNkxJO0VBQ0k7RUFDQTtBZGs2TFI7QWM3NUxJO0VBQ0k7QWQrNUxSOztBY3Y1TEE7RUFDSTtFQUNBO0VBQ0E7QWQwNUxKOztBY3Y1TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZDA1TEo7QWN4NUxJO0VBQ0k7RUFDQTtBZDA1TFI7QWN2NUxJO0VBQ0k7RUFDQTtFQUNBO0FkeTVMUjtBY3Y1TFE7RUFDSTtFQUNBO0FkeTVMWjtBY3Q1TFE7RUFDSTtFQUNBO0FkdzVMWjtBY3A1TEk7RUFDSTtFQUNBO0FkczVMUjs7QWNsNUxBO0VBQ0k7QWRxNUxKOztBY2w1TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBZHE1TEo7O0FjbDVMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkcTVMSjs7QWNsNUxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkcTVMSjs7QWNsNUxBO0VBQ0k7RUFDQTtFQUNBO0FkcTVMSjs7QWNsNUxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRxNUxKOztBY2w1TEE7RUFDSTtFQUNBO0FkcTVMSjs7QWNsNUxBO0VBQ0k7RUFDQTtBZHE1TEo7O0FjbDVMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRxNUxKOztBYzk0TEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWRpNUxKO0FjLzRMSTs7RUFFSTtBZGk1TFI7O0FjNzRMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZGc1TEo7QWM5NExJO0VBQ0k7RUFDQTtBZGc1TFI7O0FjeDRMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkMjRMSjtBY3o0TEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkMjRMUjtBY3g0TEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQwNExSO0FjdjRMSTtFQUNJO0VBQ0E7RUFDQTtBZHk0TFI7QWN0NExJO0VBQ0k7RUFDQTtBZHc0TFI7O0FjbDRMQTtFQUNJO0FkcTRMSjs7QWM5M0xBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkaTRMSjtBYy8zTEk7O0VBQ0k7RUFDQTtBZGs0TFI7QWMvM0xJOztFQUNJO0VBQ0E7QWRrNExSO0FjaDRMUTs7RUFDSTtBZG00TFo7O0FjOTNMQTtFQUNJO0FkaTRMSjs7QWM5M0xBO0VBQ0k7RUFDQTtBZGk0TEo7O0FjMTNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQ2M0xKOztBYzEzTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQ2M0xKOztBYzEzTEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FkNjNMSjs7QWMxM0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZDYzTEo7O0FjMTNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWQ2M0xKOztBYzEzTEE7RUFDSTtBZDYzTEo7O0FjdDNMQTtFQUNJO0VBQ0E7RUFDQTtBZHkzTEo7O0FjdDNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWR5M0xKOztBY3QzTEE7RUFDSTtFQUNBO0FkeTNMSjs7QWN0M0xBO0VBQ0k7RUFDQTtBZHkzTEo7O0FjdDNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FkeTNMSjs7QWN0M0xBO0VBQ0k7RUFDQTtFQUNBO0FkeTNMSjs7QWN0M0xBO0VBQ0k7RUFDQTtFQUNBO0FkeTNMSjs7QWN0M0xBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHkzTEo7QWN2M0xJO0VBQ0k7RUFDQTtBZHkzTFI7O0FjcjNMQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBZHczTEo7O0FjajNMQTtFQUNJO0VBQ0E7RUFDQTtBZG8zTEo7QWNsM0xJO0VBQ0k7RUFDQTtBZG8zTFI7QWNqM0xJO0VBQ0k7QWRtM0xSOztBYzMyTEE7RUFFSTtJQUNJO0lBQ0E7RWQ2MkxOO0VjMTJMRTtJQUNJO0lBQ0E7RWQ0MkxOO0VjejJMRTtJQUNJO0lBQ0E7RWQyMkxOO0VjeDJMRTtJQUNJO0VkMDJMTjtFY3YyTEU7SUFDSTtFZHkyTE47RWN0MkxFO0lBQ0k7RWR3MkxOO0VjcjJMRTtJQUNJO0lBQ0E7RWR1MkxOO0VjcjJMTTtJQUNJO0lBQ0E7RWR1MkxWO0VjbjJMRTtJQUNJO0lBQ0E7SUFDQTtFZHEyTE47QUFDRjtBZXp1TkE7Ozs7O0VBQUE7QUFTQTtFQUNJO0Fmd3VOSjtBZXR1Tkk7RUFDSTtFQUNBO0Fmd3VOUjs7QWdCdHZOQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7QWhCb3ZOSjs7QWlCaHdOQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7QWpCOHZOSjtBaUI1dk5JO0VBSko7SUFLUTtJQUNBO0VqQit2Tk47QUFDRjs7QWlCNXZOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCK3ZOSjs7QWlCNXZOQTtFQUNJO0VBQ0E7QWpCK3ZOSjs7QWlCNXZOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakIrdk5KO0FpQjd2Tkk7RUFDSTtFQUNBO0VBQ0E7QWpCK3ZOUjtBaUI1dk5JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCOHZOUjs7QWlCMXZOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCNnZOSjs7QWlCMXZOQTtFQUNJO0FqQjZ2Tko7O0FpQnR2TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCeXZOSjtBaUJ2dk5JO0VBWEo7SUFZUTtJQUNBO0lBQ0E7RWpCMHZOTjtBQUNGOztBaUJ2dk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjB2Tko7O0FpQnZ2TkE7RUFDSTtBakIwdk5KOztBaUJ2dk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQjB2Tko7O0FpQnZ2TkE7RUFDSTtFQUNBO0VBQ0E7QWpCMHZOSjs7QWlCbnZOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnN2Tko7QWlCbnZOSTtFQUNJO0FqQnF2TlI7O0FpQmp2TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCb3ZOSjs7QWlCanZOQTtFQUNJO0VBQ0E7QWpCb3ZOSjs7QWlCanZOQTtFQUNJO0FqQm92Tko7O0FpQmp2TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCb3ZOSjs7QWlCN3VOQTtFQUNJO0VBQ0E7RUFDQTtBakJndk5KO0FpQjl1Tkk7RUFMSjtJQU1RO0lBQ0E7RWpCaXZOTjtBQUNGOztBaUI5dU5BO0VBQ0k7RUFDQTtFQUNBO0FqQml2Tko7O0FpQjl1TkE7RUFDSTtBakJpdk5KOztBaUI5dU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJpdk5KOztBaUI5dU5BO0VBQ0k7RUFDQTtFQUNBO0FqQml2Tko7O0FpQjF1TkE7RUFDSTtFQUNBO0VBQ0E7QWpCNnVOSjs7QWlCMXVOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCNnVOSjtBaUIzdU5JO0VBQ0k7QWpCNnVOUjs7QWlCenVOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjR1Tko7O0FpQnp1TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI0dU5KOztBaUJ6dU5BO0VBQ0k7RUFDQTtBakI0dU5KOztBaUJ6dU5BO0VBQ0k7RUFDQTtBakI0dU5KOztBaUJ6dU5BO0VBQ0k7QWpCNHVOSjs7QWlCenVOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjR1Tko7O0FpQnp1TkE7RUFDSTtFQUNBO0VBQ0E7QWpCNHVOSjs7QWlCenVOQTtFQUNJO0VBQ0E7QWpCNHVOSjs7QWlCcnVOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnd1Tko7QWlCdHVOSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQnd1TlI7QWlCcnVOSTtFQUNJO0FqQnV1TlI7QWlCcHVOSTtFQUNJO0FqQnN1TlI7O0FpQjl0TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQml1Tko7O0FpQjl0TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJpdU5KO0FpQi90Tkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJpdU5SO0FpQjl0Tkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJndU5SOztBaUI1dE5BO0VBQ0k7RUFDQTtFQUNBO0FqQit0Tko7QWlCN3ROSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQit0TlI7QWlCN3ROUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCK3ROWjs7QWlCcnROQTtFQUVJO0lBQ0k7RWpCdXROTjtBQUNGO0FpQnB0TkE7RUFHSTtJQUNJO0VqQm90Tk47RWlCbHROTTtJQUNJO0lBQ0E7RWpCb3ROVjtBQUNGO0FpQjVzTkE7RUFFSTs7SUFFSTtFakI2c05OO0FBQ0Y7QWtCam1PQTs7Ozs7RUFBQTtBQWFJO0VBQ0k7QWxCNGxPUjs7QWtCdGxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCeWxPSjtBa0J2bE9JO0VBUEo7SUFRUTtJQUNBO0lBQ0E7RWxCMGxPTjtBQUNGOztBa0J2bE9BO0VBQ0k7QWxCMGxPSjs7QWtCdmxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQjBsT0o7QWtCeGxPSTtFQU5KO0lBT1E7SUFDQTtFbEIybE9OO0VrQnpsT007SUFDSTtJQUNBO0VsQjJsT1Y7QUFDRjs7QWtCbmxPQTtFQUNJO0FsQnNsT0o7O0FrQm5sT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJzbE9KO0FrQnBsT0k7RUFOSjtJQU9RO0lBQ0E7RWxCdWxPTjtBQUNGOztBa0JwbE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCdWxPSjtBa0JybE9JO0VBQ0k7RUFDQTtFQUNBO0FsQnVsT1I7QWtCcGxPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCc2xPUjtBa0JubE9JO0VBQ0k7QWxCcWxPUjs7QWtCamxPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQm9sT0o7QWtCbGxPSTtFQU5KO0lBT1E7RWxCcWxPTjtBQUNGOztBa0JsbE9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtBbEJtbE9KOztBa0JobE9BO0VBQ0k7QWxCbWxPSjtBa0JqbE9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQm1sT1I7QWtCamxPUTtFQUNJO0FsQm1sT1o7QWtCaGxPUTtFQUNJO0FsQmtsT1o7QWtCOWtPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCZ2xPUjtBa0I3a09JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCK2tPUjs7QWtCemtPQTtFQUNJO0FsQjRrT0o7O0FrQnprT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQjRrT0o7QWtCMWtPSTtFQUNJO0VBQ0E7QWxCNGtPUjtBa0J6a09JO0VBQ0k7QWxCMmtPUjs7QWtCbmtPQTtFQUNJO0FsQnNrT0o7O0FrQm5rT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCc2tPSjtBa0Jwa09JO0VBUko7SUFTUTtJQUNBO0VsQnVrT047QUFDRjs7QWtCbGtPSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJxa09SO0FrQm5rT1E7RUFDSTtFQUNBO0VBQ0E7QWxCcWtPWjs7QWtCNWpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEIrak9KOztBa0Ixak9JO0VBQ0k7RUFDQTtFQUNBO0FsQjZqT1I7QWtCMWpPSTtFQUNJO0VBQ0E7QWxCNGpPUjtBa0J6ak9JO0VBQ0k7QWxCMmpPUjtBa0J6ak9RO0VBSEo7SUFJUTtFbEI0ak9WO0FBQ0Y7O0FrQnRqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJ5ak9KO0FrQnZqT0k7RUFDSTtFQUNBO0VBQ0E7QWxCeWpPUjs7QWtCbmpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCc2pPSjs7QWtCbmpPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQnNqT0o7O0FrQmpqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQm9qT0o7QWtCbGpPSTtFQUNJO0VBQ0E7QWxCb2pPUjtBa0Jqak9JO0VBQ0k7RUFDQTtFQUNBO0FsQm1qT1I7QWtCaGpPSTtFQXJCSjtJQXNCUTtJQUNBO0VsQm1qT047QUFDRjs7QWtCOWlPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQmlqT0o7QWtCL2lPSTtFQUNJO0VBQ0E7RUFDQTtBbEJpak9SO0FrQi9pT1E7RUFDSTtBbEJpak9aOztBa0IxaU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEI2aU9KO0FrQjNpT0k7RUFDSTtBbEI2aU9SO0FrQjFpT0k7RUFDSTtBbEI0aU9SO0FrQnppT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEIyaU9SOztBa0JyaU9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCd2lPSjtBa0J0aU9JO0VBQ0k7RUFDQTtFQUNBO0FsQndpT1I7QWtCcmlPSTtFQUNJO0VBQ0E7RUFDQTtBbEJ1aU9SO0FrQnBpT0k7RUFDSTtFQUNBO0FsQnNpT1I7O0FrQmhpT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQm1pT0o7O0FrQjloT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCaWlPSjtBa0IvaE9JO0VBQ0k7RUFDQTtFQUNBO0FsQmlpT1I7QWtCOWhPSTtFQUNJO0VBQ0E7RUFDQTtBbEJnaU9SO0FrQjloT1E7RUFDSTtBbEJnaU9aO0FrQjVoT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEI4aE9SOztBa0J0aE9BO0VBRUk7SUFDSTtFbEJ3aE9OO0VrQnJoT0U7SUFDSTtFbEJ1aE9OO0VrQnBoT0U7SUFDSTtJQUNBO0VsQnNoT047RWtCbmhPRTtJQUNJO0VsQnFoT047RWtCbGhPRTtJQUNJO0VsQm9oT047RWtCamhPRTtJQUNJO0VsQm1oT047QUFDRjtBa0JoaE9BO0VBRUk7SUFDSTtFbEJpaE9OO0VrQjlnT0U7SUFDSTtFbEJnaE9OO0VrQjdnT0U7SUFDSTtJQUNBO0VsQitnT047RWtCNWdPRTtJQUNJO0VsQjhnT047RWtCM2dPRTtJQUNJO0VsQjZnT047QUFDRjtBa0JwZ09BOztFQUVJO0VBQ0E7QWxCc2dPSjs7QWtCbGdPQTtFQUVJO0lBQ0k7RWxCb2dPTjtFa0JqZ09FO0lBQ0k7RWxCbWdPTjtBQUNGO0FrQi8vTkE7RUFFSTs7OztJQUlJO0VsQmdnT047QUFDRjtBbUJoalBBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI2aVBKOztBbUIxaVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CNmlQSjs7QW1CMWlQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI2aVBKOztBbUIxaVBBO0VBQ0k7QW5CNmlQSjs7QW1CMWlQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CNmlQSjs7QW1CMWlQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQjZpUEo7O0FtQjFpUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI2aVBKOztBbUIxaVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkI2aVBKO0FtQjNpUEk7RUFDSTtFQUNBO0FuQjZpUFI7O0FtQnJpUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJ3aVBKOztBbUJyaVBBO0VBQ0k7RUFDQTtFQUNBO0FuQndpUEo7O0FtQnJpUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cd2lQSjtBbUJ0aVBJO0VBQ0k7RUFDQTtBbkJ3aVBSOztBbUJoaVBBO0VBQ0k7RUFDQTtBbkJtaVBKOztBbUJoaVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQm1pUEo7QW1CamlQSTtFQUNJO0VBQ0E7QW5CbWlQUjtBbUJoaVBJO0VBQ0k7RUFDQTtBbkJraVBSOztBbUI5aFBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJpaVBKOztBbUI5aFBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQmlpUEo7O0FtQjloUEE7RUFDSTtFQUNBO0FuQmlpUEo7O0FtQjloUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQmlpUEo7O0FtQjloUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJpaVBKOztBbUI5aFBBO0VBQ0k7QW5CaWlQSjs7QW1CcmhQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQndoUFI7QW1CdGhQUTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CdWhQWjtBbUJuaFBZO0VBQ0k7RUFDQTtBbkJxaFBoQjtBbUJqaFBRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJtaFBaO0FtQmpoUFk7RUFDSTtFQUNBO0VBQ0E7QW5CbWhQaEI7QW1CL2dQUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQmloUFo7O0FtQnRnUEE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFbkJ3Z1BOO0VtQnRnUE07SUFDSTtJQUNBO0VuQndnUFY7RW1CcGdQRTtJQUNJO0VuQnNnUE47RW1CbmdQRTtJQUNJO0VuQnFnUE47RW1CbGdQRTtJQUNJO0VuQm9nUE47RW1CbGdQTTtJQUNJO0lBQ0E7RW5Cb2dQVjtFbUJoZ1BFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RW5Ca2dQTjtFbUIvL09FO0lBQ0k7RW5CaWdQTjtFbUI5L09FO0lBQ0k7SUFDQTtFbkJnZ1BOO0VtQjkvT007SUFDSTtJQUNBO0VuQmdnUFY7RW1CNS9PRTtJQUNJO0VuQjgvT047RW1CMy9PRTtJQUNJO0VuQjYvT047RW1CeC9PTTtJQUNJO0lBQ0E7RW5CMC9PVjtFbUJ2L09NO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RW5CeS9PVjtFbUJyL09FO0lBQ0k7RW5CdS9PTjtFbUJyL09NO0lBQ0k7SUFDQTtFbkJ1L09WO0VtQnIvT1U7SUFDSTtJQUNBO0VuQnUvT2Q7RW1Cbi9PTTtJQUNJO0VuQnEvT1Y7RW1CbC9PTTtJQUNJO0VuQm8vT1Y7RW1Cai9PTTtJQUNJO0VuQm0vT1Y7QUFDRjtBbUI5K09BO0VBRUk7SUFDSTtFbkIrK09OO0FBQ0Y7QW1CeCtPQTtFQUVJO0lBQ0k7RW5CeStPTjtBQUNGO0FvQnYyUEE7Ozs7Ozs7Ozs7RUFBQTtBQWdCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCbzJQSjs7QW9CajJQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJvMlBKOztBb0JqMlBBO0VBRUk7SUFDSTtJQUNBO0VwQm0yUE47RW9CaDJQRTtJQUNJO0lBQ0E7RXBCazJQTjtBQUNGO0FvQnoxUEE7RUFDSTtFQUNBO0VBQ0E7QXBCMjFQSjtBb0J6MVBJO0VBQ0k7RUFDQTtBcEIyMVBSOztBb0JwMVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCdTFQSjtBb0JyMVBJO0VBQ0k7RUFDQTtBcEJ1MVBSOztBb0JuMVBBO0VBQ0k7RUFDQTtBcEJzMVBKOztBb0JuMVBBO0VBQ0k7RUFDQTtBcEJzMVBKOztBb0JuMVBBO0VBQ0k7RUFDQTtBcEJzMVBKOztBb0JuMVBBO0VBQ0k7RUFDQTtBcEJzMVBKOztBb0JuMVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQnMxUEo7O0FvQm4xUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJzMVBKOztBb0IvMFBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCazFQSjtBb0JoMVBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBCazFQUjtBb0IvMFBJO0VBQ0k7RUFDQTtFQUNBO0FwQmkxUFI7QW9COTBQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJnMVBSO0FvQjkwUFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJnMVBaOztBb0J4MFBBO0VBQ0k7QXBCMjBQSjs7QW9CcDBQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQnUwUEo7QW9CcjBQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCdTBQUjtBb0JyMFBRO0VBQ0k7RUFDQTtBcEJ1MFBaO0FvQnAwUFE7RUFDSTtBcEJzMFBaO0FvQm4wUFE7RUFDSTtFQUNBO0FwQnEwUFo7QW9CL3pQUTtFQUNJO0VBQ0E7QXBCaTBQWjtBb0I5elBRO0VBQ0k7QXBCZzBQWjtBb0I3elBRO0VBQ0k7RUFDQTtBcEIrelBaOztBb0I3eVBJO0VBQ0k7QXBCZ3pQUjs7QW9CeHlQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEIyeVBKO0FvQnp5UEk7RUFDSTtBcEIyeVBSO0FvQnh5UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEIweVBSO0FvQnZ5UEk7RUFDSTtFQUNBO0FwQnl5UFI7QW9CcHlQSTtFQUNJO0VBQ0E7RUFDQTtBcEJzeVBSO0FvQnB5UFE7RUFDSTtFQUNBO0VBQ0E7QXBCc3lQWjtBb0JweVBZO0VBQ0k7QXBCc3lQaEI7QW9CL3hQSTtFQUNJO0VBQ0E7RUFDQTtBcEJpeVBSO0FvQi94UFE7RUFDSTtFQUNBO0VBQ0E7QXBCaXlQWjtBb0IveFBZO0VBQ0k7QXBCaXlQaEI7O0FvQnJ4UEk7RUFDSTtFQUNBO0FwQnd4UFI7O0FvQnB4UEE7RUFDSTtFQUNBO0VBQ0EsMEZBQ0k7QXBCc3hQUjtBb0JoeFBJO0VBQ0k7QXBCa3hQUjtBb0Izd1BJO0VBQ0k7QXBCNndQUjs7QW9CendQQTtFQUNJO0VBQ0E7QXBCNHdQSjtBb0Ixd1BJO0VBQ0k7QXBCNHdQUjs7QW9CcHdQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJ1d1BKO0FvQnJ3UEk7RUFDSTtBcEJ1d1BSOztBb0Jqd1BBO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsMEZBQ0k7QXBCbXdQUjtBb0Jod1BJO0VBQ0k7RUFDQTtBcEJrd1BSO0FvQi92UEk7RUFDSTtBcEJpd1BSO0FvQjl2UEk7RUFDSTtBcEJnd1BSO0FvQjl2UFE7RUFDSTtBcEJnd1BaOztBb0IzdlBBO0VBQ0k7RUFDQTtBcEI4dlBKOztBb0IzdlBBO0VBQ0k7QXBCOHZQSjs7QW9CenZQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQjR2UEo7QW9CMXZQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQjR2UFI7O0FvQnJ2UEE7RUFDSTtFQUNBO0FwQnd2UEo7O0FvQnJ2UEE7RUFDSTtFQUNBO0FwQnd2UEo7O0FvQnJ2UEE7RUFDSTtBcEJ3dlBKOztBb0JsdlBBO0VBQ0k7RUFDQTtFQUNBO0FwQnF2UEo7QW9CaHZQSTtFQUNJO0VBQ0E7QXBCa3ZQUjs7QW9CcnVQSTtFQUNJO0FwQnd1UFI7O0FvQnB1UEE7RUFDSTtFQUNBO0VBQ0E7QXBCdXVQSjtBb0JydVBJO0VBQ0k7QXBCdXVQUjtBb0JqdVBJO0VBQ0k7QXBCbXVQUjs7QW9CL3RQQTtFQUNJO0FwQmt1UEo7O0FvQi90UEE7RUFDSTtFQUNBO0VBQ0E7QXBCa3VQSjs7QW9CN3RQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBCZ3VQSjtBb0I5dFBJO0VBQ0k7RUFDQTtFQUNBO0FwQmd1UFI7O0FvQnh0UEE7RUFFSTtJQUNJO0VwQjB0UE47RW9CcnRQTTtJQUNJO0lBQ0E7SUFDQTtFcEJ1dFBWO0VvQnB0UE07SUFDSTtFcEJzdFBWO0VvQnB0UFU7SUFDSTtFcEJzdFBkO0VvQmp0UEU7SUFDSTtFcEJtdFBOO0VvQmh0UEU7SUFDSTtJQUNBO0VwQmt0UE47RW9CaHRQTTtJQUNJO0lBQ0E7RXBCa3RQVjtFb0I5c1BFO0lBQ0k7RXBCZ3RQTjtFb0I3c1BFO0lBQ0k7RXBCK3NQTjtFb0I1c1BFO0lBQ0k7RXBCOHNQTjtFb0J6c1BNO0lBQ0k7RXBCMnNQVjtFb0Jyc1BNO0lBQ0k7SUFDQTtJQUNBO0VwQnVzUFY7RW9CcHNQTTtJQUNJO0VwQnNzUFY7QUFDRjtBb0Jqc1BBO0VBRUk7SUFDSTtJQUNBO0VwQmtzUE47QUFDRjtBb0J6clBBO0VBRUk7SUFDSTtFcEIwclBOO0VvQnZyUEU7OztJQUdJO0VwQnlyUE47QUFDRjtBb0JsclBBO0VBRUk7SUFDSTtFcEJtclBOO0VvQmhyUEU7SUFDSTtJQUNBO0VwQmtyUE47RW9CL3FQRTtJQUNJO0VwQmlyUE47RW9COXFQRTtJQUNJO0VwQmdyUE47QUFDRjtBcUJuelFBOzs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBQ0k7RUFDQTtBckIyeVFKOztBcUJ0eVFBO0VBQ0k7QXJCeXlRSjs7QXFCbHlRQTtFQUNJO0VBQ0E7RUFDQTtBckJxeVFKOztBcUIveFFBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsaVBBQ0k7QXJCaXlRUjtBcUJ6eFFJO0VBQ0k7RUFDQTtBckIyeFFSO0FxQnp4UVE7RUFDSTtBckIyeFFaO0FxQm54UUk7RUFDSTtFQUNBO0FyQnF4UVI7QXFCOXdRSTtFQUNJO0VBQ0E7RUFDQTtBckJneFFSO0FxQjl3UVE7RUFDSTtFQUNBO0VBQ0E7QXJCZ3hRWjtBcUI3d1FRO0VBQ0k7QXJCK3dRWjtBcUIxd1FRO0VBQ0k7QXJCNHdRWjs7QXFCcndRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCd3dRSjs7QXFCcndRQTtFQUNJO0FyQnd3UUo7O0FxQnJ3UUE7RUFDSTtFQUNBO0FyQnd3UUo7O0FxQnJ3UUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckJ3d1FKOztBcUJud1FBO0VBQ0k7RUFDQTtFQUNBO0FyQnN3UUo7O0FxQm53UUE7RUFDSTtFQUNBO0VBQ0E7QXJCc3dRSjs7QXFCbndRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQnN3UUo7O0FxQmh3UUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQm13UUo7O0FxQjV2UUE7RUFDSTtFQUNBO0FyQit2UUo7O0FxQnh2UUE7RUFDSTtFQUNBO0VBQ0E7QXJCMnZRSjs7QXFCeHZRQTtFQUNJO0FyQjJ2UUo7O0FxQmp2UUE7RUFFSTtJQUNJO0VyQm12UU47QUFDRjtBc0JuOFFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBc0JBO0VBR0k7QXRCazhRSjtBc0I1N1FJO0VBQ0k7QXRCODdRUjtBc0IzN1FJO0VBQ0k7RUFDQTtFQUNBO0F0QjY3UVI7QXNCeDdRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxzTEFDSTtBdEJ5N1FaO0FzQmw3UUk7RUFDSTtFQUNBO0F0Qm83UVI7QXNCOTZRSTtFQUNJO0VBQ0E7RUFDQTtBdEJnN1FSO0FzQjc2UUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdEIrNlFSO0FzQno2UUk7O0VBRUk7QXRCMjZRUjtBc0J4NlFJO0VBQ0k7QXRCMDZRUjtBc0J2NlFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJ5NlFSO0FzQnQ2UUk7RUFDSTtBdEJ3NlFSO0FzQjk1UUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0Qmc2UVI7QXNCcjVRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJ1NVFSO0FzQmg1UUk7RUFDSTtFQUNBO0F0Qms1UVI7QXNCLzRRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0Qmk1UVI7QXNCdDRRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRCdzRRUjtBc0J0NFFRO0VBQ0k7RUFDQTtFQUNBO0F0Qnc0UVo7QXNCcjRRUTtFQUNJO0F0QnU0UVo7QXNCLzNRSTtFQUNJO0VBQ0E7QXRCaTRRUjtBc0IzM1FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0QjYzUVI7QXNCdjNRSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdEJ5M1FSO0FzQnYzUVE7RUFDSTtFQUNBO0VBQ0E7QXRCeTNRWjtBc0JqM1FJO0VBRUk7SUFDSTtFdEJrM1FWO0VzQi8yUU07SUFDSTtFdEJpM1FWO0FBQ0Y7O0FzQjcyUUE7RUFFSTtJQUNJO0lBQ0E7RXRCKzJRTjtFc0I1MlFFO0lBQ0k7SUFDQTtFdEI4MlFOO0FBQ0Y7QXNCcDJRQTtFQUlROzs7SUFHSTtFdEJtMlFWO0VzQmgyUU07SUFDSTtFdEJrMlFWO0FBQ0Y7QXVCM25SQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7QUEwQkE7RUFPSTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0F2QmtuUko7O0F1QjVtUkE7RUFDSTtBdkIrbVJKOztBdUJ6bVJBO0VBQ0k7RUFDQTtBdkI0bVJKOztBdUJsbVJBO0VBQ0k7QXZCcW1SSjs7QXVCaG1SQTtFQUNJO0F2Qm1tUko7O0F1QjVsUkE7RUFDSTtFQUNBO0F2QitsUko7O0F1QnJsUkE7RUFDSTtBdkJ3bFJKOztBd0JyclJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQTBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7QXhCb3JSSjtBd0JsclJJO0VBSUk7RUFDQTtBeEJpclJSO0F3QjlxUkk7RUFDSTtFQUNBO0F4QmdyUlI7QXdCN3FSSTtFQUNJO0VBQ0E7QXhCK3FSUjtBd0I1cVJJO0VBQ0k7RUFDQTtBeEI4cVJSO0F3QjNxUkk7RUFDSTtFQUNBO0F4QjZxUlI7O0F5Qmh2UkE7Ozs7OztFQUFBO0FBUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJrdlJKOztBeUIvdVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJrdlJKOztBeUIvdVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qmt2Uko7O0F5Qi91UkE7RUFDSTtFQUNBO0F6Qmt2Uko7O0F5Qi91UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qmt2Uko7O0F5Qi91UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJrdlJKOztBeUIvdVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCa3ZSSjs7QXlCL3VSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCa3ZSSjs7QXlCL3VSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6Qmt2Uko7QXlCaHZSSTtFQUNJO0VBQ0E7RUFDQTtBekJrdlJSOztBeUI5dVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qml2Uko7QXlCL3VSSTtFQUNJO0F6Qml2UlI7O0F5Qjd1UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qmd2Uko7QXlCN3VSSTtFQUVJO0VBQ0E7QXpCOHVSUjtBeUIzdVJJO0VBQ0k7RUFDQTtBekI2dVJSO0F5QjF1Ukk7RUFDSTtFQUNBO0F6QjR1UlI7O0F5Qnh1UkE7RUFDSTtFQUNBO0VBQ0E7QXpCMnVSSjs7QXlCeHVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjJ1Uko7O0F5Qnh1UkE7RUFDSTtFQUNBO0F6QjJ1Uko7O0F5Qnh1UkE7RUFDSTtFQUNBO0VBQ0E7QXpCMnVSSjs7QXlCeHVSQTtFQUNJO0F6QjJ1Uko7O0F5Qnh1UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjJ1Uko7O0F5Qnh1UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCMnVSSjs7QXlCeHVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjJ1Uko7O0F5Qnh1UkE7RUFDSTtFQUNBO0VBQ0E7QXpCMnVSSjs7QXlCeHVSQTs7RUFFSTtFQUNBO0VBQ0E7QXpCMnVSSjs7QXlCeHVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekIydVJKO0F5Qnp1Ukk7RUFDSTtBekIydVJSOztBeUJ2dVJBO0VBQ0k7RUFDQTtBekIwdVJKOztBeUJ2dVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCMHVSSjtBeUJ4dVJJO0VBTko7SUFPUTtFekIydVJOO0FBQ0Y7QXlCenVSSTtFQVZKO0lBV1E7RXpCNHVSTjtBQUNGOztBeUJ6dVJBO0VBQ0k7QXpCNHVSSjtBeUIxdVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjR1UlI7QXlCenVSSTtFQUNJO0VBQ0E7QXpCMnVSUjs7QXlCdnVSQTtFQUNJO0F6QjB1Uko7QXlCeHVSSTtFQUNJO0F6QjB1UlI7O0F5QnR1UkE7RUFDSTtFQUNBO0VBQ0E7QXpCeXVSSjtBeUJ2dVJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCeXVSUjtBeUJ0dVJJO0VBQ0k7RUFDQTtBekJ3dVJSOztBeUJwdVJBO0VBQ0k7RUFDQTtFQUNBO0F6QnV1Uko7QXlCcnVSSTtFQUNJO0VBQ0E7RUFDQTtBekJ1dVJSOztBeUJudVJBO0VBQ0k7RUFDQTtFQUNBO0F6QnN1Uko7QXlCcHVSSTtFQUxKO0lBTVE7RXpCdXVSTjtBQUNGO0F5QnJ1Ukk7RUFUSjtJQVVRO0V6Qnd1Uk47QUFDRjtBeUJydVJRO0VBREo7SUFFUTtFekJ3dVJWO0FBQ0Y7QXlCcHVSUTtFQURKO0lBRVE7RXpCdXVSVjtBQUNGO0F5Qm51UlE7RUFESjtJQUVRO0V6QnN1UlY7QUFDRjs7QXlCbHVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCcXVSSjtBeUJudVJJO0VBQ0k7RUFDQTtBekJxdVJSO0F5Qmx1Ukk7RUFDSTtFQUNBO0F6Qm91UlI7QXlCanVSSTtFQUNJO0VBQ0E7QXpCbXVSUjtBeUJodVJJO0VBQ0k7RUFDQTtBekJrdVJSO0F5Qi90Ukk7RUFDSTtFQUNBO0F6Qml1UlI7QXlCOXRSSTtFQUNJO0F6Qmd1UlI7QXlCN3RSSTtFQUNJO0F6Qit0UlI7O0F5QjN0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekI4dFJKOztBeUIzdFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekI4dFJKOztBeUIzdFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qjh0Uko7QXlCNXRSSTtFQUNJO0VBQ0E7QXpCOHRSUjs7QXlCMXRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjZ0Uko7QXlCM3RSSTtFQUNJO0VBQ0E7RUFDQTtBekI2dFJSOztBeUJ6dFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCNHRSSjs7QXlCenRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6QjR0Uko7O0F5Qnp0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjR0Uko7O0F5Qnp0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjR0Uko7O0F5Qnp0UkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7RUFDQTtFQUNBO0F6QjR0Uko7QXlCMXRSSTtFQUxKO0lBTVE7RXpCNnRSTjtBQUNGO0F5QjF0UlE7RUFESjtJQUVRO0V6QjZ0UlY7QUFDRjs7QXlCenRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCNHRSSjs7QXlCeHRSSTtFQURKO0lBRVE7RXpCNHRSTjtBQUNGOztBeUJ6dFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCNHRSSjs7QXlCenRSQTtFQUNJO0VBQ0E7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCNHRSSjs7QXlCenRSQTtFQUNJO0VBQ0E7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7RUFDQTtBekI0dFJKOztBeUJ6dFJBO0VBQ0k7QXpCNHRSSjs7QXlCenRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjR0Uko7QXlCMXRSSTtFQUNJO0F6QjR0UlI7O0F5Qnh0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjJ0Uko7QXlCenRSSTtFQUNJO0VBQ0E7QXpCMnRSUjs7QXlCdnRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6QjB0Uko7O0F5QnZ0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekIwdFJKOztBeUJ2dFJBO0VBQ0k7QXpCMHRSSjs7QXlCdnRSQTtFQUNJO0VBQ0E7QXpCMHRSSjtBeUJ4dFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCMHRSUjtBeUJ2dFJJOztFQUVJO0VBQ0E7QXpCeXRSUjtBeUJ0dFJJOztFQUVJO0F6Qnd0UlI7QXlCcnRSSTtFQUNJO0VBQ0E7QXpCdXRSUjs7QXlCbnRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJzdFJKOztBeUJudFJBO0VBQ0k7RUFDQTtFQUNBO0F6QnN0Uko7O0F5Qm50UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QnN0Uko7O0F5Qm50UkE7RUFDSTtFQUNBO0VBQ0E7QXpCc3RSSjs7QXlCbnRSQTtFQUNJO0VBQ0E7RUFDQTtBekJzdFJKOztBeUJudFJBO0VBQ0k7RUFDQTtBekJzdFJKO0F5QnB0Ukk7RUFDSTtBekJzdFJSO0F5Qm50Ukk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCcXRSUjtBeUJsdFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6Qm90UlI7QXlCanRSSTtFQUNJO0F6Qm10UlI7QXlCaHRSSTtFQUNJO0F6Qmt0UlI7QXlCL3NSSTtFQUVJO0lBQ0k7SUFDQTtFekJndFJWO0FBQ0Y7O0F5QjVzUkE7RUFDSTtFQUNBO0VBQ0E7QXpCK3NSSjs7QXlCNXNSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekIrc1JKO0F5QjdzUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekIrc1JSO0F5QjVzUkk7RUFDSTtFQUNBO0VBQ0E7QXpCOHNSUjtBeUIzc1JJO0VBR0k7QXpCMnNSUjtBeUJ4c1JJO0VBQ0k7QXpCMHNSUjtBeUJ2c1JJO0VBR0k7QXpCdXNSUjtBeUJwc1JJO0VBRUk7QXpCcXNSUjtBeUJsc1JJO0VBQ0k7QXpCb3NSUjs7QXlCaHNSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJtc1JKO0F5QmpzUkk7RUFDSTtFQUNBO0F6Qm1zUlI7QXlCaHNSSTtFQUNJO0VBQ0E7QXpCa3NSUjtBeUIvclJJO0VBQ0k7RUFDQTtBekJpc1JSO0F5QjlyUkk7RUFFSTtFQUNBO0F6QityUlI7QXlCNXJSSTtFQUNJO0VBQ0E7QXpCOHJSUjs7QXlCMXJSQTtFQUNJO0VBQ0E7RUFDQTtBekI2clJKO0F5QjNyUkk7RUFMSjtJQU1RO0V6QjhyUk47QUFDRjtBeUI1clJJO0VBVEo7SUFVUTtFekIrclJOO0FBQ0Y7O0F5QjVyUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCK3JSSjtBeUI3clJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCK3JSUjtBeUI1clJJO0VBQ0k7RUFDQTtBekI4clJSOztBeUIxclJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QjZyUko7QXlCM3JSSTtFQUNJO0VBQ0E7QXpCNnJSUjs7QXlCenJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCNHJSSjs7QXlCenJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCNHJSSjs7QXlCenJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekI0clJKOztBeUJ6clJBO0VBRUk7SUFDSTtFekIyclJOO0V5QnpyUk07SUFDSTtFekIyclJWO0FBQ0Y7QTBCNWlUQTs7Ozs7OztFQUFBO0FBU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0ExQjRpVEo7QTBCMWlUSTtFQUNJO0VBQ0E7RUFDQTtBMUI0aVRSO0EwQnppVEk7O0VBRUk7QTFCMmlUUjtBMEJ4aVRJO0VBQ0k7QTFCMGlUUjtBMEJ4aVRRO0VBQ0k7QTFCMGlUWjs7QTBCbGlUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJxaVRKOztBMkI1bFRBOzs7Ozs7RUFBQTtBQVFBOzs7Ozs7O0VBT0k7RUFDQTtFQUNBO0EzQjhsVEo7O0EyQnZsVEk7OztFQUNJO0EzQjRsVFI7QTJCemxUSTs7Ozs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBM0I4bFRSO0EyQjNsVEk7Ozs7O0VBRUk7RUFDQTtFQUNBO0EzQmdtVFI7O0EyQjVsVEE7OztFQUdJO0VBQ0E7QTNCK2xUSjs7QTJCNWxUQTs7RUFFSTtFQUNBO0EzQitsVEo7O0EyQjVsVEE7Ozs7RUFJSTtBM0IrbFRKOztBMkI1bFRBOzs7OztFQUtJO0EzQitsVEo7O0EyQjVsVEE7RUFDSTtFQUNBO0EzQitsVEo7QTJCN2xUSTtFQUNJO0EzQitsVFI7QTJCNWxUSTtFQUNJO0VBQ0E7QTNCOGxUUjtBMkIzbFRJO0VBRUk7RUFDQTtBM0I0bFRSO0EyQnpsVEk7RUFDSTtFQUNBO0VBQ0E7QTNCMmxUUjs7QTJCdmxUQTs7O0VBR0k7QTNCMGxUSjs7QTJCdmxUQTs7RUFFSTtBM0IwbFRKOztBMkJybFRJO0VBQ0k7RUFDQTtFQUNBO0EzQndsVFI7QTJCcmxUSTtFQUNJO0VBQ0E7QTNCdWxUUjs7QTJCbmxUQTtFQUNJO0VBQ0E7QTNCc2xUSjtBMkJwbFRJOzs7RUFHSTtBM0JzbFRSO0EyQm5sVEk7O0VBRUk7RUFDQTtBM0JxbFRSOztBMkJqbFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQm9sVEo7QTJCbGxUSTs7O0VBR0k7RUFDQTtBM0JvbFRSO0EyQmpsVEk7OztFQUdJO0EzQm1sVFI7O0EyQi9rVEE7Ozs7Ozs7Ozs7RUFVSTtFQUNBO0VBQ0E7QTNCa2xUSjs7QTJCL2tUQTtFQUNJO0VBQ0E7QTNCa2xUSjs7QTJCL2tUQTs7Ozs7OztFQU9JO0VBQ0E7RUFDQTtBM0JrbFRKOztBMkIva1RBOzs7O0VBSUk7RUFDQTtFQUNBO0EzQmtsVEo7O0EyQi9rVEE7RUFDSTtBM0JrbFRKOztBMkIva1RBOztFQUVJO0EzQmtsVEo7QTJCaGxUSTs7OztFQUdJO0VBQ0E7QTNCbWxUUjs7QTJCL2tUQTs7RUFFSTtFQUNBO0EzQmtsVEo7QTJCaGxUSTs7OztFQUVJO0VBQ0E7RUFDQTtBM0JvbFRSO0EyQmpsVEk7O0VBQ0k7RUFDQTtBM0JvbFRSOztBMkJobFRBO0VBQ0k7RUFDQTtBM0JtbFRKO0EyQmpsVEk7RUFDSTtFQUNBO0EzQm1sVFI7O0EyQi9rVEE7RUFDSTtFQUNBO0VBQ0E7QTNCa2xUSjtBMkJobFRJO0VBR0k7RUFDQTtFQUNBO0EzQmdsVFI7O0EyQjVrVEE7RUFDSTtFQUNBO0EzQitrVEo7QTJCN2tUSTtFQUVJO0VBQ0E7RUFDQTtBM0I4a1RSOztBMkIxa1RBO0VBQ0k7RUFDQTtFQUNBO0EzQjZrVEo7QTJCM2tUSTtFQUVJO0VBQ0E7RUFDQTtBM0I0a1RSOztBMkJ4a1RBO0VBQ0k7RUFDQTtFQUNBO0EzQjJrVEo7O0EyQnhrVEE7RUFDSTtFQUNBO0VBQ0E7QTNCMmtUSjs7QTJCeGtUQTs7O0VBR0k7RUFDQTtFQUNBO0EzQjJrVEo7QTJCemtUSTs7Ozs7RUFFSTtFQUNBO0VBQ0E7QTNCOGtUUjs7QTJCMWtUQTtFQUNJO0VBQ0E7QTNCNmtUSjs7QTJCMWtUQTtFQUNJO0VBQ0E7RUFDQTtBM0I2a1RKOztBMkIxa1RBO0VBQ0k7RUFDQTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7O0VBRUk7RUFDQTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7O0VBRUk7RUFDQTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7O0VBRUk7RUFDQTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7O0VBRUk7RUFDQTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7RUFDSTtFQUNBO0EzQjZrVEo7O0EyQjFrVEE7O0VBRUk7RUFDQTtBM0I2a1RKOztBMkIxa1RBOzs7O0VBSUk7QTNCNmtUSjs7QTJCMWtUQTs7RUFFSTtBM0I2a1RKOztBMkIxa1RBOztFQUVJO0EzQjZrVEo7O0EyQjFrVEE7OztFQUdJO0VBQ0E7QTNCNmtUSjs7QTJCeGtUSTtFQUNJO0EzQjJrVFI7QTJCeGtUSTs7O0VBR0k7RUFDQTtFQUNBO0EzQjBrVFI7O0E0Qjk5VEE7Ozs7Ozs7O0VBQUE7QUNBQTs7RUFBQTtBQUlBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0E3QnkrVEo7O0E2QnQrVEE7RUFDSTtFQUNBO0E3QnkrVEo7O0E2QnQrVEE7OztFQUdJO0E3QnkrVEo7O0E2QnQrVEE7RUFDSTtFQUNBO0E3QnkrVEo7O0E2QnQrVEE7RUFDSTtBN0J5K1RKO0E2QnYrVEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBN0J5K1RSOztBNkJyK1RBOzs7OztFQUtJO0VBQ0E7RUFDQTtBN0J3K1RKOztBNkJyK1RBO0VBQ0k7RUFDQTtBN0J3K1RKOztBNkJyK1RBOztFQUVJO0E3QncrVEo7O0E2QnIrVEE7RUFDSTtBN0J3K1RKO0E2QnQrVEk7RUFFSTtFQUNBO0E3QnUrVFI7O0E2Qm4rVEE7OztFQUdJO0VBQ0E7RUFDQTtBN0JzK1RKOztBNkJuK1RBO0VBQ0k7RUFDQTtBN0JzK1RKOztBNkJuK1RBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7QTdCcStUSjs7QTZCbCtUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E3QnErVEo7O0E2QmwrVEE7RUFDSTtFQUNBO0VBQ0E7QTdCcStUSjs7QTZCbCtUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JxK1RKO0E2Qm4rVEk7RUFFSTtFQUNBO0VBQ0E7QTdCbytUUjtBNkJqK1RJO0VBQ0k7RUFDQTtBN0JtK1RSO0E2QmgrVEk7RUFDSTtBN0JrK1RSOztBNkI1OVRJO0VBQ0k7QTdCKzlUUjtBNkI1OVRJO0VBQ0k7QTdCODlUUjs7QTZCMTlUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E3QjY5VEo7O0E2QjE5VEE7RUFFSTtJQUNJO0U3QjQ5VE47RTZCejlURTs7Ozs7OztJQU9JO0lBQ0E7SUFDQTtFN0IyOVROO0FBQ0Y7QThCbm9VQTs7Ozs7Ozs7Ozs7RUFBQTtBQWFBO0VBSUk7RUFDQTtFQUNBO0VBQ0E7QTlCaW9VSjtBOEIvblVJOztFQUVJO0VBQ0E7RUFDQTtBOUJpb1VSO0E4QnpuVUk7RUFDSTtFQUNBO0VBQ0E7QTlCMm5VUjtBOEJsblVJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0E5Qm9uVVI7QThCam5VSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5Qm1uVVI7QThCam5VUTtFQUNJO0VBQ0E7QTlCbW5VWjtBOEI1bVVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUI4bVVSO0E4QnptVVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUIybVVaO0E4QnhtVVE7RUFDSTtFQUNBO0E5QjBtVVo7QThCdm1VUTtFQUVJO0VBQ0E7RUFDQTtBOUJ3bVVaO0E4Qm5tVVE7RUFDSTtBOUJxbVVaO0E4Qi9sVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJpbVVSO0E4Qi9sVVE7RUFFSTtFQUNBO0E5QmdtVVo7QThCN2xVUTtFQUNJO0VBQ0E7QTlCK2xVWjtBOEJ4bFVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTlCMGxVUjs7QThCdGxVQTtFQUNJO0VBQ0E7RUFDQTtBOUJ5bFVKO0E4QnZsVUk7RUFFSTtFQUNBO0VBQ0E7QTlCd2xVUjtBOEJybFVJO0VBQ0k7QTlCdWxVUjs7QThCaGxVQTtFQUVJO0lBQ0k7RTlCa2xVTjtBQUNGO0ErQnJ2VUE7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBZ0NBO0VBRUk7SUFDSTtJQUNBO0UvQnN1VU47RStCbnVVRTs7SUFFSTtFL0JxdVVOO0FBQ0Y7QStCbHVVQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBL0JvdVVKO0ErQi90VUk7O0VBQ0k7QS9Ca3VVUjtBK0I1dFVJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0EvQit0VVI7QStCNXRVSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQit0VVI7QStCNXRVSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0IrdFVSO0ErQjV0VUk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQit0VVI7QStCMXRVSTs7RUFDSTtBL0I2dFVSO0ErQjF0VUk7O0VBQ0k7RUFDQTtBL0I2dFVSO0ErQjN0VVE7O0VBQ0k7RUFDQTtBL0I4dFVaO0ErQnZ0VUk7O0VBQ0k7RUFDQTtBL0IwdFVSO0ErQnZ0VUk7O0VBQ0k7RUFDQTtFQUNBO0EvQjB0VVI7QStCdnRVSTs7RUFDSTtBL0IwdFVSO0ErQnh0VVE7O0VBQ0k7QS9CMnRVWjtBK0J4dFVROztFQUNJLGFBdkhPO0VBd0hQO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CMnRVWjtBK0J4dFVZOzs7O0VBRUk7QS9CNHRVaEI7QStCenRVWTs7RUFDSSxlQXpJSTtFQTBJSixnQkExSUk7RUE2SUo7RUFDQTtBL0IwdFVoQjtBK0J4dFVnQjs7RUFDSTtFQUNBO0VBQ0E7QS9CMnRVcEI7QStCdnRVWTs7RUFDSTtBL0IwdFVoQjtBK0JydFVZOztFQUNJO0VBQ0E7QS9Cd3RVaEI7QStCdHRVZ0I7O0VBQ0k7QS9CeXRVcEI7QStCcnRVWTs7RUFDSTtFQUNBO0VBQ0E7QS9Cd3RVaEI7QStCbHRVWTs7RUFDSTtFQUNBO0VBQ0E7QS9CcXRVaEI7QStCbnRVZ0I7Ozs7RUFFSTtBL0J1dFVwQjtBK0JwdFVnQjs7RUFDSTtFQUNBO0EvQnV0VXBCO0ErQnJ0VW9COztFQUNJO0EvQnd0VXhCO0ErQi9zVVk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUlBO0VBQ0E7RUFDQSxtREEzTUU7RUE0TUY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0Irc1VoQjtBK0J4c1VZOztFQUNJO0VBQ0E7QS9CMnNVaEI7QStCbHNVUTs7RUFDSTtBL0Jxc1VaO0ErQm5zVVk7O0VBQ0k7QS9Cc3NVaEI7QStCbHNVUTs7RUFDSTtBL0Jxc1VaO0ErQmhzVVE7Ozs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQm9zVVo7QStCN3JVUTs7RUFDSTtFQUNBO0VBQ0EsZ0JBeFFZO0VBeVFaO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CZ3NVWjtBK0I5clVZOztFQUNJO0VBQ0EsNEJBOVFPO0VBK1FQO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QS9CaXNVaEI7QStCOXJVZ0I7OztFQUVJO0VBQ0E7QS9CaXNVcEI7QStCM3JVZ0I7O0VBQ0k7RUFDQTtBL0I4clVwQjtBK0IzclVnQjs7RUFDSTtFQUNBO0VBQ0E7QS9COHJVcEI7QStCeHJVSTs7RUFDSTtFQUNBO0VBQ0E7QS9CMnJVUjtBK0J4clVJOztFQUNJO0VBQ0E7RUFDQSxhQTFUVztFQTJUWDtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0IyclVSO0ErQnpyVVE7OztFQUVJO0VBQ0E7QS9CNHJVWjtBK0J6clVROztFQUNJO0VBQ0E7QS9CNHJVWjs7QStCcnJVQTtFQUlRO0lBQ0k7RS9CcXJVVjtFK0JuclVVOztJQUVJO0UvQnFyVWQ7RStCbHJVVTtJQUNJO0UvQm9yVWQ7RStCanJVVTtJQUNJO0lBQ0E7RS9CbXJVZDtFK0JoclVVOzs7OztJQUtJO0UvQmtyVWQ7RStCL3FVVTtJQUNJO0UvQmlyVWQ7RStCOXFVVTtJQUNJO0lBQ0E7RS9CZ3JVZDtFK0I5cVVjO0lBQ0k7RS9CZ3JVbEI7RStCNXFVVTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFL0I4cVVkO0UrQjVxVWM7SUFDSTtJQUNBO0UvQjhxVWxCO0UrQjVxVWtCO0lBRUk7SUFDQTtFL0I2cVV0QjtFK0J4cVVVO0lBQ0k7RS9CMHFVZDtFK0J2cVVVO0lBQ0k7SUFDQTtFL0J5cVVkO0UrQnRxVVU7SUFDSTtFL0J3cVVkO0FBQ0Y7QStCN3BVQTtFQUVJO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RS9COHBVTjtFK0I1cFVNO0lBQ0k7SUFDQTtFL0I4cFVWO0UrQnZwVUU7SUFFSTtNQUNJO01BQ0E7SS9Cd3BVUjtFQUNGO0FBQ0Y7QStCbHBVQTtFQUVJO0lBQ0k7RS9CbXBVTjtBQUNGO0ErQjdvVUE7RUFJUTtJQUNJO0UvQjRvVVY7RStCem9VTTtJQUNJO0lBQ0E7RS9CMm9VVjtFK0J6b1VVO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RS9CMG9VZDtFK0Jsb1VNO0lBQ0k7SUFDQTtFL0Jvb1VWO0UrQmxvVVU7SUFDSTtJQUNBO0lBQ0E7RS9Cb29VZDtFK0Jsb1VjO0lBQ0k7SUFDQTtFL0Jvb1VsQjtFK0Jqb1VjO0lBRUk7SUFDQTtJQUNBO0UvQmtvVWxCO0UrQjluVVU7SUFDSTtJQUNBO0UvQmdvVWQ7RStCOW5VYztJQUVJO0lBQ0E7RS9CK25VbEI7RStCNW5VYztJQUNJO0lBQ0E7RS9COG5VbEI7QUFDRjtBZ0MzcVZBOzs7OztFQUFBO0FBV0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEN3cVZKO0FnQ3JxVkk7O0VBQ0k7RUFDQTtBaEN3cVZSO0FnQ3JxVkk7O0VBQ0k7QWhDd3FWUjs7QWdDaHFWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQ21xVko7QWdDL3BWSTtFQUNJO0VBQ0E7QWhDaXFWUjs7QWdDdnBWSTtFQUNJO0VBQ0E7RUFDQTtBaEMwcFZSO0FnQ3ZwVkk7O0VBRUk7RUFDQTtBaEN5cFZSO0FnQ3RwVlE7O0VBQ0k7RUFDQTtBaEN5cFZaO0FnQ3JwVkk7RUFDSTtFQUNBO0VBQ0E7QWhDdXBWUjs7QWdDL29WQTs7O0VBR0k7RUFDQTtFQUNBO0VBQ0E7QWhDa3BWSjtBZ0NocFZJOzs7RUFDSTtBaENvcFZSOztBZ0M1b1ZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEMrb1ZKO0FnQzVvVkk7RUFDSTtFQUNBO0FoQzhvVlI7O0FnQzFvVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEM2b1ZKO0FnQzNvVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEM2b1ZSO0FnQzNvVlE7RUFDSTtBaEM2b1ZaO0FnQzFvVlE7RUFDSTtBaEM0b1ZaO0FnQ3hvVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQzBvVlI7O0FnQ2hvVkk7RUFDSTtFQUNBO0VBQ0E7QWhDbW9WUjtBZ0Nqb1ZRO0VBQ0k7RUFDQTtBaENtb1ZaO0FnQy9uVkk7RUFDSTtBaENpb1ZSO0FnQy9uVlE7RUFDSTtFQUNBO0FoQ2lvVlo7QWdDL25WWTs7RUFFSTtBaENpb1ZoQjtBZ0MxblZJO0VBQ0k7QWhDNG5WUjtBZ0MxblZRO0VBQ0k7QWhDNG5WWjs7QWdDam5WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQ29uVlI7QWdDbG5WUTtFQUNJO0VBQ0E7QWhDb25WWjs7QWdDM21WQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQzhtVko7QWdDNW1WSTtFQUNJO0FoQzhtVlI7QWdDM21WSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQzZtVlI7QWdDeG1WUTs7RUFFSTtBaEMwbVZaOztBZ0MvbFZJO0VBQ0k7QWhDa21WUjtBZ0MvbFZJO0VBQ0k7RUFDQTtBaENpbVZSO0FnQzlsVkk7O0VBRUk7QWhDZ21WUjs7QWdDeGxWQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDMmxWSjtBZ0N6bFZJOztFQUNJO0VBQ0E7QWhDNGxWUjs7QWdDeGxWQTs7RUFFSTtBaEMybFZKO0FnQ3psVkk7O0VBQ0k7RUFDQTtBaEM0bFZSOztBZ0N4bFZBO0VBQ0k7RUFDQTtFQUNBO0FoQzJsVko7O0FnQ3hsVkE7RUFDSTtFQUNBO0VBQ0E7QWhDMmxWSjs7QWdDcGxWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0FoQ3NsVko7QWdDcGxWSTtFQUVJO0VBQ0E7QWhDcWxWUjtBZ0NsbFZJO0VBQ0k7RUFDQTtBaENvbFZSO0FnQ2xsVlE7RUFDSTtFQUNBO0FoQ29sVlo7QWdDaGxWSTtFQUNJO0VBQ0E7QWhDa2xWUjtBZ0Mva1ZJO0VBQ0k7RUFDQTtFQUNBO0FoQ2lsVlI7O0FnQzNrVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBaEM2a1ZKO0FnQzNrVkk7RUFFSTtFQUNBO0FoQzRrVlI7O0FnQ3BrVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEN1a1ZKO0FnQ3JrVkk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QWhDdWtWUjs7QWdDL2pWQTs7Ozs7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQ2lrVko7QWdDN2pWSTtFQUNJO0VBQ0E7RUFDQTtBaEMralZSO0FnQzFqVkk7RUFDSTtBaEM0alZSOztBZ0NwalZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhDdWpWSjtBZ0NyalZJOztFQUVJO0FoQ3VqVlI7O0FnQzdpVkk7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0FoQ2dqVlI7QWdDOWlWUTtFQVJKOzs7SUFTUTtFaENtalZWO0FBQ0Y7QWdDaGpWSTtFQUNJO0VBQ0E7RUFDQTtBaENralZSO0FnQ2hqVlE7RUFMSjtJQU1RO0lBQ0E7RWhDbWpWVjtBQUNGOztBZ0N6aVZJOztFQUVJO0FoQzRpVlI7QWdDemlWSTs7RUFFSTtFQUNBO0FoQzJpVlI7QWdDeGlWSTtFQUNJO0VBQ0E7QWhDMGlWUjs7QWdDL2hWQTtFQUNJO0FoQ2tpVko7O0FnQzNoVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEM4aFZKO0FnQzVoVkk7RUFDSTtFQUNBO0FoQzhoVlI7O0FnQzFoVkE7RUFDSTtFQUNBO0VBQ0E7QWhDNmhWSjtBZ0MzaFZJO0VBQ0k7RUFDQTtBaEM2aFZSO0FnQzFoVkk7RUFDSTtBaEM0aFZSOztBZ0NsaFZBO0VBQ0k7QWhDcWhWSjs7QWdDNWdWQTtFQUNJO0FoQytnVko7O0FnQzVnVkE7RUFFSTtJQUNJO0VoQzhnVk47RWdDemdWTTtJQUNJO0lBQ0E7RWhDMmdWVjtFZ0N2Z1ZFO0lBQ0k7RWhDeWdWTjtFZ0N0Z1ZFO0lBQ0k7SUFDQTtFaEN3Z1ZOO0VnQ3RnVk07SUFDSTtJQUNBO0VoQ3dnVlY7QUFDRjtBaUM5a1dBOzs7Ozs7RUFBQTtBQVlBOztFQUVJO0VBQ0E7RUFDQTtBakMya1dKO0FpQ3ZrV0k7O0VBQ0k7RUFDQTtFQUNBO0FqQzBrV1I7QWlDdmtXSTs7RUFDSTtFQUNBO0VBQ0E7QWpDMGtXUjtBaUN4a1dROztFQUNJO0VBQ0E7QWpDMmtXWjtBaUNya1dROztFQUNJO0VBQ0E7QWpDd2tXWjtBaUNoa1dROztFQUNJO0VBQ0E7RUFDQTtBakNta1daO0FpQ2hrV1E7O0VBQ0k7QWpDbWtXWjtBaUMvaldJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDa2tXUjtBaUMvaldJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDa2tXUjtBaUMvaldJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQ2trV1I7QWlDL2pXSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ2trV1I7QWlDL2pXSTs7RUFDSTtFQUNBO0VBQ0E7QWpDa2tXUjtBaUMvaldJOztFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQ2trV1I7QWlDOWpXSTtFQUVJOztJQUNJO0lBQ0E7RWpDZ2tXVjtFaUM5aldVOztJQUNJO0lBQ0E7RWpDaWtXZDtFaUM3aldNOztJQUNJO0lBQ0E7SUFDQTtFakNna1dWO0VpQzdqV007OztJQUNJO0VqQ2lrV1Y7QUFDRjs7QWlDdGpXSTtFQUNJO0VBQ0E7RUFDQTtBakN5aldSO0FpQ3BqV0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQ3NqV1I7QWlDcGpXUTtFQUNJO0VBQ0E7RUFDQTtBakNzaldaO0FpQ3BqV1k7RUFDSTtBakNzaldoQjtBaUNualdZO0VBQ0k7QWpDcWpXaEI7QWlDampXUTtFQUNJO0FqQ21qV1o7QWlDL2lXSTtFQUNJO0FqQ2lqV1I7QWlDL2lXUTtFQUNJO0FqQ2lqV1o7QWlDNWlXUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQzhpV1o7QWlDemlXUTtFQUNJO0VBQ0E7QWpDMmlXWjtBaUN0aVdROztFQUVJO0VBQ0E7RUFDQTtFQUNBO0FqQ3dpV1o7QWlDcGlXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpDc2lXUjtBaUNuaVdJO0VBQ0k7QWpDcWlXUjtBaUNoaVdJO0VBQ0k7RUFDQTtFQUNBO0FqQ2tpV1I7QWlDaGlXUTtFQUNJO0VBQ0E7QWpDa2lXWjtBaUM5aFdJO0VBQ0k7QWpDZ2lXUjtBaUM3aFdJO0VBRUk7SUFDSTtFakM4aFdWO0FBQ0Y7O0FpQ2xoV1E7O0VBRUk7RUFDQTtBakNxaFdaO0FpQ2poV0k7RUFDSTtFQUNBO0FqQ21oV1I7QWlDaGhXSTtFQUNJO0VBQ0E7QWpDa2hXUjtBaUNoaFdRO0VBQ0k7RUFDQTtBakNraFdaO0FpQy9nV1E7RUFDSTtFQUNBO0FqQ2loV1o7QWlDOWdXUTtFQUNJO0VBQ0E7QWpDZ2hXWjtBaUM1Z1dJO0VBQ0k7RUFDQTtBakM4Z1dSOztBa0N6eVdBOzs7RUFBQTtBQWFBO0VBQ0k7RUFDQTtFQUNBO0FsQ215V0o7O0FrQ2h5V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ215V0o7QWtDanlXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENteVdSO0FrQ2p5V1E7RUFFSTtFQUNBO0FsQ2t5V1o7QWtDL3hXUTtFQUNJO0VBQ0E7QWxDaXlXWjs7QWtDNXhXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQyt4V0o7QWtDN3hXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQyt4V1I7QWtDNXhXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQzh4V1I7O0FrQzF4V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDNnhXSjs7QW1DanlXSTtFRFVBO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RWxDMnhXTjtFa0N6eFdNO0lBQ0k7RWxDMnhXVjtFa0N4eFdNO0lBQ0k7RWxDMHhXVjtFa0N0eFdFO0lBQ0k7RWxDd3hXTjtBQUNGO0FrQ2p4V0E7RUFDSTtBbENteFdKO0FrQ2p4V0k7RUFDSTtBbENteFdSO0FrQ2h4V0k7RUFDSTtBbENreFdSO0FtQzUwV0k7RUR5REE7SUFJUTtFbENteFdWO0FBQ0Y7QWtDaHhXSTtFQUNJO0VBQ0E7QWxDa3hXUjtBbUNyMVdJO0VEaUVBO0lBS1E7RWxDbXhXVjtBQUNGO0FrQzd3V0k7RUFDSTtBbEMrd1dSO0FrQ3p3V0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEMyd1dSO0FrQ3p3V1E7RUFDSTtBbEMyd1daO0FrQ3J3V0k7RUFDSTtBbEN1d1dSOztBa0M3dldJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FsQzh2V1I7QWtDNXZXUTtFQUNJO0VBQ0E7RUFDQTtBbEM4dldaO0FrQzF2V0k7RUFDSTtFQUNBO0VBQ0E7QWxDNHZXUjtBa0MxdldRO0VBRUk7RUFDQTtBbEMydldaOztBa0NsdldBO0VBQ0k7RUFDQTtBbENxdldKO0FrQ252V0k7RUFDSTtBbENxdldSO0FrQ2x2V0k7RUFDSTtFQUNBO0VBQ0E7QWxDb3ZXUjtBa0NsdldRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENvdldaO0FrQ2h2V0k7RUFDSTtBbENrdldSO0FrQ2h2V1E7RUFDSTtFQUNBO0VBQ0E7QWxDa3ZXWjs7QWtDdnVXSTtFQUNJO0VBQ0E7QWxDMHVXUjtBa0N2dVdJO0VBQ0k7RUFDQTtFQUNBO0FsQ3l1V1I7O0FrQy90V0k7RUFDSTtBbENrdVdSO0FrQ2h1V1E7RUFDSTtBbENrdVdaO0FrQy90V1E7RUFDSTtFQUNBO0FsQ2l1V1o7QWtDOXRXUTtFQUNJO0FsQ2d1V1o7QWtDNXRXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxDOHRXUjtBa0M1dFdRO0VBQ0k7QWxDOHRXWjs7QWtDcnRXQTtFQUlROzs7SUFHSTtFbENxdFdWO0FBQ0Y7QWtDeHNXSTtFQUNJO0VBQ0E7QWxDMHNXUjtBa0N4c1dRO0VBQ0k7RUFDQTtBbEMwc1daO0FrQ3ZzV1E7RUFDSTtBbEN5c1daO0FrQ3JzV0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEN1c1dSO0FrQ2pzV0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQ21zV1I7QWtDaHNXSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbENrc1dSO0FrQ2hzV1E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7QWxDZ3NXWjtBa0MxcldJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQzRyV1I7QWtDenJXSTtFQUNJO0FsQzJyV1I7QWtDdHJXUTtFQUNJO0FsQ3dyV1o7QWtDcnJXUTtFQUNJO0FsQ3VyV1o7O0FvQzdrWEE7Ozs7O0VBQUE7QUFXQTtFQUNJO0VBQ0E7RUFDQTtBcEMya1hKOztBb0N4a1hBO0VBQ0k7QXBDMmtYSjtBb0N6a1hJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDMmtYUjs7QW9DdmtYQTtFQUNJO0FwQzBrWEo7QW9DeGtYSTtFQUNJO0FwQzBrWFI7O0FvQ3RrWEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEN5a1hKOztBb0N0a1hBOztFQUVJO0FwQ3lrWEo7QW9DdmtYSTs7RUFDSTtFQUNBO0FwQzBrWFI7O0FvQ3RrWEE7RUFDSTtFQUNBO0FwQ3lrWEo7O0FvQ3RrWEE7RUFFSTtJQUNJO0VwQ3drWE47RW9DcmtYRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VwQ3VrWE47RW9DcmtYTTtJQUNJO0VwQ3VrWFY7QUFDRjtBb0Nua1hBO0VBRUk7O0lBRUk7RXBDb2tYTjtFb0Nqa1hFOztJQUVJO0VwQ21rWE47QUFDRjtBb0MzalhBO0VBQ0k7RUFDQTtFQU9BO0FwQ3VqWEo7QW9DcmpYSTtFQVhKO0lBWVE7RXBDd2pYTjtBQUNGO0FvQ3RqWEk7RUFmSjtJQWdCUTtFcEN5alhOO0FBQ0Y7O0FvQ3RqWEE7RUFHSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFLQTtBcENtalhKO0FvQzlpWEk7RUFsQko7SUFtQlE7RXBDaWpYTjtBQUNGO0FvQ3hpWEk7RUFDSTtFQUNBO0FwQzBpWFI7QW9DbGlYUTtFQURKO0lBRVE7RXBDcWlYVjtBQUNGO0FvQ25pWFE7RUFDSTtBcENxaVhaOztBb0NoaVhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDbWlYSjs7QW9DaGlYQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ21pWEo7QW9DamlYSTtFQUNJO0VBQ0E7QXBDbWlYUjtBb0NoaVhJO0VBQ0k7RUFDQTtBcENraVhSO0FvQy9oWEk7RUFDSTtFQUNBO0FwQ2lpWFI7QW9DOWhYSTtFQUNJO0VBQ0E7QXBDZ2lYUjtBb0M3aFhJO0VBQ0k7RUFDQTtBcEMraFhSOztBb0MzaFhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDOGhYSjs7QW9DM2hYQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDOGhYSjs7QW9DM2hYQTtFQUtJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMwaFhKO0FvQ3JoWEk7RUFDSTtBcEN1aFhSO0FvQzdnWEk7RUFDSTtBcEMrZ1hSOztBb0MzZ1hBO0VBQ0k7RUFDQTtFQUNBO0FwQzhnWEo7O0FvQ2hnWEE7Ozs7RUFJSTtFQUNBO0FwQ21nWEo7O0FvQ2hnWEE7Ozs7RUFJSTtFQUNBO0FwQ21nWEo7O0FvQ2hnWEE7Ozs7RUFJSTtFQUNBO0VBQ0E7QXBDbWdYSjs7QW9DNS9XQTtFQUNJO0VBQ0E7QXBDKy9XSjs7QW9DNS9XQTtFQUNJO0FwQysvV0o7QW9DNy9XSTtFQUNJO0VBQ0E7QXBDKy9XUjtBb0M1L1dJO0VBQ0k7QXBDOC9XUjs7QW9DMS9XQTtFQUNJO0FwQzYvV0o7O0FvQzEvV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzYvV0o7O0FvQzEvV0E7RUFDSTtBcEM2L1dKOztBb0MxL1dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFPQTtFQUNBO0VBQ0E7RUFDQTtBcEN1L1dKOztBb0NwL1dBO0VBQ0k7RUFDQTtFQUNBO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ28vV0o7O0FvQ2ovV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENvL1dKOztBb0NqL1dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ28vV0o7O0FvQ2ovV0E7RUFLSTtFQUNBO0FwQ2cvV0o7O0FvQzcrV0E7RUFDSTtFQUNBO0FwQ2cvV0o7O0FvQ3grV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDMitXSjs7QW9DeCtXQTtFQUlJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN3K1dKO0FvQ3QrV0k7RUFDSTtFQUNBO0FwQ3crV1I7O0FvQ3ArV0E7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBcENxK1dKOztBb0NsK1dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDcStXSjs7QW9DOTlXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENpK1dKOztBb0M5OVdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2krV0o7O0FvQzk5V0E7RUFDSTtFQUNBO0FwQ2krV0o7O0FvQzk5V0E7RUFDSTtFQUNBO0VBQ0E7QXBDaStXSjs7QW9DNTlXSTtFQUNJO0VBQ0E7QXBDKzlXUjs7QW9DMzlXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDODlXSjtBb0M1OVdJO0VBQ0k7QXBDODlXUjtBb0MzOVdJO0VBQ0k7QXBDNjlXUjtBb0MxOVdJO0VBQ0k7QXBDNDlXUjtBb0N6OVdJO0VBQ0k7QXBDMjlXUjs7QW9DdjlXQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN5OVdKO0FvQ3Y5V0k7RUFDSTtFQUNBO0FwQ3k5V1I7QW9DdDlXSTtFQUNJO0VBQ0E7QXBDdzlXUjtBb0NyOVdJO0VBQ0k7RUFDQTtBcEN1OVdSO0FvQ3A5V0k7RUFDSTtFQUNBO0FwQ3M5V1I7O0FvQ2w5V0E7RUFDSTtFQUNBO0VBQ0E7QXBDcTlXSjs7QW9DbDlXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3E5V0o7QW9DbDlXSTtFQUNJO0FwQ285V1I7QW9DajlXSTtFQUNJO0VBQ0E7QXBDbTlXUjtBb0NoOVdJO0VBQ0k7QXBDazlXUjtBb0NoOVdRO0VBQ0k7QXBDazlXWjtBb0MvOFdRO0VBQ0k7QXBDaTlXWjs7QW9DNThXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDKzhXSjs7QW9DNThXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQys4V0o7O0FvQzU4V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEMrOFdKOztBb0M1OFdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDKzhXSjs7QW9DNThXQTtFQUNJO0VBQ0E7RUFDQTtBcEMrOFdKOztBb0M1OFdBO0VBQ0k7RUFDQTtFQUNBO0FwQys4V0o7O0FvQ3g4V0E7RUFDSTtFQUNBO0VBQ0E7QXBDMjhXSjs7QW9DeDhXQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzI4V0o7QW9DdjhXSTtFQUNJO0VBQ0E7QXBDeThXUjtBb0N0OFdJO0VBQ0k7RUFDQTtBcEN3OFdSO0FvQ3I4V0k7RUFDSTtFQUNBO0FwQ3U4V1I7QW9DcjhXUTtFQUNJO0FwQ3U4V1o7QW9DbjhXSTtFQUNJO0VBQ0E7QXBDcThXUjtBb0NuOFdRO0VBQ0k7QXBDcThXWjtBb0NqOFdJO0VBQ0k7RUFDQTtBcENtOFdSO0FvQ2o4V1E7RUFDSTtBcENtOFdaO0FvQy83V0k7RUFDSTtFQUNBO0FwQ2k4V1I7QW9DLzdXUTtFQUNJO0FwQ2k4V1o7QW9DNzdXSTtFQUVJO0lBRUk7SUFDQTtFcEM2N1dWO0FBQ0Y7O0FvQ3o3V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzQ3V0o7O0FvQ3o3V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzQ3V0o7O0FvQ3A3V0E7RUFDSTtFQUNBO0FwQ3U3V0o7O0FvQ3A3V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3U3V0o7QW9DcjdXSTtFQUNJO0FwQ3U3V1I7O0FvQ243V0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3M3V0o7QW9DcDdXSTtFQUNJO0VBQ0E7QXBDczdXUjtBb0NuN1dJO0VBRUk7RUFDQTtBcENvN1dSO0FvQ2o3V0k7RUFDSTtFQUNBO0FwQ203V1I7QW9DaDdXSTtFQUNJO0VBQ0E7QXBDazdXUjtBb0MvNldJO0VBQ0k7RUFDQTtBcENpN1dSOztBb0M3NldBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENnN1dKOztBb0M3NldBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENnN1dKOztBb0M1NldBO0VBQ0k7RUFLQTtBcEMyNldKOztBb0N4NldBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzI2V0o7QW9DejZXSTtFQUNJO0VBQ0E7QXBDMjZXUjtBb0N4NldJO0VBQ0k7RUFDQTtBcEMwNldSOztBb0N0NldBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN5NldKOztBb0N0NldBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ3k2V0o7QW9DdjZXSTtFQUNJO0FwQ3k2V1I7QW9DdDZXSTtFQUNJO0VBQ0E7RUFDQTtBcEN3NldSO0FvQ3I2V0k7RUFDSTtBcEN1NldSOztBb0NuNldBO0VBR0k7QXBDbzZXSjs7QW9DajZXQTtFQUNJO0VBQ0E7RUFDQTtBcENvNldKOztBb0NqNldBO0VBQ0k7QXBDbzZXSjs7QXFDbnhZQTs7Ozs7RUFBQTtBQWFJO0VBQ0k7QXJDK3dZUjs7QXFDM3dZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDOHdZSjs7QXFDM3dZQTtFQUNJO0FyQzh3WUo7O0FxQzN3WUE7RUFDSTtFQUNBO0VBQ0E7QXJDOHdZSjs7QXFDM3dZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzh3WUo7QXFDMXdZSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzR3WVI7QXFDendZSTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0FyQzB3WVI7QXFDdndZSTtFQUNJO0VBQ0E7QXJDeXdZUjs7QXFDcndZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckN3d1lKOztBcUNyd1lBOztFQUVJO0FyQ3d3WUo7O0FxQ3J3WUE7RUFDSTtFQUNBO0VBQ0E7QXJDd3dZSjs7QXFDcndZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQ3d3WUo7O0FxQ3J3WUE7RUFDSTtBckN3d1lKO0FxQ3R3WUk7RUFDSTtFQUNBO0FyQ3d3WVI7QXFDcndZSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDdXdZUjtBcUNwd1lJO0VBQ0k7QXJDc3dZUjtBcUNud1lJO0VBQ0k7RUFDQTtFQUNBO0FyQ3F3WVI7O0FxQzd2WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDZ3dZSjs7QXFDN3ZZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQ2d3WUo7O0FxQzd2WUE7RUFDSTtBckNnd1lKOztBcUM3dllBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckNnd1lKO0FxQzl2WUk7RUFFSTtBckMrdllSOztBcUMzdllBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckM4dllKOztBcUMzdllBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzh2WUo7O0FxQzN2WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzh2WUo7O0FxQzN2WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDOHZZSjtBcUM1dllJO0VBQ0k7RUFDQTtFQUNBO0FyQzh2WVI7QXFDNXZZUTtFQUNJO0FyQzh2WVo7O0FxQ3p2WUE7RUFDSTtFQUNBO0VBQ0E7QXJDNHZZSjs7QXFDcnZZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckN3dllKOztBcUNydllBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3d2WUo7O0FxQ252WUE7RUFDSTtBckNzdllKOztBcUNodllBOztFQUVJO0FyQ212WUo7O0FxQ2h2WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckNtdllKOztBcUM1dVlBO0VBQ0k7QXJDK3VZSjtBcUM3dVlJO0VBQ0k7QXJDK3VZUjs7QXFDM3VZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDOHVZSjs7QXFDM3VZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzh1WUo7O0FxQzN1WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckM4dVlKOztBcUNydVlJO0VBQ0k7RUFDQTtBckN3dVlSO0FxQ3J1WUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3V1WVI7QXFDcHVZSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckNzdVlSO0FxQ3B1WVE7RUFDSTtFQUNBO0FyQ3N1WVo7QXFDbnVZUTtFQUNJO0VBQ0E7QXJDcXVZWjtBcUNsdVlRO0VBQ0k7RUFDQTtFQUNBO0FyQ291WVo7QXFDaHVZSTtFQUNJO0FyQ2t1WVI7O0FxQzV0WUk7RUFDSTtBckMrdFlSOztBcUN2dFlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckMwdFlKOztBcUN2dFlBO0VBQ0k7RUFDQTtFQUNBO0FyQzB0WUo7O0FxQ3Z0WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckMwdFlKO0FxQ3R0WUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ3d0WVI7QXFDcnRZSTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0FyQ3N0WVI7QXFDbnRZSTtFQUNJO0VBQ0E7QXJDcXRZUjs7QXFDanRZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDb3RZSjs7QXFDanRZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDb3RZSjs7QXFDanRZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDb3RZSjs7QXFDanRZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQ290WUo7O0FxQ2p0WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQ290WUo7O0FxQ2p0WUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDb3RZSjs7QXFDanRZQTtFQUNJO0FyQ290WUo7O0FxQzdzWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckNndFlKOztBcUM3c1lBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDZ3RZSjtBcUM5c1lJO0VBQ0k7RUFDQTtBckNndFlSOztBcUN4c1lBOztFQUVJO0VBQ0E7QXJDMnNZSjtBcUN6c1lJOztFQUNJO0FyQzRzWVI7QXFDenNZSTs7RUFDSTtFQUNBO0VBQ0E7QXJDNHNZUjtBcUN6c1lJOztFQUNJO0FyQzRzWVI7O0FxQ3hzWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDMnNZSjs7QXFDeHNZQTtFQUNJO0VBQ0E7QXJDMnNZSjs7QXFDeHNZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzJzWUo7QXFDenNZSTtFQUNJO0FyQzJzWVI7O0FxQ3ZzWUE7RUFDSTtFQUNBO0VBQ0E7QXJDMHNZSjs7QXFDdnNZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzBzWUo7O0FxQ3ZzWUE7RUFDSTtBckMwc1lKO0FxQ3hzWUk7RUFDSTtFQUNBO0FyQzBzWVI7QXFDeHNZUTtFQUNJO0FyQzBzWVo7O0FxQ2pzWUE7RUFDSTtFQUNBO0VBQ0E7QXJDb3NZSjs7QXFDanNZQTtFQUNJO0VBQ0E7RUFDQTtBckNvc1lKO0FxQ2xzWUk7RUFDSTtFQUNBO0FyQ29zWVI7QXFDanNZSTtFQUNJO0FyQ21zWVI7O0FxQzNyWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDOHJZSjs7QXFDdnJZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FyQzByWUo7O0FxQ3ZyWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBckMwcllKOztBcUNucllBO0VBQ0k7RUFDQTtFQUNBO0FyQ3NyWUo7O0FxQ25yWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDc3JZSjs7QXFDbnJZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDc3JZSjtBcUNwcllJO0VBQ0k7QXJDc3JZUjs7QXFDbHJZQTtFQUNJO0VBQ0E7QXJDcXJZSjs7QXFDbHJZQTtFQUNJO0FyQ3FyWUo7O0FxQzVxWUk7RUFDSTtFQUNBO0VBQ0E7QXJDK3FZUjtBcUM1cVlJO0VBQ0k7QXJDOHFZUjs7QXFDMXFZQTtFQUNJO0VBQ0E7RUFDQTtBckM2cVlKOztBcUMxcVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQzZxWUo7QXFDM3FZSTtFQUNJO0FyQzZxWVI7O0FxQ3pxWUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJDNHFZSjs7QXFDenFZQTtFQUNJO0VBQ0E7RUFDQTtBckM0cVlKO0FxQzFxWUk7RUFDSTtFQUNBO0FyQzRxWVI7QXFDMXFZUTtFQUNJO0FyQzRxWVo7QXFDeHFZSTtFQUNJO0VBQ0E7QXJDMHFZUjs7QXFDdHFZQTtFQUVJO0lBQ0k7SUFDQTtFckN3cVlOO0FBQ0Y7QXFDanFZQTtFQUVJO0lBQ0k7RXJDa3FZTjtFcUMvcFlFO0lBQ0k7RXJDaXFZTjtFcUM5cFlFO0lBQ0k7RXJDZ3FZTjtBQUNGO0FxQzdwWUE7RUFFSTtJQUNJO0lBQ0E7RXJDOHBZTjtFcUMzcFlFO0lBQ0k7RXJDNnBZTjtFcUMxcFlFO0lBQ0k7SUFDQTtFckM0cFlOO0VxQzFwWU07SUFDSTtFckM0cFlWO0VxQ3hwWUU7SUFDSTtJQUNBO0lBQ0E7RXJDMHBZTjtFcUN4cFlNO0lBQ0k7RXJDMHBZVjtFcUN0cFlFO0lBQ0k7RXJDd3BZTjtFcUNycFlFO0lBQ0k7SUFDQTtJQUNBO0VyQ3VwWU47RXFDcHBZRTtJQUNJO0lBQ0E7RXJDc3BZTjtBQUNGO0FxQy9vWUE7RUFFSTs7Ozs7O0lBTUk7RXJDZ3BZTjtFcUM3b1lFO0lBQ0k7SUFDQTtFckMrb1lOO0FBQ0Y7QXNDLzdaQTs7Ozs7RUFBQTtBQVNBO0VBQ0k7RUFDQTtFQUNBO0F0Qzg3Wko7O0FzQzM3WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBdEM4N1pKOztBc0MzN1pBO0VBQ0k7RUFDQTtFQUNBO0F0Qzg3Wko7O0FzQzM3WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0F0QzQ3Wko7O0FzQ3o3WkE7RUFDSTtFQUNBO0VBQ0E7QXRDNDdaSjs7QXNDejdaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRDNDdaSjtBc0MxN1pJO0VBQ0k7RUFDQTtBdEM0N1pSOztBc0N4N1pBO0VBQ0k7QXRDMjdaSjs7QXNDeDdaQTtFQUNJO0VBQ0E7RUFDQTtBdEMyN1pKOztBc0N4N1pBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXRDMjdaSjs7QXNDeDdaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F0QzI3Wko7QXNDejdaSTtFQUNJO0VBQ0E7QXRDMjdaUjs7QXNDdjdaQTtFQUNJO0F0QzA3Wko7O0FzQ3Y3WkE7RUFDSTtFQUNBO0VBQ0E7QXRDMDdaSjs7QXNDdjdaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F0QzA3Wko7O0F1Q3BpYUE7Ozs7O0VBQUE7QUFTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F2Q29pYUo7QXVDbGlhSTtFQUNJO0VBQ0E7QXZDb2lhUjtBdUNqaWFJO0VBQ0k7QXZDbWlhUjs7QXVDN2hhQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdkNnaWFKOztBdUM3aGFBO0VBRUk7SUFDSTtJQUNBO0V2QytoYU47QUFDRjtBd0Mza2FBOzs7Ozs7O0VBQUE7QUNBQTs7Ozs7RUFBQTtBQ0FBOzs7RUFBQTtBQWFBO0VBQ0k7QTFDa2xhSjs7QTBDM2thQTtFQUNJO0ExQzhrYUo7QTBDNWthSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUM4a2FSO0EwQzVrYVE7RUFDSTtFQUNBO0ExQzhrYVo7QTBDM2thUTtFQUNJO0VBQ0E7RUFDQTtBMUM2a2FaO0EwQzFrYVE7RUFDSTtFQUNBO0VBQ0E7QTFDNGthWjs7QTBDbmthQTtFQUNJO0VBQ0E7QTFDc2thSjs7QTBDbmthQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQ3NrYUo7QTBDcGthSTtFQUNJO0VBQ0E7RUFDQTtBMUNza2FSO0EwQ3BrYVE7RUFDSTtFQUNBO0VBQ0E7QTFDc2thWjtBMENsa2FJO0VBQ0k7RUFDQTtBMUNva2FSO0EwQ2xrYVE7RUFDSTtFQUNBO0ExQ29rYVo7QTBDamthUTtFQUNJO0VBQ0E7QTFDbWthWjtBMEMvamFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTFDaWthUjtBMEM3amFRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDK2phWjtBMEN4amFRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUMwamFaO0EwQ3ZqYVE7RUFDSTtFQUNBO0VBQ0E7QTFDeWphWjtBMEN0amFRO0VBQ0k7RUFDQTtFQUNBO0ExQ3dqYVo7QTBDdGphWTtFQUNJO0ExQ3dqYWhCO0EwQ3JqYVk7RUFDSTtFQUNBO0VBQ0E7QTFDdWphaEI7QTBDbGphSTtFQUNJO0ExQ29qYVI7QTBDamphSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDbWphUjtBMENoamFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUNramFSO0EwQy9pYUk7RUFDSTtFQUNBO0VBQ0E7QTFDaWphUjtBMEM5aWFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDZ2phUjtBMEM5aWFRO0VBQ0k7RUFDQTtBMUNnamFaO0EwQzVpYUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQzhpYVI7O0EwQ3BpYUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUN1aWFSO0EwQ3BpYUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQ3NpYVI7O0EwQ2xpYUE7RUFDSTtFQUNBO0ExQ3FpYUo7O0EwQ2xpYUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQ3FpYUo7QTBDbmlhSTtFQUNJO0VBQ0E7RUFDQTtBMUNxaWFSO0EwQ25pYVE7RUFDSTtFQUNBO0VBQ0E7QTFDcWlhWjtBMENsaWFRO0VBQ0k7RUFDQTtFQUNBO0ExQ29pYVo7QTBDaGlhSTtFQUNJO0ExQ2tpYVI7QTBDL2hhSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDaWlhUjtBMEM5aGFJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUNnaWFSO0EwQzloYVE7RUFDSTtFQUNBO0ExQ2dpYVo7QTBDNWhhSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUM4aGFSO0EwQzVoYVE7RUFDSTtFQUNBO0VBQ0E7QTFDOGhhWjtBMEMzaGFRO0VBQ0k7RUFDQTtFQUNBO0ExQzZoYVo7QTBDemhhSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDMmhhUjtBMEN6aGFRO0VBQ0k7QTFDMmhhWjtBMEN4aGFRO0VBQ0k7RUFDQTtBMUMwaGFaO0EwQ3hoYVk7RUFDSTtFQUNBO0ExQzBoYWhCOztBMEMzZ2FRO0VBQ0k7QTFDOGdhWjtBMEM1Z2FZO0VBQ0k7QTFDOGdhaEI7QTBDM2dhWTtFQUNJO0ExQzZnYWhCO0EwQ3BnYVE7RUFDSTtBMUNzZ2FaO0EwQ2pnYVE7RUFDSTtBMUNtZ2FaOztBMEMxL1pBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQzYvWko7O0EwQzEvWkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTFDNi9aSjs7QTBDMS9aQTtFQUNJO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUM0L1pKOztBMEN6L1pBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQzQvWko7O0EwQ3ovWkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUM0L1pKOztBMEN6L1pBO0VBQ0k7RUFDQTtBMUM0L1pKOztBMEN6L1pBO0VBQ0k7RUFDQTtFQUNBO0ExQzQvWko7QTBDeC9aSTtFQUNJO0VBQ0E7RUFDQTtBMUMwL1pSO0EwQ3gvWlE7RUFDSTtBMUMwL1paO0EwQ3YvWlE7RUFDSTtBMUN5L1paO0EwQ3QvWlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUN3L1paOztBbUNuNGFJO0VPbVpBO0lBQ0k7SUFDQTtFMUNvL1pOO0UwQ2ovWkU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0UxQ20vWk47RTBDaC9aRTtJQUVJO01BQ0k7STFDaS9aUjtJMEM5K1pJO01BQ0k7STFDZy9aUjtFQUNGO0FBQ0Y7QTBDMytaQTtFQUNJO0ExQzYrWko7O0FtQzU1YUk7RU93YkE7SUFDSTtJQUNBO0lBQ0E7RTFDdytaTjtFMENyK1pFO0lBQ0k7RTFDdStaTjtFMENsK1pNO0lBQ0k7SUFDQTtJQUNBO0UxQ28rWlY7RTBDbCtaVTs7SUFFSTtFMUNvK1pkO0UwQ2wrWmM7O0lBQ0k7RTFDcStabEI7RTBDNzlaRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTFDKzlaTjtFMEM3OVpNO0lBQ0k7RTFDKzlaVjtFMEM1OVpNO0lBQ0k7RTFDODlaVjtBQUNGO0EwQ3Q5WkE7RUFJUTs7O0lBR0k7RTFDcTlaVjtFMENsOVpNO0lBQ0k7RTFDbzlaVjtBQUNGO0EwQzU4WkE7RUFDSTtBMUM4OFpKO0EwQzE4WlE7RUFDSTtBMUM0OFpaO0EwQ3I4Wkk7RUFDSTtBMUN1OFpSO0EwQ3I4WlE7RUFDSTtBMUN1OFpaOztBMENoOFpBO0VBQ0k7RUFDQTtBMUNtOFpKO0EwQ2o4Wkk7RUFDSTtFQUNBO0ExQ204WlI7QTBDajhaUTtFQUNJO0ExQ204Wlo7QTBDaDhaUTtFQUNJO0ExQ2s4Wlo7O0EwQ3Y3Wkk7RUFDSTtBMUMwN1pSO0EwQ3I3WlE7RUFDSTtFQUNBO0ExQ3U3Wlo7QTBDcjdaWTtFQUNJO0ExQ3U3WmhCOztBMkNoa2JBOzs7RUFBQTtBQWFBO0VBQ0k7QTNDMGpiSjs7QTJDbmpiQTtFQUNJO0EzQ3NqYko7QTJDcGpiSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0NzamJSO0EyQ3BqYlE7RUFDSTtFQUNBO0EzQ3NqYlo7QTJDbmpiUTtFQUNJO0VBQ0E7RUFDQTtBM0NxamJaO0EyQ2xqYlE7RUFDSTtFQUNBO0VBQ0E7QTNDb2piWjs7QTJDM2liQTtFQUNJO0VBQ0E7QTNDOGliSjtBMkM1aWJJO0VBQ0k7QTNDOGliUjtBMkMzaWJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNDNmliUjtBMkMzaWJRO0VBQ0k7RUFDQTtBM0M2aWJaO0EyQzFpYlE7RUFDSTtFQUNBO0EzQzRpYlo7QTJDemliUTtFQUNJO0VBQ0E7RUFDQTtBM0MyaWJaOztBMkNsaWJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0NxaWJKOztBMkMxaGJBO0VBQ0k7QTNDNmhiSjtBMkMzaGJJO0VBQ0k7QTNDNmhiUjs7QTJDemhiQTtFQUNJO0VBQ0E7RUFDQTtBM0M0aGJKO0FtQ3htYkk7RVF5RUo7SUFNUTtFM0M2aGJOO0FBQ0Y7O0EyQ3hoYkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQzJoYko7QTJDemhiSTtFQUNJO0VBQ0E7RUFDQTtBM0MyaGJSO0EyQ3poYlE7RUFDSTtFQUNBO0VBQ0E7QTNDMmhiWjtBMkN4aGJRO0VBQ0k7RUFDQTtBM0MwaGJaO0EyQ3RoYkk7RUFDSTtFQUNBO0EzQ3doYlI7QTJDdGhiUTtFQUNJO0VBQ0E7QTNDd2hiWjtBMkNyaGJRO0VBQ0k7RUFDQTtBM0N1aGJaO0EyQ25oYkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQ3FoYlI7QTJDbGhiSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQ29oYlI7QTJDbGhiUTtFQUNJO0VBQ0E7QTNDb2hiWjtBMkNoaGJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0NraGJSO0EyQy9nYkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNDaWhiUjtBMkM5Z2JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNDZ2hiUjtBMkM3Z2JJO0VBQ0k7QTNDK2diUjtBMkM3Z2JRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQytnYlo7O0EyQ25nYkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBM0NzZ2JSO0EyQ25nYkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQ3FnYlI7O0EyQ2pnYkE7RUFDSTtFQUNBO0EzQ29nYko7O0EyQ2pnYkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQ29nYko7QTJDbGdiSTtFQUNJO0VBQ0E7RUFDQTtBM0NvZ2JSO0EyQ2xnYlE7RUFDSTtFQUNBO0VBQ0E7QTNDb2diWjtBMkNqZ2JRO0VBQ0k7RUFDQTtFQUNBO0EzQ21nYlo7QTJDLy9hSTtFQUNJO0EzQ2lnYlI7QTJDOS9hSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNDZ2diUjtBMkM3L2FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0MrL2FSO0EyQzcvYVE7RUFDSTtFQUNBO0EzQysvYVo7QTJDMy9hSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0M2L2FSO0EyQzEvYUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQzQvYVI7QTJDMS9hUTtFQUNJO0EzQzQvYVo7QTJDei9hUTtFQUNJO0VBQ0E7QTNDMi9hWjtBMkN6L2FZO0VBQ0k7RUFDQTtBM0MyL2FoQjs7QTJDai9hQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0NvL2FKOztBMkNqL2FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQ28vYUo7O0EyQ2ovYUE7RUFDSTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNDbS9hSjs7QTJDaC9hQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0NtL2FKOztBMkNoL2FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNDbS9hSjs7QTJDaC9hQTtFQUNJO0VBQ0E7QTNDbS9hSjs7QTJDaC9hQTtFQUNJO0VBQ0E7RUFDQTtBM0NtL2FKO0EyQy8rYUk7RUFDSTtFQUNBO0VBQ0E7QTNDaS9hUjtBMkMvK2FRO0VBQ0k7QTNDaS9hWjtBMkM5K2FRO0VBQ0k7QTNDZy9hWjtBMkM3K2FRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNDKythWjs7QW1DMTNiSTtFUXNaQTtJQUNJO0lBQ0E7SUFDQTtFM0N3K2FOO0UyQ24rYU07SUFDSTtJQUNBO0lBQ0E7RTNDcSthVjtFMkNuK2FVOztJQUVJO0UzQ3ErYWQ7RTJDbithYzs7SUFDSTtFM0NzK2FsQjtFMkM5OWFFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFM0NnK2FOO0UyQzk5YU07SUFDSTtFM0NnK2FWO0UyQzc5YU07SUFDSTtFM0MrOWFWO0UyQzM5YUU7SUFDSTtJQUNBO0UzQzY5YU47RTJDMTlhRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTNDNDlhTjtFMkN6OWFFO0lBRUk7TUFDSTtJM0MwOWFSO0kyQ3Y5YUk7TUFDSTtJM0N5OWFSO0VBQ0Y7QUFDRjtBMkNwOWFBO0VBQ0k7QTNDczlhSjs7QTJDLzhhQTtFQUlROzs7SUFHSTtFM0MrOGFWO0UyQzU4YU07SUFDSTtFM0M4OGFWO0FBQ0Y7QUFyNGJBOzs7OztHQUFBLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9hcHAuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX3Rva2Vucy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2Rlc2lnbi1zeXN0ZW0vX3R5cG9ncmFwaHkuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19pbmRleC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2Zvcm0tcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2RvY3VtZW50LXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX21hcmtldHBsYWNlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZ2xvYmFsLXNlYXJjaC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2RhdGFncmlkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fd29ya3NwYWNlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fY2xpZW50LWZvcm0uc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19iaWxsaW5nLWZvcm0uc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wYXltZW50LXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wYXltZW50cy1saXN0LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fdXNlcnMtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3Byb2ZpbGUtcGFnZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3R3by1mYWN0b3Iuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19ub3RpZmljYXRpb25zLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19zdWJzY3JpcHRpb24tcGFnZXMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19vbmJvYXJkaW5nLWNoZWNrbGlzdC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX29uYm9hcmRpbmctd2l6YXJkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbW9uZXkuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19zdGF0dXMtY2hpcC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3JlcG9ydHMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kYXRlcGlja2VyLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fdGhlbWUtYnJpZGdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvbGF5b3V0cy9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19zaGVsbC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX25hdmJhci5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2xheW91dHMvX25hdmJhci12ZXJ0aWNhbC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19mb3Jtcy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19jb21wYW55LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3Mvc2V0dGluZ3Muc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL3Njc3MvbWl4aW5zL19icmVha3BvaW50cy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL19kYXNoYm9hcmQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jbGllbnQuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1pbnZvaWNlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9leHRlcm5hbC1xdW90ZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3BheW1lbnQtbWFya2V0cGxhY2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNvbGlkSW52b2ljZSBNYWluIEFwcGxpY2F0aW9uIFN0eWxlc2hlZXRcbiAqXG4gKiBUaGlzIGlzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBhbGwgYXBwbGljYXRpb24gc3R5bGVzLlxuICogSXQgaW1wb3J0cyBCb290c3RyYXAsIHRoZSBkZXNpZ24gc3lzdGVtLCBjb21wb25lbnRzLCBhbmQgbGF5b3V0cy5cbiAqL1xuXG5AdXNlICdzYXNzOmNvbG9yJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMS4gQk9PVFNUUkFQIENPUkUgSU1QT1JUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgQm9vdHN0cmFwIGZ1bmN0aW9ucyBmaXJzdCAobmVlZGVkIGZvciBjb2xvciBtYW5pcHVsYXRpb24sIGV0Yy4pXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDIuIFNPTElESU5WT0lDRSBCUkFORCBWQVJJQUJMRVMgKE92ZXJyaWRlIEJvb3RzdHJhcCBkZWZhdWx0cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gRmluemFybydzIHJlc3RyYWluZWQgYmx1ZS9uYXZ5IGFwcGxpY2F0aW9uIHBhbGV0dGUuIFRoZSBkZXNpZ24gdG9rZW5zIGluXG4vLyBgZGVzaWduLXN5c3RlbS9fdG9rZW5zLnNjc3NgIGNhcnJ5IHRoZSBzYW1lIHZhbHVlczsgdGhlc2UgU2FzcyB2YXJpYWJsZXMgZXhpc3Rcbi8vIHNvIEJvb3RzdHJhcCdzIGNvbXBpbGVkIHV0aWxpdGllcyBhZ3JlZSB3aXRoIHRoZW0uXG4kYnJhbmQtYmx1ZTogIzJmNmRiNTtcbiRicmFuZC1ibHVlLWRhcms6ICMxZDRhN2Q7XG4kYnJhbmQtYmx1ZS1saWdodDogI2U0ZWVmYjtcbiRicmFuZC1uYXZ5OiAjMGIyNTQ1O1xuJGJyYW5kLW5hdnktZGFyazogIzA3MTgzMDtcbiRicmFuZC1uYXZ5LWxpZ2h0OiAjZWVmMmY3O1xuXG4vLyBPdmVycmlkZSBCb290c3RyYXAgdmFyaWFibGVzXG4kcHJpbWFyeTogJGJyYW5kLWJsdWU7XG4kc2Vjb25kYXJ5OiAkYnJhbmQtbmF2eTtcblxuLy8gQm9keSBhbmQgTGluayBDb2xvcnNcbiRib2R5LWNvbG9yOiAjMzMzMzMzO1xuJGJvZHktYmc6ICNmNGY2Zjg7XG4kbGluay1jb2xvcjogJHByaW1hcnk7XG4kbGluay1ob3Zlci1jb2xvcjogJGJyYW5kLWJsdWUtZGFyaztcblxuLy8gQnV0dG9uIHN0YXRlc1xuJGJ0bi1wcmltYXJ5LWJnOiAkcHJpbWFyeTtcbiRidG4tcHJpbWFyeS1ib3JkZXItY29sb3I6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJnOiAkYnJhbmQtYmx1ZS1kYXJrO1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJvcmRlci1jb2xvcjogJGJyYW5kLWJsdWUtZGFyaztcbiRidG4tcHJpbWFyeS1hY3RpdmUtYmc6ICRicmFuZC1ibHVlLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJGJyYW5kLWJsdWUtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWJnOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAkc2Vjb25kYXJ5O1xuJGJ0bi1zZWNvbmRhcnktaG92ZXItYmc6ICRicmFuZC1uYXZ5LWRhcms7XG4kYnRuLXNlY29uZGFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRicmFuZC1uYXZ5LWRhcms7XG4kYnRuLXNlY29uZGFyeS1hY3RpdmUtYmc6ICRicmFuZC1uYXZ5LWRhcms7XG4kYnRuLXNlY29uZGFyeS1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkYnJhbmQtbmF2eS1kYXJrO1xuXG4vLyBBbGVydCBDb2xvcnNcbiRhbGVydC1wcmltYXJ5LWJnOiAkYnJhbmQtYmx1ZS1saWdodDtcbiRhbGVydC1wcmltYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRicmFuZC1ibHVlLWxpZ2h0LCAkbGlnaHRuZXNzOiAtNSUpO1xuJGFsZXJ0LXByaW1hcnktdGV4dDogJGJyYW5kLWJsdWUtZGFyaztcbiRhbGVydC1zZWNvbmRhcnktYmc6ICRicmFuZC1uYXZ5LWxpZ2h0O1xuJGFsZXJ0LXNlY29uZGFyeS1ib3JkZXItY29sb3I6IGNvbG9yLmFkanVzdCgkYnJhbmQtbmF2eS1saWdodCwgJGxpZ2h0bmVzczogLTUlKTtcbiRhbGVydC1zZWNvbmRhcnktdGV4dDogJGJyYW5kLW5hdnk7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDMuIERFU0lHTiBTWVNURU0gRk9VTkRBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgZGVzaWduIHRva2VucyAoY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCB0eXBvZ3JhcGh5LCBldGMuKVxuQGltcG9ydCAnLi9kZXNpZ24tc3lzdGVtL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNC4gQ09NUE9ORU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgYWxsIGNvbXBvbmVudCBzdHlsZXNcbkBpbXBvcnQgJy4vY29tcG9uZW50cy9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDUuIExBWU9VVCBQQVRURVJOU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBJbXBvcnQgYWxsIGxheW91dCBzdHlsZXNcbkBpbXBvcnQgJy4vbGF5b3V0cy9pbmRleCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDYuIEZPUk0gU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdlbmVyaWMgZm9ybSBjb21wb25lbnRzIChyZXVzYWJsZSBhY3Jvc3MgdGhlIGFwcClcbkBpbXBvcnQgJy4vZm9ybXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA3LiBQQUdFLVNQRUNJRklDIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb21wYW55IHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9jb21wYW55JztcblxuLy8gU2V0dGluZ3MgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL3NldHRpbmdzJztcblxuLy8gRGFzaGJvYXJkIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vZGFzaGJvYXJkJztcblxuLy8gQ2xpZW50IHBhZ2UgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9jbGllbnQnO1xuXG4vLyBJbnZvaWNlIHZpZXcgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vaW52b2ljZS12aWV3JztcblxuLy8gRXh0ZXJuYWwgaW52b2ljZSB2aWV3IHBhZ2Ugc3R5bGVzIChwdWJsaWMtZmFjaW5nKVxuQGltcG9ydCAnLi9leHRlcm5hbC1pbnZvaWNlLXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBxdW90ZSB2aWV3IHBhZ2Ugc3R5bGVzIChwdWJsaWMtZmFjaW5nKVxuQGltcG9ydCAnLi9leHRlcm5hbC1xdW90ZS12aWV3JztcblxuLy8gUXVvdGUgdmlldyBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9xdW90ZS12aWV3JztcblxuLy8gUGF5bWVudCBtYXJrZXRwbGFjZSBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9wYXltZW50LW1hcmtldHBsYWNlJztcblxuLy8gTm90aWZpY2F0aW9uIG1hcmtldHBsYWNlIHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL25vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDguIExFR0FDWSBCT09UU1RSQVAgT1ZFUlJJREVTIChUbyBiZSBjbGVhbmVkIHVwKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUaGVzZSBhcmUgdGVtcG9yYXJ5IG92ZXJyaWRlcyB0aGF0IHNob3VsZCBldmVudHVhbGx5IGJlIG1vdmVkXG4vLyB0byB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50IGZpbGVzIGluIHRoZSBkZXNpZ24gc3lzdGVtLlxuXG4vLyBLZWVwIGxlZ2FjeSBhY3RpdmUgbmF2IHN0eWxpbmcgZm9yIG5vd1xuXG4vKiAubmF2LWxpbmsuYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMmZmO1xuICAgIGNvbG9yOiAjNGY0NmU1O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufSAqL1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIE1haW4gSW5kZXhcbiAqXG4gKiBJbXBvcnRzIGFsbCBkZXNpZ24gc3lzdGVtIGZvdW5kYXRpb24gZmlsZXMuXG4gKiBUaGlzIGZpbGUgc2hvdWxkIGJlIGltcG9ydGVkIGVhcmx5IGluIGFwcC5zY3NzLFxuICogYWZ0ZXIgQm9vdHN0cmFwIGZ1bmN0aW9ucy92YXJpYWJsZXMgYnV0IGJlZm9yZSBjb21wb25lbnRzLlxuICovXG5cbi8vIENvcmUgZGVzaWduIHRva2VucyAoY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCBldGMuKVxuQGltcG9ydCAndG9rZW5zJztcblxuLy8gVHlwb2dyYXBoeSBzeXN0ZW1cbkBpbXBvcnQgJ3R5cG9ncmFwaHknO1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIERlc2lnbiBUb2tlbnNcbiAqXG4gKiBDb3JlIGRlc2lnbiB0b2tlbnMgZGVmaW5pbmcgY29sb3JzLCBzcGFjaW5nLCBzaGFkb3dzLCBib3JkZXIgcmFkaXVzLFxuICogYW5kIHRyYW5zaXRpb25zLiBBbGwgdmFsdWVzIGFyZSBleHBvc2VkIGFzIENTUyBjdXN0b20gcHJvcGVydGllc1xuICogd2l0aCB0aGUgYC0tc3dwLWAgcHJlZml4IGZvciBydW50aW1lIHRoZW1pbmcgc3VwcG9ydC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT0xPUiBQQUxFVFRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQnJhbmQgQ29sb3JzIChQcmltYXJ5ICYgU2Vjb25kYXJ5KVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIFByaW1hcnk6IEZpbnphcm8gYmx1ZSAtIFVzZWQgZm9yIG1haW4gQ1RBcywgbGlua3MsIGFjdGl2ZSBzdGF0ZXMuXG4gICAgLy8gYHByaW1hcnlgIGNhcnJpZXMgd2hpdGUgdGV4dCBhdCA1LjI4OjEsIGBwcmltYXJ5LWhvdmVyYCBhdCA2LjM3OjEsIGBwcmltYXJ5LWRhcmtgLFxuICAgIC8vIHdoaWNoIGlzIHRoZSBsaW5rL2FjdGl2ZSAqdGV4dCogY29sb3VyLCBhdCA5LjAyOjEgLSBhbGwgQUEgZm9yIGJvZHkgdGV4dC5cbiAgICAtLXN3cC1wcmltYXJ5OiAjMmY2ZGI1O1xuICAgIC0tc3dwLXByaW1hcnktcmdiOiA0NywgMTA5LCAxODE7XG4gICAgLS1zd3AtcHJpbWFyeS1ob3ZlcjogIzI3NjE5ZjtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcms6ICMxZDRhN2Q7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodDogI2U0ZWVmYjtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0ZXI6ICNmMWY3ZmQ7XG4gICAgLS1zd3AtcHJpbWFyeS1mZzogI2ZmZmZmZjtcblxuICAgIC8vIFJlZmVyZW5jZWQgYnkgdGhlIHBsYXRmb3JtIGJ1dHRvbiBydWxlczsgd2l0aG91dCBpdCBhIHByaW1hcnkgYnV0dG9uIGhhcyBubyBob3ZlciBmaWxsLlxuICAgIC0tc3dwLXByaW1hcnktZGFya2VuOiAjMjc2MTlmO1xuXG4gICAgLy8gU2Vjb25kYXJ5OiBGaW56YXJvIG5hdnksIHVzZWQgZm9yIG91dGxpbmUgYnV0dG9ucyBhbmQgbmF2aWdhdGlvbiBjaHJvbWUuXG4gICAgLS1zd3Atc2Vjb25kYXJ5OiAjMGIyNTQ1O1xuICAgIC0tc3dwLXNlY29uZGFyeS1yZ2I6IDExLCAzNywgNjk7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWhvdmVyOiAjMTIzYTZiO1xuICAgIC0tc3dwLXNlY29uZGFyeS1kYXJrOiAjMDcxODMwO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodDogI2VlZjJmNztcbiAgICAtLXN3cC1zZWNvbmRhcnktbGlnaHRlcjogI2Y2ZjhmYjtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBOZXV0cmFsIENvbG9ycyAoU2xhdGUtYmFzZWQgZ3JheSBzY2FsZSBmb3IgbW9kZXJuIGZlZWwpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtZ3JheS01MDogI2Y4ZmFmYztcbiAgICAtLXN3cC1ncmF5LTEwMDogI2YxZjVmOTtcbiAgICAtLXN3cC1ncmF5LTIwMDogI2UyZThmMDtcbiAgICAtLXN3cC1ncmF5LTMwMDogI2NiZDVlMTtcbiAgICAtLXN3cC1ncmF5LTQwMDogIzk0YTNiODtcbiAgICAtLXN3cC1ncmF5LTUwMDogIzY0NzQ4YjtcbiAgICAtLXN3cC1ncmF5LTYwMDogIzQ3NTU2OTtcbiAgICAtLXN3cC1ncmF5LTcwMDogIzMzNDE1NTtcbiAgICAtLXN3cC1ncmF5LTgwMDogIzFlMjkzYjtcbiAgICAtLXN3cC1ncmF5LTkwMDogIzBmMTcyYTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBTZW1hbnRpYyBDb2xvcnMgKEZlZWRiYWNrICYgU3RhdHVzKVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vIFN1Y2Nlc3NcbiAgICAvLyBOT1RFOiBgc3VjY2Vzc2AgKDIuNTQ6MSBvbiBzdXJmYWNlKSBhbmQgYHN1Y2Nlc3MtaG92ZXJgICgzLjc3OjEpIGFyZSBmaWxsXG4gICAgLy8gY29sb3Vycywgbm90IHRleHQgY29sb3VycyAtIGJvdGggZmFpbCBXQ0FHIEFBIGFzIHRleHQuIFVzZSBgc3VjY2Vzcy1kYXJrYFxuICAgIC8vIGZvciBhbnkgc3VjY2Vzcy1jb2xvdXJlZCAqdGV4dCouIFNlZSBERVNJR04ubWQgLSBUaGUgTGVnaWJsZSBTdGF0dXMgUnVsZS5cbiAgICAtLXN3cC1zdWNjZXNzOiAjMTBiOTgxO1xuICAgIC0tc3dwLXN1Y2Nlc3MtcmdiOiAxNiwgMTg1LCAxMjk7XG4gICAgLS1zd3Atc3VjY2Vzcy1ob3ZlcjogIzA1OTY2OTtcbiAgICAtLXN3cC1zdWNjZXNzLWRhcms6ICMwNDc4NTc7ICAgLy8gRW1lcmFsZC03MDAgLSBBQS1zYWZlIHN1Y2Nlc3MgdGV4dCAoNS40ODoxIG9uIHN1cmZhY2UsIDUuMDY6MSBvbiBib2R5LWJnKVxuICAgIC0tc3dwLXN1Y2Nlc3MtbGlnaHQ6ICNkMWZhZTU7XG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodGVyOiAjZWNmZGY1O1xuXG4gICAgLy8gRGFuZ2VyXG4gICAgLy8gTk9URTogYGRhbmdlcmAgKDMuNzY6MSBvbiBzdXJmYWNlKSBpcyBhIGZpbGwgY29sb3VyLCBub3QgYSB0ZXh0IGNvbG91ci5cbiAgICAvLyBVc2UgYGRhbmdlci1kYXJrYCBmb3IgZGFuZ2VyLWNvbG91cmVkICp0ZXh0Ki5cbiAgICAtLXN3cC1kYW5nZXI6ICNlZjQ0NDQ7XG4gICAgLS1zd3AtZGFuZ2VyLXJnYjogMjM5LCA2OCwgNjg7XG4gICAgLS1zd3AtZGFuZ2VyLWhvdmVyOiAjZGMyNjI2O1xuICAgIC0tc3dwLWRhbmdlci1kYXJrOiAjYjkxYzFjOyAgICAvLyBSZWQtNzAwIC0gQUEtc2FmZSBkYW5nZXIgdGV4dCAoNi40NzoxIG9uIHN1cmZhY2UsIDUuOTc6MSBvbiBib2R5LWJnKVxuICAgIC0tc3dwLWRhbmdlci1mZzogI2ZmZmZmZjtcbiAgICAtLXN3cC1kYW5nZXItbGlnaHQ6ICNmZWUyZTI7XG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0ZXI6ICNmZWYyZjI7XG5cbiAgICAvLyBXYXJuaW5nXG4gICAgLy8gTk9URTogYHdhcm5pbmdgICgyLjE1OjEgb24gc3VyZmFjZSkgaXMgYSBmaWxsIGNvbG91ciwgbm90IGEgdGV4dCBjb2xvdXIuXG4gICAgLy8gVXNlIGB3YXJuaW5nLWRhcmtgIGZvciB3YXJuaW5nLWNvbG91cmVkICp0ZXh0Ki5cbiAgICAtLXN3cC13YXJuaW5nOiAjZjU5ZTBiO1xuICAgIC0tc3dwLXdhcm5pbmctcmdiOiAyNDUsIDE1OCwgMTE7XG4gICAgLS1zd3Atd2FybmluZy1ob3ZlcjogI2Q5NzcwNjtcbiAgICAtLXN3cC13YXJuaW5nLWRhcms6ICM5MjQwMGU7ICAgLy8gQW1iZXItODAwIC0gQUEtc2FmZSB3YXJuaW5nIHRleHQgKDcuMDk6MSBvbiBzdXJmYWNlLCA2LjU0OjEgb24gYm9keS1iZywgNi4zNzoxIG9uIHdhcm5pbmctbGlnaHQpXG4gICAgLS1zd3Atd2FybmluZy1saWdodDogI2ZlZjNjNztcbiAgICAtLXN3cC13YXJuaW5nLWxpZ2h0ZXI6ICNmZmZiZWI7XG5cbiAgICAvLyBJbmZvXG4gICAgLS1zd3AtaW5mbzogIzNiODJmNjtcbiAgICAtLXN3cC1pbmZvLXJnYjogNTksIDEzMCwgMjQ2O1xuICAgIC0tc3dwLWluZm8taG92ZXI6ICMyNTYzZWI7XG4gICAgLS1zd3AtaW5mby1kYXJrOiAjMWQ0ZWQ4OyAgICAgIC8vIEJsdWUtNzAwIC0gQUEtc2FmZSBpbmZvIHRleHQgKDYuNzA6MSBvbiBzdXJmYWNlLCA2LjE5OjEgb24gYm9keS1iZywgNS40OToxIG9uIGluZm8tbGlnaHQpXG4gICAgLS1zd3AtaW5mby1saWdodDogI2RiZWFmZTtcbiAgICAtLXN3cC1pbmZvLWxpZ2h0ZXI6ICNlZmY2ZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gU3VyZmFjZSBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ib2R5LWJnOiAjZjRmNmY4O1xuICAgIC0tc3dwLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgLS1zd3Atc3VyZmFjZS1ob3ZlcjogI2Y4ZmFmYztcbiAgICAtLXN3cC1zdXJmYWNlLWVsZXZhdGVkOiAjZmZmZmZmO1xuICAgIC0tc3dwLXN1cmZhY2Utb3ZlcmxheTogcmdiKDE1IDIzIDQyIC8gNTAlKTtcbiAgICAtLXN3cC1sb2FkaW5nLW92ZXJsYXk6IHJnYigyNTUgMjU1IDI1NSAvIDcyJSk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVGV4dCBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBEZWZhdWx0IGJvZHkgdGV4dC4gQWxpYXNlcyBgdGV4dC1wcmltYXJ5YCByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGVcbiAgICAvLyBsaXRlcmFsIC0gaXQgd2FzIGEgcHVyZSAjMzMzMzMzIGdyYXksIHdoaWNoIHRoZSBUaW50ZWQgTmV1dHJhbHMgUnVsZVxuICAgIC8vIHByb2hpYml0cywgYW5kIHRoZXJlIGlzIG5vIHJlYXNvbiBmb3IgdGhlIHR3byB0byBldmVyIGRpdmVyZ2UuXG4gICAgLS1zd3AtYm9keS1jb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgLS1zd3AtdGV4dC1wcmltYXJ5OiAjMWUyOTNiO1xuICAgIC0tc3dwLXRleHQtc2Vjb25kYXJ5OiAjNDc1NTY5O1xuICAgIC0tc3dwLXRleHQtbXV0ZWQ6ICM2NDc0OGI7XG5cbiAgICAvLyBXQVJOSU5HOiAyLjU2OjEgb24gc3VyZmFjZSwgMi4zNzoxIG9uIGJvZHktYmcgLSBGQUlMUyBXQ0FHIEFBICgxLjQuMykuXG4gICAgLy8gU2FmZSBPTkxZIGZvciBkaXNhYmxlZCB0ZXh0IChleGVtcHQgZnJvbSAxLjQuMykgYW5kIGRlY29yYXRpdmUgZ2x5cGhzLlxuICAgIC8vIE5ldmVyIHVzZSBmb3IgcGxhY2Vob2xkZXJzIG9yIGFueSBvdGhlciBtZWFuaW5nZnVsIHRleHQuXG4gICAgLS1zd3AtdGV4dC1saWdodDogIzk0YTNiODtcbiAgICAtLXN3cC10ZXh0LWludmVyc2U6ICNmZmZmZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQm9yZGVyIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWJvcmRlcjogI2UyZThmMDtcbiAgICAtLXN3cC1ib3JkZXItbGlnaHQ6ICNmMWY1Zjk7XG4gICAgLS1zd3AtYm9yZGVyLWRhcms6ICNjYmQ1ZTE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTGluayBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1saW5rLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1zd3AtbGluay1ob3Zlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG59XG5cbi8vIEludGVudGlvbmFsIGRhcmsgcGFsZXR0ZS4gVGhlIHJhaWwgcmVtYWlucyB0aGUgdmlzdWFsIGFuY2hvciB3aGlsZSBjb250ZW50IHN1cmZhY2VzIGxpZnQgaW5cbi8vIHJlc3RyYWluZWQgc3RlcHM7IHNlbWFudGljIGNvbG91cnMgYXJlIHNvZnRlbmVkIGZvciBkYXJrIGJhY2tncm91bmRzIHdpdGhvdXQgbG9zaW5nIG1lYW5pbmcuXG5cbltkYXRhLWJzLXRoZW1lPSdkYXJrJ10ge1xuICAgIC0tc3dwLXByaW1hcnk6ICM2ZWE4ZTY7XG4gICAgLS1zd3AtcHJpbWFyeS1yZ2I6IDExMCwgMTY4LCAyMzA7XG4gICAgLS1zd3AtcHJpbWFyeS1ob3ZlcjogIzhiYmFmMDtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcms6ICNhOGNjZjQ7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodDogIzE4MzU1MjtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0ZXI6ICMxMjI4M2U7XG4gICAgLS1zd3AtcHJpbWFyeS1mZzogIzA3MTExZjtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcmtlbjogIzU3OThkZjtcbiAgICAtLXN3cC1zZWNvbmRhcnk6ICNiOGM3ZGM7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LXJnYjogMTg0LCAxOTksIDIyMDtcbiAgICAtLXN3cC1zZWNvbmRhcnktaG92ZXI6ICNkM2RlZWM7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWRhcms6ICNlOGVlZjc7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0OiAjMWQyYjNkO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodGVyOiAjMTYyMjMzO1xuICAgIC0tc3dwLWdyYXktNTA6ICMxNzIwMzM7XG4gICAgLS1zd3AtZ3JheS0xMDA6ICMxYzI4M2I7XG4gICAgLS1zd3AtZ3JheS0yMDA6ICMyNjM2NGM7XG4gICAgLS1zd3AtZ3JheS0zMDA6ICMzYTRiNjM7XG4gICAgLS1zd3AtZ3JheS00MDA6ICM3MTgxOTg7XG4gICAgLS1zd3AtZ3JheS01MDA6ICM5YWE4YmE7XG4gICAgLS1zd3AtZ3JheS02MDA6ICNiOGMyZDA7XG4gICAgLS1zd3AtZ3JheS03MDA6ICNkMGQ4ZTM7XG4gICAgLS1zd3AtZ3JheS04MDA6ICNlNWVhZjE7XG4gICAgLS1zd3AtZ3JheS05MDA6ICNmNGY3ZmI7XG4gICAgLS1zd3Atc3VjY2VzczogIzM0ZDM5OTtcbiAgICAtLXN3cC1zdWNjZXNzLWRhcms6ICM2ZWU3Yjc7XG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodDogIzE1M2MzNDtcbiAgICAtLXN3cC1zdWNjZXNzLWxpZ2h0ZXI6ICMxMDJlMjk7XG4gICAgLS1zd3AtZGFuZ2VyOiAjZmI3MTg1O1xuICAgIC0tc3dwLWRhbmdlci1kYXJrOiAjZmRhNGFmO1xuICAgIC0tc3dwLWRhbmdlci1mZzogI2ZmZmZmZjtcbiAgICAtLXN3cC1kYW5nZXItbGlnaHQ6ICM0YTIwMmE7XG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0ZXI6ICMzNzFhMjI7XG4gICAgLS1zd3Atd2FybmluZzogI2ZiYmYyNDtcbiAgICAtLXN3cC13YXJuaW5nLWRhcms6ICNmY2QzNGQ7XG4gICAgLS1zd3Atd2FybmluZy1saWdodDogIzQ5MzcxODtcbiAgICAtLXN3cC13YXJuaW5nLWxpZ2h0ZXI6ICMzNDI4MTI7XG4gICAgLS1zd3AtaW5mbzogIzYwYTVmYTtcbiAgICAtLXN3cC1pbmZvLWRhcms6ICM5M2M1ZmQ7XG4gICAgLS1zd3AtaW5mby1saWdodDogIzE3MzY1ZDtcbiAgICAtLXN3cC1pbmZvLWxpZ2h0ZXI6ICMxMjJhNDk7XG4gICAgLS1zd3AtYm9keS1iZzogIzBiMTIyMDtcbiAgICAtLXN3cC1zdXJmYWNlOiAjMTExYTJhO1xuICAgIC0tc3dwLXN1cmZhY2UtaG92ZXI6ICMxNzIyMzU7XG4gICAgLS1zd3Atc3VyZmFjZS1lbGV2YXRlZDogIzE4MjMzNztcbiAgICAtLXN3cC1zdXJmYWNlLW92ZXJsYXk6IHJnYigyIDYgMjMgLyA3MiUpO1xuICAgIC0tc3dwLWxvYWRpbmctb3ZlcmxheTogcmdiKDExIDE4IDMyIC8gNzglKTtcbiAgICAtLXN3cC1ib2R5LWNvbG9yOiAjZGJlM2VlO1xuICAgIC0tc3dwLXRleHQtcHJpbWFyeTogI2VkZjJmODtcbiAgICAtLXN3cC10ZXh0LXNlY29uZGFyeTogI2JkYzhkODtcbiAgICAtLXN3cC10ZXh0LW11dGVkOiAjOTRhM2I4O1xuICAgIC0tc3dwLXRleHQtbGlnaHQ6ICM3MTgxOTg7XG4gICAgLS1zd3AtdGV4dC1pbnZlcnNlOiAjMDcxMTFmO1xuICAgIC0tc3dwLWJvcmRlcjogIzI5Mzg0ZDtcbiAgICAtLXN3cC1ib3JkZXItbGlnaHQ6ICMyMDJlNDE7XG4gICAgLS1zd3AtYm9yZGVyLWRhcms6ICMzYTRiNjM7XG4gICAgLS1zd3AtbGluay1jb2xvcjogIzhiYmFmMDtcbiAgICAtLXN3cC1saW5rLWhvdmVyLWNvbG9yOiAjYjRkM2Y2O1xuXG4gICAgLy8gUGxhdGZvcm0ncyBkYXJrIGNvbXBvbmVudCB2YXJpYWJsZXMgdGFyZ2V0IG51bWVyaWMgZ3JheSBzdGVwcy4gRmluemFybyByZXZlcnNlc1xuICAgIC8vIHRob3NlIHN0ZXBzIGluIGRhcmsgbW9kZSBzbyBpdHMgb3duIGBncmF5LTUwYCByZW1haW5zIGEgc3VidGxlIHN1cmZhY2UsIHdoaWNoIG1hZGVcbiAgICAvLyBQbGF0Zm9ybSBjYXJkIGNhcHMgYW5kIGZsYXQgaW5wdXQgYWRkb25zIHJlc29sdmUgdG8gbmVhci13aGl0ZS4gQnJpZGdlIHRoZSBzZW1hbnRpY1xuICAgIC8vIHZhcmlhYmxlcyBiYWNrIHRvIHRoZWlyIGludGVuZGVkIHN1cmZhY2VzIGluc3RlYWQgb2Ygb3ZlcnJpZGluZyBlYWNoIGNvbXBvbmVudC5cbiAgICAtLXN3cC1iZy1mb3JtczogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICAtLXN3cC1iZy1zdXJmYWNlOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtYmctc3VyZmFjZS1wcmltYXJ5OiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtYmctc3VyZmFjZS1zZWNvbmRhcnk6IHZhcigtLXN3cC1ib2R5LWJnKTtcbiAgICAtLXN3cC1iZy1zdXJmYWNlLXRlcnRpYXJ5OiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgLS1zd3AtYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAtLXN3cC1ib3JkZXItY29sb3ItdHJhbnNsdWNlbnQ6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIC0tc3dwLXNpZGViYXItYmc6ICMwNzE1MjY7XG4gICAgLS1zd3Atc2lkZWJhci1ob3Zlci1iZzogcmdiKDI1NSAyNTUgMjU1IC8gOCUpO1xuICAgIC0tc3dwLXNpZGViYXItYWN0aXZlLWJnOiAjMmY2ZGI1O1xuICAgIC0tc3dwLXNpZGViYXItYWN0aXZlLWJnLWhvdmVyOiAjMzk3YWMzO1xuICAgIC0tc3dwLXJpbmctb2Zmc2V0OiAwIDAgMCAycHggdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tdGJsci1ib2R5LWJnOiB2YXIoLS1zd3AtYm9keS1iZyk7XG4gICAgLS10YmxyLWJvZHktY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAtLXRibHItYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAtLXRibHItY2FyZC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tYnMtYm9keS1iZzogdmFyKC0tc3dwLWJvZHktYmcpO1xuICAgIC0tYnMtYm9keS1jb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgIC0tYnMtYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1BBQ0lORyBTQ0FMRSAoOHB4IGJhc2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1zcGFjZS0wOiAwO1xuICAgIC0tc3dwLXNwYWNlLXB4OiAxcHg7XG4gICAgLS1zd3Atc3BhY2UtMC01OiAwLjEyNXJlbTsgIC8vIDJweFxuICAgIC0tc3dwLXNwYWNlLTE6IDAuMjVyZW07ICAgICAvLyA0cHhcbiAgICAtLXN3cC1zcGFjZS0xLTU6IDAuMzc1cmVtOyAgLy8gNnB4XG4gICAgLS1zd3Atc3BhY2UtMjogMC41cmVtOyAgICAgIC8vIDhweFxuICAgIC0tc3dwLXNwYWNlLTItNTogMC42MjVyZW07ICAvLyAxMHB4XG4gICAgLS1zd3Atc3BhY2UtMzogMC43NXJlbTsgICAgIC8vIDEycHhcbiAgICAtLXN3cC1zcGFjZS0zLTU6IDAuODc1cmVtOyAgLy8gMTRweFxuICAgIC0tc3dwLXNwYWNlLTQ6IDFyZW07ICAgICAgICAvLyAxNnB4XG4gICAgLS1zd3Atc3BhY2UtNTogMS4yNXJlbTsgICAgIC8vIDIwcHhcbiAgICAtLXN3cC1zcGFjZS02OiAxLjVyZW07ICAgICAgLy8gMjRweFxuICAgIC0tc3dwLXNwYWNlLTc6IDEuNzVyZW07ICAgICAvLyAyOHB4XG4gICAgLS1zd3Atc3BhY2UtODogMnJlbTsgICAgICAgIC8vIDMycHhcbiAgICAtLXN3cC1zcGFjZS05OiAyLjI1cmVtOyAgICAgLy8gMzZweFxuICAgIC0tc3dwLXNwYWNlLTEwOiAyLjVyZW07ICAgICAvLyA0MHB4XG4gICAgLS1zd3Atc3BhY2UtMTE6IDIuNzVyZW07ICAgIC8vIDQ0cHhcbiAgICAtLXN3cC1zcGFjZS0xMjogM3JlbTsgICAgICAgLy8gNDhweFxuICAgIC0tc3dwLXNwYWNlLTE0OiAzLjVyZW07ICAgICAvLyA1NnB4XG4gICAgLS1zd3Atc3BhY2UtMTY6IDRyZW07ICAgICAgIC8vIDY0cHhcbiAgICAtLXN3cC1zcGFjZS0yMDogNXJlbTsgICAgICAgLy8gODBweFxuICAgIC0tc3dwLXNwYWNlLTI0OiA2cmVtOyAgICAgICAvLyA5NnB4XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJPUkRFUiBSQURJVVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXJhZGl1cy1ub25lOiAwO1xuICAgIC0tc3dwLXJhZGl1cy1zbTogMC4zNzVyZW07ICAgIC8vIDZweCAtIFNtYWxsIGVsZW1lbnRzLCB0YWdzXG4gICAgLS1zd3AtcmFkaXVzLW1kOiAwLjVyZW07ICAgICAgLy8gOHB4IC0gRm9ybSBjb250cm9scywgYnV0dG9uc1xuICAgIC0tc3dwLXJhZGl1cy1sZzogMC43NXJlbTsgICAgIC8vIDEycHggLSBDYXJkcywgbW9kYWxzXG4gICAgLS1zd3AtcmFkaXVzLXhsOiAxcmVtOyAgICAgICAgLy8gMTZweCAtIExhcmdlIGNhcmRzLCBkaWFsb2dzXG4gICAgLS1zd3AtcmFkaXVzLTJ4bDogMS41cmVtOyAgICAgLy8gMjRweCAtIEV4dHJhIGxhcmdlIGVsZW1lbnRzXG4gICAgLS1zd3AtcmFkaXVzLWZ1bGw6IDk5OTlweDsgICAgLy8gUGlsbCBzaGFwZVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSEFET1dTIChTdWJ0bGUsIG1vZGVybiBlbGV2YXRpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBFbGV2YXRpb24gc2hhZG93c1xuICAgIC0tc3dwLXNoYWRvdy14czogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIC0tc3dwLXNoYWRvdy1zbTogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gMTAlKSwgMCAxcHggMnB4IC0xcHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDEwJSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LWxnOiAwIDEwcHggMTVweCAtM3B4IHJnYigwIDAgMCAvIDEwJSksIDAgNHB4IDZweCAtNHB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LXhsOiAwIDIwcHggMjVweCAtNXB4IHJnYigwIDAgMCAvIDEwJSksIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG5cbiAgICAvLyBJbm5lciBzaGFkb3dcbiAgICAtLXN3cC1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDUlKTtcblxuICAgIC8vIENvbG9yZWQgc2hhZG93cyBmb3IgYnV0dG9ucyBhbmQgaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICAtLXN3cC1zaGFkb3ctcHJpbWFyeTogMCA0cHggMTRweCAwIHJnYig0NyAxMDkgMTgxIC8gMjUlKTtcbiAgICAtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZzogMCA4cHggMjBweCAwIHJnYig0NyAxMDkgMTgxIC8gMzAlKTtcbiAgICAtLXN3cC1zaGFkb3ctZGFuZ2VyOiAwIDRweCAxNHB4IDAgcmdiKDIzOSA2OCA2OCAvIDI1JSk7XG4gICAgLS1zd3Atc2hhZG93LWRhbmdlci1sZzogMCA4cHggMjBweCAwIHJnYigyMzkgNjggNjggLyAzMCUpO1xuXG4gICAgLy8gRm9jdXMgcmluZyBzaGFkb3dcbiAgICAtLXN3cC1yaW5nLXByaW1hcnk6IDAgMCAwIDNweCByZ2IoNDcgMTA5IDE4MSAvIDE4JSk7XG4gICAgLS1zd3AtcmluZy1kYW5nZXI6IDAgMCAwIDNweCByZ2IoMjM5IDY4IDY4IC8gMTUlKTtcbiAgICAtLXN3cC1yaW5nLW9mZnNldDogMCAwIDAgMnB4IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFJBTlNJVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIER1cmF0aW9uc1xuICAgIC0tc3dwLWR1cmF0aW9uLWZhc3Q6IDE1MG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLWJhc2U6IDIwMG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLXNsb3c6IDMwMG1zO1xuICAgIC0tc3dwLWR1cmF0aW9uLXNsb3dlcjogNDAwbXM7XG5cbiAgICAvLyBUaW1pbmcgZnVuY3Rpb25zXG4gICAgLS1zd3AtZWFzZS1saW5lYXI6IGxpbmVhcjtcbiAgICAtLXN3cC1lYXNlLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcbiAgICAtLXN3cC1lYXNlLW91dDogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7XG4gICAgLS1zd3AtZWFzZS1pbi1vdXQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG5cbiAgICAvLyBDb21tb24gdHJhbnNpdGlvbnNcbiAgICAtLXN3cC10cmFuc2l0aW9uLWZhc3Q6IHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tYmFzZTogdmFyKC0tc3dwLWR1cmF0aW9uLWJhc2UpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1zbG93OiB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcblxuICAgIC8vIFByb3BlcnR5LXNwZWNpZmljIHRyYW5zaXRpb25zXG4gICAgLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnM6IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1zaGFkb3c6IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi10cmFuc2Zvcm06IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLWFsbDogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBaLUlOREVYIFNDQUxFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC16LWRyb3Bkb3duOiAxMDAwO1xuICAgIC0tc3dwLXotc3RpY2t5OiAxMDIwO1xuICAgIC0tc3dwLXotZml4ZWQ6IDEwMzA7XG4gICAgLS1zd3Atei1tb2RhbC1iYWNrZHJvcDogMTA0MDtcbiAgICAtLXN3cC16LW1vZGFsOiAxMDUwO1xuICAgIC0tc3dwLXotcG9wb3ZlcjogMTA2MDtcbiAgICAtLXN3cC16LXRvb2x0aXA6IDEwNzA7XG4gICAgLS1zd3Atei10b2FzdDogMTA4MDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUE9ORU5ULVNQRUNJRklDIFRPS0VOU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gQ2FyZFxuICAgIC0tc3dwLWNhcmQtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1jYXJkLWJvcmRlcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgLS1zd3AtY2FyZC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIC0tc3dwLWNhcmQtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAtLXN3cC1jYXJkLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAtLXN3cC1jYXJkLWhlYWRlci1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIC0tc3dwLWNhcmQtZm9vdGVyLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBGb3JtIGNvbnRyb2xzXG4gICAgLS1zd3AtaW5wdXQtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC1pbnB1dC1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIC0tc3dwLWlucHV0LWRpc2FibGVkLWJnOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIC0tc3dwLWlucHV0LWRpc2FibGVkLWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgLS1zd3AtaW5wdXQtaWNvbjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIC0tc3dwLWlucHV0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtaW5wdXQtcGFkZGluZy15OiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAtLXN3cC1pbnB1dC1wYWRkaW5nLXg6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAtLXN3cC1pbnB1dC1mb2N1cy1ib3JkZXI6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLXN3cC1pbnB1dC1mb2N1cy1yaW5nOiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAtLXN3cC1jb250cm9sLWNoZWNrLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtY29udHJvbC1jaGVjay1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgLS1zd3AtbWVudS1iZzogdmFyKC0tc3dwLXN1cmZhY2UtZWxldmF0ZWQpO1xuICAgIC0tc3dwLW1lbnUtaG92ZXItYmc6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcblxuICAgIC8vIEJ1dHRvbnNcbiAgICAtLXN3cC1idG4tcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1idG4tcGFkZGluZy15OiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAtLXN3cC1idG4tcGFkZGluZy14OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgLS1zd3AtYnRuLWZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICAvLyBNb2RhbFxuICAgIC0tc3dwLW1vZGFsLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtbW9kYWwtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICAtLXN3cC1tb2RhbC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIC0tc3dwLW1vZGFsLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFRhYmxlXG4gICAgLS1zd3AtdGFibGUtYmc6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAtLXN3cC10YWJsZS1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIC0tc3dwLXRhYmxlLWhlYWRlci1iZzogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIC0tc3dwLXRhYmxlLXJvdy1ob3Zlci1iZzogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIC0tc3dwLXRhYmxlLWNlbGwtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIEFsZXJ0XG4gICAgLS1zd3AtYWxlcnQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAtLXN3cC1hbGVydC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAvLyBBcHBsaWNhdGlvbiBzaGVsbCAoc2lkZWJhciArIHRvcCBuYXZiYXIpLiBUaGUgc2lkZWJhciB3aWR0aCBpcyBhIHRva2VuIGJlY2F1c2VcbiAgICAvLyBUYWJsZXIgaGFyZC1jb2RlcyAxNXJlbSBpbiB0d28gcnVsZXMgLSB0aGUgcmFpbCBpdHNlbGYgYW5kIHRoZSBvZmZzZXQgaXQgcHV0cyBvblxuICAgIC8vIHRoZSBwYWdlIHdyYXBwZXIgLSBhbmQgYm90aCBoYXZlIHRvIG1vdmUgdG9nZXRoZXIuXG4gICAgLS1zd3Atc2lkZWJhci13aWR0aDogMTMuNXJlbTsgICAgICAgICAgICAgIC8vIDIxNnB4IC0gZXhwYW5kZWQgcmFpbFxuICAgIC0tc3dwLXNpZGViYXItY29sbGFwc2VkLXdpZHRoOiA0Ljc1cmVtOyAgICAvLyA3NnB4IC0gaWNvbiByYWlsXG4gICAgLS1zd3AtbmF2YmFyLWhlaWdodDogMy41cmVtOyAgICAgICAgICAgICAgIC8vIDU2cHggLSB0b3AgYmFyXG4gICAgLS1zd3AtY29udHJvbC1oZWlnaHQ6IDIuMjVyZW07ICAgICAgICAgICAgIC8vIDM2cHggLSBldmVyeSB0b3AtYmFyIGNvbnRyb2wgc2hhcmVzIGl0XG4gICAgLS1zd3Atc2lkZWJhci1pdGVtLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAvLyBUaGUgcmFpbC4gSXQgaXMgdGhlIG9uZSBzdXJmYWNlIHRoYXQgc3RheXMgZGFyayBpbiBib3RoIHRoZW1lczogaXQgYW5jaG9ycyB0aGUgc2hlbGwsXG4gICAgLy8gYW5kIHRoZSBsaWdodCBjb250ZW50IGJlc2lkZSBpdCByZWFkcyBhcyB0aGUgcGFnZSB0aGUgcmFpbCBmcmFtZXMuIEV2ZXJ5IGNvbG91ciB0aGVcbiAgICAvLyBuYXZpZ2F0aW9uIHVzZXMgaXMgZGVjbGFyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLCBzbyB0aGUgcmFpbCBjYW4gYmUgcmUtc2tpbm5lZFxuICAgIC8vIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHJlc3Qgb2YgdGhlIHBhbGV0dGUuIFJhdGlvcyBhcmUgYWdhaW5zdCBgLS1zd3Atc2lkZWJhci1iZ2AuXG4gICAgLS1zd3Atc2lkZWJhci1iZzogIzBiMjU0NTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaW56YXJvIG5hdnlcbiAgICAtLXN3cC1zaWRlYmFyLWJvcmRlcjogcmdiKDI1NSAyNTUgMjU1IC8gOCUpO1xuICAgIC0tc3dwLXNpZGViYXItaXRlbS1mZzogI2E3YjZjZDsgICAgICAgICAgICAgICAgICAgLy8gNy40OToxXG4gICAgLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyOiAjZTZlZGY3OyAgICAgICAgICAgICAvLyAxMy4wNjoxXG4gICAgLS1zd3Atc2lkZWJhci1pY29uOiAjOGZhM2JmOyAgICAgICAgICAgICAgICAgICAgICAvLyA1Ljk4OjEgLSBhIHN0ZXAgcXVpZXRlciB0aGFuIHRoZSBsYWJlbFxuICAgIC0tc3dwLXNpZGViYXItaGVhZGluZzogIzgyOTZiMzsgICAgICAgICAgICAgICAgICAgLy8gNS4xMDoxIC0gdXBwZXJjYXNlIHNlY3Rpb24gbGFiZWxzXG4gICAgLS1zd3Atc2lkZWJhci1ob3Zlci1iZzogcmdiKDI1NSAyNTUgMjU1IC8gNyUpO1xuXG4gICAgLy8gQnJhbmQgYmx1ZSBsaWZ0ZWQgb25lIHN0ZXAgZm9yIHRoZSByYWlsLiBBdCAjMmY2ZGI1IHRoZSBwaWxsIGNsZWFycyB0aGUgc3VyZmFjZSBieVxuICAgIC8vIDIuOTE6MSwganVzdCB1bmRlciB0aGUgMzoxIGEgY29udHJvbCBib3VuZGFyeSBuZWVkczsgIzM1NzZjNCBjbGVhcnMgMy4zMzoxIGFuZCBzdGlsbFxuICAgIC8vIGNhcnJpZXMgd2hpdGUgdGV4dCBhdCA0LjYzOjEuXG4gICAgLS1zd3Atc2lkZWJhci1hY3RpdmUtYmc6ICMzNTc2YzQ7XG4gICAgLS1zd3Atc2lkZWJhci1hY3RpdmUtYmctaG92ZXI6ICMzMzcyYmU7ICAgICAgICAgICAvLyB3aGl0ZSB0ZXh0IDQuODk6MVxuICAgIC0tc3dwLXNpZGViYXItYWN0aXZlLWZnOiAjZmZmZmZmO1xuICAgIC0tc3dwLXNpZGViYXItYWN0aXZlLXBhcmVudC1mZzogIzhmYmVmNTsgICAgICAgICAgLy8gNy45NToxIC0gZ3JvdXAgaG9sZGluZyB0aGlzIHBhZ2VcbiAgICAtLXN3cC1zaWRlYmFyLXN1Ym1lbnUtYmc6IHJnYigyNTUgMjU1IDI1NSAvIDQlKTtcbiAgICAtLXN3cC1zaWRlYmFyLXN1Ym1lbnUtZmc6ICM5M2E1YmY7ICAgICAgICAgICAgICAgIC8vIDUuNDg6MSBvbiB0aGUgc3VibWVudSB3ZWxsXG5cbiAgICAvLyBUaGUgcGFnZSBzdXJmYWNlIGlzIGRhcmssIHNvIHRoZSBsaWdodCB0aGVtZSdzIGJyYW5kIHJpbmcgd291bGQgZGlzYXBwZWFyOyB0aGlzIHJpbmdcbiAgICAvLyBpcyBhIHNwYWNlciBmb2xsb3dlZCBieSBhIGxpZ2h0IGhhbG8sIGFuZCByZWFkcyBvbiB0aGUgcmFpbCBhbmQgb24gdGhlIGFjdGl2ZSBwaWxsLlxuICAgIC0tc3dwLXNpZGViYXItcmluZzogMCAwIDAgMnB4IHZhcigtLXN3cC1zaWRlYmFyLWJnKSwgMCAwIDAgNHB4IHJnYigxNDMgMTkwIDI0NSAvIDg1JSk7XG5cbiAgICAvLyBVcHBlciBib3VuZCB0aGUgc3VibWVudSBhbmltYXRpb24gcGFzc2VzIHRocm91Z2guIFRoZSB0YWxsZXN0IG1lbnUgdGhlIHJhaWwgc2hpcHMgaXNcbiAgICAvLyB0aGUgUmVwb3J0cyBsaXN0IGF0IDI5NnB4LCBhbmQgdGhlIGNhcCBpcyB0aGUgaGVhZHJvb20gYWJvdmUgaXQ6IGFuIHVwcGVyIGJvdW5kIGhhcyB0b1xuICAgIC8vIHN0YXkgY2xvc2UgdG8gdGhlIHJlYWwgaGVpZ2h0LCBiZWNhdXNlIGEgbG9vc2Ugb25lIG1ha2VzIHRoZSB2aXNpYmxlIHBhcnQgb2YgdGhlXG4gICAgLy8gZXhwYW5zaW9uIGZpbmlzaCBlYXJseSBhbmQgdGhlbiBpZGxlLCB3aGlsZSB0b28gdGlnaHQgYSBvbmUgd291bGQgY2xpcCBhIG1lbnUuXG4gICAgLS1zd3Atc2lkZWJhci1zdWJtZW51LW1heC1oZWlnaHQ6IDI2cmVtO1xuXG4gICAgLy8gTW9uZXkgZGlzcGxheSAoc2lnbmF0dXJlIGNvbXBvbmVudCAtIHNlZSBjb21wb25lbnRzL19tb25leS5zY3NzKVxuICAgIC8vIEV2ZXJ5IGNvbG91ciBoZXJlIGlzIEFBLWNvbXBsaWFudCBhZ2FpbnN0IEJPVEggYHN1cmZhY2VgIGFuZCBgYm9keS1iZ2AsXG4gICAgLy8gYmVjYXVzZSBtb25leSBtdXN0IG5ldmVyIGJlIG1pc3JlYWRhYmxlIG9uIGFueSBzdXJmYWNlIGl0IGxhbmRzIG9uLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5OiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpOyAgLy8gNy41ODoxIC8gNi45OToxXG4gICAgLS1zd3AtbW9uZXktbmV1dHJhbDogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7ICAgICAvLyAxNC42MzoxIC8gMTMuNTA6MVxuICAgIC0tc3dwLW1vbmV5LXBhaWQ6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspOyAgICAgICAgLy8gNS40ODoxIC8gNS4wNjoxXG4gICAgLS1zd3AtbW9uZXktb3ZlcmR1ZTogdmFyKC0tc3dwLWRhbmdlci1kYXJrKTsgICAgICAvLyA2LjQ3OjEgLyA1Ljk3OjFcblxuICAgIC8vIFJlbGF0aXZlIHN0ZXAgYXBwbGllZCB0byBhIGAubW9uZXktLXRvdGFsYCBhbW91bnQuIFVuaXRsZXNzIG11bHRpcGxpZXIgc29cbiAgICAvLyB0aGUgc3RlcCBpcyBjb3JyZWN0IGF0IGV2ZXJ5IGluaGVyaXRlZCBiYXNlIHNpemUuXG4gICAgLS1zd3AtbW9uZXktdG90YWwtc2NhbGU6IDEuMTI1O1xuXG4gICAgLy8gUmVsYXRpdmUgc2l6ZSBvZiB0aGUgY3VycmVuY3kgY29kZSBhZ2FpbnN0IGl0cyBhbW91bnQuIFRoZSBjb2RlIGlzIGEgdW5pdCxcbiAgICAvLyBub3QgYSBzZWNvbmQgbnVtYmVyLCBhbmQgcmVhZHMgYXMgc3Vib3JkaW5hdGUgcmF0aGVyIHRoYW4gY29tcGV0aW5nLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5LXNjYWxlOiAwLjc1ZW07XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gVHlwb2dyYXBoeVxuICpcbiAqIFR5cG9ncmFwaHkgc2NhbGUsIGZvbnQgZmFtaWxpZXMsIHdlaWdodHMsIGFuZCBsaW5lIGhlaWdodHMuXG4gKiBVc2VzIHN5c3RlbSBmb250cyBmb3Igb3B0aW1hbCBwZXJmb3JtYW5jZSBhbmQgbmF0aXZlIGZlZWwuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBGQU1JTElFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gU3lzdGVtIGZvbnQgc3RhY2sgLSBNb2Rlcm4sIHBlcmZvcm1hbnQsIG5hdGl2ZSBmZWVsXG4gICAgLS1zd3AtZm9udC1zYW5zOiAtYXBwbGUtc3lzdGVtLCBibGlua21hY3N5c3RlbWZvbnQsICdTZWdvZSBVSScsIHJvYm90byxcbiAgICAgICAgICAgICAgICAgICAgICdIZWx2ZXRpY2EgTmV1ZScsIGFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZixcbiAgICAgICAgICAgICAgICAgICAgICdBcHBsZSBDb2xvciBFbW9qaScsICdTZWdvZSBVSSBFbW9qaScsICdTZWdvZSBVSSBTeW1ib2wnLFxuICAgICAgICAgICAgICAgICAgICAgJ05vdG8gQ29sb3IgRW1vamknO1xuXG4gICAgLy8gTW9ub3NwYWNlIGZvciBjb2RlLCBudW1iZXJzIGluIHRhYmxlc1xuICAgIC0tc3dwLWZvbnQtbW9ubzogdWktbW9ub3NwYWNlLCBzZm1vbm8tcmVndWxhciwgJ1NGIE1vbm8nLCBtZW5sbywgbW9uYWNvLFxuICAgICAgICAgICAgICAgICAgICAgY29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG5cbiAgICAvLyBEZWZhdWx0IGZvbnQgZmFtaWx5XG4gICAgLS1zd3AtZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LXNhbnMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT05UIFNJWkVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC10ZXh0LXhzOiAwLjc1cmVtOyAgICAgICAvLyAxMnB4IC0gRmluZSBwcmludCwgYmFkZ2VzXG4gICAgLS1zd3AtdGV4dC1zbTogMC44MTI1cmVtOyAgICAgLy8gMTNweCAtIEhlbHAgdGV4dCwgY2FwdGlvbnNcbiAgICAtLXN3cC10ZXh0LWJhc2U6IDAuOTM3NXJlbTsgICAvLyAxNXB4IC0gQm9keSB0ZXh0IChzbGlnaHRseSBsYXJnZXIgdGhhbiAxNHB4IGZvciByZWFkYWJpbGl0eSlcbiAgICAtLXN3cC10ZXh0LW1kOiAxcmVtOyAgICAgICAgICAvLyAxNnB4IC0gRW1waGFzaXplZCBib2R5XG4gICAgLS1zd3AtdGV4dC1sZzogMS4xMjVyZW07ICAgICAgLy8gMThweCAtIENhcmQgdGl0bGVzLCBzZWN0aW9uIGhlYWRlcnNcbiAgICAtLXN3cC10ZXh0LXhsOiAxLjI1cmVtOyAgICAgICAvLyAyMHB4IC0gUGFnZSBzdWJ0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTJ4bDogMS41cmVtOyAgICAgICAvLyAyNHB4IC0gUGFnZSB0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTN4bDogMS44NzVyZW07ICAgICAvLyAzMHB4IC0gSGVybyB0aXRsZXNcbiAgICAtLXN3cC10ZXh0LTR4bDogMi4yNXJlbTsgICAgICAvLyAzNnB4IC0gTGFyZ2UgZGlzcGxheVxuICAgIC0tc3dwLXRleHQtNXhsOiAzcmVtOyAgICAgICAgIC8vIDQ4cHggLSBFeHRyYSBsYXJnZSBkaXNwbGF5XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSEVJR0hUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtbGVhZGluZy1ub25lOiAxO1xuICAgIC0tc3dwLWxlYWRpbmctdGlnaHQ6IDEuMjU7XG4gICAgLS1zd3AtbGVhZGluZy1zbnVnOiAxLjM3NTtcbiAgICAtLXN3cC1sZWFkaW5nLW5vcm1hbDogMS41O1xuICAgIC0tc3dwLWxlYWRpbmctcmVsYXhlZDogMS42MjU7XG4gICAgLS1zd3AtbGVhZGluZy1sb29zZTogMjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBXRUlHSFRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1mb250LXRoaW46IDEwMDtcbiAgICAtLXN3cC1mb250LWV4dHJhbGlnaHQ6IDIwMDtcbiAgICAtLXN3cC1mb250LWxpZ2h0OiAzMDA7XG4gICAgLS1zd3AtZm9udC1ub3JtYWw6IDQwMDtcbiAgICAtLXN3cC1mb250LW1lZGl1bTogNTAwO1xuICAgIC0tc3dwLWZvbnQtc2VtaWJvbGQ6IDYwMDtcbiAgICAtLXN3cC1mb250LWJvbGQ6IDcwMDtcbiAgICAtLXN3cC1mb250LWV4dHJhYm9sZDogODAwO1xuICAgIC0tc3dwLWZvbnQtYmxhY2s6IDkwMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTEVUVEVSIFNQQUNJTkdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLXRyYWNraW5nLXRpZ2h0ZXI6IC0wLjA1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctdGlnaHQ6IC0wLjAyNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLW5vcm1hbDogMDtcbiAgICAtLXN3cC10cmFja2luZy13aWRlOiAwLjAyNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGVyOiAwLjA1ZW07XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZXN0OiAwLjFlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQT0dSQVBIWSBVVElMSVRZIENMQVNTRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUGFnZSB0aXRsZSAtIExhcmdlLCBwcm9taW5lbnQgaGVhZGluZ1xuXG4udGV4dC1wYWdlLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctdGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbn1cblxuLy8gUGFnZSBzdWJ0aXRsZVxuXG4udGV4dC1wYWdlLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIENhcmQgdGl0bGVcblxuLnRleHQtY2FyZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBDYXJkIHN1YnRpdGxlXG5cbi50ZXh0LWNhcmQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vIFNlY3Rpb24gdGl0bGUgKHdpdGggaWNvbiBwYXR0ZXJuKVxuXG4udGV4dC1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1zbnVnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gTGFiZWwgdGV4dCAoZm9ybSBsYWJlbHMsIHRhYmxlIGhlYWRlcnMpXG5cbi50ZXh0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLy8gQm9keSB0ZXh0XG5cbi50ZXh0LWJvZHkge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXJlbGF4ZWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG59XG5cbi8vIFNtYWxsL0hlbHAgdGV4dFxuXG4udGV4dC1oZWxwIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBNb25vc3BhY2UgdGV4dCAoZm9yIElEcywgY29kZXMpXG5cbi50ZXh0LW1vbm8ge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLy8gVGFibGUgaGVhZGVyIHRleHRcblxuLnRleHQtdGFibGUtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbn1cblxuLy8gRW1waGFzaXplZC9IaWdobGlnaHQgdGV4dFxuXG4udGV4dC1lbXBoYXNpcyB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi8vIE11dGVkIHRleHRcblxuLnRleHQtc3VidGxlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBMaW5rIHN0eWxpbmdcblxuLnRleHQtbGluayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1saW5rLWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1saW5rLWhvdmVyLWNvbG9yKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4vLyBUcnVuY2F0ZSB0ZXh0IHdpdGggZWxsaXBzaXNcblxuLnRleHQtdHJ1bmNhdGUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLy8gTXVsdGktbGluZSB0cnVuY2F0aW9uIChyZXF1aXJlcyAtd2Via2l0KVxuXG4udGV4dC1saW5lLWNsYW1wLTIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMjtcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50ZXh0LWxpbmUtY2xhbXAtMyB7XG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERlc2lnbiBTeXN0ZW0gLSBDb21wb25lbnQgSW5kZXhcbiAqXG4gKiBDdXN0b20gY29tcG9uZW50IHN0eWxlcyB0aGF0IGV4dGVuZCBCb290c3RyYXAvVGFibGVyLlxuICogT25seSBhZGQgc3R5bGVzIGhlcmUgdGhhdCBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgYmV5b25kIHdoYXQgQm9vdHN0cmFwL1RhYmxlciBvZmZlci5cbiAqXG4gKiBOb3RlOiBNb3N0IGNvbXBvbmVudCBzdHlsaW5nIGNvbWVzIGZyb20gQm9vdHN0cmFwIDUgYW5kIFRhYmxlci5cbiAqIFRoaXMgZmlsZSBpbXBvcnRzIG9ubHkgY3VzdG9tIGV4dGVuc2lvbnMsIG5vdCByZXBsYWNlbWVudHMuXG4gKi9cblxuLy8gU2hhcmVkIEZvcm0gUGFnZSAtIENvbnNvbGlkYXRlZCBmb3JtLXBhZ2UgbGF5b3V0IHBhdHRlcm5cbkBpbXBvcnQgJ2Zvcm0tcGFnZSc7XG5cbi8vIERvY3VtZW50IFZpZXcgLSBTaGFyZWQgbGF5b3V0IGZvciBJbnZvaWNlIGFuZCBRdW90ZSB2aWV3IHBhZ2VzXG5AaW1wb3J0ICdkb2N1bWVudC12aWV3JztcblxuLy8gRXh0ZXJuYWwgRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBsYXlvdXQgZm9yIHB1YmxpYy1mYWNpbmcgSW52b2ljZSBhbmQgUXVvdGUgcGFnZXNcbkBpbXBvcnQgJ2V4dGVybmFsLWRvYy12aWV3JztcblxuLy8gTWFya2V0cGxhY2UgLSBTaGFyZWQgc3R5bGVzIGZvciBQYXltZW50IGFuZCBOb3RpZmljYXRpb24gbWFya2V0cGxhY2UgcGFnZXNcbkBpbXBvcnQgJ21hcmtldHBsYWNlJztcblxuLy8gR2xvYmFsIFNlYXJjaCAtIFRvcCBuYXZpZ2F0aW9uIHNlYXJjaCBiYXIgd2l0aCBsaXZlIHJlc3VsdHMgZHJvcGRvd25cbkBpbXBvcnQgJ2dsb2JhbC1zZWFyY2gnO1xuXG4vLyBEYXRhR3JpZCAtIE1vZGVybiB0YWJsZS9ncmlkIGNvbXBvbmVudCBzdHlsZXNcbkBpbXBvcnQgJ2RhdGFncmlkJztcblxuLy8gTW9kdWxlIHdvcmtzcGFjZXMgLSBzaGFyZWQgbGlzdCBzaGVsbHMsIHN1bW1hcnkgY2FyZHMgYW5kIGVudGl0eSBsaW5rc1xuQGltcG9ydCAnd29ya3NwYWNlJztcblxuLy8gQ2xpZW50IEZvcm0gLSBNb2Rlcm4gY2xpZW50IGNyZWF0aW9uIGZvcm1cbkBpbXBvcnQgJ2NsaWVudC1mb3JtJztcblxuLy8gQmlsbGluZyBGb3JtIC0gU2hhcmVkIHN0eWxlcyBmb3IgSW52b2ljZSBhbmQgUXVvdGUgY3JlYXRpb24gZm9ybXNcbkBpbXBvcnQgJ2JpbGxpbmctZm9ybSc7XG5cbi8vIFBheW1lbnQgUGFnZSAtIEludm9pY2UgcGF5bWVudCBmb3JtIHdpdGggbWV0aG9kIHNlbGVjdGlvblxuQGltcG9ydCAncGF5bWVudC1wYWdlJztcblxuLy8gUGF5bWVudHMgTGlzdCAtIFBheW1lbnRzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcyBhbmQgZmlsdGVyc1xuQGltcG9ydCAncGF5bWVudHMtbGlzdCc7XG5cbi8vIFVzZXJzIFBhZ2UgLSBVc2VycyBsaXN0IHdpdGggS1BJIGNhcmRzIGFuZCB0YWJzXG5AaW1wb3J0ICd1c2Vycy1wYWdlJztcblxuLy8gUHJvZmlsZSBQYWdlIC0gVXNlciBwcm9maWxlIGFuZCBzZXR0aW5ncyBwYWdlc1xuQGltcG9ydCAncHJvZmlsZS1wYWdlJztcblxuLy8gVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvbiAtIDJGQSBjb25maWd1cmF0aW9uIGFuZCBsb2dpbiBwYWdlc1xuQGltcG9ydCAndHdvLWZhY3Rvcic7XG5cbi8vIE5vdGlmaWNhdGlvbnMgUGFnZSAtIFVzZXIgbm90aWZpY2F0aW9uIHByZWZlcmVuY2VzXG5AaW1wb3J0ICdub3RpZmljYXRpb25zLXBhZ2UnO1xuXG4vLyBTdWJzY3JpcHRpb24gUGFnZXMgLSBUcmlhbCBleHBpcmVkLCBjYW5jZWxsZWQsIHBlbmRpbmcgc3Vic2NyaXB0aW9uIHN0YXRlc1xuQGltcG9ydCAnc3Vic2NyaXB0aW9uLXBhZ2VzJztcblxuLy8gT25ib2FyZGluZyBDaGVja2xpc3QgLSBEYXNoYm9hcmQgY2hlY2tsaXN0IHdpZGdldCBzdHlsZXNcbkBpbXBvcnQgJ29uYm9hcmRpbmctY2hlY2tsaXN0JztcblxuLy8gT25ib2FyZGluZyBXaXphcmQgLSBGaXJzdC1ydW4gZmxvdyAoL29uYm9hcmRpbmcpIHN0eWxlc1xuQGltcG9ydCAnb25ib2FyZGluZy13aXphcmQnO1xuXG4vLyBNb25leSAtIFNpZ25hdHVyZSBjb21wb25lbnQ7IHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIGV2ZXJ5IGN1cnJlbmN5IHZhbHVlXG5AaW1wb3J0ICdtb25leSc7XG5cbi8vIFN0YXR1cyBDaGlwIC0gU2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgZXZlcnkgc3RhdHVzIHdvcmRcbkBpbXBvcnQgJ3N0YXR1cy1jaGlwJztcblxuLy8gUmVwb3J0cyAtIFNoYXJlZCBmaW5hbmNlIHdvcmtzcGFjZSBsYXlvdXQgKEtQSSB0aWxlcywgY2hhcnQgcGFuZWxzLCBjdXJyZW5jeSB0YWJsZXMpXG5AaW1wb3J0ICdyZXBvcnRzJztcblxuLy8gRGF0ZSBQaWNrZXIgLSBDYWxlbmRhciBhdHRhY2hlZCB0byBkYXktZmlyc3QgZGF0ZSBmaWVsZHNcbkBpbXBvcnQgJ2RhdGVwaWNrZXInO1xuXG4vLyBUaGVtZSBicmlkZ2UgLSBtYXBzIGZyYW1ld29yayBhbmQgVVggY29udHJvbHMgdG8gdGhlIHNoYXJlZCBsaWdodC9kYXJrIHRva2Vuc1xuQGltcG9ydCAndGhlbWUtYnJpZGdlJztcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU2hhcmVkIEZvcm0gUGFnZSBTdHlsZXNcbiAqXG4gKiBDb25zb2xpZGF0ZWQgZm9ybS1wYWdlIGxheW91dCBwYXR0ZXJuIHVzZWQgYWNyb3NzIFRheEJ1bmRsZSwgQ2xpZW50QnVuZGxlLFxuICogVXNlckJ1bmRsZSAoUHJvZmlsZSwgSW52aXRlLCBDaGFuZ2VQYXNzd29yZCkgYW5kIHNpbWlsYXIgZm9ybSBwYWdlcy5cbiAqXG4gKiBUZW1wbGF0ZSBzdHJ1Y3R1cmU6XG4gKiAgIC5mb3JtLXBhZ2UgPiAuZm9ybS1wYWdlLWNvbnRhaW5lclstLW5hcnJvd3wtLW1lZGl1bXwtLXdpZGVdID5cbiAqICAgICAuZm9ybS1wYWdlLWhlYWRlciA+IC5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQgPlxuICogICAgICAgLmZvcm0tcGFnZS1pY29uWy0tc2VjdXJpdHldICsgZGl2KC5mb3JtLXBhZ2UtdGl0bGUgKyAuZm9ybS1wYWdlLXN1YnRpdGxlKVxuICogICAgIC5mb3JtLXBhZ2Utc2VjdGlvbnMgPiAuZm9ybS1wYWdlLXNlY3Rpb24gPlxuICogICAgICAgLnNlY3Rpb24taGVhZGVyID4gLnNlY3Rpb24taWNvblstLXNlY3VyaXR5XSArIC5zZWN0aW9uLWhlYWRlci10ZXh0XG4gKiAgICAgICAgICguc2VjdGlvbi10aXRsZSArIC5zZWN0aW9uLWRlc2NyaXB0aW9uKVxuICogICAgICAgLnNlY3Rpb24tY29udGVudCA+IC5mb3JtLWdyaWQgPiAuZm9ybS1maWVsZFsuZm9ybS1maWVsZC13aWRlXVxuICogICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyA+IC5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lclstLW1lZGl1bV1cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0lEVEgtQ09OU1RSQUlORUQgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTI0KTtcblxuICAgICYtLW5hcnJvdyB7IG1heC13aWR0aDogODAwcHg7IH1cblxuICAgICYtLW1lZGl1bSB7IG1heC13aWR0aDogOTAwcHg7IH1cblxuICAgICYtLXdpZGUgICB7IG1heC13aWR0aDogMTEwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmZvcm0tcGFnZS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tc2VjdXJpdHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4xKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5mb3JtLXBhZ2UtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5mb3JtLXBhZ2Utc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTlMgTElTVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElORElWSURVQUwgU0VDVElPTiBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Utc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIH1cblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBUkVEIFNFQ1RJT04gSEVBREVSICh1c2VkIGluc2lkZSBmb3JtLXBhZ2Utc2VjdGlvbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5zZWN0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXNlY3VyaXR5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjE1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICB9XG59XG5cbi5zZWN0aW9uLWhlYWRlci10ZXh0IHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VjdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBCT0RZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN0aW9uLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFdPLUNPTFVNTiBGT1JNIEdSSURcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxufVxuXG4uZm9ybS1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZm9ybS1maWVsZC13aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVElDS1kgRk9PVEVSIEFDVElPTlMgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2IoMCAwIDAgLyA1JSk7XG59XG5cbi5mb3JtLXBhZ2UtYWN0aW9ucy1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgJi0tbWVkaXVtIHsgbWF4LXdpZHRoOiA5MDBweDsgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTkhBTkNFRCBTQVZFIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLXNhdmUsXG4uYnRuLXNhdmUtcHJpbWFyeSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnktbGcpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWhlYWRlci1jb250ZW50IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWljb24ge1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5mb3JtLXBhZ2UtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIERvY3VtZW50IFZpZXcgU2hhcmVkIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBsYXlvdXQgYW5kIGNvbXBvbmVudCBzdHlsZXMgZm9yIGRvY3VtZW50IGRldGFpbCBwYWdlcy5cbiAqIFVzZXMgZ2VuZXJpYyBgZG9jLXZpZXctKmAgLyBgZG9jLSpgIGNsYXNzIG5hbWVzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLlxuICogSW52b2ljZSwgUXVvdGUsIFB1cmNoYXNlLCBQdXJjaGFzZSBPcmRlciBhbmQgRGVsaXZlcnkgTm90ZSB1c2UgdGhlc2UgY2xhc3Nlcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctcGFnZSB7XG4gICAgbWF4LXdpZHRoOiAxNDAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgPiAucm93LFxuICAgID4gLmNhcmQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uZG9jLXBhcnR5LWdyaWQge1xuXG4gICAgPiBbY2xhc3MqPSdjb2wtJ10ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgfVxufVxuXG4uZG9jLXZpZXctaGVhZGVyLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRvYy12aWV3LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXZpZXctdGl0bGUtZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRvYy12aWV3LWJhY2sge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmRvYy12aWV3LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsLCAxLjI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xufVxuXG4uZG9jLXZpZXctbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmRvYy12aWV3LW1ldGEtaXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG5cbi8vIEhlYWRlciBBY3Rpb25zXG5cbi5kb2Mtdmlldy1oZWFkZXItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICB9XG59XG5cbi5kb2Mtdmlldy11dGlsaXR5LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi8vIERyb3Bkb3duIHN0eWxpbmdcblxuLmRvYy12aWV3LWhlYWRlciAuZHJvcGRvd24tbWVudSB7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlcjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1kaXZpZGVyIHtcbiAgICAgICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFUk8gQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taGVybyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5idG4taGVyby11cmdlbnQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1kYW5nZXIpIDAlLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAxMDAlKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZGFuZ2VyLWhvdmVyKSAwJSwgdmFyKC0tc3dwLWRhbmdlcikgMTAwJSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctZGFuZ2VyLWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BSU4gQ09OVEVOVCBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRvYy12aWV3LWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzQwcHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDEwMjRweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERPQ1VNRU5UIEFSRUEgKE1haW4pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1kb2N1bWVudCB7XG4gICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IG92ZXJmbG93XG59XG5cbi5kb2MtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8vIFBpbGwtc2hhcGVkIHN0YXR1cyBjaGlwcyB3aGVyZXZlciB0aGV5IGFwcGVhciBpbnNpZGUgdGhlIGRvY3VtZW50IHZpZXcgb3IgaXRzXG4vLyBzaWRlYmFyLCBtYXRjaGluZyB0aGUgZGVzaWduIHN5c3RlbSBzcGVjIChyYWRpdXMtZnVsbCwgd2VpZ2h0IDUwMCwgMnB4IHggMTBweCkuXG5cbi5kb2MtY2FyZCAuYmFkZ2UsXG4uZG9jLXBhZ2UtaGVhZGVyIC5iYWRnZSxcbi5kb2Mtdmlldy1oZWFkZXIgLmJhZGdlLFxuLmRvYy12aWV3LXNpZGViYXIgLmJhZGdlIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAvLyBUYWJsZXIgYmluZHMgYHRleHQtZ3JheS1mZ2AgdG8gYW1iZXIgdmlhIC0tYnMtc2Vjb25kYXJ5OyB0aGlzIG1ha2VzIGFcbiAgICAvLyBgQ2FuY2VsbGVkYCBjaGlwIHJlYWQgYXMgYSB3YXJuaW5nLiBQaW4gdGhlIG5ldXRyYWwgY2hpcCB0byBzbGF0ZSBzbyB0aGVcbiAgICAvLyBjb2xvdXIgbWF0Y2hlcyB3aGF0IHRoZSBjbGFzcyBuYW1lIGltcGxpZXMuXG5cbiAgICAmLmJnLWdyYXkudGV4dC1ncmF5LWZnIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyBEb2N1bWVudCBIZWFkZXIgKEZyb20vVG8pXG5cbi5kb2MtaGVhZGVyLWZyb20tdG8ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB2YXIoLS1zd3AtZ3JheS01MCkgMCUsIHZhcigtLXN3cC1zdXJmYWNlKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG59XG5cbi5kb2MtcGFydHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRvYy1wYXJ0eS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZG9jLXBhcnR5LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcsIDEuMTI1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uZG9jLXBhcnR5LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG5cbiAgICAuZGV0YWlsLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBcIjpcIjtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRldGFpbC12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cblxuICAgIGEuZGV0YWlsLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBMaW5lIEl0ZW1zIFRhYmxlXG5cbi5kb2MtaXRlbXMge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRvYy1pdGVtcy10YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuICAgIHRoZWFkIHtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAgICAgICAmLmNvbHVtbi1wcmljZSxcbiAgICAgICAgICAgICYuY29sdW1uLXF0eSxcbiAgICAgICAgICAgICYuY29sdW1uLXRheCxcbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhpZGUgdGFibGUgaGVhZGVyIG9uIG1vYmlsZVxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhY2sgcm93cyBhcyBjYXJkcyBvbiBtb2JpbGVcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXG4gICAgICAgICAgICAmLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29sdW1uLXByaWNlLFxuICAgICAgICAgICAgJi5jb2x1bW4tcXR5LFxuICAgICAgICAgICAgJi5jb2x1bW4tdGF4LFxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIGNlbGxzIG9uIG1vYmlsZVxuICAgICAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb2x1bW4gd2lkdGhzIChkZXNrdG9wIG9ubHkpXG4gICAgQG1lZGlhICh3aWR0aCA+PSA2NDFweCkge1xuXG4gICAgICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMjBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcXR5IHtcbiAgICAgICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10YXgge1xuICAgICAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRvdGFscyBTZWN0aW9uXG5cbi5kb2MtdG90YWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uZG9jLXRvdGFscy1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbn1cblxuLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cbn1cblxuLy8gUGF5bWVudHMgcmVjZWl2ZWQgYXJlIG1vbmV5IGluOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZSBoZXJlLlxuXG4udG90YWxzLXJvdy1wYXltZW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi8vIEEgZGlzY291bnQgaXMgYSBkZWR1Y3Rpb24sIG5vdCBhIHN1Y2Nlc3Mgc3RhdGUuIFN0YXkgbmV1dHJhbDsgcXVpZXQgJDAgY2FzZXMuXG5cbi50b3RhbHMtcm93LWRpc2NvdW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi50b3RhbHMtcm93LWZpbmFsIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBHcmFuZCB0b3RhbCBpcyBpbmZvcm1hdGlvbmFsOyBncmVlbiBpcyByZXNlcnZlZCBmb3IgYWN0dWFsbHktcGFpZCBzdGF0ZXNcbiAgICAvLyAoaGFuZGxlZCBieSAuc3VtbWFyeS1pdGVtLXBhaWQgLyAudG90YWxzLXJvdy1wYXltZW50KS5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnLCAxLjEyNXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cbn1cblxuLmRvYy1jdXJyZW5jeS1zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmRvYy1jdXJyZW5jeS1zdW1tYXJ5LWNhcmQge1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICAmLS1jb252ZXJ0ZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG5cbiAgICAgICAgLmRvYy1jdXJyZW5jeS1zdW1tYXJ5LWFtb3VudCB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kb2MtY3VycmVuY3ktc3VtbWFyeS1sYWJlbCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmRvYy1jdXJyZW5jeS1zdW1tYXJ5LWFtb3VudCB7XG4gICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gRG9jdW1lbnQgRm9vdGVyIChUZXJtcyAmIE5vdGVzKVxuXG4uZG9jLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5kb2MtZm9vdGVyLXNlY3Rpb24ge1xuXG4gICAgJiArICYge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5kb2MtZm9vdGVyLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbn1cblxuLmRvYy1mb290ZXItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lERUJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctc2lkZWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMDI0cHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gICAgfVxufVxuXG4uZG9jLXNpZGViYXItY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLW11dGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXN1Y2Nlc3Mge1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1oaWdobGlnaHQge1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1zdWNjZXNzIC5kb2Mtc2lkZWJhci1jYXJkLWljb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gU3VtbWFyeSBHcmlkXG5cbi5kb2Mtc3VtbWFyeS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi8vIFN1bW1hcnkgSXRlbXNcblxuLnN1bW1hcnktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIC5zdW1tYXJ5LWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxuXG4gICAgLy8gQW1vdW50IGZpZWxkOiB0b3RhbCBpbnZvaWNlIHZhbHVlLiBOZXV0cmFsIGJ5IGRlZmF1bHQ7IHRoZSBzdGF0dXMgcm93IGNhcnJpZXNcbiAgICAvLyB0aGUgXCJQYWlkIC8gT3ZlcmR1ZSAvIERyYWZ0XCIgbWVhbmluZy4gR3JlZW4gaGVyZSB3b3VsZCBkb3VibGUtZW5jb2RlLlxuXG4gICAgLnN1bW1hcnktdmFsdWUtYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLy8gQmFsYW5jZSBzdGlsbCBvd2VkOiBhbWJlciBhdHRlbnRpb24gaXMgYXBwcm9wcmlhdGUuXG5cbiAgICAuc3VtbWFyeS12YWx1ZS1iYWxhbmNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1pdGVtLW92ZXJkdWUge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtMikpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWl0ZW0tcGFpZCB7XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4vLyBDbGllbnQgSW5mbyAodXNlZCBpbiBzaWRlYmFyKVxuXG4uY2xpZW50LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNsaWVudC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LWNvbnRhY3Qge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5jb250YWN0LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5jb250YWN0LWVtYWlsLFxuLmNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8vIFBheW1lbnRzIExpc3QgKHVzZWQgaW4gaW52b2ljZSBzaWRlYmFyKVxuXG4ucGF5bWVudHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4ucGF5bWVudC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5wYXltZW50LWNhcmQtY2FwdHVyZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG59XG5cbi5wYXltZW50LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnBheW1lbnQtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtY2FyZC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5wYXltZW50LW1ldGhvZCxcbi5wYXltZW50LWRhdGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLnBheW1lbnQtbWVzc2FnZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gUmVsYXRlZCBkb2N1bWVudCBsaW5rc1xuXG4ucmVsYXRlZC1xdW90ZS1saW5rLFxuLnJlbGF0ZWQtaW52b2ljZS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4ucmVsYXRlZC1pbnZvaWNlLXN0YXR1cyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5kb2Mtdmlldy1wYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmRvYy12aWV3LWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuZG9jLXZpZXctZG9jdW1lbnQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZG9jLWNhcmQge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRvYy1oZWFkZXItZnJvbS10byB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICB9XG5cbiAgICAuZG9jLWl0ZW1zLXRhYmxlIHtcblxuICAgICAgICB0aGVhZCB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZG9jLXRvdGFscy1ncmlkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuZG9jLWZvb3RlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLm5vLXByaW50IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgc3R5bGVzIGZvciBwdWJsaWMtZmFjaW5nIGludm9pY2UgYW5kIHF1b3RlIHZpZXdzLlxuICogSW52b2ljZS1zcGVjaWZpYzogZXh0ZXJuYWwtaW52b2ljZS12aWV3LnNjc3NcbiAqIFF1b3RlLXNwZWNpZmljOiBleHRlcm5hbC1xdW90ZS12aWV3LnNjc3NcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIFdSQVBQRVIgKHNoYXJlZCBiYXNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTAsICNmOGZhZmMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUFAgQlJBTkRJTkcgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hcHAtYnJhbmRpbmctaGVhZGVyIHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gMDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuXG4gICAgLmFwcC1sb2dvIHtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNDBweDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwLWJyYW5kLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgfVxuXG4gICAgLmFwcC1icmFuZC10YWdsaW5lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc2Vjb25kYXJ5LCAjNjQ3NDhiKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSU9OIEJBUiAoVE9QKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1hY3Rpb24tYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWJnLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQT0dSQVBIWSAmIFZJU1VBTCBISUVSQVJDSFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29tcGFueSBuYW1lIGluIGhlYWRlclxuXG4uZXh0LWRvYy1jb21wYW55LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLy8gRG9jdW1lbnQgbnVtYmVyIC0gbGFyZ2UgYW5kIHByb21pbmVudFxuXG4uZXh0LWRvYy1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5leHQtZG9jLW51bWJlci1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gVkFUIG51bWJlciAtIHN1YnRsZSBvcGFjaXR5XG5cbi5leHQtZG9jLXZhdC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNzU7XG59XG5cbi8vIExvZ28gY29udGFpbmVyXG5cbi5leHQtZG9jLWxvZ28ge1xuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUVUQURBVEEgQ0FSRCAtIERhdGUsIER1ZSBEYXRlLCBUb3RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1tZXRhZGF0YS1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5leHQtZG9jLW1ldGFkYXRhLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG59XG5cbi5leHQtZG9jLW1ldGFkYXRhLXRvdGFsIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGUk9NIC8gVE8gU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtcGFydGllcy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmV4dC1kb2MtcGFydHktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5leHQtZG9jLXBhcnR5LWRldGFpbCB7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBJVEVNUyBUQUJMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1pdGVtcy10YWJsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcblxuICAgIHRoZWFkIHtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3IsICNjYmQ1ZTEpO1xuICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTUwLCAjZjhmYWZjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgfVxuXG4gICAgLml0ZW0tYW1vdW50IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAndG51bSc7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RBTFMgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy10b3RhbHMtY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG59XG5cbi5leHQtZG9jLXRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC42MjVyZW0gMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtdG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAndG51bSc7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZXh0LWRvYy10b3RhbHMtZmluYWwge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1kYXJrLCAjOTRhM2I4KTtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgICBtYXJnaW4tdG9wOiAwLjc1cmVtO1xuXG4gICAgLmV4dC1kb2MtdG90YWxzLXJvdyB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9PVEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWZvb3RlciB7XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG5cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIGltZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDI0cHg7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBUkQgUkVGSU5FTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3RhdHVzIGJhZGdlc1xuXG4uYmFkZ2Uge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG59XG5cbi8vIEhvcml6b250YWwgcnVsZXNcblxuaHIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8vIEZvY3VzIHN0eWxlcyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvblxuXG4uYnRuOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10YmxyLXByaW1hcnksICMyZTk2M2EpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5jYXJkLWxnIHtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAyLjVyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MXB4KSB7XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIC5jYXJkLWJvZHksXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgfVxuXG4gICAgLmNhcmQtbGcgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2N3B4KSB7XG5cbiAgICAuZXh0LWRvYy1udW1iZXIge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtZmluYWwgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXBhcnRpZXMtc2VjdGlvbiB7XG5cbiAgICAgICAgLmNvbC1zbS02OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuXG4gICAgLmNvbnRhaW5lci14bCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQgLmNhcmQtYm9keSxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICB9XG5cbiAgICAvLyBBcHAgYnJhbmRpbmcgaGVhZGVyIC0gc3RhY2sgb24gbW9iaWxlXG5cbiAgICAuYXBwLWJyYW5kaW5nLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBwLWJyYW5kLW5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwcC1icmFuZC10YWdsaW5lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9vdGVyIC0gc3RhY2sgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1mb290ZXIge1xuXG4gICAgICAgIC5idG4tc20ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0YWNrIG1ldGFkYXRhIGl0ZW1zIG9uIG1vYmlsZVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCB7XG5cbiAgICAgICAgLmNvbC1zbS00LFxuICAgICAgICAuY29sLXNtLTYge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBhY3Rpb24gYnV0dG9ucyBzdGFjayBuaWNlbHkgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1hY3Rpb24tYmFyIHtcblxuICAgICAgICAuZC1mbGV4Lmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IDAuNzVyZW07XG5cbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ0bi1wcmltYXJ5LFxuICAgICAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFibGUgYWRqdXN0bWVudHNcblxuICAgIC5leHQtZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcblxuICAgICAgICB0aGVhZCB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm8tcHJpbnQsXG4gICAgLmQtcHJpbnQtbm9uZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQHBhZ2Uge1xuICAgICAgICBtYXJnaW46IDFjbTtcbiAgICB9XG5cbiAgICBodG1sLFxuICAgIGJvZHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5leHQtZG9jLXBhZ2UsXG4gICAgLnBhZ2Utd3JhcHBlcixcbiAgICAucGFnZS1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNvbnRhaW5lci14bCB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwLjVjbSAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQsXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLmNhcmQtbGcgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXV0bztcbiAgICB9XG5cbiAgICB0ciB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIGJyZWFrLWFmdGVyOiBhdXRvO1xuICAgIH1cblxuICAgIHRoZWFkIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICAgIH1cblxuICAgIC5iZy1saWdodCxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkLFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmJnLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LXByaW1hcnksXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwsXG4gICAgLmV4dC1kb2MtdG90YWxzLWZpbmFsIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAjMmU5NjNhICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAudGV4dC1kYW5nZXIge1xuICAgICAgICBjb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMTBiOTgxICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1pdGVtcy10YWJsZSB0Ym9keSB0cjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZDpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBociB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2NiZDVlMSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTaGFyZWQgTWFya2V0cGxhY2UgU3R5bGVzXG4gKlxuICogQ29tbW9uIHN0eWxlcyBzaGFyZWQgYmV0d2VlbiBQYXltZW50QnVuZGxlIGFuZCBOb3RpZmljYXRpb25CdW5kbGUgbWFya2V0cGxhY2UgcGFnZXMuXG4gKiBQYWdlLXNwZWNpZmljIHN0eWxlcyByZW1haW4gaW4gcGF5bWVudC1tYXJrZXRwbGFjZS5zY3NzIGFuZCBub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVJLRVRQTEFDRSBQQU5FTCAtIExlZnQgU2lkZSBTdGlja3kgUGFuZWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtMTYpKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiA2cHg7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tYXJrZXRwbGFjZS1oZWFkZXIge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG5cbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gNSUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLmZvcm0tY29udHJvbDpmb2N1cykge1xuXG4gICAgICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFTEVURSBDT05GSVJNQVRJT04gTkVTVEVEIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNjAlKTtcbiAgICB6LWluZGV4OiAxMDYwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjE1cyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNzA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4xNXMgZWFzZTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2NhbGUtaW4gMC4ycyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24taGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgaDQge1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmRlbGV0ZS1pY29uLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1mb290ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSEFSRUQgQU5JTUFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cblxuICAgIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNsaWRlLXVwIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45OCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNjYWxlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVUSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJhZGdlLXNtIHtcbiAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4ubWFya2V0cGxhY2Utc2VhcmNoLWNsZWFyIHtcbiAgICB6LWluZGV4OiAxMDtcbiAgICByaWdodDogOHB4ICFpbXBvcnRhbnQ7XG59XG4iLCIvKipcbiAqIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG4gKi9cblxuLmdsb2JhbC1zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuXG4gICAgJi1pbnB1dC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICYtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMC43NXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICYtaW5wdXQge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAvLyAwLjc1cmVtIGljb24tbGVmdCArIDFyZW0gaWNvbi13aWR0aCArIDAuNXJlbSBnYXAgPSAyLjI1cmVtXG4gICAgICAgIC8vIFJpZ2h0OiBoZWxwLWJ0biAyMHB4ICsgZ2FwIDZweCArIHNob3J0Y3V0IH42NXB4ICsgbWFyZ2luIDEwcHggPSB+MTAxcHgg4omIIDYuNXJlbVxuICAgICAgICBwYWRkaW5nOiAwIDYuNXJlbSAwIDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgICBsaW5lLWhlaWdodDogMzhweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWlucHV0LWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1pbnB1dC1yYWRpdXMpO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcblxuICAgICAgICAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0IHNlYXJjaCBjYW5jZWwgYnV0dG9uXG5cbiAgICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbiAgICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTIpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMC42MjVyZW07XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgIH1cblxuICAgICYtc2hvcnRjdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAga2JkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xcmVtIDAuMzVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWFyY2gtaGVscC10cmlnZ2VyIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4uc2VhcmNoLWhlbHAtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4uc2VhcmNoLWhlbHAtb3Age1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgcGFkZGluZzogMC4xNXJlbSAwLjVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLnNlYXJjaC1oZWxwLWV4YW1wbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDNweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbiNzZWFyY2hIZWxwTW9kYWwgLm1vZGFsLWJvZHkge1xuICAgIC8vIFRoZSBzZWFyY2ggZ3VpZGUgbGF5cyBvdXQgaXRzIG93biBmdWxsLWJsZWVkIHNlY3Rpb25zIChiYW5kcywgZGl2aWRlcnMsXG4gICAgLy8gY29sdW1ucyksIHNvIHRoZSBtb2RhbCBib2R5IG11c3Qgbm90IGFkZCBwYWRkaW5nIG9mIGl0cyBvd24uXG4gICAgcGFkZGluZzogMDtcbn1cblxuLnNlYXJjaC1kcm9wZG93biB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWluLXdpZHRoOiA1MjBweDtcblxuICAgIC8vIEV4dGVuZCBzeW1tZXRyaWNhbGx5IGJleW9uZCB0aGUgaW5wdXQgZm9yIGEgd2lkZXIgcGFuZWxcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtbWVudS1iZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuXG4gICAgLy8gVXNlIGlzb2xhdGlvbiB0byBhdm9pZCBzdGFja2luZyBjb250ZXh0IGlzc3VlcyBmcm9tIHRoZSBuYXZiYXJcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG4gICAgei1pbmRleDogOTk5OTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBhbmltYXRpb246IHNlYXJjaC1kcm9wZG93bi1pbiAwLjEycyBlYXNlLW91dDtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgc2VhcmNoLWRyb3Bkb3duLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCkgc2NhbGUoMC45OSk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uc2VhcmNoLXNwaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgICBwYWRkaW5nOiAxLjI1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHRzIHtcbiAgICBtYXgtaGVpZ2h0OiA0NDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLW1lbnUtYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDRweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIH1cbn1cblxuLnNlYXJjaC1ncm91cCB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbiAgICB9XG5cbiAgICAmLWxhYmVsIHtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMC44NzVyZW0gMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1pdGVtIHtcblxuICAgICYuaXMtYWN0aXZlIC5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtbWVudS1ob3Zlci1iZyk7XG4gICAgfVxuXG4gICAgJjpob3ZlciAuc2VhcmNoLXJlc3VsdC1saW5rIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLW1lbnUtaG92ZXItYmcpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1saW5rIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAwLjc1cmVtO1xuICAgIHBhZGRpbmc6IDAuNXJlbSAwLjg3NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4wOHMgZWFzZTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzRweDtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWFyY2gtcmVzdWx0LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnNlYXJjaC1yZXN1bHQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWFyZ2luLXRvcDogMXB4O1xufVxuXG4uc2VhcmNoLXJlc3VsdC1hc2lkZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBnYXA6IDAuMnJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC40NXJlbTtcbn1cblxuLnNlYXJjaC1yZXN1bHQtbWV0YSB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnNlYXJjaC1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMi41cmVtIDFyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtbWVudS1iZyk7XG5cbiAgICAmLWljb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgICYtdGV4dCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbi5zZWFyY2gtZXJyb3Ige1xuICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1kYXJrKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLW1lbnUtYmcpO1xufVxuXG4uc2VhcmNoLWNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgcGFkZGluZzogMC4xNXJlbSAwLjVyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi1yZW1vdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNlYXJjaC1jaGlwcy1iYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogNHB4O1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBtaW4taGVpZ2h0OiAwO1xuXG4gICAgJjplbXB0eSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhcmNoLXN1Z2dlc3Rpb25zIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA0cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtbWVudS1iZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiKDAgMCAwIC8gMTIlKTtcbiAgICB6LWluZGV4OiAxMDAwMDtcbiAgICBwYWRkaW5nOiAwLjI1cmVtIDA7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgICYuaXMtb3BlbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtIDAuMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgICYtaXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNHJlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1tZW51LWhvdmVyLWJnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvZGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEYXRhR3JpZCBDb21wb25lbnQgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBkYXRhIGdyaWQgc3R5bGluZyBmb2xsb3dpbmcgdGhlIFNvbGlkSW52b2ljZSBkZXNpZ24gc3lzdGVtLlxuICogVXNlcyBkZXNpZ24gdG9rZW5zIGZyb20gX3Rva2Vucy5zY3NzIGZvciBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEQVRBR1JJRCBCQVNFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciB0aGUgZW50aXJlIGRhdGFncmlkIGNvbXBvbmVudFxuICAgIC8vIE5vdGU6IG92ZXJmbG93IGlzIE5PVCBzZXQgdG8gaGlkZGVuIHRvIGFsbG93IGRyb3Bkb3ducyB0byBleHRlbmQgYmV5b25kIGJvdW5kc1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIC8vIEZsYXNoIG1lc3NhZ2VzIGluc2lkZSB0aGUgZGF0YWdyaWRcblxuICAgID4gLmFsZXJ0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG59XG5cbi5kYXRhZ3JpZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUFSQ0ggJiBGSUxURVIgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtdG9vbGJhci0tcHJvbWluZW50LXNlYXJjaCB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXG4gICAgLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLXN0YXJ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5kYXRhZ3JpZC10b29sYmFyLWVuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZGF0YWdyaWQtc2VhcmNoIHtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogMzIwcHg7XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNlYXJjaC1jb250cm9sIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1zZWFyY2gtLXByb21pbmVudCB7XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICAgICAgbWluLWhlaWdodDogMi43NXJlbTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWRSBGSUxURVJTIChDaGlwcyBpbiB0b29sYmFyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtYWN0aXZlLWZpbHRlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuXG4gICAgICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXJlbW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1rZXkge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnOic7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXZhbHVlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItcmVtb3ZlIHtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSUxURVIgUEFORUwgKERyb3Bkb3duKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtZmlsdGVyLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwge1xuICAgIHdpZHRoOiAyMS41cmVtO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBFbnN1cmUgbmVzdGVkIGRyb3Bkb3ducyAobGlrZSBzZWxlY3QyKSBhcHBlYXIgYWJvdmUgdGhlIHBhbmVsXG5cbiAgICAuZHJvcGRvd24tbWVudSxcbiAgICAuc2VsZWN0Mi1jb250YWluZXItLW9wZW4ge1xuICAgICAgICB6LWluZGV4OiAxMDYwICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDM1MHB4KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLy8gRW5zdXJlIGRyb3Bkb3ducyB3aXRoaW4gZmllbGRzIGhhdmUgcHJvcGVyIHotaW5kZXhcblxuICAgIC5mb3JtLXNlbGVjdCxcbiAgICBzZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgfVxuXG4gICAgLy8gQSBkYXRlIHJhbmdlIGxhYmVscyBib3RoIG9mIGl0cyBpbnB1dHMgd2l0aCB0aGUgZmllbGQgbmFtZSAoXCJJbnZvaWNlIGRhdGUgU3RhcnRcIiAvXG4gICAgLy8gXCJJbnZvaWNlIGRhdGUgRW5kXCIpLCBzbyB0aGUgZ3JvdXAgbGFiZWwgYWJvdmUgaXQgd291bGQgc2F5IHRoZSBzYW1lIHRoaW5nIHR3aWNlIC0tXG4gICAgLy8gYW5kIGluIHRoaXMgcGFuZWwgdGhhdCBsYWJlbCBpcyBkZXJpdmVkIGZyb20gdGhlIGNoaWxkIG5hbWUsIHdoaWNoIGFycml2ZXMgY2FtZWxcbiAgICAvLyBjYXNlZCBhbmQgcmVhZHMgYXMgb25lIHdvcmQgKFwiSW52b2ljZWRhdGVcIikuXG5cbiAgICAmOmhhcyguZGF0YWdyaWQtZGF0ZS1yYW5nZSkgPiAuZGF0YWdyaWQtZmlsdGVyLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItd2lkZ2V0IHtcbiAgICAvLyBDb250YWluZXIgZm9yIGZvcm0gd2lkZ2V0c1xuXG4gICAgLy8gRGF0ZSByYW5nZSBmaWVsZHMgLSB0d28gdHJhY2tzLCBhbmQgbm90aGluZyBlbHNlIHRvdWNoaW5nIHRoZSB3aWR0aC4gVGhlIGZpZWxkc1xuICAgIC8vIHRoZW1zZWx2ZXMgZmlsbCB0aGVpciB0cmFjay5cblxuICAgID4gLmRhdGFncmlkLWRhdGUtcmFuZ2Uge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIC8vIEVhY2ggZGF0ZSBmaWVsZCBjb250YWluZXJcblxuICAgICAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwYW5kZWQgY2hvaWNlIChjaGVja2JveGVzL3JhZGlvcykgLSByZW5kZXIgYXMgc3RhbmRhcmQgY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgYW55IHN3aXRjaCBzdHlsZXMgLSBmb3JjZSByZWd1bGFyIGNoZWNrYm94IGFwcGVhcmFuY2VcblxuICAgICAgICAmLmZvcm0tc3dpdGNoIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBSZW1vdmUgc3dpdGNoL3BpbGwgYXBwZWFyYW5jZVxuXG4gICAgICAgICAgICAmW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcblxuICAgICAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMjAgMjAnJTNlJTNjcGF0aCBmaWxsPSdub25lJyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBzdHJva2Utd2lkdGg9JzMnIGQ9J002IDEwbDMgM2w2LTYnLyUzZSUzYy9zdmclM2VcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3BhY2UgYmV0d2VlbiBjaGVja2JveGVzXG5cbiAgICAuZm9ybS1jaGVjayArIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1mb290ZXIge1xuICAgIC8vIFRoZSBmb290ZXIgbGl2ZXMgaW5zaWRlIHRoZSBzY3JvbGxpbmcgZmllbGQgbGlzdCwgc28gb24gYSBwYW5lbCB3aXRoIHNldmVyYWxcbiAgICAvLyBmaWx0ZXJzIHRoZSBBcHBseSBidXR0b24gc2F0IGJlbG93IHRoZSBmb2xkLiBTdGlja2luZyBpdCB0byB0aGUgYm90dG9tIG9mIHRoYXRcbiAgICAvLyBsaXN0IGtlZXBzIGl0IHJlYWNoYWJsZSB3aGlsZSB0aGUgZmllbGRzIHNjcm9sbCB1bmRlcm5lYXRoIGl0LlxuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xufVxuXG4vLyBGb3JtIGVsZW1lbnRzIHdpdGhpbiBmaWx0ZXIgcGFuZWxcblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgLy8gU3RhbmRhcmQgZm9ybSBjb250cm9sc1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTXVsdGlwbGUgY2hvaWNlIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xLTUpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdoZW4gbXVsdGlwbGUgY2hlY2tib3hlcyBpbiBhIGxpc3RcblxuICAgIC5mb3JtLWNoZWNrICsgLmZvcm0tY2hlY2sge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0IGRyb3Bkb3duIGFkanVzdG1lbnRzXG5cbiAgICBzZWxlY3RbbXVsdGlwbGVdIHtcbiAgICAgICAgbWluLWhlaWdodDogMTIwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICAgICBvcHRpb24ge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAgICAgICAgICY6Y2hlY2tlZCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFWFBPUlQgTUVOVSAoRHJvcGRvd24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1leHBvcnQtZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51IHtcbiAgICB3aWR0aDogMjgwcHg7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudS1oZWFkZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudS1zdWJ0aXRsZSB7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtbWVudS1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAuZGF0YWdyaWQtZXhwb3J0LW9wdGlvbjpob3ZlciAmLFxuICAgIC5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uOmZvY3VzLXZpc2libGUgJiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLXRleHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW9wdGlvbi1oaW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT0xVTU4gVklTSUJJTElUWVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtY29sdW1uLXBpY2tlciB7XG5cbiAgICAuZHJvcGRvd24tdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMzZweDtcbiAgICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICB9XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTsgLy8gSGlkZSBkZWZhdWx0IGRyb3Bkb3duIGNhcmV0XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIGFjY2VudC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUJMRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGhlIHRhYmxlIGlzIHdpZGVyIHRoYW4gdGhlIGNhcmQgb24gdGhlIGxpc3RzIHdpdGggbWFueSBjb2x1bW5zIChpbnZvaWNlcywgcXVvdGVzKSwgc29cbi8vIHRoZSB3cmFwcGVyIHNjcm9sbHMgaG9yaXpvbnRhbGx5LiBgb3ZlcmZsb3cteDogYXV0b2AgYWxvbmUgaXMgbm90IGVub3VnaDogdGhlIHRhYmxlJ3Ncbi8vIGludHJpbnNpYyB3aWR0aCBzdGlsbCBwcm9wYWdhdGVzIHVwIHRocm91Z2ggdGhlIGZsZXggcGFnZSBjb2x1bW4gYW5kIHdpZGVucyB0aGUgd2hvbGVcbi8vIGRvY3VtZW50LCB3aGljaCBnaXZlcyB0aGUgcGFnZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIG9mIGl0cyBvd24gYW5kIGxlYXZlcyB0aGUgc3RpY2t5XG4vLyBjaHJvbWUgYmVoaW5kIHdoZW4gaXQgaXMgdXNlZC4gTGF5b3V0IGNvbnRhaW5tZW50IHN0b3BzIHRoZSBjb250ZW50cyBmcm9tIGNvbnRyaWJ1dGluZ1xuLy8gdG8gdGhlIGFuY2VzdG9ycycgaW50cmluc2ljIHNpemUgd2hpbGUga2VlcGluZyB0aGUgd3JhcHBlciBpdHNlbGYgc2Nyb2xsYWJsZS5cblxuLy8gTm90ZSBmb3Igd2hvZXZlciBmaXhlcyB0aGUgcm93IFwibW9yZSBhY3Rpb25zXCIgbWVudTogdGhpcyBvdmVyZmxvdyBhbHNvIGNsaXBzIHRoYXQgbWVudSxcbi8vIGFuZCBjb250YWlubWVudCBtYWtlcyB0aGUgd3JhcHBlciBhIGNvbnRhaW5pbmcgYmxvY2sgZm9yIGZpeGVkLXBvc2l0aW9uIGRlc2NlbmRhbnRzLCBzb1xuLy8gYSBgcG9zaXRpb246IGZpeGVkYCBlc2NhcGUgd291bGQgaGF2ZSB0byBkcm9wIGBjb250YWluYCBoZXJlIGFuZCBzaXplIHRoaXMgYm94IGFub3RoZXJcbi8vIHdheS5cblxuLmRhdGFncmlkLXRhYmxlLXdyYXBwZXIge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgY29udGFpbjogbGF5b3V0O1xufVxuXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICB0aCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIH1cblxuICAgIHRib2R5IHtcbiAgICAgICAgLy8gVGFidWxhciBmaWd1cmVzIGFjcm9zcyB0aGUgdGFibGUgc28gYW1vdW50cywgSURzIGFuZCBkYXRlcyBhbGlnbiBjbGVhbmx5XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxuXG4gICAgdGJvZHkgdHIge1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHR5cGVzXG5cbiAgICAuY29sLWNoZWNrYm94IHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICB0aC5jb2wtY2hlY2tib3gge1xuICAgICAgICAvLyBLZWVwIGhlYWRlciBjaGVja2JveCBjZW50ZXJlZCB0byBtYXRjaCBjZWxsc1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNvbC1pZCB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmNvbC1kYXRlIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBNb25leSBjb2x1bW5zOiByaWdodC1hbGlnbiBib3RoIGhlYWRlciBhbmQgY2VsbCwgdGFidWxhciBmaWd1cmVzIG9uIHN5c3RlbSBmb250LlxuICAgIC8vIE1vbm8gaXMgcmVzZXJ2ZWQgZm9yIGlkZW50aWZpZXJzIHBlciB0aGUgZGVzaWduIHN5c3RlbTsgbW9uZXkgcmVhZHMgYXMgZGF0YSwgbm90IGNvZGUuXG5cbiAgICAuY29sLWFtb3VudCxcbiAgICAuY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIHRoLmNvbC1hbW91bnQsXG4gICAgdGguY29sLW1vbmV5IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGhlIHNvcnRhYmxlIGxpbmsgaW5zaWRlIGEgcmlnaHQtYWxpZ25lZCBoZWFkZXIgbmVlZHMgaXRzIGNvbnRlbnQgcHVzaGVkIHJpZ2h0IHRvb1xuXG4gICAgdGguY29sLWFtb3VudCAuZGF0YWdyaWQtc29ydC1saW5rLFxuICAgIHRoLmNvbC1tb25leSAuZGF0YWdyaWQtc29ydC1saW5rIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAuY29sLXN0YXR1cyB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmNvbC1hY3Rpb25zIHtcbiAgICAgICAgd2lkdGg6IDElO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAvLyBUYWJsZXIgYmFkZ2VzIGxpdmUgaW5zaWRlIHN0YXR1cyBjZWxscy4gVGhlIGRlc2lnbiBzeXN0ZW0gbWFuZGF0ZXMgcGlsbCBjaGlwcy5cblxuICAgIHRib2R5IC5iYWRnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgICAgICAgLy8gYHRleHQtZ3JheS1mZ2AgaXMgYW1iZXItYm91bmQ7IG5ldXRyYWxpc2UgdGhlIENhbmNlbGxlZCBjaGlwIGV4cGxpY2l0bHkuXG5cbiAgICAgICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFNvcnRhYmxlIGNvbHVtbiBoZWFkZXJzXG5cbi5kYXRhZ3JpZC1zb3J0LWxpbmsge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgICYuc29ydGVkIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc29ydC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHdpZHRoOiAxNHB4O1xuICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgIG9wYWNpdHk6IDAuMzU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIgLmRhdGFncmlkLXNvcnQtaWNvbiB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBST1cgQUNUSU9OUyAoSWNvbiBCdXR0b25zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtcm93LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGF0YWdyaWQtYWN0aW9uLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi12aWV3OmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5hY3Rpb24tZWRpdDpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuYWN0aW9uLWRlbGV0ZTpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vIFRocmVlLWRvdCBtZW51IGJ1dHRvblxuXG4uZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyLFxuICAgICZbYXJpYS1leHBhbmRlZD1cInRydWVcIl0ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBUaHJlZS1kb3QgZHJvcGRvd24gbWVudSBjb250YWluZXJcblxuLmRhdGFncmlkLW1vcmUtbWVudSB7XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMTYwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJi50ZXh0LWRhbmdlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwO1xuICAgIH1cbn1cblxuLy8gU2hvdyBtb3JlIGJ1dHRvbiBvbiByb3cgaG92ZXIgb25seSAoc3VidGxlIFVYKVxuXG50Ym9keSB0cjpub3QoOmhvdmVyKSAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbnRib2R5IHRyOmhvdmVyIC5kYXRhZ3JpZC1tb3JlLWJ0bixcbi5kYXRhZ3JpZC1tb3JlLW1lbnUuc2hvdyAuZGF0YWdyaWQtbW9yZS1idG4ge1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tCT1ggU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBhY2NlbnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWVtcHR5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTYpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgaGVpZ2h0OiA4MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZW1wdHktdGl0bGUge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRhdGFncmlkLWVtcHR5LW1lc3NhZ2Uge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xufVxuXG4uZGF0YWdyaWQtZW1wdHktYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGTE9BVElORyBCVUxLIEFDVElPTiBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWJ1bGstYmFyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgYm90dG9tOiAyNHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMDBweCk7XG4gICAgei1pbmRleDogOTk5OTsgLy8gVmVyeSBoaWdoIHRvIGVuc3VyZSB2aXNpYmlsaXR5IGFib3ZlIGV2ZXJ5dGhpbmdcbiAgICBvcGFjaXR5OiAwO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5IDBzIDMwMG1zO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHkgMHM7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1iYXItaW5uZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY291bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAuY291bnQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1pbi13aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktOTAwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDEwJSk7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbiAgICB9XG5cbiAgICAmLmJ0bi1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjM5IDY4IDY4IC8gMjAlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcbn1cblxuLmRhdGFncmlkLWJ1bGstY2xvc2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAxMCUpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHSU5BVElPTiBGT09URVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZvb3Rlci1pbmZvIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uZGF0YWdyaWQtcGVyLXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1wYWdpbmF0aW9uIHtcblxuICAgIC5wYWdpbmF0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB9XG5cbiAgICAucGFnZS1pdGVtIHtcblxuICAgICAgICAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmRpc2FibGVkIC5wYWdlLWxpbmsge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RBVFVTIEJBREdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtc3RhdHVzIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0wLTUpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgJi5zdGF0dXMtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtd2FybmluZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtaW5mbyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtcHJpbWFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtc2Vjb25kYXJ5IHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRUxBVElWRSBEQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1yZWxhdGl2ZS1kYXRlIHtcbiAgICBjdXJzb3I6IGhlbHA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMXB4O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMT0FESU5HIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1sb2FkaW5nIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGluc2V0OiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtbG9hZGluZy1vdmVybGF5KTtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtbG9hZGluZy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgei1pbmRleDogMTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmRhdGFncmlkLWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXRhYmxlIHtcblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1idWxrLWJhci1pbm5lciB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFWFBBTkRBQkxFIFJPV1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXRhYmxlIHtcbiAgICAvLyBFeHBhbmQgY29sdW1uIHN0eWxpbmdcblxuICAgIC5jb2wtZXhwYW5kIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cGFuZC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBEZXRhaWwgcm93IChoaWRkZW4gYnkgZGVmYXVsdClcblxuLmRhdGFncmlkLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1kZXRhaWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbmltYXRpb246IGRhdGFncmlkLXNsaWRlLWRvd24gMjAwbXMgZWFzZTtcblxuICAgIC8vIE92ZXJyaWRlIG5lc3RlZCBkYXRhZ3JpZCBjYXJkIHN0eWxlcyB3aGVuIGluc2lkZSBkZXRhaWwgcm93XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBkYXRhZ3JpZC1zbGlkZS1kb3duIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVBJIFRPS0VOIEhJU1RPUlkgKEV4cGFuZGFibGUgUm93IERldGFpbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwaS10b2tlbi1oaXN0b3J5IHtcblxuICAgIGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC50YWJsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGJvZHkge1xuXG4gICAgICAgICAgICB0ciB7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cjpsYXN0LWNoaWxkIHRkIHtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU2hhcmVkIG1vZHVsZSB3b3Jrc3BhY2UgcGF0dGVybnMuXG4gKlxuICogTGlzdHMgYWNyb3NzIHNhbGVzLCBwdXJjaGFzaW5nIGFuZCBmaW5hbmNlIHVzZSB0aGUgc2FtZSBzdW1tYXJ5IGNhcmRzIGFuZFxuICogRGF0YUdyaWQgc2hlbGwuIEtlZXBpbmcgdGhlIGhpZXJhcmNoeSBoZXJlIHByZXZlbnRzIGVhY2ggbW9kdWxlIGZyb20gcmVidWlsZGluZ1xuICogdGhlIHNhbWUgY2FyZCwgdGFiIGFuZCByZXNwb25zaXZlIGJlaGF2aW91ci5cbiAqL1xuXG4ud29ya3NwYWNlLXN0YXRzIHtcblxuICAgIC53b3Jrc3BhY2Utc3RhdC1jYXJkIHtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC5jYXJkLWJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZ3LW1lZGl1bSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXh0LXNlY29uZGFyeSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLndvcmtzcGFjZS1saXN0LWNhcmQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICA+IC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXItdGFicyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMykgMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIH1cblxuICAgID4gLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxufVxuXG4ud29ya3NwYWNlLWVudGl0eS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMC44NzVyZW07XG4gICAgICAgIGhlaWdodDogMC44NzVyZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNjU7XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG5cbiAgICAud29ya3NwYWNlLWxpc3QtY2FyZCAuY2FyZC1oZWFkZXItdGFicyB7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53b3Jrc3BhY2UtbGlzdC1jYXJkIC5kYXRhZ3JpZC10YWJsZTpoYXMoLmRhdGFncmlkLWVtcHR5KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuXG4gICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIENsaWVudCBGb3JtIFN0eWxlc1xuICpcbiAqIENsaWVudC1zcGVjaWZpYyBzdHlsZXMgZm9yIHRoZSBjbGllbnQgY3JlYXRpb24vZWRpdCBmb3JtLlxuICogT3V0ZXIgZm9ybS1wYWdlIGxheW91dCB1c2VzIHNoYXJlZCBjbGFzc2VzIGZyb20gX2Zvcm0tcGFnZS5zY3NzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9QVElPTkFMIFNFQ1RJT04gVkFSSUFOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWZvcm0tc2VjdGlvbi1vcHRpb25hbCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xuXG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVSVJFRCAvIE9QVElPTkFMIFNFQ1RJT04gSUNPTiBNT0RJRklFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1pY29uLXJlcXVpcmVkIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05UQUNUIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbnRhY3RzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmNvbnRhY3QtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uY29udGFjdC1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5jb250YWN0LWNhcmQtdGl0bGUge1xuICAgIGZsZXg6IDE7XG59XG5cbi5jb250YWN0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmNvbnRhY3QtY2FyZC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdC1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmNvbnRhY3QtZm9ybS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtZmllbGQtZW1haWwge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxNDBweCAxZnIgYXV0bztcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAuYWRkaXRpb25hbC1kZXRhaWwtYWN0aW9uIHtcbiAgICAgICAgICAgIGp1c3RpZnktc2VsZjogZW5kO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYWRkaXRpb25hbC1kZXRhaWwtYWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlscy1hZGQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFkZC1kZXRhaWwtYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZHJlc3Nlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5hZGRyZXNzLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uYWRkcmVzcy1jYXJkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmFkZHJlc3MtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uYWRkcmVzcy1jYXJkLXRpdGxlIHtcbiAgICBmbGV4OiAxO1xufVxuXG4uYWRkcmVzcy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5hZGRyZXNzLWNhcmQtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFkZHJlc3MtY2FyZC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5hZGRyZXNzLWZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERCBJVEVNIEFDVElPTiBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFkZC1pdGVtLWFjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLmFkZC1pdGVtLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgYm9yZGVyLXN0eWxlOiBkYXNoZWQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIH1cblxuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcrJztcbiAgICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT04gRk9SIE5FVyBJVEVNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Aa2V5ZnJhbWVzIGNsaWVudC1zbGlkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi5jb250YWN0LWNhcmQsXG4uYWRkcmVzcy1jYXJkIHtcbiAgICBhbmltYXRpb246IGNsaWVudC1zbGlkZS1pbiAwLjJzIGVhc2Utb3V0O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFTVBUWSBTVEFURSBTVFlMSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb250YWN0cy1saXN0OmVtcHR5OjpiZWZvcmUsXG4uYWRkcmVzc2VzLWxpc3Q6ZW1wdHk6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmVtcHR5LWNvbnRhY3RzLWhpbnQsXG4uZW1wdHktYWRkcmVzc2VzLWhpbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIHAge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENVUlJFTkNZIERST1BET1dOIENMSVBQSU5HIEZJWFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUaGUgQ3VycmVuY3kgQ29kZSBkcm9wZG93biAodG9tLXNlbGVjdCkgcmVuZGVycyBpdHMgbWVudSBhYnNvbHV0ZWx5XG4vLyBwb3NpdGlvbmVkIGluc2lkZSB0aGUgY29udHJvbCwgc28gdGhlIHNlY3Rpb24ncyBvdmVyZmxvdzogaGlkZGVuIGNsaXBzIHRoZVxuLy8gbWVudSBhdCB0aGUgc2VjdGlvbidzIGJvdHRvbSBlZGdlLiBBbGxvdyBpdCB0byBleHRlbmQgb3V0c2lkZSB0aGlzIHNlY3Rpb25cbi8vIG9ubHk7IG90aGVyIC5mb3JtLXBhZ2Utc2VjdGlvbiBpbnN0YW5jZXMga2VlcCB0aGVpciBjbGlwcGluZy5cblxuLmNsaWVudC1pbmZvLXNlY3Rpb24ge1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuXG4gICAgLy8gV2l0aG91dCB0aGUgc2VjdGlvbiBjbGlwcGluZywgdGhlIGhlYWRlciBiYWNrZ3JvdW5kIG5lZWRzIGl0cyBvd25cbiAgICAvLyByb3VuZGVkIHRvcCBjb3JuZXJzIHRvIG1hdGNoIHRoZSBzZWN0aW9uIGJvcmRlciAobWludXMgaXRzIDFweCB3aWR0aCkuXG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKHZhcigtLXN3cC1yYWRpdXMtbGcpIC0gMXB4KTtcbiAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IGNhbGModmFyKC0tc3dwLXJhZGl1cy1sZykgLSAxcHgpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gQmlsbGluZyBGb3JtIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gaW52b2ljZSBjcmVhdGlvbiBmb3JtIHdpdGggMi1jb2x1bW4gbGF5b3V0LFxuICogc3RpY2t5IHRvdGFscyBzaWRlYmFyLCBhbmQgY29sbGFwc2libGUgc2VjdGlvbnMuXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQklMTElORyBGT1JNIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLmJpbGxpbmctZm9ybS1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMjQpO1xufVxuXG4ucHJvY3VyZW1lbnQtZm9ybS1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgPiBmb3JtID4gLmJpbGxpbmctc2VjdGlvbi1oZWFkaW5nOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWZvcm0tYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS02KSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNikpO1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS02KSk7XG4gICAgICAgIHBhZGRpbmctaW5saW5lOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1zd3AtcmFkaXVzLWxnKSB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0taGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5iaWxsaW5nLWZvcm0taGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uYmlsbGluZy1mb3JtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4uYmlsbGluZy1mb3JtLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gU0VDVElPTiBIRUFESU5HU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1zZWN0aW9uLWhlYWRpbmcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAuYmlsbGluZy1zZWN0aW9uLWhlYWRpbmctaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmbGV4OiAwIDAgMzJweDtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICBoMiB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQklMTElORyBERVRBSUxTIFNFQ1RJT04gKENsaWVudCwgSW52b2ljZSBJRCwgRGF0ZXMsIERpc2NvdW50KVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1kZXRhaWxzLXNlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC8vIE1vZGlmaWVyIGZvciBmb3JtcyB3aXRob3V0IGRhdGUgZmllbGRzIChlLmcuLCBRdW90ZXMpXG5cbiAgICAmLS1uby1kYXRlcyB7XG5cbiAgICAgICAgLmJpbGxpbmctZGV0YWlscy1yaWdodCB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1kZXRhaWxzLWxlZnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZGV0YWlscy1yaWdodCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBJbnZvaWNlIElEIHdpdGggaW5saW5lIGVkaXRcblxuLmJpbGxpbmctaWQtZGlzcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC5iaWxsaW5nLWlkLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcblxuICAgICAgICAvLyBJZGVudGlmaWVycyBhcmUgbm90IG1vbmV5LiBQcmltYXJ5IGdyZWVuIGlzIHJlc2VydmVkIGZvciBwYWlkIHN0YXRlcyBhbmQgQ1RBcy5cbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWlkLWVkaXQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5iaWxsaW5nLWlkLWZvcm0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBtYXgtd2lkdGg6IDIwMHB4O1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4vLyBEYXRlIGZpZWxkcyByb3dcblxuLmludm9pY2UtZGF0ZXMtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgU0VMRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc2VsZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IGJpbGxpbmctc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jaGFuZ2Uge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLnNlbGVjdGVkLWNsaWVudC1jb250YWN0cyB7XG4gICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNvbnRhY3RzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY29udGFjdC1jaGVja2JveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICAuY29udGFjdC1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgfVxuXG4gICAgLmNvbnRhY3QtZW1haWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1BSU4gQ09OVEVOVCAtIDIgQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1mb3JtLW1haW4ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzIwcHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMTAwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTkUgSVRFTVMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy1pdGVtcy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJpbGxpbmctaXRlbXMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uYmlsbGluZy1pdGVtcy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gTGluZSBpdGVtcyBsaXN0IChyZXNwb25zaXZlIGdyaWQpXG5cbi5iaWxsaW5nLWl0ZW1zLWxpc3Qge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDIuNmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCgxNDBweCwgMC45ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgPiBkaXYge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi8vIFdpdGhvdXQgdGF4IGNvbHVtbiAtIGdpdmUgZGVzY3JpcHRpb24gZXZlbiBtb3JlIHNwYWNlLlxuLy8gRXhjbHVkZXMgZGVsaXZlcnkgbm90ZXMsIHdoaWNoIHJlbmRlciB0aGVpciBvd24gdGhyZWUtY29sdW1uIGdyaWRcbi8vIGFuZCBtdXN0IG5vdCBpbmhlcml0IHRoZSBpbnZvaWNlJ3MgZmluYW5jaWFsLWNvbHVtbiB3aWR0aHMuXG5cbi5iaWxsaW5nLWl0ZW1zLWxpc3Q6bm90KDpoYXMoLmNvbHVtbi10YXgpLCAuZGVsaXZlcnktbm90ZS1pdGVtcy1saXN0KSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyOHB4IG1pbm1heCgwLCAzLjhmcikgbWlubWF4KDEwMHB4LCAwLjlmcikgNTZweCBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgICAgICAvLyBUd28gY29sdW1ucywgbm90IG9uZTogdGhpcyB1bmRvZXMgdGhlIGRlc2t0b3AgdGVtcGxhdGUgYWJvdmUsIGFuZCB0aGUgc3RhY2tlZFxuICAgICAgICAgICAgLy8gYGdyaWQtdGVtcGxhdGUtYXJlYXNgIHB1dHMgcHJpY2UgYmVzaWRlIHF0eS4gQSBzaW5nbGUgY29sdW1uIGxlYXZlcyB0aGUgc2Vjb25kXG4gICAgICAgICAgICAvLyBvbmUgaW1wbGljaXQgYW5kIGBhdXRvYCwgd2hpY2ggbGV0cyBxdHkgc3RhcnZlIHByaWNlIG9mIGl0cyB3aWR0aC5cbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gV2hlbiB0aGUgVGF4IGNvbHVtbiBleGlzdHMgYnV0IG5vIGxpbmUtdGF4IGRyb3Bkb3ducyBhcmUgYWRkZWQgb24gYW55IHJvdyxcbi8vIHNocmluayB0aGUgVGF4IHNsb3Qgc28gdGhlIFwiKyBBZGQgdGF4XCIgYnV0dG9uIGRvZXNuJ3QgbGVhdmUgYSB2aXNpYmxlIGdhcFxuLy8gYmV0d2VlbiBUYXggYW5kIFRvdGFsLiBUaGUgd2lkZXIgc2xvdCByZXR1cm5zIHRoZSBtb21lbnQgYSB0YXggcm93IGFwcGVhcnMuXG5cbi5iaWxsaW5nLWl0ZW1zLWxpc3Q6aGFzKC5jb2x1bW4tdGF4KTpub3QoOmhhcygubGluZS10YXgtcm93KSkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyxcbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMy4yZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDgwcHgsIDAuNWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgICAgICAvLyBUd28gY29sdW1ucywgbm90IG9uZTogdGhpcyB1bmRvZXMgdGhlIGRlc2t0b3AgdGVtcGxhdGUgYWJvdmUsIGFuZCB0aGUgc3RhY2tlZFxuICAgICAgICAgICAgLy8gYGdyaWQtdGVtcGxhdGUtYXJlYXNgIHB1dHMgcHJpY2UgYmVzaWRlIHF0eS4gQSBzaW5nbGUgY29sdW1uIGxlYXZlcyB0aGUgc2Vjb25kXG4gICAgICAgICAgICAvLyBvbmUgaW1wbGljaXQgYW5kIGBhdXRvYCwgd2hpY2ggbGV0cyBxdHkgc3RhcnZlIHByaWNlIG9mIGl0cyB3aWR0aC5cbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyOHB4IG1pbm1heCgwLCAyLjZmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoMTQwcHgsIDAuOWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgID4gZGl2IHtcbiAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IGdyaWQgYmxvd291dFxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IGdyaWQgYmxvd291dFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG4gICAgICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgZGVzY3JpcHRpb24gaXMgc2Vjb25kYXJ5IHRvIHRoZSBuYW1lLCBhbmQgbW9zdCBsaW5lcyBuZXZlciBnZXQgb25lLiBBIGNsb3NlZFxuICAgIC8vIGA8ZGV0YWlscz5gIGtlZXBzIHRoZSBjb21tb24gY2FzZSB0byB0aGUgc2luZ2xlIGlucHV0IGl0IHdhcyBiZWZvcmUgdGhlIG5hbWUgZXhpc3RlZCxcbiAgICAvLyBhbmQgY29zdHMgYSBjbGljayDigJQgbm90IGEgdHJpcCBlbHNld2hlcmUg4oCUIHdoZW4gYSBsaW5lIGRvZXMgbmVlZCBkZXRhaWwuXG5cbiAgICAubGluZS1kZXNjcmlwdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuMjVyZW07XG5cbiAgICAgICAgPiBzdW1tYXJ5IHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXNlY29uZGFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcrJztcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJltvcGVuXSA+IHN1bW1hcnkge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcblxuICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn4oiSJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tcHJpY2UsXG4gICAgLmNvbHVtbi1xdHksXG4gICAgLmNvbHVtbi10YXgge1xuXG4gICAgICAgIGlucHV0LFxuICAgICAgICBzZWxlY3Qge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgLy8gU2xpbSBkb3duIHRoZSBsZWFkaW5nIGN1cnJlbmN5LXN5bWJvbCBhZGRvbiAodGhlIFwiJFwiL1wi4oKsXCIgcHJlZml4KVxuICAgICAgICAvLyBzbyBpdCBzdG9wcyBlYXRpbmcgfjMwJSBvZiB0aGUgY29sdW1uJ3MgdXNhYmxlIGlucHV0IHdpZHRoLlxuXG4gICAgICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC40cmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1xdHkge1xuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICAgICAuaXRlbS10b3RhbC12YWx1ZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuXG4gICAgLmNvbHVtbi1kcmFnIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgLy8gQWxpZ25zIHRoZSBncmlwIHdpdGggdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRlc2NyaXB0aW9uLCBub3QgdGhlIHRvcCBvZiBpdHMgYm94LlxuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC8vIFF1aWV0IHVudGlsIHRoZSByb3cgaXMgaG92ZXJlZCBvciB0aGUgaGFuZGxlIGlzIHRhYmJlZCB0bywgc28gYSBjb2x1bW4gb2YgZ3JpcHMgZG9lc1xuICAgIC8vIG5vdCBjb21wZXRlIHdpdGggdGhlIGZpZWxkcyBmb3IgYXR0ZW50aW9uLlxuXG4gICAgLmxpbmUtZHJhZy1oYW5kbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgY3Vyc29yOiBncmFiO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgICAgb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgIGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBjdXJzb3I6IGdyYWJiaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDFweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICY6aG92ZXIgLmxpbmUtZHJhZy1oYW5kbGUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cblxuICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIE1vYmlsZSByZXNwb25zaXZlIGxheW91dFxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgICAnZGVzYyBkZXNjJ1xuICAgICAgICAgICAgJ3ByaWNlIHF0eSdcbiAgICAgICAgICAgICd0YXggdGF4J1xuICAgICAgICAgICAgJ2FjdGlvbnMgdG90YWwnO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogZGVzYztcblxuICAgICAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogcHJpY2U7XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tcXR5IHtcbiAgICAgICAgICAgIGdyaWQtYXJlYTogcXR5O1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXRheCB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHRheDtcblxuICAgICAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tYWN0aW9ucyB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IGFjdGlvbnM7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3V0IG9mIHRoZSBzdGFja2VkIGZsb3cgYW5kIGludG8gdGhlIGNhcmQncyBjb3JuZXI6IHRoZSBhcmVhcyBiZWxvdyBoYXZlIG5vIGNvbHVtblxuICAgICAgICAvLyB0byBzcGFyZSwgYW5kIHRoZXJlIGlzIG5vIGhvdmVyIHRvIHJldmVhbCBpdCBvbiBhIHRvdWNoIHNjcmVlbi5cblxuICAgICAgICAuY29sdW1uLWRyYWcge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICByaWdodDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAubGluZS1kcmFnLWhhbmRsZSB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHRvdGFsO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgICAgICAgICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJlbW92ZSBpdGVtIGJ1dHRvblxuXG4ucmVtb3ZlLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IDJweCA0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgICBoZWlnaHQ6IDEycHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59XG5cbi8vIEFkZCBpdGVtIGJ1dHRvblxuXG4uYWRkLWl0ZW0tYWN0aW9uIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5hZGQtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB9XG59XG5cbi8vIEl0ZXJhdGlvbiA0IGRvY3VtZW50LWVkaXRvciBwb2xpc2ggaXMgZXhwbGljaXRseSBzY29wZWQgdG8gdGhlIGV4aXN0aW5nXG4vLyBub24tcmVjdXJyaW5nIGRvY3VtZW50IGZvcm1zLiBSZWN1cnJpbmcgaW52b2ljZXMgYW5kIHVucmVsYXRlZCBjb2xsZWN0aW9uXG4vLyBmb3JtcyBrZWVwIHRoZSBlc3RhYmxpc2hlZCBzaGFyZWQtZm9ybSB0cmVhdG1lbnQgd2l0aG91dCB0ZW1wbGF0ZSBtYXJrZXJzLlxuXG46aXMoXG4gICAgLmJpbGxpbmctZm9ybS1wYWdlOmhhcyhmb3JtW25hbWU9J2ludm9pY2UnXSksXG4gICAgLmJpbGxpbmctZm9ybS1wYWdlOmhhcyhmb3JtW25hbWU9J3F1b3RlJ10pLFxuICAgIC5iaWxsaW5nLWZvcm0tcGFnZTpoYXMoZm9ybVtuYW1lPSdkZWxpdmVyeV9ub3RlJ10pLFxuICAgIC5iaWxsaW5nLWZvcm0tcGFnZTpoYXMoZm9ybVtuYW1lPSdwdXJjaGFzZSddKSxcbiAgICAuYmlsbGluZy1mb3JtLXBhZ2U6aGFzKGZvcm1bbmFtZT0ncHVyY2hhc2Vfb3JkZXInXSlcbikge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3cge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcyguaXMtaW52YWxpZCwgLmZvcm0tZXJyb3ItbWVzc2FnZSwgLmludmFsaWQtZmVlZGJhY2s6bm90KDplbXB0eSkpIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY29udHJvbCxcbiAgICAgICAgLmZvcm0tc2VsZWN0LFxuICAgICAgICAudHMtY29udHJvbCB7XG4gICAgICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1zd3AtY29udHJvbC1oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmludmFsaWQtZmVlZGJhY2ssXG4gICAgICAgIC5mb3JtLWVycm9yLW1lc3NhZ2Uge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5yZW1vdmUtaXRlbS1idG4ge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hZGQtaXRlbS1idG46OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gTGl2ZUNvbGxlY3Rpb24gbGVhdmVzIHRoZSBvbmUtbGluZSBkZWxldGUgY29udHJvbCBmb3IgZm9ybV9yZXN0KCksIHdoaWNoXG4gICAgLy8gYXBwZW5kcyBpdCBiZWxvdyB0aGUgZWRpdG9yLiBLZWVwIHRoZSBjb250cm9sIGluIHRoZSBmb3JtIHRyZWUgYnV0IGhpZGVcbiAgICAvLyBvbmx5IHRoYXQgZGlyZWN0IG9ycGhhbjsgcm93LWxldmVsIHJlbW92ZSBjb250cm9scyByZW1haW4gdW5hZmZlY3RlZC5cblxuICAgIC5tYi0zOmhhcyg+IGJ1dHRvbltkYXRhLWxpdmUtYWN0aW9uLXBhcmFtPSdyZW1vdmVDb2xsZWN0aW9uSXRlbSddOm5vdCgucmVtb3ZlLWl0ZW0tYnRuKSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gSW52b2ljZSBhbmQgcXVvdGUgcm93cyBzaGFyZSB0aGUgc2FtZSBmaW5hbmNpYWwgY29sdW1ucy4gRGVsaXZlcnkgTm90ZXMsXG4vLyBQdXJjaGFzZXMgYW5kIFB1cmNoYXNlIE9yZGVycyBkZWZpbmUgdGhlaXIgb3duIGdyaWRzIGxhdGVyIGluIHRoaXMgZmlsZS5cblxuOmlzKFxuICAgIC5iaWxsaW5nLWZvcm0tcGFnZTpoYXMoZm9ybVtuYW1lPSdpbnZvaWNlJ10pLFxuICAgIC5iaWxsaW5nLWZvcm0tcGFnZTpoYXMoZm9ybVtuYW1lPSdxdW90ZSddKVxuKSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyOHB4IG1pbm1heCgwLCAyLjZmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoMTQwcHgsIDAuOWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDMycHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbXMtbGlzdDpub3QoOmhhcyguY29sdW1uLXRheCkpIHtcblxuICAgICAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgICAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDMuOGZyKSBtaW5tYXgoMTAwcHgsIDAuOWZyKSA1NnB4IG1pbm1heCg2MHB4LCAwLjRmcikgMzJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtcy1saXN0OmhhcyguY29sdW1uLXRheCk6bm90KDpoYXMoLmxpbmUtdGF4LXJvdykpIHtcblxuICAgICAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgICAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDI4cHggbWlubWF4KDAsIDMuMmZyKSBtaW5tYXgoMTMwcHgsIDEuMWZyKSA1NnB4IG1pbm1heCg4MHB4LCAwLjVmcikgbWlubWF4KDYwcHgsIDAuNGZyKSAzMnB4O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQRVItTElORSBNVUxUSS1UQVggKFN0YWNrZWQgcm93cyBpbiB0aGUgVGF4IGNvbHVtbilcbi8vIEVhY2ggLmxpbmUtdGF4LXJvdyB1c2VzIGEgc2luZ2xlLXJvdyBmbGV4IGxheW91dDpcbi8vICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSQXG4vLyAgIOKUgiB0YXggZHJvcGRvd24gICAgICAgICAgICAgICAgICAgIOKUgiAgw5cgIOKUglxuLy8gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilJhcbi8vIENvbXBvdW5kIGlzIGEgcHJvcGVydHkgb2YgdGhlIHVuZGVybHlpbmcgVGF4IHJhdGUgKHNuYXBzaG90dGVkIGludG8gTGluZVRheFxuLy8gdmlhIGBzbmFwc2hvdEZyb21gKSDigJQgdGhlcmUncyBubyBwZXItbGluZSBvdmVycmlkZSwgc28gdGhlIGZvcm0gZG9lc24ndFxuLy8gZXhwb3NlIGl0LlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubGluZS10YXgtY29sbGVjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmxpbmUtdGF4LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDRweDtcbn1cblxuLmxpbmUtdGF4LXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi5saW5lLXRheC1maWVsZC10YXgge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIHNlbGVjdCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBwYWRkaW5nOiA0cHggMjJweCA0cHggOHB4O1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgNnB4IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMnB4O1xuICAgIH1cbn1cblxuLmxpbmUtdGF4LWFjdGlvbnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmxpbmUtdGF4LXJlbW92ZS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksIGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWRhbmdlci1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5saW5lLXRheC1hZGQtYnRuIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5WT0lDRS1MRVZFTCBUQVhFUyAoV2l0aGhvbGRpbmcgJiBhZGp1c3RtZW50cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLXN1YnRpdGxlIHtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMmZyKSBtaW5tYXgoMCwgMWZyKSBtaW5tYXgoMCwgM2ZyKSBhdXRvO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi5pbnZvaWNlLXRheC1maWVsZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgLm1vYmlsZS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaW52b2ljZS10YXgtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPVEFMUyBTSURFQkFSIChTdGlja3kgb24gRGVza3RvcClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctdG90YWxzLXNpZGViYXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxufVxuXG4uYmlsbGluZy10b3RhbHMtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5iaWxsaW5nLXRvdGFscy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5iaWxsaW5nLXRvdGFscy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5iaWxsaW5nLXRvdGFscy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYmlsbGluZy10b3RhbHMtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4udG90YWxzLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi50b3RhbHMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4udG90YWxzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4udG90YWxzLXJvdy1kaXNjb3VudCB7XG4gICAgLy8gQSBkaXNjb3VudCBpcyBhIGRlZHVjdGlvbiwgbm90IGFuIGVycm9yLiBRdWlldCBpdCBkb3duIGluc3RlYWQgb2YgZmxhZ2dpbmcgaXQgcmVkLlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4udG90YWxzLXJvdy10b3RhbCB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZ3JhbmQgdG90YWwgaXMgaW5mb3JtYXRpb25hbCwgbm90IGEgXCJQYWlkXCIgc3RhdGUuIEdyZWVuIG9ubHkgd2hlbiB0aGVcbiAgICAvLyBpbnZvaWNlIGlzIGFjdHVhbGx5IHBhaWQ7IG9uIHRoZSBlZGl0IHNjcmVlbiB0aGlzIHN0YXlzIG5ldXRyYWwgdGV4dC5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG59XG5cbi8vIERpc2NvdW50IGZpZWxkIGluIHNpZGViYXJcblxuLmRpc2NvdW50LWZpZWxkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEVSTVMgJiBOT1RFUyBDT0xMQVBTSUJMRSBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLXRlcm1zLXNlY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAmW29wZW5dIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG4gICAgICAgIC50ZXJtcy1zdW1tYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZXJtcy1zdW1tYXJ5LWljb24ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGVybXMtc3VtbWFyeSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cbn1cblxuLnRlcm1zLXN1bW1hcnktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnRlcm1zLXN1bW1hcnktdGV4dCB7XG4gICAgZmxleDogMTtcbn1cblxuLnRlcm1zLXN1bW1hcnktdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG5cbi50ZXJtcy1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi50ZXJtcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlMgKFN0aWNreSBGb290ZXIpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0tYWN0aW9ucyB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBib3gtc2hhZG93OiAwIC00cHggMTJweCByZ2IoMCAwIDAgLyA1JSk7XG59XG5cbi5iaWxsaW5nLWZvcm0tYWN0aW9ucy1pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gU3BsaXQgYnV0dG9uIGdyb3VwIGZvciBzYXZlIGFjdGlvbnNcblxuLnNhdmUtYnV0dG9uLWdyb3VwIHtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLmJ0bi1zYXZlLXByaW1hcnkge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKDI1NSAyNTUgMjU1IC8gMjAlKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTItNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZyk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNT0JJTEUgTElORSBJVEVNIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLXRhYmxlIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtcy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA+PSA3NjlweCkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogYmlsbGluZy1zbGlkZS1pbiAwLjJzIGVhc2Utb3V0O1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC40KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLW51bWJlciB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC10b3RhbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLml0ZW0tdG90YWwtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG5cbiAgICAuaXRlbS10b3RhbC12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Aa2V5ZnJhbWVzIGJpbGxpbmctc2xpZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcblxuICAgIC5iaWxsaW5nLWZvcm0tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMjApO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWZvcm0taGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1mb3JtLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWZvcm0tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1kZXRhaWxzLXNlY3Rpb24sXG4gICAgLmJpbGxpbmctaXRlbXMtc2VjdGlvbixcbiAgICAuYmlsbGluZy10b3RhbHMtY2FyZCxcbiAgICAucHJvY3VyZW1lbnQtZm9ybS1jYXJkIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgfVxuXG4gICAgLnByb2N1cmVtZW50LWZvcm0tY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICAgICAuYmlsbGluZy1mb3JtLWFjdGlvbnMge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTQpKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNCkpO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtNCkpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXN3cC1yYWRpdXMtbWQpIHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1hY3Rpb25zLWlubmVyIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtZGlzcGxheSB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAuYmlsbGluZy1pZC1sYWJlbCxcbiAgICAgICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVDVVJSSU5HIElOVk9JQ0UgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBTZWN0aW9uIChvbiBjcmVhdGUvZWRpdCBwYWdlKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ibG9jazogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgICAgIC5zZWN0aW9uLWhlYWRlci1pY29uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VjdGlvbi1oZWFkZXItY29udGVudCB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgICAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVjdXJyaW5nLXNjaGVkdWxlLWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi8vIFJlY3VycmluZyBPcHRpb25zIFdyYXBwZXIgLSBTdHlsZSBmb3JtIGZpZWxkcyByZW5kZXJlZCBieSBEeW5hbWljRm9ybUJ1aWxkZXJcblxuLnJlY3VycmluZy1vcHRpb25zLXdyYXBwZXIge1xuICAgIC8vIFR5cGUgZmllbGQgKHJhZGlvIGJ1dHRvbnMpIC0gTWFrZSB0aGVtIHZpc3VhbCBjYXJkc1xuXG4gICAgW2lkJD0nX3R5cGUnXSwgW2lkJD0nX2VuZFR5cGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbC5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLmZvcm0tY2hlY2sge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0ncmFkaW8nXSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFtpZCQ9J19lbmRUeXBlJ10ge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBEYXlzIGZpZWxkIGZvciBXZWVrbHkvWWVhcmx5IChjaGVja2JveGVzIGZvciBkYXlzL21vbnRocykgLSBNYWtlIHRoZW0gYnV0dG9uIHRvZ2dsZXNcblxuICAgIFtpZCQ9J19kYXlzJ10ge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoODBweCwgMWZyKSk7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDcwcHgsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0ZXh0IGNvbnRlbnQgaXMgdmlzaWJsZVxuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlY3VycmluZy1mcmVxdWVuY3ktZGlzcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAucmVjdXJyaW5nLWZyZXF1ZW5jeS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LXRleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBWYXJpYWJsZSBIZWxwIC0gQ29sbGFwc2libGUgSW5mbyBCb3hcblxuLnJlY3VycmluZy12YXJpYWJsZXMtaGVscCB7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1pbmZvLWJvcmRlci1zdWJ0bGUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWJnLXN1YnRsZSk7XG5cbiAgICAudmFyaWFibGVzLXN1bW1hcnkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWVtcGhhc2lzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC52YXJpYWJsZXMtY29udGVudCB7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1ibG9jay1zdGFydDogMXB4IHNvbGlkIHZhcigtLXN3cC1pbmZvLWJvcmRlci1zdWJ0bGUpO1xuXG4gICAgICAgIC52YXJpYWJsZXMtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC52YXJpYWJsZXMtbGlzdCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcblxuICAgICAgICAgICAgICAgIGNvZGUge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnZhcmlhYmxlLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAudmFyaWFibGUtZXhhbXBsZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAzcHggc29saWQgdmFyKC0tc3dwLWluZm8pO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmV4YW1wbGUtdGV4dCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltvcGVuXSAudmFyaWFibGVzLXN1bW1hcnkge1xuICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVDVVJSSU5HIElOVk9JQ0UgVklFVyBQQUdFIFNJREVCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSGlnaGxpZ2h0ZWQgY2FyZCAoZS5nLiwgUmVjdXJyaW5nIFNjaGVkdWxlIGNhcmQpXG5cbi5pbnZvaWNlLXNpZGViYXItY2FyZC1oaWdobGlnaHQge1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAzKSwgdHJhbnNwYXJlbnQpO1xufVxuXG4vLyBSZWN1cnJpbmcgU2NoZWR1bGUgR3JpZCAobGFiZWwgfCB2YWx1ZSBwYWlycylcblxuLnJlY3VycmluZy1zY2hlZHVsZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLy8gVXBjb21pbmcgT2NjdXJyZW5jZXMgTGlzdFxuXG4ub2NjdXJyZW5jZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcbiAgICB9XG59XG5cbi5vY2N1cnJlbmNlLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm9jY3VycmVuY2UtZGF0ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBHZW5lcmF0ZWQgSW52b2ljZXMgTGlzdFxuXG4uZ2VuZXJhdGVkLWludm9pY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgIH1cbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgLmdlbmVyYXRlZC1pbnZvaWNlLW51bWJlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLXRvdGFsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4udmlldy1hbGwtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbn1cblxuLy8gRGVsaXZlcnkgbm90ZSBsaW5lIGl0ZW1zOiBkZXNjcmlwdGlvbiwgcXVhbnRpdHkgYW5kIGFjdGlvbnMgb25seS4gVGhlIHNoYXJlZFxuLy8gaW52b2ljZSBncmlkIGFib3ZlIGFzc3VtZXMgc2V2ZW4gY29sdW1ucyAoZHJhZywgbmFtZSwgcHJpY2UsIHF0eSwgdGF4LCB0b3RhbCxcbi8vIGFjdGlvbnMpOyB3aXRob3V0IGFuIG92ZXJyaWRlIHRoZSB0aHJlZSBkZWxpdmVyeS1ub3RlIGNvbHVtbnMgbGFuZCBpbiB0aGVcbi8vIHdyb25nIHNsb3RzIGFuZCB0aGUgcXVhbnRpdHkgaW5wdXQgaXMgc3F1ZWV6ZWQgdW5yZWFkYWJsZS5cblxuLmRlbGl2ZXJ5LW5vdGUtaXRlbXMtbGlzdCB7XG4gICAgLy8gRm91ciBjb2x1bW5zLCBzbyB0aGUgcXVhbnRpdHkgZ2V0cyBhIG5hcnJvdyBmaXhlZCB0cmFjay4gSW4gdGhlIGludm9pY2Unc1xuICAgIC8vIDEzMHB4KyBzbG90IGEgdHdvLWRpZ2l0IHZhbHVlIHNhdCBpbiBhIGJveCBhcyB3aWRlIGFzIHRoZSBzdGFydCBvZiB0aGVcbiAgICAvLyBkZXNjcmlwdGlvbiwgd2hpY2ggaXMgd2hhdCBtYWRlIHRoZSByb3cgcmVhZCBhcyB1bmJhbGFuY2VkLlxuXG4gICAgLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyxcbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjhweCBtaW5tYXgoMCwgMWZyKSA4OHB4IDQwcHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbXMtaGVhZGVyLXJvdyB7XG4gICAgICAgIC8vIEhlYWRlciBhbmQgdmFsdWUgc2hhcmUgYSBjZW50cmUgbGluZTogYSByaWdodC1hbGlnbmVkIFwiUVRZXCIgc2l0dGluZ1xuICAgICAgICAvLyBhYm92ZSBhIGNlbnRyZWQgbnVtYmVyIHJlYWRzIGFzIHR3byBkaWZmZXJlbnQgY29sdW1ucy5cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW0tcm93IHtcbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1hcmVhczpcbiAgICAgICAgICAgICAgICAnZGVzYyBkZXNjJ1xuICAgICAgICAgICAgICAgICdxdHkgYWN0aW9ucyc7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IGRlc2M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDkwMHB4KSB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiBxdHk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1hY3Rpb25zIHtcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IGFjdGlvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZ3JpcCBpcyB0aGUgb25seSB0aGluZyBpbiBpdHMgMjhweCB0cmFjaywgc28gaGlkaW5nIGl0IHVudGlsIGhvdmVyXG4gICAgICAgIC8vICh0aGUgaW52b2ljZSdzIGJlaGF2aW91ciwgd2hlcmUgdGhlIHJvdyBpcyBoZWFkLXRvLXRvZSBmaWVsZHMpIGxlYXZlc1xuICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb24gaW5kZW50ZWQgcGFzdCB3aGF0IGxvb2tzIGxpa2UgZGVhZCBzcGFjZS4gS2VlcCBpdFxuICAgICAgICAvLyBmYWludCBpbnN0ZWFkOyB0aGUgcm93J3MgaG92ZXIgc3RpbGwgYnJpbmdzIGl0IHVwIHRvIGZ1bGwgc3RyZW5ndGguXG5cbiAgICAgICAgLmxpbmUtZHJhZy1oYW5kbGUge1xuICAgICAgICAgICAgb3BhY2l0eTogMC4zNTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIgLmxpbmUtZHJhZy1oYW5kbGUge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEEgc3F1YXJlIHRhcmdldCB0aGF0IGxpbmVzIHVwIHdpdGggdGhlIHF1YW50aXR5IGZpZWxkLCBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAvLyBpbnZvaWNlJ3MgMnB4LXBhZGRlZCBpY29uIGRyaWZ0aW5nIGluIHRoZSBjb3JuZXIgb2YgYSB0YWxsIHJvdy5cblxuICAgICAgICAucmVtb3ZlLWl0ZW0tYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoZSBzaGFyZWQgZGFzaGVkIHJ1bGUgYWJvdmUgdGhlIEFkZCBidXR0b24gaXMgdGhlIGludm9pY2UncyBsaXN0IHNlcGFyYXRvci5cbi8vIE9uIGEgZGVsaXZlcnkgbm90ZSB0aGUgbGlzdCBhbHJlYWR5IGNsb3NlcyBvbiBpdHMgbGFzdCByb3csIHNvIHRoYXQgcnVsZSBhbmRcbi8vIHRoZSBkYXNoZWQgYnV0dG9uIGRyZXcgdHdvIGRhc2hlZCBsaW5lcyBhIGZldyBwaXhlbHMgYXBhcnQuXG5cbi5kZWxpdmVyeS1ub3RlLWl0ZW1zLWJvZHkgLmFkZC1pdGVtLWFjdGlvbiB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4vLyBQdXJjaGFzZSBhbmQgcHVyY2hhc2Utb3JkZXIgbGluZSBpdGVtczogaXRlbSBuYW1lLCBkZXNjcmlwdGlvbiwgcXVhbnRpdHksXG4vLyB1bml0IHByaWNlLCBhbiBvcHRpb25hbCBwZXItbGluZSB0YXggc2xvdCBhbmQgdGhlIHJlbW92ZSBhY3Rpb24uIFRoZSBzaGFyZWRcbi8vIGludm9pY2UgZ3JpZCBhc3N1bWVzIG5hbWUrZGVzY3JpcHRpb24gc2hhcmUgb25lIGNlbGwgYW5kIGEgcGVyLWxpbmUgdG90YWxcbi8vIGZvbGxvd3MgdGhlIHRheCBjb2x1bW47IHRoZXNlIGZvcm1zIGtlZXAgdGhlIHR3byB0ZXh0IGZpZWxkcyBhcGFydCBhbmQgaGF2ZSBub1xuLy8gcGVyLWxpbmUgdG90YWwsIHNvIG9ubHkgdGhlIGNvbHVtbiB0cmFja3MgZGlmZmVyLiBUaGUgaGVhZGVyLCByb3csIGFkZC9yZW1vdmVcbi8vIGFuZCBtb2JpbGUgdHJlYXRtZW50cyBzdGF5IHRoZSBpbnZvaWNlJ3MuXG5cbi5iaWxsaW5nLWl0ZW1zLXNlY3Rpb24gLmJpbGxpbmctaXRlbXMtbGlzdC5wdXJjaGFzZS1pdGVtcy1saXN0IHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3csXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjdmcikgbWlubWF4KDAsIDIuMWZyKSA4NHB4IG1pbm1heCgxMjBweCwgMC45ZnIpIDQwcHg7XG4gICAgfVxuXG4gICAgJjpoYXMoLmNvbHVtbi10YXgpIHtcblxuICAgICAgICAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93LFxuICAgICAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjZmcikgbWlubWF4KDAsIDJmcikgODBweCBtaW5tYXgoMTIwcHgsIDAuOWZyKSBtaW5tYXgoMTMwcHgsIDFmcikgNDBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEEgbmV3IHB1cmNoYXNlIGhhcyBubyByb3dzIHlldCBidXQgc3RpbGwgbmVlZHMgdGhlIGxpc3QgY29udGFpbmVyIGZvciB0aGVcbiAgICAvLyBjb250cm9sbGVyJ3MgcHJvdG90eXBlLiBIaWRlIHRoZSBjb2x1bW4gaGVhZGVyIHVudGlsIGEgcm93IGV4aXN0cy5cblxuICAgICY6bm90KDpoYXMoLmJpbGxpbmctaXRlbS1yb3cpKSAuYmlsbGluZy1pdGVtcy1oZWFkZXItcm93IHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAuY29sdW1uLW5hbWUgaW5wdXQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuY29sdW1uLXF0eSBpbnB1dCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAvLyBUaGUgdGF4IHZhcmlhbnQgcmVwZWF0cyB0aGUgZGVza3RvcCBzZWxlY3RvciBhYm92ZSBzbyB0aGlzIGJsb2NrLCBiZWluZ1xuICAgIC8vIGxhdGVyIGluIHRoZSBmaWxlLCB3aW5zIG9uIHNvdXJjZSBvcmRlciBhdCB0aGUgc2FtZSBzcGVjaWZpY2l0eS5cblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcblxuICAgICAgICAmLFxuICAgICAgICAmOmhhcyguY29sdW1uLXRheCkge1xuXG4gICAgICAgICAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtYXJlYXM6XG4gICAgICAgICAgICAgICAgICAgICduYW1lIG5hbWUnXG4gICAgICAgICAgICAgICAgICAgICdkZXNjIGRlc2MnXG4gICAgICAgICAgICAgICAgICAgICdxdHkgcHJpY2UnXG4gICAgICAgICAgICAgICAgICAgICd0YXggdGF4J1xuICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyBhY3Rpb25zJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbHVtbi1uYW1lIHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IG5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogZGVzYztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNvbHVtbi1xdHkge1xuICAgICAgICAgICAgICAgIGdyaWQtYXJlYTogcXR5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sdW1uLXByaWNlIHtcbiAgICAgICAgICAgICAgICBncmlkLWFyZWE6IHByaWNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY29sdW1uLXRheCB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiB0YXg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jb2x1bW4tYWN0aW9ucyB7XG4gICAgICAgICAgICAgICAgZ3JpZC1hcmVhOiBhY3Rpb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUaGUgZW1wdHkgc3RhdGUgaXMgYWx3YXlzIHJlbmRlcmVkIHNvIHRoZSBwdXJjaGFzZS1saW5lcyBjb250cm9sbGVyJ3Ncbi8vIHJlbW92ZSBhY3Rpb24gYnJpbmdzIGl0IGJhY2sgd2hlbiB0aGUgbGFzdCByb3cgZ29lcy4gSXQgaGFzIG5vIHBsYWNlIG9uY2UgYVxuLy8gcm93IGV4aXN0cy5cblxuLmJpbGxpbmctaXRlbXMtYm9keTpoYXMoLmJpbGxpbmctaXRlbS1yb3cpIC5wdXJjaGFzZS1pdGVtcy1lbXB0eSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gUGF5bWVudCBQYWdlIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gcGF5bWVudCBwYWdlIHdpdGggdHdvLWNvbHVtbiBsYXlvdXQsXG4gKiBjYXJkLWJhc2VkIHBheW1lbnQgbWV0aG9kIHNlbGVjdGlvbiwgYW5kIGludm9pY2Ugc3VtbWFyeS5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xMik7XG5cbiAgICAmLS1yZWNvcmQge1xuICAgICAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5wYXltZW50LWhlYWRlci1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5wYXltZW50LWhlYWRlci1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wYXltZW50LWhlYWRlci1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUV08tQ09MVU1OIExBWU9VVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4ucGF5bWVudC1sYXlvdXQtLXJlY29yZCB7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMThyZW0sIDAuODVmcikgbWlubWF4KDAsIDEuMTVmcik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5WT0lDRSBTVU1NQVJZIENBUkQgKExlZnQgQ29sdW1uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1pbnZvaWNlLXN1bW1hcnkge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgIH1cbn1cblxuLmludm9pY2Utc3VtbWFyeS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtaW5mby1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4vLyBTdW1tYXJ5IFNlY3Rpb25zXG5cbi5zdW1tYXJ5LXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LXNlY3Rpb24tbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnN1bW1hcnktY2xpZW50LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuY2xpZW50LW5hbWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG59XG5cbi8vIEludm9pY2UgRGV0YWlscyBHcmlkXG5cbi5pbnZvaWNlLWRldGFpbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBMaW5lIEl0ZW1zIFByZXZpZXdcblxuLmxpbmUtaXRlbXMtcHJldmlldyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ubGluZS1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLmxpbmUtaXRlbS1kZXNjIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWF4LXdpZHRoOiA2MCU7XG59XG5cbi5saW5lLWl0ZW0tYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBTdW1tYXJ5IFRvdGFsc1xuXG4uc3VtbWFyeS10b3RhbHMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gQSBkaXNjb3VudCBpcyBhIGRlZHVjdGlvbiwgbm90IGFuIGVycm9yLiBTdGF5IG5ldXRyYWwuXG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLXJvdy1kaXNjb3VudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBQYXltZW50cyBhbHJlYWR5IHJlY2VpdmVkIGFyZSBwb3NpdGl2ZSBtb25leSBpbi5cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LXBheW1lbnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWJhbGFuY2Uge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgYW1vdW50LXRvLXBheSBpcyBpbmZvcm1hdGlvbmFsOyBncmVlbiB3b3VsZCBpbXBseSBcIlBhaWRcIiwgd2hpY2ggaXRcbiAgICAvLyBpc24ndCB5ZXQuIFRoZSBcIkJhbGFuY2UgcmVtYWluaW5nXCIgY2FsbG91dCBuZXh0IHRvIHRoZSBhbW91bnQgZmllbGRcbiAgICAvLyBhbHJlYWR5IGNhcnJpZXMgdGhlIGF0dGVudGlvbi5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbn1cblxuLm1hbnVhbC1wYXltZW50LWJhbGFuY2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodGVyKTtcblxuICAgIHNwYW4ge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctZGFyayk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGUpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIH1cblxuICAgIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIENBUkQgKFJpZ2h0IENvbHVtbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZm9ybS1zZWN0aW9uIHtcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgIH1cbn1cblxuLnBheW1lbnQtZm9ybS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBheW1lbnQtZm9ybS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5wYXltZW50LWZvcm0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4ucGF5bWVudC1mb3JtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4ubWFudWFsLXBheW1lbnQtbm90aWNlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1kYXJrKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjFyZW07XG4gICAgfVxuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIH1cbn1cblxuLnBheW1lbnQtZm9ybS1mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIEZPUk0gQk9EWSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZm9ybS1ib2R5IHtcbiAgICAvLyBTdHlsZSBmb3JtIGxhYmVsc1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgICYucmVxdWlyZWQ6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcgKic7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGb3JtIGhlbHAgdGV4dFxuXG4gICAgLmZvcm0tdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLy8gRml4IGZvciBtb25leSB0eXBlIGlucHV0IGdyb3Vwc1xuXG4gICAgLmlucHV0LWdyb3VwIHtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLy8gVGV4dGFyZWEgc3R5bGluZ1xuXG4gICAgdGV4dGFyZWEuZm9ybS1jb250cm9sIHtcbiAgICAgICAgbWluLWhlaWdodDogODBweDtcbiAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgcHJvcGVyIHNwYWNpbmcgYmV0d2VlbiBmb3JtIGdyb3Vwc1xuXG4gICAgLm1iLTQ6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgTUVUSE9EUyBHUklEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1ldGhvZHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWNhcmQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmOmhhcygucGF5bWVudC1tZXRob2QtaW5wdXQ6Y2hlY2tlZCkge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuXG4gICAgICAgIC5wYXltZW50LW1ldGhvZC1jaGVjayB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJjpoYXMoLnBheW1lbnQtbWV0aG9kLWlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgb3V0bGluZTogMnB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICB9XG59XG5cbi5wYXltZW50LW1ldGhvZC1wcmVmZXJyZWQge1xuICAgIG9yZGVyOiAtMTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWlucHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3BhY2l0eTogMDtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZmxleDogMTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMjAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2Utb25saW5lIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWJhZGdlLWNyZWRpdCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1jaGVjayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFNT1VOVCBGSUVMRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYW1vdW50LWZpZWxkLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuZm9ybS1sYWJlbCxcbiAgICAuZm9ybS1zZWN0aW9uLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5hbW91bnQtYmFsYW5jZS1oaW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgIHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDQVBUVVJFIE9OTElORSBGSUVMRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2FwdHVyZS1vbmxpbmUtZmllbGQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgd2lkdGg6IDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmZvcm0taGVscCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IGNhbGMoMi41cmVtICsgdmFyKC0tc3dwLXNwYWNlLTIpKTtcbiAgICB9XG59XG5cbi8vIEhpZGUgY2FwdHVyZSBvbmxpbmUgc2VjdGlvbiB3aGVuIG9mZmxpbmUgbWV0aG9kIHNlbGVjdGVkXG5cbltkYXRhLXBheW1lbnQtbWV0aG9kLXNlbGVjdC10YXJnZXQ9XCJjYXB0dXJlT25saW5lXCJdLmQtbm9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElDS0FCTEUgTElOS1MgKENsaWVudCAmIEludm9pY2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtbmFtZS1saW5rLFxuLmludm9pY2UtaWQtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2xpZW50LW5hbWUtbGluayB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG59XG5cbi5pbnZvaWNlLWlkLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vLCBtb25vc3BhY2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIEhJU1RPUlkgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1oaXN0b3J5LWNhcmQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5wYXltZW50LWhpc3RvcnktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atd2FybmluZy1saWdodCwgI2ZlZjNjNykgMCUsIHJnYigyNDUgMTU4IDExIC8gMjAlKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcsICNmNTllMGIpO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LXRpdGxlIHtcbiAgICBmbGV4OiAxO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWNvdW50IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1pbi13aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMjAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgQ0FSRFMgKE1hdGNoaW5nIFBSICMyMjE1IHN0eWxlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4ucGF5bWVudC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5wYXltZW50LWNhcmQtY2FwdHVyZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlciwgcmdiKDE2IDE4NSAxMjkgLyA1JSkpO1xufVxuXG4ucGF5bWVudC1jYXJkLWZhaWxlZCB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlciwgcmdiKDIzOSA2OCA2OCAvIDUlKSk7XG59XG5cbi5wYXltZW50LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnBheW1lbnQtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5wYXltZW50LWNhcmQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4ucGF5bWVudC1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG59XG5cbi5wYXltZW50LW1lc3NhZ2Uge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWSBCVVRUT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1wYXkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnkpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLnBheW1lbnQtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMTYpO1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlciB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtaGVhZGVyLWljb24ge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5wYXltZW50LWhlYWRlci10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5wYXltZW50LW1ldGhvZHMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5pbnZvaWNlLWRldGFpbHMtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5wYXltZW50LWZvcm0tZm9vdGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYW1vdW50LWZpZWxkLXdyYXBwZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBQYXltZW50cyBMaXN0IFBhZ2UgU3R5bGVzXG4gKlxuICogTWluaW1hbCBzdHlsaW5nIGZvciB0aGUgcGF5bWVudHMgbGlzdCBwYWdlIHdpdGggS1BJIGNhcmRzLlxuICogTW9zdCBzdHlsZXMgY29tZSBmcm9tIFRhYmxlci9Cb290c3RyYXAgLSB0aGlzIGZpbGUgb25seSBhZGRzIHNwZWNpZmljIGN1c3RvbWl6YXRpb25zLlxuICovXG5cbi8vIEtQSSBTdGF0aXN0aWNzIENhcmRzIC0gc3VidGxlIGhvdmVyIGVmZmVjdFxuXG4ucm93LWRlY2sgLmNhcmQtc20ge1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBVc2VycyBQYWdlIFN0eWxlc1xuICpcbiAqIE1vZGVybiB1c2VycyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMgYW5kIHRhYmJlZCBpbnRlcmZhY2UuXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVVNFUlMgUEFHRSBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnVzZXJzLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEtQSSBTVEFUUyBDQVJEUyAoVG9wIG9mIFBhZ2UpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFVzZXMgc3RhbmRhcmQgQm9vdHN0cmFwIGNhcmQtc20gc3R5bGluZyBmcm9tIHJlY2VudCByZWRlc2lnbnNcbi8vIE5vIGN1c3RvbSBzdHlsZXMgbmVlZGVkIC0gQm9vdHN0cmFwL1RhYmxlciBoYW5kbGVzIHRoaXNcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCUyBJTiBDQVJEIEhFQURFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBVc2VzIHN0YW5kYXJkIG5hdi10YWJzIGNhcmQtaGVhZGVyLXRhYnMgcGF0dGVyblxuLy8gQ3VzdG9tIHRhYiBzdHlsZXMgYXJlIGluIF90YWJzLnNjc3MgY29tcG9uZW50XG4vLyBObyBhZGRpdGlvbmFsIGN1c3RvbSBzdHlsZXMgbmVlZGVkXG5cbi8vIEVtcHR5IHN0YXRlIHVzZXMgVGFibGVyJ3MgYnVpbHQtaW4gLmVtcHR5IGNvbXBvbmVudCBjbGFzc2VzXG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFByb2ZpbGUgUGFnZSBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIHRoZSB1c2VyIHByb2ZpbGUgdmlldyBhbmQgc2lkZWJhciBuYXZpZ2F0aW9uLlxuICogRm9ybSBwYWdlcyAoZWRpdCwgY2hhbmdlLXBhc3N3b3JkKSB1c2Ugc2hhcmVkIGNsYXNzZXMgZnJvbSBfZm9ybS1wYWdlLnNjc3MuXG4gKiBJbmNsdWRlczogc2lkZWJhciBuYXZpZ2F0aW9uLCBwcm9maWxlIHZpZXcsIHNlY3VyaXR5IHN0YXR1cy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSURFQkFSIE5BVklHQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkxLjk4cHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtbmF2LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xufVxuXG4ucHJvZmlsZS1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnByb2ZpbGUtbmF2LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG59XG5cbi5wcm9maWxlLW5hdi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgY29sb3I6IGN1cnJlbnRjb2xvcjtcbn1cblxuLnByb2ZpbGUtbmF2LXRleHQge1xuICAgIGZsZXg6IDE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIEhFQURFUiBXSVRIIEFWQVRBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1hdmF0YXIge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpIDEwMCUpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLnByb2ZpbGUtaGVhZGVyLWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi5wcm9maWxlLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4ucHJvZmlsZS1lbWFpbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJPRklMRSBWSUVXIC0gSU5GT1JNQVRJT04gU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSksXG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICB9XG59XG5cbi5wcm9maWxlLXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi10aXRsZSB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBST0ZJTEUgVklFVyAtIERFVEFJTCBHUklEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLWRldGFpbC1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5kZXRhaWwtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGV0YWlsLWl0ZW0td2lkZSB7XG4gICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbn1cblxuLmRldGFpbC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyNWVtO1xufVxuXG4uZGV0YWlsLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJPRklMRSBWSUVXIC0gU0VDVVJJVFkgU1RBVFVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZWN1cml0eS1zdGF0dXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIH1cbn1cblxuLnNlY3VyaXR5LWl0ZW0taW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG59XG5cbi5zZWN1cml0eS1pdGVtLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zZWN1cml0eS1pdGVtLWljb24tc3VjY2VzcyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWljb24td2FybmluZyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3Atd2FybmluZy1yZ2IpLCAwLjEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG59XG5cbi5zZWN1cml0eS1pdGVtLWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG59XG5cbi5zZWN1cml0eS1pdGVtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uc2VjdXJpdHktaXRlbS1hY3Rpb24ge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdPT0dMRSBTSUdOLUlOIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZ29vZ2xlLXNpZ25pbi1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpO1xuICAgIH1cblxuICAgIHN2ZyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFTU1dPUkQgUkVRVUlSRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXNzd29yZC1yZXF1aXJlbWVudHMge1xuICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5wYXNzd29yZC1yZXF1aXJlbWVudHMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgLnNlY3Rpb24taWNvbiB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4xNSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxuXG4gICAgaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG59XG5cbi5wYXNzd29yZC1yZXF1aXJlbWVudHMtbGlzdCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcblxuICAgIGxpIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCB2YXIoLS1zd3Atc3BhY2UtMSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfinJMnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGFibGV0IGFkanVzdG1lbnRzXG5AbWVkaWEgKHdpZHRoID49IDc2OHB4KSBhbmQgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAucHJvZmlsZS1zaWRlYmFyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgIC8vIFByb2ZpbGUgc2VjdGlvbiBmb290ZXIgYnV0dG9uc1xuXG4gICAgLnByb2ZpbGUtc2VjdGlvbi1mb290ZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAucHJvZmlsZS1zZWN0aW9uLWZvb3RlcixcbiAgICAucHJvZmlsZS1zaWRlYmFyIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gVHdvLUZhY3RvciBBdXRoZW50aWNhdGlvbiBTdHlsZXNcbiAqXG4gKiBNb2Rlcm4gMkZBIGNvbmZpZ3VyYXRpb24gYW5kIGxvZ2luIHBhZ2VzIHdpdGggZWxlZ2FudCBkZXNpZ24uXG4gKiBNYXRjaGVzIHRoZSBwcm9maWxlIHBhZ2UgcGF0dGVybnMgYW5kIFRhYmxlciBkZXNpZ24gc3lzdGVtLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQVRJT04gUEFHRSAtIDJGQSBTRVRUSU5HUyBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udHdvLWZhY3Rvci1zZXR0aW5ncyB7XG5cbiAgICAuZm9ybS1wYWdlLXNlY3Rpb25zIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxufVxuXG4vLyBTZWN0aW9uIENvbnRlbnQgTGF5b3V0XG5cbi50d28tZmFjdG9yLXNlY3Rpb24tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4udHdvLWZhY3Rvci1zZWN0aW9uLWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi50d28tZmFjdG9yLXNlY3Rpb24tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPVFAgU0VUVVAgTU9EQUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnRvdHAtc2V0dXAtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbn1cblxuLnNldHVwLXN0ZXBzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxufVxuXG4uc2V0dXAtc3RlcHMgLnN0ZXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgfVxuXG4gICAgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRjb2xvcjtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIG9wYWNpdHk6IDAuODtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSAuc3RlcC1udW1iZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLnFyLWNvZGUtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS01KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLnFyLWNvZGUtaW1hZ2Uge1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgLy8gUVIgbW9kdWxlcyByZXF1aXJlIGEgd2hpdGUgcXVpZXQgem9uZSBpbiBldmVyeSBhcHBsaWNhdGlvbiB0aGVtZS5cbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBzdW1tYXJ5IHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29udGVudCB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB9XG5cbiAgICAubWFudWFsLWVudHJ5LWNvZGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8vIFZlcmlmaWNhdGlvbiBGb3JtXG5cbi52ZXJpZmljYXRpb24tZm9ybS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xufVxuXG4udmVyaWZpY2F0aW9uLWNvZGUtaW5wdXQge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41ZW0gIWltcG9ydGFudDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgIWltcG9ydGFudDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM2VtO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQkFDS1VQIENPREVTIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iYWNrdXAtY29kZXMtbW9kYWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG59XG5cbi5iYWNrdXAtY29kZXMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NS45OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi5iYWNrdXAtY29kZS1pdGVtIHtcblxuICAgIGNvZGUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExPR0lOIFBBR0VTIC0gMkZBIFZFUklGSUNBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udHdvLWZhY3Rvci1sb2dpbi1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnR3by1mYWN0b3ItbG9naW4tY2FyZCB7XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmNhcmQtc3RhdHVzLXRvcCB7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQXZhdGFyIEljb25cblxuLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICB3aWR0aDogNzJweDtcbiAgICBoZWlnaHQ6IDcycHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgJi50d28tZmFjdG9yLWF2YXRhci1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgIH1cbn1cblxuLy8gTG9naW4gSGVhZGluZ1xuXG4udHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vIFZlcmlmaWNhdGlvbiBDb2RlIElucHV0IChmb3IgbG9naW4gcGFnZXMpXG5cbi50d28tZmFjdG9yLWNvZGUtaW5wdXQge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNlbTtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vIEZvcm0gSGludFxuXG4udHdvLWZhY3Rvci1mb3JtLWhpbnQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRydXN0IERldmljZSBPcHRpb25cblxuLnRydXN0LWRldmljZS1vcHRpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjE1ZW07XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gQWx0ZXJuYXRpdmUgTWV0aG9kcyBTZWN0aW9uXG5cbi5hbHRlcm5hdGl2ZS1tZXRob2RzIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5hbHRlcm5hdGl2ZS1tZXRob2RzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbn1cblxuLy8gU2VjdXJpdHkgTm90aWNlXG5cbi50d28tZmFjdG9yLXNlY3VyaXR5LW5vdGljZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gRW1haWwgUmVzZW5kIFNlY3Rpb25cblxuLmVtYWlsLXJlc2VuZC1zZWN0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcblxuICAgIC5yZXNlbmQtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5yZXNlbmQtbGluayB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5leHBpcnktd2FybmluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgIH1cblxuICAgIC5zZXR1cC1zdGVwcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAucXItY29kZS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAucXItY29kZS1pbWFnZSB7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgfVxuXG4gICAgLnZlcmlmaWNhdGlvbi1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuICAgIH1cblxuICAgIC5iYWNrdXAtY29kZXMtZ3JpZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC50d28tZmFjdG9yLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgICBoZWlnaHQ6IDY0cHg7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItbG9naW4tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItbG9naW4tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFkgSU1QUk9WRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZvY3VzIHZpc2libGUgc3R5bGVzXG5cbi5iYWNrdXAtY29kZS1pdGVtIGNvZGU6Zm9jdXMtdmlzaWJsZSxcbi5tYW51YWwtZW50cnktZGV0YWlscyBzdW1tYXJ5OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLy8gSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnRcbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG5cbiAgICAuYmFja3VwLWNvZGUtaXRlbSBjb2RlIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgfVxufVxuXG4vLyBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLmJhY2t1cC1jb2RlLWl0ZW0gY29kZSxcbiAgICAuc2V0dXAtc3RlcHMgLnN0ZXAsXG4gICAgLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHN1bW1hcnksXG4gICAgLnR3by1mYWN0b3ItY29kZS1pbnB1dCB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBOb3RpZmljYXRpb25zIFBhZ2UgU3R5bGVzXG4gKlxuICogTm90aWZpY2F0aW9uIHByZWZlcmVuY2VzIHBhZ2Ugd2l0aCBjYXJkLWJhc2VkIGxheW91dCBhbmQgY2F0ZWdvcnkgZ3JvdXBpbmcuXG4gKiBQYWdlIGNvbnRhaW5lci9oZWFkZXIvZm9vdGVyIHVzZSBzaGFyZWQgZm9ybS1wYWdlLSogY2xhc3NlcyBmcm9tIF9mb3JtLXBhZ2Uuc2Nzcy5cbiAqIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IG5vdGlmaWNhdGlvbi1zcGVjaWZpYyBzdHlsZXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5URUdSQVRJT04gTUFOQUdFTUVOVCBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uaW50ZWdyYXRpb24tYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gR1JPVVBTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyAvLyBTaW5nbGUgY29sdW1uIG9uIG1vYmlsZVxuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZ3JvdXAtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk9USUZJQ0FUSU9OIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tY2FyZHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7IC8vIEFsbG93cyB0ZXh0IHRydW5jYXRpb25cbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1pbmZvIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQtY2hhbm5lbHMge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFOTkVMIENIRUNLQk9YRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBCb290c3RyYXAgZm9ybS1jaGVjayBpbnRlZ3JhdGlvbiAtIGNvbXBhY3QgaW5saW5lIHN0eWxlXG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIC8vIEhpZGUgY2hlY2tib3ggdmlzdWFsbHkgYnV0IGtlZXAgaXQgYWNjZXNzaWJsZSBmb3IgZm9ybSBzdWJtaXNzaW9uXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGZvY3VzIHJpbmcgdG8gbGFiZWwgd2hlbiBjaGVja2JveCBpcyBmb2N1c2VkXG5cbiAgICAgICAgICAgICY6Zm9jdXMgKyAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZCArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBNb2JpbGUgKDwgNzY4cHgpXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuaW50ZWdyYXRpb24tbWFuYWdlbWVudC1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgLmdyb3VwLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG5cbiAgICAgICAgLm5vdGlmaWNhdGlvbi1jaGFubmVscy1saXN0IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2sgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9ucy1lbXB0eS1zdGF0ZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAgICAgLmVtcHR5LXN0YXRlLWljb24ge1xuICAgICAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDY0cHg7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGFibGV0IGFuZCBEZXNrdG9wICg+IDc2OHB4KSAtIDIgY29sdW1uIGxheW91dCBmb3IgY2F0ZWdvcmllc1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OUyAtIERpc2FibGVkIGZvciBjbGVhbmVyLCBmYXN0ZXIgcmVuZGVyaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEFuaW1hdGlvbnMgcmVtb3ZlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjbGVhbmVyIGZlZWxcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU3Vic2NyaXB0aW9uIFBhZ2VzIFN0eWxlc1xuICpcbiAqIEJpbGxpbmcsIHBsYW4tcGlja2VyLCBhbmQgc3Vic2NyaXB0aW9uLXN0YXRlIHBhZ2VzIChwcmljaW5nLCBvdmVydmlldyxcbiAqIGNoYW5nZSwgY2FuY2VsbGVkLCBwYXVzZWQsIHBlbmRpbmcsIHRyaWFsIGV4cGlyZWQpLlxuICpcbiAqIEFsbCB2YWx1ZXMgYXJlIGAtLXN3cC0qYCBkZXNpZ24gdG9rZW5zLiBTdGF0ZSBpcyBjYXJyaWVkIGJ5IGEgc29mdCBpY29uXG4gKiBtZWRhbGxpb24gKyBoZWFkaW5nLCBuZXZlciBieSBhIGRlY29yYXRpdmUgYWNjZW50IHN0cmlwZSwgYSBjb2xvcmVkIGdsb3csIG9yXG4gKiBhIGxvb3BpbmcgYW5pbWF0aW9uLiBDb2xvdXIgc3RheXMgb24gdGhlIGJyYW5kOiBUcnVzdCBHcmVlbiBpcyB0aGUgb25seVxuICogYWNjZW50OyB0aGVyZSBpcyBubyBUYWJsZXIgYmx1ZSBhbmQgbm8gYW1iZXItYnktYWNjaWRlbnQgaGVyZS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCQVNFIFBBR0UgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS0yNCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNjQwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICBhbmltYXRpb246IHN1YnNjcmlwdGlvbi1mYWRlLWluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgc3Vic2NyaXB0aW9uLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFQURFUiBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgaGVhZGVyIChhYm92ZSBzdWJzY3JpcHRpb24gY29udGFpbmVyKVxuXG4uc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgLmg0IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gU29mdCBtZWRhbGxpb24sIGZsYXQgdGludCArIHRpbnRlZCBnbHlwaCAodGhlIHNhbWUgbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZFxuLy8gZW1wdHkgc3RhdGVzIGFuZCBvbmJvYXJkaW5nIHdpemFyZCB1c2UpLiBObyBncmFkaWVudCBkaXNjLlxuXG4uc3Vic2NyaXB0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTgpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24taW5mbyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCRU5FRklUUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENhbmNlbGxlZCBwYWdlOiBsb2NrZWQgZmVhdHVyZXMgYXJlIG11dGVkLCBub3QgYWxhcm1lZCBpbiByZWQuIExvc2luZyBhY2Nlc3Ncbi8vIHRvIGEgZmVhdHVyZSB5b3UgY2hvc2UgdG8gY2FuY2VsIGlzIGluZm9ybWF0aW9uLCBub3QgYW4gZXJyb3IuXG5cbi5zdWJzY3JpcHRpb24tY2FuY2VsbGVkLXBhZ2UgLnN1YnNjcmlwdGlvbi1iZW5lZml0cyBsaSBzdmcge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTlMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuYnRuLWxnIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCksIHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1naG9zdCB7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFURS1TUEVDSUZJQyBQQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiBtZWRhbGxpb24gKyBoZWFkaW5nICsgY29weS4gVGhlIHByZXZpb3VzIDRweFxuLy8gdG9wIGFjY2VudCBzdHJpcGVzIG9uIGAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lcmAgd2VyZSB0aGUgYWNjZW50LXN0cmlwZVxuLy8gYW50aS1wYXR0ZXJuICh0aGUgXCI+MXB4IGNvbG91cmVkIGJvcmRlclwiIHJ1bGUpIHJvdGF0ZWQgdG8gdGhlIHRvcCBlZGdlLCBhbmRcbi8vIHRoZSByZWQgZGFuZ2VyIGZyYW1pbmcgb24gdGhlIGNhbmNlbGxlZCBwYWdlIHNjb2xkZWQgYSB1c2VyIGZvciBhIGNob2ljZVxuLy8gdGhleSBtYWRlOyBib3RoIGFyZSBnb25lLlxuXG4uc3Vic2NyaXB0aW9uLXBhdXNlZC1wYWdlIHtcbiAgICAvLyBQYXVzZWQgYmVuZWZpdHMgYXJlIG5laXRoZXIgYWNoaWV2ZW1lbnRzIChncmVlbikgbm9yIGxvc3NlcyAocmVkKSAtIHRoZXlcbiAgICAvLyBhcmUgc2ltcGx5IG9uIGhvbGQuXG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxFUlQgQkFOTkVSIChUb3Agb2YgcGFnZSBpbmplY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hbGVydC1iYW5uZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLmQtZmxleCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC8vIFdhcm5pbmcgYmFubmVyICh0cmlhbClcblxuICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYW5nZXIgYmFubmVyIChjYW5jZWxsZWQpXG5cbiAgICAmLmFsZXJ0LWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklDSU5HIFBBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wcmljaW5nLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgLy8gSG92ZXIgbGlmdHMgYnkgc2hhZG93IG9ubHkgKG5vIHRyYW5zZm9ybSksIHBlciB0aGUgZGVzaWduIHN5c3RlbSdzIGNhcmRcbiAgICAvLyBydWxlcy5cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAvLyBSZXNlcnZlIHRoZSBiYW5uZXIncyBoZWlnaHQgb24gZXZlcnkgcGFpZCBjYXJkIHNvIHRoZSBwcmljZSBiYXNlbGluZSBpc1xuICAgIC8vIHRoZSBzYW1lIHdoZXRoZXIgb3Igbm90IHRoZSBjYXJkIGNhcnJpZXMgYSBiYW5uZXIgKHRoZSBiYW5uZXIgaXRzZWxmIGlzXG4gICAgLy8gdGFrZW4gb3V0IG9mIGZsb3cgYmVsb3cpLlxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS05KTtcbiAgICB9XG59XG5cbi5wbGFuLWNhcmQtcmVjb21tZW5kZWQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIH1cbn1cblxuLy8gUmliYm9uIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBjYXJkLiBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgc28gaXQgbmV2ZXIgcHVzaGVzXG4vLyB0aGUgcHJpY2UgZG93biAodGhlIGNhcmQgYm9keSByZXNlcnZlcyBtYXRjaGluZyB0b3AgcGFkZGluZyBhYm92ZSksIGFuZCBpblxuLy8gVHJ1c3QgR3JlZW4gLSBub3QgdGhlIFRhYmxlci1ibHVlIGl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvLlxuXG4ucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBpbnNldC1pbmxpbmU6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBGcmVlIHBsYW46IHByZXNlbnRlZCBhcyBhIHNsaW0gc2Vjb25kYXJ5IGNhcmQgYmVsb3cgdGhlIG1haW4gZ3JpZC5cblxuLnBsYW4tY2FyZC1mcmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBsYW4tY2FyZC1mcmVlLWhlYWRlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ucGxhbi1jYXJkLWZyZWUtY3RhIHtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLy8gSW5saW5lIGZlYXR1cmUgbGlzdCBmbG93cyBob3Jpem9udGFsbHkgYW5kIHdyYXBzOyBrZWVwcyB0aGUgZnJlZSBzdHJpcCBzbGltLlxuXG4ucGxhbi1jYXJkLWZlYXR1cmVzLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyBUaGUgZGlzcGxheSBwcmljZSByZW5kZXJzIHRocm91Z2ggdGhlIGAubW9uZXlgIGNvbXBvbmVudCAoYG1vbmV5LS10b3RhbGApLFxuLy8gd2hpY2ggaW5oZXJpdHMgaXRzIHNpemUgZnJvbSBoZXJlOyB0aGUgaW50ZXJ2YWwgc2l0cyBxdWlldGx5IGJlc2lkZSBpdC5cblxuLnBsYW4tY2FyZC1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC00eGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5wbGFuLWNhcmQtaW50ZXJ2YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG59XG5cbi5wbGFuLWNhcmQtZmVhdHVyZXMge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuXG4vLyBBIGNvdXBvbiAvIHByb21vIGNhcmQgKHRyaWFsLWV4cGlyZWQgcGFnZSkuIFRva2VuaXNlZCBncmVlbi10aW50IHBhbmVsLFxuLy8gcmVwbGFjaW5nIHRoZSBvZmYtc3lzdGVtIFRhYmxlciBgYXp1cmVgIHV0aWxpdGllcy5cblxuLnN1YnNjcmlwdGlvbi1jb3Vwb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC8vIFRoZSBjb3Vwb24gY29kZSBpdHNlbGYsIGluIHNvbGlkIFRydXN0IEdyZWVuIHNvIGl0IHJlYWRzIGFzIHRoZSBvbmUgdGhpbmdcbiAgICAvLyB0byBjb3B5LiBXaXRob3V0IHRoaXMgYSBiYXJlIGAuYmFkZ2VgIGZhbGxzIGJhY2sgdG8gdGhlIHRoZW1lJ3MgYW1iZXIuXG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFdFTENPTUUgLyBBQ1RJVkFUSU9OIFBBR0UgKGNhcmQtcmVxdWlyZWQgb25ib2FyZGluZylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9uZSBwbGFuLCBvbmUgY2FsbCB0byBhY3Rpb24uIFRoZSBwYWdlIHJlYXNzdXJlcyByYXRoZXIgdGhhbiBzZWxsczogdGhlXG4vLyBwbGFuIGlzIGEgY2FsbSBzdW1tYXJ5LCBub3QgYSBwaWNrLW1lIGNhcmQsIGFuZCB0aGUgdGhyZWUgZ3VhcmFudGVlcyBiZWxvdyBpdFxuLy8gZXhpc3QgdG8gbWVsdCB0aGUgaGVzaXRhdGlvbiBvZiBlbnRlcmluZyBhIGNhcmQgYmVmb3JlIHRoZSB0cmlhbCBzdGFydHMuXG5cbi5zdWJzY3JpcHRpb24td2VsY29tZS1wYWdlIHtcblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICB9XG59XG5cbi53ZWxjb21lLXBsYW4ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcGxhbidzIG93biBmZWF0dXJlIGxpc3QgaXMgcmV1c2VkIGZyb20gdGhlIHBpY2tlcjsgaGVyZSBpdCBzaXRzIGluc2lkZVxuICAgIC8vIGEgc3VtbWFyeSBjYXJkLCBzbyBkcm9wIHRoZSBwaWNrZXIncyBib3R0b20gbWFyZ2luLlxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4ud2VsY29tZS1wbGFuLXByaWNpbmcge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi53ZWxjb21lLXBsYW4tcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi8vIFRocmVlIHF1aWV0IHJlYXNzdXJhbmNlczsgdGhlIEJvb3RzdHJhcCBncmlkIHN0YWNrcyB0aGVtIG9uIG1vYmlsZS5cblxuLndlbGNvbWUtcmVhc3N1cmUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLWdyb3VwIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24taWNvbiB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIHtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFsZXJ0LWJhbm5lciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tc20ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRhYmxldCBhZGp1c3RtZW50c1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkgYW5kICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZWQgbW90aW9uOiBkcm9wIHRoZSBjb250YWluZXIgcmV2ZWFsIGFuZCB0aGUgaG92ZXIgc2hhZG93IHRyYW5zaXRpb25zLlxuLy8gVGhlcmUgaXMgbm8gbG9vcGluZy9wdWxzaW5nIGFuaW1hdGlvbiBsZWZ0IGluIHRoaXMgZmlsZSB0byBndWFyZC5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAucGxhbi1jYXJkLFxuICAgIC5wbGFuLWNhcmQtZnJlZSxcbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMgLmJ0bi1sZyB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5hbGVydC1iYW5uZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogT25ib2FyZGluZyBDaGVja2xpc3QgLSBEYXNoYm9hcmQgd2lkZ2V0XG4gKlxuICogVGhlIGZpcnN0IGNvbXBvbmVudCBhIG5ldyB1c2VyIG1lZXRzLiBQcmlvcml0aWVzLCBpbiBvcmRlcjpcbiAqICAgMS4gQ29udmV5IHN0YXRlICh0b2RvIC8gZG9uZSAvIGhvdmVyZWQgLyBmb2N1c2VkKS4gTmV2ZXIgZGVjb3JhdGlvbi5cbiAqICAgMi4gU3RheSBvbiB0aGUgU29saWRJbnZvaWNlIGRlc2lnbiBzeXN0ZW0gLSBgLS1zd3AtKmAgdG9rZW5zIG9ubHkuXG4gKiAgIDMuIFJlYWQgY29ycmVjdGx5IHdoZXRoZXIgYSByb3cgaXMgYW4gPGE+IChhY3Rpb25hYmxlKSBvciBhIDxzcGFuPiAoZG9uZSkuXG4gKlxuICogU3RydWN0dXJlIGNvbWVzIGZyb20gVGFibGVyIChgY2FyZGAsIGBjYXJkLXN0YW1wYCwgYGNhcmQtbGluay1wb3BgLFxuICogYG9mZmNhbnZhc2AsIGB2aXN1YWxseS1oaWRkZW5gKS4gVGhpcyBmaWxlIG9ubHkgYWRkcyB3aGF0IFRhYmxlciBkb2VzIG5vdFxuICogYWxyZWFkeSBwcm92aWRlIC0gaXQgZG9lcyBub3QgcmVzdGF0ZSBvciBmaWdodCBpdC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVUNDRVNTIENBUkQgLSBhbGwgc3RlcHMgY29tcGxldGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gTWF0Y2hlcyBgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1hY3RpdmVcIj5gLiBOb3QgaW50ZXJhY3RpdmUgKGl0cyBvbmx5IGNvbnRyb2xcbi8vIGlzIHRoZSBkaXNtaXNzIGJ1dHRvbiBpbnNpZGUpLCBzbyBpdCBnZXRzIG5vIGhvdmVyIHN0YXRlIC0gYSBsaWZ0IGhlcmUgd291bGRcbi8vIGJlIGEgZmFsc2UgYWZmb3JkYW5jZS4gQSBmbGF0IHN1Y2Nlc3MgdGludCBwbHVzIGEgZnVsbCAxcHggYm9yZGVyIGNhcnJpZXNcbi8vIHRoZSBzdGF0ZTsgdGhlIGNhcmQga2VlcHMgVGFibGVyJ3MgcmVzdGluZyBgc2hhZG93LXNtYC5cblxuLmNhcmQuY2FyZC1hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xufVxuXG4vLyBEZWNvcmF0aXZlIHdhdGVybWFyayBiZWhpbmQgdGhlIGNhcmQgdGl0bGUgKFRhYmxlciBgLmNhcmQtc3RhbXBgKS5cblxuLmNhcmQtc3RhbXAtaWNvbiB7XG4gICAgb3BhY2l0eTogMC4xNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tMSVNUIElURU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jaGVja2xpc3QtaXRlbXMtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG59XG5cbi8vIFJlbmRlcnMgYXMgPGE+IHdoaWxlIGluY29tcGxldGUgYW5kIDxzcGFuPiBvbmNlIGNvbXBsZXRlLCBzbyBldmVyeVxuLy8gaW50ZXJhY3RpdmUgc3R5bGUgaXMgZ2F0ZWQgYmVoaW5kIGA6bm90KC5jb21wbGV0ZWQpYC5cblxuLmNoZWNrbGlzdC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRyYW5zaXRpb246XG4gICAgICAgIGNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCk7XG5cbiAgICAvLyBIb3ZlciBhbmQgZm9jdXMgcmVzb2x2ZSB0byB0aGUgc2FtZSBzdXJmYWNlIHNvIHBvaW50ZXIgYW5kIGtleWJvYXJkXG4gICAgLy8gdXNlcnMgYXJlIHNob3duIHRoZSBzYW1lIHRhcmdldDsgZm9jdXMgYWRkcyB0aGUgaGFsbyBiZWxvdy5cblxuICAgICY6bm90KC5jb21wbGV0ZWQpOmlzKDpob3ZlciwgOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgIC5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvY3VzIEhhbG8uIGAtLXN3cC1yaW5nLXByaW1hcnlgIGlzIGEgMTUlLWFscGhhIGdyZWVuICh+MS4xOjEgb24gd2hpdGUpXG4gICAgLy8gYW5kIGNhbm5vdCBjYXJyeSBhIGZvY3VzIGluZGljYXRvciBvbiBpdHMgb3duLCBzbyB0aGUgYm9yZGVyIHNoaWZ0cyB0b1xuICAgIC8vIGZ1bGwgYC0tc3dwLXByaW1hcnlgIGFsb25nc2lkZSBpdCB0byBtZWV0IFdDQUcgMi4xIFNDIDIuNC4xMS5cblxuICAgICY6bm90KC5jb21wbGV0ZWQpOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBEb25lLiBTaWduYWxsZWQgYnkgdGludCArIHN0cmlrZXRocm91Z2ggKyB3ZWlnaHQgZHJvcCArIGRlLWVtcGhhc2lzLCBzb1xuICAgIC8vIGl0IHN1cnZpdmVzIHdpdGhvdXQgaHVlLiBUaGUgcHJvZ3JhbW1hdGljIHNpZ25hbCBpcyBBNSdzXG4gICAgLy8gdmlzdWFsbHktaGlkZGVuIHN0YXR1cyB0ZXh0LCBub3QgYW55dGhpbmcgaW4gaGVyZS5cblxuICAgICYuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICAgICAgLml0ZW0tbmFtZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtLWljb24ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdGhpbmcgbGVmdCB0byBuYXZpZ2F0ZSB0by5cblxuICAgICAgICAuY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENvbXBsZXRpb24gbWFya2VyLiBHcmVlbiBjaGVjayB3aGVuIGRvbmU7IGEgbmV1dHJhbCByaW5nIHdoZW4gbm90LlxuXG4uY2hlY2tsaXN0LWl0ZW0taWNvbiB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW06bm90KC5jb21wbGV0ZWQpIC5jaGVja2xpc3QtaXRlbS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNDAwKTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4vLyBTY29wZWQgdG8gdGhlIHJvdzogYGl0ZW0taWNvbmAgLyBgaXRlbS1uYW1lYCBhcmUgdG9vIGdlbmVyaWMgdG8gb3duIGdsb2JhbGx5LlxuXG4uY2hlY2tsaXN0LWl0ZW0gLml0ZW0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5jaGVja2xpc3QtaXRlbSAuaXRlbS1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xufVxuXG4vLyBBbHdheXMgdmlzaWJsZSwgbm90IGhvdmVyLXJldmVhbGVkOiBob3ZlciBuZXZlciBmaXJlcyBvbiB0b3VjaCwgc28gYVxuLy8gaG92ZXItb25seSBhZmZvcmRhbmNlIGlzIGludmlzaWJsZSB0byBoYWxmIHRoZSB1c2VycyB3aG8gbmVlZCBpdC5cblxuLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPRkZDQU5WQVMgUEFORUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm9uYm9hcmRpbmctb2ZmY2FudmFzIHtcbiAgICB3aWR0aDogNDIwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vLyBQcm9ncmVzcyBzdW1tYXJ5IGNhcmQgYXQgdGhlIHRvcCBvZiB0aGUgcGFuZWwuIFNjb3BlZCB0byB0aGlzIHdpZGdldCAtIHRoZVxuLy8gdW5zY29wZWQgYC5vZmZjYW52YXMtYm9keSAuY2FyZGAgaXQgcmVwbGFjZXMgd291bGQgcmVzdHlsZSBldmVyeSBjYXJkIGluXG4vLyBldmVyeSBvZmZjYW52YXMgaW4gdGhlIGFwcC5cblxuLm9uYm9hcmRpbmctb2ZmY2FudmFzIC5vZmZjYW52YXMtYm9keSAuY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5vbmJvYXJkaW5nLXByb2dyZXNzLWxhYmVsIHtcbiAgICBtaW4td2lkdGg6IDNyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gTm8gbW90aW9uIHN1cnZpdmVzIGluIHRoaXMgZmlsZSAtIG5vIHRyYW5zZm9ybXMsIG5vIGtleWZyYW1lcy4gV2hhdCBpcyBsZWZ0XG4vLyBpcyBhIDE1MG1zIGNvbG91ci9zaGFkb3cgY3Jvc3MtZmFkZSwgd2hpY2ggaXMgbm90IHZlc3RpYnVsYXIuIFRoaXMgYmxvY2sgaXNcbi8vIGRlZmVuc2l2ZSBvbmx5LCBhbmQgaXMgcG9pbnRlZCBhdCBhIHNlbGVjdG9yIHRoYXQgYWN0dWFsbHkgZXhpc3RzLlxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5jaGVja2xpc3QtaXRlbSB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBPbmJvYXJkaW5nIFdpemFyZCAtIHRoZSBmaXJzdC1ydW4gZmxvdyAoL29uYm9hcmRpbmcpXG4gKlxuICogVGhpcyBpcyB0aGUgZmlyc3Qgc2NyZWVuIGV2ZXJ5IG5ldyB1c2VyIG1lZXRzOiBwb3N0LWluc3RhbGwgYW5kIHBvc3Qtc2lnbnVwLFxuICogYSB1c2VyIHdpdGggbm8gY29tcGFueSBpcyByZWRpcmVjdGVkIGhlcmUgdG8gY3JlYXRlIHRoZWlyIGNvbXBhbnksIGFuXG4gKiBvcHRpb25hbCBmaXJzdCBjbGllbnQsIGFuZCBhIGZpcnN0IGludm9pY2UuXG4gKlxuICogSXQgdXNlZCB0byBiZSBzdHlsZWQgd2l0aCBpbmxpbmUgPHN0eWxlPiBibG9ja3MgdGhhdCBjb250cmFkaWN0ZWQgdGhlIGRlc2lnblxuICogc3lzdGVtIHdob2xlc2FsZSAtIEJvb3RzdHJhcCBibHVlICgjMDY2ZmQxKSBpbnN0ZWFkIG9mIFRydXN0IEdyZWVuLCBncmFkaWVudHNcbiAqIG9uIHRoZSBjYW52YXMgLyBzdGVwIGljb24gLyBiYWRnZSwgYSAzcHggYGJvcmRlci1sZWZ0YCBzaWRlLXN0cmlwZSBvbiB0aGVcbiAqIGJlbmVmaXRzIGJveCAoYSBoYXJkIGJhbiksIGFuZCBhIGJvdW5jZS9lbGFzdGljIGNlbGVicmF0aW9uIHdpdGggYW4gaW5maW5pdGVcbiAqIHB1bHNlIGFuZCBubyByZWR1Y2VkLW1vdGlvbiBmYWxsYmFjay4gVGhpcyBmaWxlIHJlcGxhY2VzIGFsbCBvZiBpdCB3aXRoXG4gKiBgLS1zd3AtKmAgdG9rZW5zLCBmbGF0IHN1cmZhY2VzLCBhbmQgZWFzZS1vdXQgbW90aW9uLlxuICpcbiAqIEV2ZXJ5dGhpbmcgaXMgc2NvcGVkIHVuZGVyIGAub25ib2FyZGluZy1jb250YWluZXJgIGJlY2F1c2UgdGhlIGNsYXNzIG5hbWVzXG4gKiAoYHN0ZXAtaWNvbmAsIGBzdGVwLWJlbmVmaXRzYCwgYHdlbGNvbWUtYmFkZ2VgLCAuLi4pIGFyZSBnZW5lcmljIGFuZCB1c2VkXG4gKiBub3doZXJlIGVsc2UgLSBzY29waW5nIGtlZXBzIHRoZW0gZnJvbSBsZWFraW5nIGludG8gdGhlIHJlc3Qgb2YgdGhlIGFwcC5cbiAqXG4gKiBTdHJ1Y3R1cmUgKEJvb3RzdHJhcCBncmlkLCBgY2FyZGAsIGBidG5gLCBgZm9ybS1jb250cm9sYCwgYHByb2dyZXNzYCkgY29tZXNcbiAqIGZyb20gVGFibGVyOyB0aGlzIGZpbGUgb25seSBzdHlsZXMgdGhlIGN1c3RvbSB3aXphcmQgY2hyb21lLlxuICovXG5cbi5vbmJvYXJkaW5nLWNvbnRhaW5lciB7XG4gICAgLy8gUGFwZXItb24tZGVzayBjYW52YXM6IHRoZSBhcHAncyBvd24gZmxhdCBib2R5IGJhY2tncm91bmQuIFRoZSBwcmV2aW91c1xuICAgIC8vIGdyZXkgZGlhZ29uYWwgZ3JhZGllbnQgd2FzIGRlY29yYXRpb24gdGhlIGRlc2lnbiBzeXN0ZW0gZG9lcyBub3QgcGVybWl0LlxuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ib2R5LWJnKTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFBST0dSRVNTIEhFQURFUlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLm9uYm9hcmRpbmctcHJvZ3Jlc3Mge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcbiAgICB9XG5cbiAgICAuc3RlcC1pbmRpY2F0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAvLyBVcGNvbWluZyBzdGVwIGF0IHJlc3Q6IG5ldXRyYWwgc2xhdGUuXG5cbiAgICAuc3RlcC1udW1iZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDJyZW07XG4gICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCk7XG4gICAgfVxuXG4gICAgLy8gUmVhY2hlZCAodGhlIGN1cnJlbnQgc3RlcCBvciBhbiBlYXJsaWVyIG9uZSk6IGEgc29mdCBncmVlbiB0aW50LlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmFjdGl2ZSAuc3RlcC1udW1iZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgY3VycmVudCBzdGVwOiBmaWxsZWQgVHJ1c3QgR3JlZW4gd2l0aCB0aGUgc3RhbmRhcmQgZm9jdXMgaGFsbywgc28gdGhlXG4gICAgLy8gdXNlcidzIHBvc2l0aW9uIHJlYWRzIGF0IGEgZ2xhbmNlLlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5zdGVwLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAvLyBwcmltYXJ5LWRhcmsgKCMxZjZjMjkpIG9uIHRoZSB3aGl0ZSBoZWFkZXIgaG9sZHMgQUEgY29tZm9ydGFibHk7IHRoZSByYXdcbiAgICAvLyBwcmltYXJ5IHdvdWxkIG5vdCBmb3IgdGV4dCB0aGlzIHNtYWxsLlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmFjdGl2ZSAuc3RlcC1sYWJlbCxcbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgIG1hcmdpbjogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC5zdGVwLWNvbm5lY3Rvci5jb21wbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gU1RFUCBDQVJEXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBQYXBlciBvbiB0aGUgY2FudmFzOiBzdXJmYWNlLCBzb2Z0IHJlc3Rpbmcgc2hhZG93LCBnZW5lcm91cyByYWRpdXMuIE5vdCBhXG4gICAgLy8gaGVhdmllciBjdXN0b20gc2hhZG93IC0gdGhlIGRlc2lnbiBzeXN0ZW0ncyBgc2hhZG93LXNtYCBpcyB0aGUgY2FyZCByZXN0LlxuXG4gICAgLm9uYm9hcmRpbmctc3RlcC1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgSUNPTiBNRURBTExJT05cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIEZsYXQgcHJpbWFyeSB0aW50IHdpdGggYSBUcnVzdCBHcmVlbiBnbHlwaCAtIHRoZSBzYW1lIHNvZnQtbWVkYWxsaW9uXG4gICAgLy8gbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZCBlbXB0eSBzdGF0ZXMgdXNlLiBUaGUgcHJldmlvdXMgc2F0dXJhdGVkIGJsdWVcbiAgICAvLyBncmFkaWVudCBkaXNjIHdhcyB0aGUgQUktc2xvcCBoZXJvLWljb24gdGVsbC5cblxuICAgIC5zdGVwLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gV0VMQ09NRSBTRUNUSU9OICsgQkFER0VcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC53ZWxjb21lLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAud2VsY29tZS1iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQkVORUZJVFMgLyBcIldIWSBUSElTIE1BVFRFUlNcIiBCT1hcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIEEgZnVsbCAxcHggYm9yZGVyIHBsdXMgYW4gYW1iaWVudCBncmVlbiB3YXNoLiBOTyBzaWRlLXN0cmlwZTogYSBjb2xvdXJlZFxuICAgIC8vIGBib3JkZXItbGVmdGAgdGhpY2tlciB0aGFuIDFweCBpcyBhIGhhcmQgYmFuLCBhbmQgdGhlIGxlYWRpbmcgaWNvbiBpbnNpZGVcbiAgICAvLyBhbHJlYWR5IGNhcnJpZXMgdGhlIGFjY2VudC5cblxuICAgIC5zdGVwLWJlbmVmaXRzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpICsgbGkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ09NUExFVElPTiBTQ1JFRU5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC5jZWxlYnJhdGlvbi1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLy8gU3VjY2VzcyBtZWRhbGxpb246IHN1Y2Nlc3MtbGlnaHQgZGlzYywgQUEtc2FmZSBzdWNjZXNzLWRhcmsgY2hlY2suIEVudGVyc1xuICAgIC8vIG9uY2Ugd2l0aCBhIGdlbnRsZSBlYXNlLW91dCBzY2FsZSwgbmV2ZXIgYm91bmNlcywgbmV2ZXIgbG9vcHMuXG5cbiAgICAuc3VjY2Vzcy1jaGVja21hcmsge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICBoZWlnaHQ6IDZyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuICAgICAgICBhbmltYXRpb246IG9uYm9hcmRpbmctY2VsZWJyYXRlIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpIGJvdGg7XG4gICAgfVxuXG4gICAgLy8gQSBxdWlldCwgbmV1dHJhbCB0aXAgbm90ZSAtIGRpc3RpbmN0IGZyb20gdGhlIGdyZWVuIGJlbmVmaXRzIGJveCBhbmQgbm9cbiAgICAvLyBsb25nZXIgYSByYXcgQm9vdHN0cmFwIGBhbGVydC1pbmZvYCBibHVlLlxuXG4gICAgLm9uYm9hcmRpbmctdGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUkVTUE9OU0lWRVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgICAgIC5vbmJvYXJkaW5nLXN0ZXAtY2FyZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgb25ib2FyZGluZy1jZWxlYnJhdGUge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZWQgbW90aW9uIGlzIG5vdCBvcHRpb25hbC4gVGhlIHByb2dyZXNzLWluZGljYXRvciBjcm9zcy1mYWRlcyBhcmVcbi8vIG5vbi12ZXN0aWJ1bGFyLCBidXQgdGhlIGNlbGVicmF0aW9uIHNjYWxlIGlzIGEgdHJhbnNmb3JtLCBzbyBpdCBpcyBkaXNhYmxlZFxuLy8gb3V0cmlnaHQgYW5kIHRoZSBmaW5hbCBzdGF0ZSBzaG93cyBpbnN0YW50bHkuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLm9uYm9hcmRpbmctY29udGFpbmVyIHtcblxuICAgICAgICAuc3RlcC1udW1iZXIsXG4gICAgICAgIC5zdGVwLWxhYmVsLFxuICAgICAgICAuc3RlcC1jb25uZWN0b3Ige1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdWNjZXNzLWNoZWNrbWFyayB7XG4gICAgICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTW9uZXkgRGlzcGxheVxuICpcbiAqIFRoZSBzaWduYXR1cmUgY29tcG9uZW50IChERVNJR04ubWQgc2VjdGlvbiA1KS4gRXZlcnkgY3VycmVuY3kgdmFsdWUgaW4gdGhlXG4gKiBhcHBsaWNhdGlvbiByZW5kZXJzIHRocm91Z2ggYC5tb25leWA7IGl0IGlzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvclxuICogbW9uZXkgZGlzcGxheSwgYW5kIHJhdyBge3sgYW1vdW50IH19YCByZW5kZXJpbmcgaXMgcHJvaGliaXRlZC5cbiAqXG4gKiBDb250cmFjdDpcbiAqICAgPHNwYW4gY2xhc3M9XCJtb25leVwiPlxuICogICAgIDxzcGFuIGNsYXNzPVwibW9uZXktY3VycmVuY3lcIj5VU0Q8L3NwYW4+XG4gKiAgICAgPHN0cm9uZyBjbGFzcz1cIm1vbmV5LWFtb3VudFwiPjEsMjM0LjU2PC9zdHJvbmc+XG4gKiAgIDwvc3Bhbj5cbiAqXG4gKiBNb2RpZmllcnMgKG9uIHRoZSBgLm1vbmV5YCByb290LCBjb21iaW5hYmxlKTpcbiAqICAgLm1vbmV5LS1wYWlkICAgICAgQW1vdW50IGluIEFBLXNhZmUgc3VjY2Vzcy4gT05MWSB2YWxpZCBhbG9uZ3NpZGUgYW5cbiAqICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQgXCJQYWlkXCIgbGFiZWwgKHRoZSBNb25leS1Db2xvciBSdWxlKS5cbiAqICAgLm1vbmV5LS1vdmVyZHVlICAgQW1vdW50IGluIEFBLXNhZmUgZGFuZ2VyLiBTYW1lIGxhYmVsbGluZyBydWxlLlxuICogICAubW9uZXktLXRvdGFsICAgICBXZWlnaHQgNjAwLCBhbW91bnQgb25lIHNpemUgc3RlcCB1cC5cbiAqICAgKG5vbmUpICAgICAgICAgICAgTmV1dHJhbCAtIHRoZSBkZWZhdWx0IGFuZCB0aGUgY29tbW9uIGNhc2UuXG4gKlxuICogVGhlIGNvbXBvbmVudCBuZXZlciBzZXRzIGl0cyBvd24gZm9udC1zaXplLiBJdCBpbmhlcml0cyBmcm9tIGNvbnRleHQsIHNvIHRoZVxuICogc2FtZSBtYXJrdXAgaXMgY29ycmVjdCBpbmxpbmUgaW4gYSB0YWJsZSBjZWxsLCBpbiBhIGhlYWRpbmcsIGFuZCBhdFxuICogYC5zdGF0LXZhbHVlYCBzY2FsZSBpbiB0aGUgZGFzaGJvYXJkIGhlcm8gdGlsZXMuIE9ubHkgYC5tb25leS0tdG90YWxgIHN0ZXBzXG4gKiB0aGUgYW1vdW50LCBhbmQgaXQgc3RlcHMgcmVsYXRpdmVseSBzbyB0aGUgcmVzdWx0IGlzIHJpZ2h0IGF0IGV2ZXJ5IGJhc2UuXG4gKi9cblxuLm1vbmV5IHtcbiAgICAvLyBpbmxpbmUtZmxleCByYXRoZXIgdGhhbiBwbGFpbiBpbmxpbmUsIGZvciB0d28gcmVhc29uczpcbiAgICAvLyAgMS4gVGhlIGdhcCBiZXR3ZWVuIGN1cnJlbmN5IGFuZCBhbW91bnQgaXMgZGV0ZXJtaW5pc3RpYyB3aGV0aGVyIG9yIG5vdFxuICAgIC8vICAgICB0aGUgZW1pdHRlZCBtYXJrdXAgaGFwcGVucyB0byBjYXJyeSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIHNwYW5zXG4gICAgLy8gICAgIChmbGV4IGRyb3BzIHdoaXRlc3BhY2Utb25seSBhbm9ueW1vdXMgYm94ZXMpLlxuICAgIC8vICAyLiBgYWxpZ24taXRlbXM6IGJhc2VsaW5lYCBrZWVwcyBhIHNpemUtc3RlcHBlZCBgLm1vbmV5LS10b3RhbGAgYW1vdW50XG4gICAgLy8gICAgIHNoYXJpbmcgYSBiYXNlbGluZSB3aXRoIGl0cyBjdXJyZW5jeSwgaW5zdGVhZCBvZiBjZW50cmluZyBhZ2FpbnN0IGl0LlxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgIC8vIE1vbmV5IGNsYXJpdHk6IGEgY3VycmVuY3kgY29kZSBtdXN0IG5ldmVyIGJlIG9ycGhhbmVkIGZyb20gaXRzIG51bWJlci5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLy8gVGhlIFRhYnVsYXIgRmlndXJlcyBSdWxlIC0gYW1vdW50cyBhbGlnbiBpbiBjbGVhbiB2ZXJ0aWNhbCBjb2x1bW5zLlxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIEN1cnJlbmN5IGNvZGUgb3Igc3ltYm9sLiBEaW1tZWQgcmVsYXRpdmUgdG8gdGhlIGFtb3VudCwgYnV0IGl0IGlzIG1lYW5pbmdmdWxcbi8vIHRleHQgcmF0aGVyIHRoYW4gZGVjb3JhdGlvbiwgc28gaXQgaG9sZHMgQUEgb24gZXZlcnkgc3VyZmFjZSBpbiB0aGUgc3lzdGVtLlxuXG4ubW9uZXktY3VycmVuY3kge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktY3VycmVuY3kpO1xufVxuXG4vLyBUaGUgYW1vdW50LiBXZWlnaHQgaXMgbm9ybWFsaXNlZCBoZXJlIHNvIHRoYXQgdGhlIFVBIGRlZmF1bHQgb2YgNzAwIG9uXG4vLyBgPHN0cm9uZz5gIGRvZXMgbm90IHByZS1lbXB0IHRoZSBgLm1vbmV5LS10b3RhbGAgc3RlcCB1cCB0byA2MDAuXG5cbi5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktbmV1dHJhbCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PRElGSUVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQYWlkLiBDb2xvdXIgaXMgYW1wbGlmaWNhdGlvbiBoZXJlLCBuZXZlciB0aGUgY2FycmllciBvZiBtZWFuaW5nIC0gYSBncmVlblxuLy8gYW1vdW50IHdpdGhvdXQgYW4gYWNjb21wYW55aW5nIFwiUGFpZFwiIGxhYmVsIGlzIGEgYnVnLCBub3QgYSBzdHlsZSBjaG9pY2UuXG5cbi5tb25leS0tcGFpZCAubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LXBhaWQpO1xufVxuXG4vLyBPdmVyZHVlLiBTYW1lIHJ1bGU6IGFsd2F5cyByZW5kZXJlZCB3aXRoIGFuIGV4cGxpY2l0IFwiT3ZlcmR1ZVwiIGxhYmVsLlxuXG4ubW9uZXktLW92ZXJkdWUgLm1vbmV5LWFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1vdmVyZHVlKTtcbn1cblxuLy8gVG90YWwuIEhlYXZpZXIsIGFuZCBvbmUgc2l6ZSBzdGVwIHVwIHJlbGF0aXZlIHRvIHRoZSBpbmhlcml0ZWQgY29udGV4dC5cbi8vIFRoZSBjdXJyZW5jeSBrZWVwcyBpdHMgaW5oZXJpdGVkIHdlaWdodCBzbyB0aGUgZGltbWVkLXByZWZpeCByZWxhdGlvbnNoaXBcbi8vIHN1cnZpdmVzIHRoZSBzdGVwIHVwLlxuXG4ubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gKiB2YXIoLS1zd3AtbW9uZXktdG90YWwtc2NhbGUpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xufVxuXG4vLyBBdCBkaXNwbGF5IHNpemUgdGhlIGN1cnJlbmN5IGNvZGUgaXMgZGltbWVkIGJ5IHNpemUgYXMgd2VsbCBhcyBieSBjb2xvdXI6IGF0IGFcbi8vIHNoYXJlZCBzaXplIGl0IGNvbXBldGVzIHdpdGggdGhlIGFtb3VudCBmb3IgYXR0ZW50aW9uIGl0IGhhcyBub3QgZWFybmVkLCBhbmRcbi8vIFwiVVNEIDEyMCw4ODIuMTlcIiBzaG91bGQgcmVhZCBhcyBhIG51bWJlciBjYXJyeWluZyBhIHVuaXQgcmF0aGVyIHRoYW4gYXMgdHdvXG4vLyBlcXVhbCB3b3Jkcy4gU2NvcGVkIHRvIGAtLXRvdGFsYCBkZWxpYmVyYXRlbHkuIEF0IGJvZHkgc2l6ZSAoYSB0YWJsZSByb3csIGFuXG4vLyBhY3Rpdml0eSBmZWVkKSB0aGUgc2FtZSByZWR1Y3Rpb24gd291bGQgcHV0IHRoZSBjb2RlIG5lYXIgMTBweCwgd2hpY2ggaXMgdGhlXG4vLyBsZWdpYmlsaXR5IHByb2JsZW0gcmF0aGVyIHRoYW4gdGhlIGZpeCwgc28gdGhlIGNvZGUgc3RheXMgZnVsbCBzaXplIHRoZXJlLlxuXG4ubW9uZXktLXRvdGFsIC5tb25leS1jdXJyZW5jeSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtbW9uZXktY3VycmVuY3ktc2NhbGUpO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIFN0YXR1cyBDaGlwXG4gKlxuICogVGhlIG9uZSBzdGF0dXMgY2hpcCAoREVTSUdOLm1kIHNlY3Rpb24gNSkuIEV2ZXJ5IHN0YXR1cyB3b3JkIGluIHRoZVxuICogYXBwbGljYXRpb24gcmVuZGVycyB0aHJvdWdoIGAuc3RhdHVzLWNoaXBgLCBvbiBhIGZpdmUtdmFsdWUgc2VtYW50aWMgc2V0OlxuICogbmV1dHJhbCwgaW5mbywgc3VjY2Vzcywgd2FybmluZywgZGFuZ2VyLlxuICpcbiAqIENvbnRyYWN0OlxuICogICA8c3BhbiBjbGFzcz1cInN0YXR1cy1jaGlwIHN0YXR1cy1jaGlwLS1zdWNjZXNzXCI+UGFpZDwvc3Bhbj5cbiAqXG4gKiBFdmVyeSB2YXJpYW50IGlzIGFuIEFBLXNhZmUgdGV4dCBjb2xvdXIgb24gaXRzIG93biB0aW50OlxuICogICBuZXV0cmFsICAgZ3JheS0xMDAgICAgICAvIHRleHQtc2Vjb25kYXJ5ICAgNi45MjoxXG4gKiAgIGluZm8gICAgICBpbmZvLWxpZ2h0ICAgIC8gaW5mby1kYXJrICAgICAgICA1LjQ5OjFcbiAqICAgc3VjY2VzcyAgIHN1Y2Nlc3MtbGlnaHQgLyBzdWNjZXNzLWRhcmsgICAgIDQuODQ6MVxuICogICB3YXJuaW5nICAgd2FybmluZy1saWdodCAvIHdhcm5pbmctZGFyayAgICAgNi4zNzoxXG4gKiAgIGRhbmdlciAgICBkYW5nZXItbGlnaHQgIC8gZGFuZ2VyLWRhcmsgICAgICA1LjMwOjFcbiAqXG4gKiBUaGUgdGludCBpdHNlbGYgbWVhc3VyZXMgMS4wNS0xLjIyOjEgYWdhaW5zdCB0aGUgcGFnZS4gVGhhdCBpcyBkZWxpYmVyYXRlLlxuICogVGhlIGNoaXAncyBtZWFuaW5nIGlzIGNhcnJpZWQgYnkgaXRzIHRleHQgbGFiZWwsIHNvIHRoZSBwaWxsIGlzIGRlY29yYXRpb25cbiAqIGFyb3VuZCBsZWdpYmxlIHRleHQsIG5vdCBhIGNvbnRyb2wgd2hvc2UgYm91bmRhcnkgbXVzdCBiZSBwZXJjZWl2YWJsZS5cbiAqXG4gKiBBIGNoaXAgaXMgbmV2ZXIgaW50ZXJhY3RpdmU6IG5vIHNoYWRvdywgbm8gYm9yZGVyLCBubyBob3Zlciwgbm8gdHJhbnNpdGlvbixcbiAqIGFuZCBpdCBpcyBuZXZlciBhIGZvY3VzIHRhcmdldC4gQSBjaGlwIGlzIGFsc28gbmV2ZXIgdHJ1bmNhdGVkIC0gYVxuICogaGFsZi1zaG93biBzdGF0dXMgaXMgd29yc2UgdGhhbiBhIHdpZGVyIGNvbHVtbi5cbiAqL1xuXG4uc3RhdHVzLWNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTAtNSkgdmFyKC0tc3dwLXNwYWNlLTItNSk7ICAgLy8gMnB4IDEwcHhcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEycHhcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTsgICAgICAgICAgICAgICAgICAvLyA1MDBcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLy8gVGhlIGJhc2UgaXMgdGhlIG5ldXRyYWwgdHJlYXRtZW50LCBzbyBhIGNoaXAgd2l0aCBubyBtb2RpZmllciBpcyBzdGlsbFxuICAgIC8vIGxlZ2libGUgYW5kIHN0aWxsIGxvb2tzIGxpa2UgYSBjaGlwLlxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAmLS1uZXV0cmFsIHtcbiAgICAgICAgLy8gVGhlIG1vZGlmaWVyIGV4aXN0cyBzbyBjYWxsIHNpdGVzIGNhbiBzYXkgYG5ldXRyYWxgIHJhdGhlciB0aGFuIHNheVxuICAgICAgICAvLyBub3RoaW5nLiBJdCByZXBlYXRzIHRoZSBiYXNlIHZhbHVlcyBpbnN0ZWFkIG9mIGJlaW5nIGVtcHR5LCBiZWNhdXNlXG4gICAgICAgIC8vIGFuIGVtcHR5IHJ1bGUgaXMgZHJvcHBlZCBieSB0aGUgYnVpbGQgYW5kIGJ5IHN0eWxlbGludC5cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxuXG4gICAgJi0taW5mbyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWRhcmspO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctZGFyayk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspO1xuICAgIH1cbn1cbiIsIi8qKlxuICogUmVwb3J0cyBXb3Jrc3BhY2VcbiAqXG4gKiBUaGUgcmVwb3J0cyBwYWdlcyBzaGFyZSBvbmUgdmlzdWFsIGdyYW1tYXI6IGEgcGFnZSBoZWFkZXIsIGEgZmlsdGVyIGJhcixcbiAqIEtQSSB0aWxlcywgY2hhcnQgcGFuZWxzIGFuZCBjdXJyZW5jeS1hd2FyZSB0YWJsZXMuIExheW91dCBvbmx5IC0gbW9uZXksXG4gKiBidXR0b25zLCB0YWJsZXMgYW5kIGZvcm0gY29udHJvbHMga2VlcCB0aGVpciBCb290c3RyYXAvVGFibGVyIHN0eWxpbmcuXG4gKi9cblxuLnJlcG9ydHMtcGFnZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmctYmxvY2s6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLnJlcG9ydHMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucmVwb3J0cy1oZWFkZXJfX2V5ZWJyb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5yZXBvcnRzLWhlYWRlcl9faWNvbiB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xufVxuXG4ucmVwb3J0cy1oZWFkZXJfX3RpdGxlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtM3hsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG59XG5cbi5yZXBvcnRzLWhlYWRlcl9fc3VidGl0bGUge1xuICAgIG1heC13aWR0aDogNTJyZW07XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMikgMCAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5yZXBvcnRzLWhlYWRlcl9fYXMtb2Yge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xufVxuXG4ucmVwb3J0cy1oZWFkZXJfX3BlcmlvZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnJlcG9ydHMtaGVhZGVyX19hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi5yZXBvcnRzLXNlY3Rpb24tbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4ucmVwb3J0cy1zZWN0aW9uLW5hdl9fbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cbn1cblxuLnJlcG9ydHMtc2VjdGlvbi1uYXZfX2ljb24ge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnJlcG9ydHMtcGVyaW9kX19iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG59XG5cbi5yZXBvcnRzLXBlcmlvZF9faWNvbiB7XG4gICAgd2lkdGg6IDFyZW07XG4gICAgaGVpZ2h0OiAxcmVtO1xufVxuXG4ucmVwb3J0cy1wZXJpb2RfX2RhdGVzIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5yZXBvcnRzLXBlcmlvZF9fc2VwYXJhdG9yIHtcbiAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4ucmVwb3J0cy1maWx0ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5yZXBvcnRzLWZpbHRlcl9faGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucmVwb3J0cy1maWx0ZXJfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG59XG5cbi5yZXBvcnRzLWZpbHRlcl9fdGl0bGUtaWNvbiB7XG4gICAgd2lkdGg6IDEuMXJlbTtcbiAgICBoZWlnaHQ6IDEuMXJlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4ucmVwb3J0cy1maWx0ZXJfX2hpbnQsXG4ucmVwb3J0cy1maWx0ZXJfX25vdGUge1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xufVxuXG4ucmVwb3J0cy1maWx0ZXJfX3Jlc2V0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4ucmVwb3J0cy1maWx0ZXJfX3Jlc2V0LWljb24ge1xuICAgIHdpZHRoOiAxcmVtO1xuICAgIGhlaWdodDogMXJlbTtcbn1cblxuLnJlcG9ydHMtZmlsdGVyX19ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFsaWduLWl0ZW1zOiBlbmQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDEycmVtLCAxLjJmcikgcmVwZWF0KDIsIG1pbm1heCgxMHJlbSwgMWZyKSkgYXV0bztcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDEyMDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxMnJlbSwgMS4yZnIpIHJlcGVhdCgyLCBtaW5tYXgoMTByZW0sIDFmcikpIG1pbm1heCg4cmVtLCAwLjdmcikgYXV0bztcbiAgICB9XG59XG5cbi5yZXBvcnRzLWZpbHRlcl9fZmllbGQge1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZSk7XG4gICAgfVxuXG4gICAgLmZvcm0tdGV4dCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIH1cbn1cblxuLnJlcG9ydHMtZmlsdGVyX19maWVsZC0tY2hlY2sge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5yZXBvcnRzLWZpbHRlcl9fYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLmJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAuaWNvbiB7XG4gICAgICAgIHdpZHRoOiAxcmVtO1xuICAgICAgICBoZWlnaHQ6IDFyZW07XG4gICAgfVxufVxuXG4ucmVwb3J0cy1hbGVydCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgIC5pY29uIHtcbiAgICAgICAgd2lkdGg6IDEuMjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4ucmVwb3J0cy1rcGktZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPj0gNTc3cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICB9XG5cbiAgICAmLS10d28ge1xuICAgICAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tdGhyZWUge1xuICAgICAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tY291bnRzIHtcbiAgICAgICAgQG1lZGlhICh3aWR0aCA+PSAxMjAxcHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlcG9ydHMta3BpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICAmLS1wcmltYXJ5IC5yZXBvcnRzLWtwaV9faWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIC5yZXBvcnRzLWtwaV9faWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuICAgIH1cblxuICAgICYtLWRhbmdlciAucmVwb3J0cy1rcGlfX2ljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyAucmVwb3J0cy1rcGlfX2ljb24ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIC5yZXBvcnRzLWtwaV9faWNvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWRhcmspO1xuICAgIH1cblxuICAgICYtLWRhbmdlciAucmVwb3J0cy1rcGlfX3ZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgfVxuXG4gICAgJi0tc3VjY2VzcyAucmVwb3J0cy1rcGlfX3ZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuICAgIH1cbn1cblxuLnJlcG9ydHMta3BpX190b3Age1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5yZXBvcnRzLWtwaV9fbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ucmVwb3J0cy1rcGlfX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDJyZW07XG4gICAgaGVpZ2h0OiAycmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxLjFyZW07XG4gICAgICAgIGhlaWdodDogMS4xcmVtO1xuICAgIH1cbn1cblxuLnJlcG9ydHMta3BpX192YWx1ZSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctdGlnaHQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cbiAgICAmLS1lbXB0eSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG59XG5cbi5yZXBvcnRzLWtwaV9fY3VycmVuY3kge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGUpO1xufVxuXG4ucmVwb3J0cy1rcGlfX3N0YWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4ucmVwb3J0cy1rcGlfX3N0YWNrLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLnJlcG9ydHMta3BpX19zdGFjay12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ucmVwb3J0cy1rcGlfX2Jhc2lzLFxuLnJlcG9ydHMta3BpX19ub3RlIHtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ucmVwb3J0cy1rcGlfX25vdGUge1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbn1cblxuLnJlcG9ydHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIEBtZWRpYSAod2lkdGggPj0gOTkycHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuICAgIH1cblxuICAgICYtLXR3byB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPj0gOTkycHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlcG9ydHMtcGFuZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbn1cblxuLnJlcG9ydHMtcGFuZWwtLXNwYW4tMiB7XG4gICAgQG1lZGlhICh3aWR0aCA+PSA5OTJweCkge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgIH1cbn1cblxuLnJlcG9ydHMtcGFuZWxfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucmVwb3J0cy1wYW5lbF9fdGl0bGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xufVxuXG4ucmVwb3J0cy1wYW5lbF9fc3VidGl0bGUge1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xufVxuXG4ucmVwb3J0cy1wYW5lbF9fYmFkZ2Uge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ucmVwb3J0cy1jaGFydCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIGZsZXg6IDE7XG59XG5cbi5yZXBvcnRzLWNoYXJ0X19jYW52YXMge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi5yZXBvcnRzLWNoYXJ0LS10YWxsIHtcbiAgICBtaW4taGVpZ2h0OiAzNDBweDtcbn1cblxuLnJlcG9ydHMtZW1wdHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICYtLWNvbXBhY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiAyMjBweDtcbiAgICB9XG59XG5cbi5yZXBvcnRzLWVtcHR5X19pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzcmVtO1xuICAgIGhlaWdodDogM3JlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxLjVyZW07XG4gICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgIH1cbn1cblxuLnJlcG9ydHMtZW1wdHlfX3RpdGxlIHtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0yKSAwIDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbn1cblxuLnJlcG9ydHMtZW1wdHlfX3RleHQge1xuICAgIG1heC13aWR0aDogMzRyZW07XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5yZXBvcnRzLXRhYmxlLXdyYXAge1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG59XG5cbi5yZXBvcnRzLXRhYmxlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgdGhlYWQgdGgge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGUpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIHRib2R5IHRoLFxuICAgIHRib2R5IHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cblxuICAgIHRib2R5IHRyOmxhc3QtY2hpbGQgdGgsXG4gICAgdGJvZHkgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgJl9fbnVtYmVyIHtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG59XG5cbi5yZXBvcnRzLWN1cnJlbmN5IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGUpO1xufVxuXG4udHJhbnNhY3Rpb24tc3VtbWFyeS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgobWluKDEwMCUsIDE4cmVtKSwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi50cmFuc2FjdGlvbi1zdW1tYXJ5LWNhcmQge1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbn1cblxuLnRyYW5zYWN0aW9uLXN1bW1hcnktY2FyZF9faGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi50cmFuc2FjdGlvbi1zdW1tYXJ5LWNhcmRfX21ldHJpY3Mge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg5cmVtLCAxZnIpKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi50cmFuc2FjdGlvbi1zdW1tYXJ5LWNhcmRfX21ldHJpYyB7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgICYgKyAmIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICBkdCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZSk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgZGQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3MgZGQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyBkZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoIDwgNTc2cHgpIHtcblxuICAgICAgICAmICsgJiB7XG4gICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlcG9ydHMtc3RhdHVzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ucmVwb3J0cy1zdGF0dXMtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICAmX19kb3Qge1xuICAgICAgICB3aWR0aDogMC41cmVtO1xuICAgICAgICBoZWlnaHQ6IDAuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNDAwKTtcbiAgICB9XG5cbiAgICAmX19jb3VudCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB9XG5cbiAgICAmW2RhdGEtc3RhdHVzPVwicGFpZFwiXSAucmVwb3J0cy1zdGF0dXMtY2hpcF9fZG90LFxuICAgICZbZGF0YS1zdGF0dXM9XCJhY2NlcHRlZFwiXSAucmVwb3J0cy1zdGF0dXMtY2hpcF9fZG90LFxuICAgICZbZGF0YS1zdGF0dXM9XCJjYXB0dXJlZFwiXSAucmVwb3J0cy1zdGF0dXMtY2hpcF9fZG90IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cblxuICAgICZbZGF0YS1zdGF0dXM9XCJwZW5kaW5nXCJdIC5yZXBvcnRzLXN0YXR1cy1jaGlwX19kb3Qge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgfVxuXG4gICAgJltkYXRhLXN0YXR1cz1cIm92ZXJkdWVcIl0gLnJlcG9ydHMtc3RhdHVzLWNoaXBfX2RvdCxcbiAgICAmW2RhdGEtc3RhdHVzPVwiZmFpbGVkXCJdIC5yZXBvcnRzLXN0YXR1cy1jaGlwX19kb3QsXG4gICAgJltkYXRhLXN0YXR1cz1cImRlY2xpbmVkXCJdIC5yZXBvcnRzLXN0YXR1cy1jaGlwX19kb3Qge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmW2RhdGEtc3RhdHVzPVwiYWN0aXZlXCJdIC5yZXBvcnRzLXN0YXR1cy1jaGlwX19kb3QsXG4gICAgJltkYXRhLXN0YXR1cz1cImNvbnZlcnRlZFwiXSAucmVwb3J0cy1zdGF0dXMtY2hpcF9fZG90IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgICZbZGF0YS1zdGF0dXM9XCJyZWZ1bmRlZFwiXSAucmVwb3J0cy1zdGF0dXMtY2hpcF9fZG90IHtcbiAgICAgICAgYmFja2dyb3VuZDogIzhiNWNmNjtcbiAgICB9XG59XG5cbi5yZXBvcnRzLWNoYW5nZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSkgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAmX19pY29uIHtcbiAgICAgICAgd2lkdGg6IDAuODVyZW07XG4gICAgICAgIGhlaWdodDogMC44NXJlbTtcbiAgICB9XG5cbiAgICAmLS11cCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgfVxuXG4gICAgJi0tZG93biB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspO1xuICAgIH1cblxuICAgICYtLWZsYXQsXG4gICAgJi0tbXV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgICYtLW5ldyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0ZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgfVxufVxuXG4ucmVwb3J0cy1uYXYtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPj0gNTc3cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcbiAgICB9XG59XG5cbi5yZXBvcnRzLW5hdi1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSwgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSwgdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5yZXBvcnRzLW5hdi1jYXJkX19pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyLjI1cmVtO1xuICAgIGhlaWdodDogMi4yNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDEuMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjJyZW07XG4gICAgfVxufVxuXG4ucmVwb3J0cy1uYXYtY2FyZF9fdGl0bGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbn1cblxuLnJlcG9ydHMtbmF2LWNhcmRfX3RleHQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5yZXBvcnRzLWtwaV9fbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLnJlcG9ydHMtbmF2LWNhcmQge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBEYXRlIHBpY2tlciAtIGNhbGVuZGFyIGF0dGFjaGVkIHRvIGV2ZXJ5IGRheS1maXJzdCBkYXRlIGZpZWxkIGJ5IHRoZVxuICogYGRhdGVwaWNrZXJgIFN0aW11bHVzIGNvbnRyb2xsZXIuXG4gKlxuICogTGl0ZXBpY2tlciBzaGlwcyBpdHMgb3duIHN0cnVjdHVyYWwgQ1NTLCBpbXBvcnRlZCBieSB0aGUgY29udHJvbGxlci4gVGhlc2VcbiAqIHJ1bGVzIG9ubHkgYWxpZ24gaXQgd2l0aCB0aGUgZGVzaWduIHRva2VucyBhbmQgZ2l2ZSB0aGUgdGV4dCBmaWVsZCB0aGVcbiAqIGNhbGVuZGFyIGFmZm9yZGFuY2UgdGhlIG5hdGl2ZSBpbnB1dCB1c2VkIHRvIGRyYXcuXG4gKi9cblxuLmxpdGVwaWNrZXIge1xuICAgIC0tbGl0ZXBpY2tlci1tb250aC13ZWVrZGF5LWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgLS1saXRlcGlja2VyLWJ1dHRvbi1wcmV2LW1vbnRoLWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgLS1saXRlcGlja2VyLWJ1dHRvbi1uZXh0LW1vbnRoLWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgLS1saXRlcGlja2VyLWJ1dHRvbi1wcmV2LW1vbnRoLWNvbG9yLWhvdmVyOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLWJ1dHRvbi1uZXh0LW1vbnRoLWNvbG9yLWhvdmVyOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLWRheS1jb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgIC0tbGl0ZXBpY2tlci1kYXktY29sb3ItaG92ZXI6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLWxpdGVwaWNrZXItaXMtc3RhcnQtY29sb3ItYmc6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLWxpdGVwaWNrZXItaXMtZW5kLWNvbG9yLWJnOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLWlzLXRvZGF5LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLW1vbnRoLWhlYWRlci1jb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgIC0tbGl0ZXBpY2tlci1jb250YWluZXItbW9udGhzLWNvbG9yLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICBmb250OiBpbmhlcml0O1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgLmNvbnRhaW5lcl9fbWFpbiB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtaW5wdXQtcmFkaXVzKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCk7XG4gICAgfVxuXG4gICAgLmNvbnRhaW5lcl9fbW9udGhzIC5tb250aC1pdGVtLW5hbWUsXG4gICAgLmNvbnRhaW5lcl9fbW9udGhzIC5tb250aC1pdGVtLXllYXIge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIC5jb250YWluZXJfX2RheXMgLmRheS1pdGVtIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUaGUgdGV4dCBmaWVsZCByZXBsYWNlZCBgPGlucHV0IHR5cGU9XCJkYXRlXCI+YCwgd2hpY2ggZHJldyBhIGNhbGVuZGFyIGJ1dHRvbi5cbi8vIERyYXcgdGhlIHNhbWUgYWZmb3JkYW5jZSBzbyB0aGUgZmllbGQgc3RpbGwgcmVhZHMgYXMgYSBkYXRlIGZpZWxkLlxuXG5pbnB1dFtkYXRhLWNvbnRyb2xsZXJ+PSdkYXRlcGlja2VyJ10ge1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGModmFyKC0tc3dwLWlucHV0LXBhZGRpbmcteCkgKyAxLjI1cmVtKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzNjQ3NDhiJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCclM0UlM0NwYXRoIGQ9J000IDdhMiAyIDAgMCAxIDIgLTJoMTJhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEgLTIgMmgtMTJhMiAyIDAgMCAxIC0yIC0ydi0xMnonLyUzRSUzQ3BhdGggZD0nTTE2IDN2NCcvJTNFJTNDcGF0aCBkPSdNOCAzdjQnLyUzRSUzQ3BhdGggZD0nTTQgMTFoMTYnLyUzRSUzQ3BhdGggZD0nTTExIDE1aDEnLyUzRSUzQ3BhdGggZD0nTTEyIDE1djMnLyUzRSUzQy9zdmclM0VcIik7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjVyZW0gY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMXJlbSAxcmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbiIsIi8qKlxuICogU2hhcmVkIGNvbXBvbmVudCBjb2xvdXIgY29udHJhY3QuXG4gKlxuICogQm9vdHN0cmFwLCBUYWJsZXIgYW5kIFN5bWZvbnkgVVggYWxsIHNoaXAgdGhlaXIgb3duIHN1cmZhY2UgYXNzdW1wdGlvbnMuIFRoaXMgZmluYWwgbGF5ZXIgbWFwc1xuICogdGhvc2UgcmV1c2FibGUgY29udHJvbHMgb250byBGaW56YXJvIHRva2VucyBzbyBzZXJ2ZXItcmVuZGVyZWQgYW5kIGxpdmUtcmVuZGVyZWQgbWFya3VwIGJlaGF2ZXNcbiAqIGlkZW50aWNhbGx5IGluIGJvdGggdGhlbWVzLlxuICovXG5cbi5mb3JtLWNvbnRyb2wsXG4uZm9ybS1zZWxlY3QsXG50ZXh0YXJlYS5mb3JtLWNvbnRyb2wsXG4uaW5wdXQtZ3JvdXAtdGV4dCxcbi50cy13cmFwcGVyIC50cy1jb250cm9sLFxuLnRzLWRyb3Bkb3duLFxuLnRzLWRyb3Bkb3duIC5kcm9wZG93bi1pbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbnB1dC1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmZvcm0tY29udHJvbCxcbi5mb3JtLXNlbGVjdCxcbi50cy13cmFwcGVyIC50cy1jb250cm9sIHtcblxuICAgICY6aG92ZXI6bm90KDpkaXNhYmxlZCwgW3JlYWRvbmx5XSkge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyxcbiAgICAmLmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtZm9jdXMtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtaW5wdXQtZm9jdXMtcmluZyk7XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCxcbiAgICAmW3JlYWRvbmx5XSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1pbnB1dC1kaXNhYmxlZC1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtZGlzYWJsZWQtY29sb3IpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIsXG4udHMtd3JhcHBlciAudHMtY29udHJvbCBpbnB1dDo6cGxhY2Vob2xkZXIsXG4udHMtZHJvcGRvd24gLmRyb3Bkb3duLWlucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4uZm9ybS1zZWxlY3Qgb3B0aW9uLFxuLmZvcm0tc2VsZWN0IG9wdGdyb3VwIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtbWVudS1iZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uZm9ybS1sYWJlbCxcbi5jb2wtZm9ybS1sYWJlbCxcbmxlZ2VuZCxcbi5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLmZvcm0tdGV4dCxcbi5mb3JtLWhlbHAsXG4uZm9ybS1oZWxwLXRleHQsXG4udGV4dC1tdXRlZCxcbi50ZXh0LXNlY29uZGFyeSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKSAhaW1wb3J0YW50O1xufVxuXG4uZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtY29udHJvbC1jaGVjay1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1jb250cm9sLWNoZWNrLWJnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgICY6Y2hlY2tlZCxcbiAgICAmOmluZGV0ZXJtaW5hdGUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtZGlzYWJsZWQtYmcpO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgfVxufVxuXG4uaW52YWxpZC1mZWVkYmFjayxcbi5mb3JtLWVycm9yLW1lc3NhZ2UsXG4udGV4dC1kYW5nZXIge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspICFpbXBvcnRhbnQ7XG59XG5cbi52YWxpZC1mZWVkYmFjayxcbi50ZXh0LXN1Y2Nlc3Mge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKSAhaW1wb3J0YW50O1xufVxuXG4udHMtd3JhcHBlciB7XG5cbiAgICAmLm11bHRpIC50cy1jb250cm9sID4gZGl2IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLmRpc2FibGVkIC50cy1jb250cm9sIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWlucHV0LWRpc2FibGVkLWJnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbnB1dC1kaXNhYmxlZC1jb2xvcik7XG4gICAgfVxufVxuXG4udHMtZHJvcGRvd24ge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuXG4gICAgLm9wdGlvbixcbiAgICAuY3JlYXRlLFxuICAgIC5uby1yZXN1bHRzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxuXG4gICAgLmFjdGl2ZSxcbiAgICAub3B0aW9uOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLW1lbnUtaG92ZXItYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4ubGl0ZXBpY2tlciB7XG4gICAgLS1saXRlcGlja2VyLWlzLWluLXJhbmdlLWNvbG9yLWJnOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAtLWxpdGVwaWNrZXItZGF5LWNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAtLWxpdGVwaWNrZXItZGF5LWNvbG9yLWhvdmVyOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLW1vbnRoLWhlYWRlci1jb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgLS1saXRlcGlja2VyLW1vbnRoLXdlZWtkYXktY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAtLWxpdGVwaWNrZXItY29udGFpbmVyLW1vbnRocy1jb2xvci1iZzogdmFyKC0tc3dwLXN1cmZhY2UtZWxldmF0ZWQpO1xuXG4gICAgLmNvbnRhaW5lcl9fbWFpbixcbiAgICAuY29udGFpbmVyX19tb250aHMsXG4gICAgLmNvbnRhaW5lcl9fZGF5cyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWVsZXZhdGVkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5kYXktaXRlbS5pcy1sb2NrZWQsXG4gICAgLmRheS1pdGVtLmlzLXByZXZpb3VzLW1vbnRoLFxuICAgIC5kYXktaXRlbS5pcy1uZXh0LW1vbnRoIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICB9XG59XG5cbi5jYXJkLFxuLnBhbmVsLFxuLmxpc3QtZ3JvdXAsXG4ubGlzdC1ncm91cC1pdGVtLFxuLmFjY29yZGlvbi1pdGVtLFxuLmFjY29yZGlvbi1idXR0b24sXG4ub2ZmY2FudmFzLFxuLm1vZGFsLWNvbnRlbnQsXG4ucG9wb3Zlcixcbi50b2FzdCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbn1cblxuLnN1cmZhY2Utc3VidGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xufVxuXG4uY2FyZC1oZWFkZXIsXG4uY2FyZC1mb290ZXIsXG4ubW9kYWwtaGVhZGVyLFxuLm1vZGFsLWZvb3Rlcixcbi5vZmZjYW52YXMtaGVhZGVyLFxuLm9mZmNhbnZhcy1mb290ZXIsXG4uYWNjb3JkaW9uLWJ1dHRvbjpub3QoLmNvbGxhcHNlZCkge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRyb3Bkb3duLW1lbnUsXG4uZHJvcGRvd24tbWVudS1hcnJvdyxcbi5wb3BvdmVyLFxuLnRvb2x0aXAtaW5uZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLW1lbnUtYmcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmRyb3Bkb3duLWRpdmlkZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5kcm9wZG93bi1pdGVtLFxuLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24ge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLW1lbnUtaG92ZXItYmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4udGFibGUsXG4uZGF0YWdyaWQtdGFibGUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC10YWJsZS1iZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcblxuICAgIHRoLFxuICAgIHRkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtdGFibGUtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIH1cblxuICAgIHRoZWFkIHRoIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXRhYmxlLWhlYWRlci1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4uYnRuIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtYnRuLXJhZGl1cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1idG4tZm9udC13ZWlnaHQpO1xuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uYnRuLXByaW1hcnkge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZmcpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1ob3Zlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWhvdmVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWZnKTtcbiAgICB9XG59XG5cbi5idG4tb3V0bGluZS1wcmltYXJ5IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZmcpO1xuICAgIH1cbn1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWhvdmVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1ob3Zlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB9XG59XG5cbi5idG4tc3VjY2VzcyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG59XG5cbi5idG4tZGFuZ2VyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWZnKTtcbn1cblxuLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSxcbi5idG4tZ2hvc3QsXG4uYnRuLWxpZ2h0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hbGVydCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLWFsZXJ0LXJhZGl1cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uYWxlcnQtcHJpbWFyeSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xufVxuXG4uYWxlcnQtc2Vjb25kYXJ5IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5hbGVydC1zdWNjZXNzLFxuLmJnLXN1Y2Nlc3MtbHQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspICFpbXBvcnRhbnQ7XG59XG5cbi5hbGVydC1kYW5nZXIsXG4uYmctZGFuZ2VyLWx0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1kYXJrKSAhaW1wb3J0YW50O1xufVxuXG4uYWxlcnQtd2FybmluZyxcbi5iZy13YXJuaW5nLWx0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodGVyKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKSAhaW1wb3J0YW50O1xufVxuXG4uYWxlcnQtaW5mbyxcbi5iZy1pbmZvLWx0IHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1kYXJrKSAhaW1wb3J0YW50O1xufVxuXG4uYmctcHJpbWFyeS1sdCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcikgIWltcG9ydGFudDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyaykgIWltcG9ydGFudDtcbn1cblxuLmJnLXNlY29uZGFyeS1sdCxcbi5iZy1ncmF5LWx0IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSkgIWltcG9ydGFudDtcbn1cblxuLmVtcHR5LFxuLmRhdGFncmlkLWVtcHR5LFxuLmRhc2hib2FyZC1jaGFydC1lbXB0eSxcbi5hdHRlbnRpb24tZW1wdHkge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uZGF0YWdyaWQtbG9hZGluZzo6YWZ0ZXIsXG5bZGF0YS1sb2FkaW5nPSd0cnVlJ106OmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtbG9hZGluZy1vdmVybGF5KTtcbn1cblxuLnNwaW5uZXItYm9yZGVyLFxuLnNwaW5uZXItZ3JvdyB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLmljb24sXG4udGFibGVyLWljb24sXG5zdmdbZGF0YS1pY29uXSB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgc3Ryb2tlOiBjdXJyZW50Y29sb3I7XG59XG5cbltkYXRhLWJzLXRoZW1lPSdkYXJrJ10ge1xuXG4gICAgLmJ0bi1jbG9zZSB7XG4gICAgICAgIGZpbHRlcjogaW52ZXJ0KDEpIGdyYXlzY2FsZSgxMDAlKSBicmlnaHRuZXNzKDE4MCUpO1xuICAgIH1cblxuICAgIGNvZGUsXG4gICAgcHJlLFxuICAgIGtiZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTGF5b3V0IEluZGV4XG4gKlxuICogTGF5b3V0IHBhdHRlcm4gc3R5bGVzIHRoYXQgZXh0ZW5kIFRhYmxlci9Cb290c3RyYXAuXG4gKiBPbmx5IGFkZCBsYXlvdXQgZmlsZXMgZm9yIHBhdHRlcm5zIG5vdCBjb3ZlcmVkIGJ5IHRoZSBmcmFtZXdvcmtzLlxuICpcbiAqIE5vdGU6IE1vc3QgbGF5b3V0IHN0eWxpbmcgY29tZXMgZnJvbSBUYWJsZXIgKHBhZ2Utd3JhcHBlciwgcGFnZS1oZWFkZXIsIGV0Yy4pXG4gKiBUaGlzIGZpbGUgaW1wb3J0cyBvbmx5IGN1c3RvbSBleHRlbnNpb25zIHdoZW4gbmVlZGVkLlxuICovXG5cbi8vIFRoZSBhcHBsaWNhdGlvbiBzaGVsbDogdGhlIHZlcnRpY2FsIHNpZGViYXIgYW5kIHRoZSB0b3AgbmF2YmFyIGl0IHNpdHMgYmVzaWRlLlxuQGltcG9ydCAnc2hlbGwnO1xuQGltcG9ydCAnbmF2YmFyJztcbkBpbXBvcnQgJ25hdmJhci12ZXJ0aWNhbCc7XG4iLCIvKipcbiAqIEZpbnphcm8gYXBwbGljYXRpb24gZm91bmRhdGlvbjogc2hhcmVkIHN1cmZhY2VzLCB0eXBvZ3JhcGh5IGFuZCBzaGVsbCBjb250cm9scy5cbiAqL1xuXG5odG1sLFxuYm9keSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtYm9keS1iZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtZmFtaWx5KTtcbn1cblxuYm9keSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbn1cblxuLnBhZ2UsXG4ucGFnZS13cmFwcGVyLFxuLnBhZ2UtYm9keSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWJvZHktYmcpO1xufVxuXG4ucGFnZS13cmFwcGVyIHtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgdHJhbnNpdGlvbjogbWFyZ2luLWlubGluZS1zdGFydCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLnBhZ2UtaGVhZGVyIHtcbiAgICBtYXJnaW4tYmxvY2s6IHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAucGFnZS10aXRsZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbiAgICB9XG59XG5cbi5jYXJkLFxuLmRyb3Bkb3duLW1lbnUsXG4ubW9kYWwtY29udGVudCxcbi5vZmZjYW52YXMsXG4ucG9wb3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbn1cblxuLmNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1jYXJkLXJhZGl1cyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG59XG5cbi5kcm9wZG93bi1tZW51LFxuLm1vZGFsLWNvbnRlbnQge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xufVxuXG4uZHJvcGRvd24taXRlbSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5mb3JtLWNvbnRyb2wsXG4uZm9ybS1zZWxlY3QsXG4uaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbnB1dC1ib3JkZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLnRhYmxlIHtcbiAgICAtLXRibHItdGFibGUtYmc6IHZhcigtLXN3cC10YWJsZS1iZyk7XG4gICAgLS10YmxyLXRhYmxlLWJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXRhYmxlLWJvcmRlcik7XG4gICAgLS10YmxyLXRhYmxlLWhvdmVyLWJnOiB2YXIoLS1zd3AtdGFibGUtcm93LWhvdmVyLWJnKTtcblxuICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG59XG5cbi5icmFuZC13b3JkbWFyayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5icmFuZC13b3JkbWFyay10ZXh0IHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNDVlbTtcbn1cblxuLmFwcC10aGVtZS10b2dnbGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IHZhcigtLXN3cC1jb250cm9sLWhlaWdodCk7XG4gICAgaGVpZ2h0OiB2YXIoLS1zd3AtY29udHJvbC1oZWlnaHQpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpLCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1zaGFkb3cpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAudGhlbWUtdG9nZ2xlLXN1biB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG5bZGF0YS1icy10aGVtZT0nZGFyayddIC5hcHAtdGhlbWUtdG9nZ2xlIHtcblxuICAgIC50aGVtZS10b2dnbGUtbW9vbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnRoZW1lLXRvZ2dsZS1zdW4ge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICB9XG59XG5cbi5hdXRoLXRoZW1lLWNvbnRyb2wge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiB2YXIoLS1zd3Atei1maXhlZCk7XG4gICAgaW5zZXQtYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBpbnNldC1pbmxpbmUtZW5kOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICBodG1sIHtcbiAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnBhZ2Utd3JhcHBlcixcbiAgICAubmF2YmFyLXZlcnRpY2FsLFxuICAgIC5uYXYtbGluayxcbiAgICAuZHJvcGRvd24tbWVudSxcbiAgICAuYXBwLXRoZW1lLXRvZ2dsZSxcbiAgICAuYnRuLFxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcbiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIOKAlCBUb3AgTmF2YmFyXG4gKlxuICogVGhlIGhlYWRlciB0aGUgYXBwIGxheW91dCBwdXRzIGFib3ZlIHRoZSBwYWdlLiBJdHMgY29udGVudHMgY29tZSBmcm9tIHRocmVlIGRpZmZlcmVudFxuICogcGxhY2VzICh0aGUgY29tcGFueSBzd2l0Y2hlciwgdGhlIGNyZWF0ZSBtZW51IGFuZCB0aGUgcGxhdGZvcm0ncyB1c2VyIG1lbnUpLCBhbmQgZWFjaFxuICogYXJyaXZlZCB3aXRoIGl0cyBvd24gdmVydGljYWwgcGFkZGluZyBhbmQgaXRzIG93biBob3Jpem9udGFsIG1hcmdpbiAtIHdoaWNoIGlzIHdoeSB0aGVcbiAqIGNvbnRyb2xzIGRpZCBub3Qgc2hhcmUgYSBiYXNlbGluZSwgYSBoZWlnaHQgb3IgYSBnYXAuIFRoaXMgZmlsZSBzZXRzIGFsbCB0aHJlZSBmcm9tIHRoZVxuICogc2hlbGwgdG9rZW5zIGluc3RlYWQuXG4gKlxuICogU2NvcGVkIHRvIGAucGFnZSA+IGhlYWRlci5uYXZiYXJgOiB0aGUgc2lkZWJhciByZW5kZXJzIGEgY29weSBvZiB0aGUgc2FtZSB1c2VyIG1lbnUgZm9yXG4gKiBzbWFsbCBzY3JlZW5zIGFuZCBtdXN0IG5vdCBpbmhlcml0IHRoZSBoZWFkZXIncyBtZWFzdXJlbWVudHMuXG4gKi9cblxuLnBhZ2UgPiBoZWFkZXIubmF2YmFyIHtcbiAgICAvLyBgbmF2YmFyX3N0aWNreWAgaXMgb2ZmIGJ5IGRlZmF1bHQsIHNvIHRoZSBoZWFkZXIgaXMgaW4gbm9ybWFsIGZsb3c7IHRoZSBtaW4taGVpZ2h0XG4gICAgLy8ga2VlcHMgaXQgdGhlIHNhbWUgaGVpZ2h0IHdoZXRoZXIgb3Igbm90IGl0IGNvbnRhaW5zIGEgdGFsbGVyIGNvbnRyb2wuXG5cbiAgICBtaW4taGVpZ2h0OiB2YXIoLS1zd3AtbmF2YmFyLWhlaWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcblxuICAgID4gLmNvbnRhaW5lci14bCxcbiAgICA+IC5jb250YWluZXItZmx1aWQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAvLyBFdmVyeXRoaW5nIHRoZSBoZWFkZXIgb2ZmZXJzIC0gY29tcGFueSwgY3JlYXRlLCB1c2VyIC0gaXMgb25lIGdyb3VwLCBhbmQgdGhlIGdyb3VwXG4gICAgLy8gaXMgcHVzaGVkIHRvIHRoZSBlbmQgb2YgdGhlIGJhci4gV2l0aG91dCB0aGUgc2VhcmNoIGZpZWxkICh0aGUgYmxvY2sgcmVuZGVycyBub3RoaW5nXG4gICAgLy8gd2hlbiB0aGUgc2VhcmNoIHRvZ2dsZSBpcyBvZmYpIHRoZXJlIGlzIG5vdGhpbmcgdG8gaXRzIGxlZnQsIHNvIGBzcGFjZS1iZXR3ZWVuYCBhbG9uZVxuICAgIC8vIGxlYXZlcyB0aGUgZ3JvdXAgZmxvYXRpbmcgYXQgdGhlIHN0YXJ0IG9mIHRoZSBiYXIuXG5cbiAgICAubmF2YmFyLW5hdi5mbGV4LXJvdyB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgIH1cblxuICAgIC8vIE9uZSBjb250cm9sIGhlaWdodCBmb3IgdGhlIHdob2xlIGJhci4gVGhlIGNvbXBhbnkgY2hpcCByZW5kZXJzIGEgbG9nbyBpbWFnZSBhbmQgdGhlXG4gICAgLy8gY3JlYXRlIGJ1dHRvbiBhbiBpY29uLCBzbyB0aGVpciBuYXR1cmFsIGhlaWdodHMgZGlmZmVyIGJ5IHNldmVyYWwgcGl4ZWxzOyBwaW5uaW5nIHRoZVxuICAgIC8vIGhlaWdodCByZW1vdmVzIHRoZSBtaXNtYXRjaCBhbmQga2VlcHMgdGhlIGJhciBmcm9tIGdyb3dpbmcgYXJvdW5kIGl0cyB0YWxsZXN0IGNoaWxkLlxuICAgIC8vIFRhYmxlcidzIGAuYnRuYCBkZXJpdmVzIGEgYG1pbi1oZWlnaHRgIG9mIGl0cyBvd24gZnJvbSB0aGUgbGluZSBib3ggYW5kIHBhZGRpbmcsIHNvXG4gICAgLy8gYGhlaWdodGAgYWxvbmUgaXMgbm90IGVub3VnaCBhbmQgdGhlIHBhZGRpbmcgaGFzIHRvIGdvIHdpdGggaXQuXG5cbiAgICAuYnRuLFxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBoZWlnaHQ6IHZhcigtLXN3cC1jb250cm9sLWhlaWdodCk7XG4gICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLXN3cC1jb250cm9sLWhlaWdodCk7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmctYmxvY2s6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgY29tcGFueSBzd2l0Y2hlciBpcyBhIGxvY2F0aW9uLCBub3QgYSBjYWxsIHRvIGFjdGlvbjogaXQgcmVhZHMgYXMgYSBsaWdodCBjaGlwIG9uXG4gICAgLy8gdGhlIGJhciByYXRoZXIgdGhhbiBhIGRhcmsgb3V0bGluZSBidXR0b24gY29tcGV0aW5nIHdpdGggdGhlIHByaW1hcnkgYWN0aW9uIGJlc2lkZSBpdC5cblxuICAgIC5uYXYtY29tcGFueS1zd2l0Y2gge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1idG4tcmFkaXVzKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBtYXgtd2lkdGg6IDE2cmVtO1xuXG4gICAgICAgIC8vIGBhcHBfbG9nbygpYC9gYXBwX2JyYW5kX2xvZ28oKWAgcmVuZGVyIHRoZWlyIG93biBtYXJnaW47IGluc2lkZSBhIGNvbnRyb2wgdGhlXG4gICAgICAgIC8vIGZsZXggZ2FwIG93bnMgdGhlIHNwYWNpbmcuXG5cbiAgICAgICAgLm5hdmJhci1icmFuZC1pbWFnZSB7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmbGV4OiBub25lO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB9XG5cbiAgICAgICAgPiA6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGAuYnRuYCBzZXRzIGEgY2FyZXQgb24gYC5kcm9wZG93bi10b2dnbGVgOyB0aGUgY2hpcCBhbHJlYWR5IHJlYWRzIGFzIGEgY29udHJvbC5cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgdXNlciBtZW51IHNpdHMgYXQgdGhlIGVuZCBvZiB0aGUgZ3JvdXAsIHNvIGl0cyBsYWJlbCBpcyB0aGUgbGFzdCB0aGluZyBvbiB0aGUgYmFyLlxuXG4gICAgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgICAgICY6aG92ZXIsXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGUgYXZhdGFyIGlzIGEgZml4ZWQgY29udHJvbCBoZWlnaHQgYWxyZWFkeTsga2VlcCBpdCBjaXJjdWxhciBhbmQgbGV0IHRoZSBpbml0aWFsc1xuICAgIC8vIGtlZXAgdGhlaXIgY29udHJhc3Qgb24gdGhlIGJyYW5kIHRpbnQuXG5cbiAgICAuYXZhdGFyIHtcbiAgICAgICAgZmxleDogbm9uZTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxufVxuXG4ubmF2YmFyLXZlcnRpY2FsIC5hcHAtdGhlbWUtdG9nZ2xlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmcpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2IoMjU1IDI1NSAyNTUgLyAxOCUpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc2lkZWJhci1ob3Zlci1iZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2lkZWJhci1yaW5nKTtcbiAgICB9XG59XG5cbi8vIFRoZSBoZWFkZXIgaXMgaGlkZGVuIGJlbG93IGBsZ2AgKHRoZSBzaWRlYmFyIGRyYXdlciBjYXJyaWVzIHRoZSBuYXZpZ2F0aW9uIGluc3RlYWQpLCBzb1xuLy8gdGhlIHNtYWxsLXNjcmVlbiBydWxlcyBvbmx5IG5lZWQgdGhlIGNoaXAgdG8ga2VlcCBpdHMgbGFiZWwgZnJvbSBvdmVyZmxvd2luZy5cblxuQG1lZGlhICh3aWR0aCA8IDU3NnB4KSB7XG5cbiAgICAucGFnZSA+IGhlYWRlci5uYXZiYXIgLm5hdi1jb21wYW55LXN3aXRjaCB7XG4gICAgICAgIG1heC13aWR0aDogOXJlbTtcbiAgICB9XG59XG4iLCIvKipcbiAqIEZpbnphcm8g4oCUIHZlcnRpY2FsIG5hdmlnYXRpb24gKHRoZSByYWlsKVxuICpcbiAqIFRoZSBuYXZpZ2F0aW9uIGlzIHRoZSBvbmUgc3VyZmFjZSB0aGF0IHN0YXlzIGRhcmsgaW4gYm90aCB0aGVtZXM6IGl0IGFuY2hvcnMgdGhlIHNoZWxsIGFuZFxuICogdGhlIGxpZ2h0IGNvbnRlbnQgYmVzaWRlIGl0IHJlYWRzIGFzIHRoZSBwYWdlIHRoZSByYWlsIGZyYW1lcy4gSXRzIHdob2xlIHBhbGV0dGUgaXMgZGVjbGFyZWRcbiAqIGluIHRoZSBgLS1zd3Atc2lkZWJhci0qYCB0b2tlbnMsIHNvIG5vdGhpbmcgaGVyZSByZWFjaGVzIGZvciBhIGdsb2JhbCBjb2xvdXIuXG4gKlxuICogVHdvIHRoaW5ncyB0byBrbm93IGJlZm9yZSBlZGl0aW5nOlxuICpcbiAqICAgMS4gVGFibGVyIGNvbXBpbGVzIG1vc3Qgb2YgaXRzIHNpZGViYXIgcnVsZXMgYWdhaW5zdFxuICogICAgICBgLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZXhwYW5kLXticmVha3BvaW50fSAubmF2YmFyLWNvbGxhcHNlIC4uLmAsIHdoaWNoIGlzIG1vcmVcbiAqICAgICAgc3BlY2lmaWMgdGhhbiBhIHBsYWluIGAubmF2YmFyLXZlcnRpY2FsIC5uYXYtbGlua2AuIFRoZSBydWxlcyBiZWxvdyBhcmUgbmVzdGVkXG4gKiAgICAgIHRocm91Z2ggYC5uYXZiYXItY29sbGFwc2VgIHNvIHRoZXkgbWF0Y2ggb3IgYmVhdCB0aGF0LCBpbnN0ZWFkIG9mIHNpbGVudGx5IGxvc2luZy5cbiAqICAgMi4gVGhlIHJhaWwncyB3aWR0aCBpcyBhIHRva2VuLCBiZWNhdXNlIFRhYmxlciB3cml0ZXMgMTVyZW0gaW50byB0d28gcGxhY2VzOiB0aGUgcmFpbFxuICogICAgICBpdHNlbGYgYW5kIHRoZSBvZmZzZXQgaXQgcHV0cyBvbiB0aGUgcGFnZSB3cmFwcGVyLiBCb3RoIGhhdmUgdG8gbW92ZSB0b2dldGhlci5cbiAqL1xuXG4vLyBUaGUgdHdvIG1lYXN1cmVtZW50cyBldmVyeSBpbmRlbnRlZCBkZXRhaWwgaXMgZGVyaXZlZCBmcm9tLCBzbyB0aGUgaWNvbiwgaXRzIGxhYmVsIGFuZFxuLy8gdGhlIHN1Ym1lbnUgdW5kZXIgaXQgc3RheSBhbGlnbmVkIGlmIGVpdGhlciBjaGFuZ2VzLlxuJHNpZGViYXItaXRlbS1wYWRkaW5nLWlubGluZTogMXJlbTsgICAgLy8gMTZweCAtIHRoZSBsaW5rJ3Mgb3duIGluc2V0IGZyb20gdGhlIHJhaWwgZWRnZVxuJHNpZGViYXItaWNvbi1zaXplOiAxLjEyNXJlbTsgICAgICAgICAgLy8gMThweCAtIHRoZSBpY29uIGJveFxuJHNpZGViYXItaWNvbi1nYXA6IDAuNjI1cmVtOyAgICAgICAgICAgLy8gMTBweCAtIGJldHdlZW4gaWNvbiBhbmQgbGFiZWxcbiRzaWRlYmFyLXN1Ym1lbnUtaW5zZXQ6IDAuMjVyZW07ICAgICAgIC8vIDRweCAtIHRoZSBzdWJtZW51J3Mgb3duIHBhZGRpbmdcblxuLy8gV2hlcmUgYSBjaGlsZCBsYWJlbCBzdGFydHMsIHNvIGl0IGxpbmVzIHVwIHVuZGVyIHRoZSBsYWJlbCBvZiB0aGUgZ3JvdXAgYWJvdmUgaXQuXG4kc2lkZWJhci1jaGlsZC1pbmRlbnQ6ICRzaWRlYmFyLWl0ZW0tcGFkZGluZy1pbmxpbmUgKyAkc2lkZWJhci1pY29uLXNpemUgKyAkc2lkZWJhci1pY29uLWdhcCAtICRzaWRlYmFyLXN1Ym1lbnUtaW5zZXQ7XG5cbi8vIFRhYmxlcidzIGdyb3VwIG1hcmtlciBpcyBhIDQ1wrAgYm9yZGVyIHBhaXIsIHdoaWNoIGlzIG5vdCBhIGNoZXZyb24gYW5kIGNhbm5vdCBiZWNvbWUgb25lIGJ5XG4vLyByb3RhdGluZyBpdCAtIGl0IHR1cm5zIGludG8gYSBkaWZmZXJlbnQgZ2x5cGguIFRoZSBwcm9qZWN0IGFscmVhZHkgc2hpcHMgdGhpcyBpY29uLCBzbyB0aGVcbi8vIGNhcmV0IGlzIGRyYXduIGZyb20gaXRzIHBhdGggYW5kIGluaGVyaXRzIHRoZSBsaW5rJ3MgY29sb3VyIHRocm91Z2ggdGhlIG1hc2suXG4kc2lkZWJhci1jaGV2cm9uOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDI0IDI0JyBmaWxsPSdub25lJyBzdHJva2U9JyUyM2ZmZicgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnJTNFJTNDcGF0aCBkPSdtNiA5IDYgNiA2LTYnLyUzRSUzQy9zdmclM0VcIik7XG5cbkBtZWRpYSAod2lkdGggPj0gOTkycHgpIHtcblxuICAgIC5uYXZiYXIubmF2YmFyLWV4cGFuZC1sZy5uYXZiYXItdmVydGljYWwge1xuICAgICAgICB3aWR0aDogdmFyKC0tc3dwLXNpZGViYXItd2lkdGgpO1xuICAgICAgICB0cmFuc2l0aW9uOiB3aWR0aCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICB9XG5cbiAgICAubmF2YmFyLm5hdmJhci1leHBhbmQtbGcubmF2YmFyLXZlcnRpY2FsIH4gLm5hdmJhcixcbiAgICAubmF2YmFyLm5hdmJhci1leHBhbmQtbGcubmF2YmFyLXZlcnRpY2FsIH4gLnBhZ2Utd3JhcHBlciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1zd3Atc2lkZWJhci13aWR0aCk7XG4gICAgfVxufVxuXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCxcbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1iZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmcpO1xuICAgIGJvcmRlcjogMDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuXG4gICAgLy8gSXRlbXMgYXJlIGluc2V0IGZyb20gdGhlIHJhaWwncyBlZGdlLCBzbyB0aGUgaG92ZXIgYW5kIGFjdGl2ZSBmaWxscyByZWFkIGFzIGNvbnRyb2xzXG4gICAgLy8gb24gYSBzdXJmYWNlIHJhdGhlciB0aGFuIGFzIGJhbmRzIHBhaW50ZWQgYWNyb3NzIGl0LlxuXG4gICAgPiAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgY29tcGFueSB0aGUgbmF2aWdhdGlvbiBiZWxvbmdzIHRvOiBtYXJrLCB0aGVuIG5hbWUsIGJvdGggbGVmdC1hbGlnbmVkIHdpdGggdGhlXG4gICAgLy8gaWNvbnMgYmVsb3csIGFuZCBvbiB0aGUgc2FtZSA1NnB4IGxpbmUgYXMgdGhlIHRvcCBiYXIuXG5cbiAgICAubmF2YmFyLWJyYW5kLnNpZGViYXItYnJhbmQge1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1zd3AtbmF2YmFyLWhlaWdodCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAkc2lkZWJhci1pdGVtLXBhZGRpbmctaW5saW5lO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcbiAgICB9XG5cbiAgICAuc2hlbGwtYnJhbmQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaXRlbS1mZy1ob3Zlcik7XG4gICAgfVxuXG4gICAgLnNoZWxsLWJyYW5kLW1vbm9ncmFtIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS44NzVyZW07XG4gICAgICAgIGhlaWdodDogMS44NzVyZW07XG4gICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigyNTUgMjU1IDI1NSAvIDE0JSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc2lkZWJhci1hY3RpdmUtYmcpO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG4gICAgfVxuXG4gICAgLnNoZWxsLWJyYW5kLXdvcmRtYXJrIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmctaG92ZXIpO1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wNGVtO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG5cbiAgICAvLyBUYWJsZXIgaW52ZXJ0cyBicmFuZCBhcnQgaW4gZGFyayB0aGVtZXM7IHRoZSBtYXJrIGlzIGFscmVhZHkgdGhlIHJpZ2h0IHdheSByb3VuZC5cblxuICAgIC5uYXZiYXItYnJhbmQtYXV0b2Rhcmsge1xuICAgICAgICBmaWx0ZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLm5hdmJhci10b2dnbGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmcpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWJvcmRlcik7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2lkZWJhci1yaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBhcHBsaWNhdGlvbidzIGdsb2JhbCBmb2N1cyBvdXRsaW5lIGlzIHN0aWxsIHRoZSB1cHN0cmVhbSBncmVlbiwgd2hpY2ggdGhpcyBwYWxldHRlXG4gICAgLy8gcmVzZXJ2ZXMgZm9yIHN1Y2Nlc3MuIEV2ZXJ5IGNvbnRyb2wgdGhlIHJhaWwgY2FycmllcyB0YWtlcyB0aGUgcmFpbCdzIHJpbmcgaW5zdGVhZC5cblxuICAgIC5idG46Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaWRlYmFyLXJpbmcpO1xuICAgIH1cblxuICAgIC5zaWRlYmFyLWJyYW5kIGE6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2lkZWJhci1yaW5nKTtcbiAgICB9XG5cbiAgICAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICAgICAgbWluLWhlaWdodDogMDtcblxuICAgICAgICAubmF2YmFyLW5hdiB7XG4gICAgICAgICAgICByb3ctZ2FwOiAycHg7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWxpbmsge1xuICAgICAgICAgICAgZ2FwOiAkc2lkZWJhci1pY29uLWdhcDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IHZhcigtLXN3cC1jb250cm9sLWhlaWdodCk7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgJHNpZGViYXItaXRlbS1wYWRkaW5nLWlubGluZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmcpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXNpZGViYXItaXRlbS1yYWRpdXMpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAubmF2LWxpbmstaWNvbixcbiAgICAgICAgICAgIC5uYXYtbGluay10aXRsZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogJHNpZGViYXItaWNvbi1zaXplO1xuICAgICAgICAgICAgICAgIGhlaWdodDogJHNpZGViYXItaWNvbi1zaXplO1xuXG4gICAgICAgICAgICAgICAgLy8gVGFibGVyJ3Mgb3duIG1hcmdpbiBkb3VibGVzIHVwIHdpdGggdGhlIGZsZXggZ2FwIGFib3ZlLlxuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaWNvbik7XG5cbiAgICAgICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uYXYtbGluay10aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSG92ZXI6IGEgbGlmdCBpbiB0aGUgcmFpbCdzIG93biBzdXJmYWNlLCB0aGUgbGFiZWwgYXQgZnVsbCBzdHJlbmd0aC5cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaG92ZXItYmcpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcblxuICAgICAgICAgICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmctaG92ZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaWRlYmFyLXJpbmcpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWN0aXZlIHJvdXRlOiB0aGUgc2FtZSBmaWxsZWQgcGlsbCBhcyBgLmJ0bi1wcmltYXJ5YCwgbGlmdGVkIG9uZSBzdGVwIHNvIGl0XG4gICAgICAgICAgICAvLyBzdGlsbCBzZXBhcmF0ZXMgZnJvbSB0aGUgcmFpbC5cblxuICAgICAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWFjdGl2ZS1iZyk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWFjdGl2ZS1mZyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcblxuICAgICAgICAgICAgICAgIC5uYXYtbGluay1pY29uLFxuICAgICAgICAgICAgICAgIC5uYXYtbGluay10aXRsZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1hY3RpdmUtZmcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1hY3RpdmUtYmctaG92ZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItYWN0aXZlLWZnKTtcblxuICAgICAgICAgICAgICAgICAgICAubmF2LWxpbmstaWNvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItYWN0aXZlLWZnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVGhlIGdyb3VwIGNoZXZyb24uIE9ubHkgYSB0b2dnbGUgZ2V0cyBvbmUgLSBhIGxlYWYgaGFzIG5vIG1lbnUgdG8gb3BlbiAtIGFuZCBpdFxuICAgICAgICAgICAgLy8gaXMgYSBzaW5nbGUgaWNvbiB0aGF0IHJvdGF0ZXMgaW4gcGxhY2UsIHJhdGhlciB0aGFuIHRoZSB1cC9kb3duIHBhaXIgaXQgdXNlZCB0b1xuICAgICAgICAgICAgLy8gc3dhcCBiZXR3ZWVuLiBJdCBpbmhlcml0cyB0aGUgbGluaydzIGNvbG91ciB0aHJvdWdoIHRoZSBtYXNrLlxuXG4gICAgICAgICAgICAmLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgYXV0bztcbiAgICAgICAgICAgICAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogMDtcblxuICAgICAgICAgICAgICAgIC8vIFRhYmxlcidzIGRlZmF1bHQgY2FyZXQgaXMgdGhlIHNhbWUgYm94IHJvdGF0ZWQgLTQ1wrAsIHNvIHRoZSByb3RhdGlvbiBoYXNcbiAgICAgICAgICAgICAgICAvLyB0byBiZSByZXNldCBiZWZvcmUgdGhlIGNoZXZyb24gY2FuIHBvaW50IGRvd24uXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudGNvbG9yO1xuICAgICAgICAgICAgICAgIG1hc2staW1hZ2U6ICRzaWRlYmFyLWNoZXZyb247XG4gICAgICAgICAgICAgICAgbWFzay1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hc2stc2l6ZTogMTAwJSAxMDAlO1xuICAgICAgICAgICAgICAgIG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC43NTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYHNob3dgIGlzIGFkZGVkIGJ5IEJvb3RzdHJhcCdzIGRyb3Bkb3duIGFuZCBpcyBhbHJlYWR5IGluIHRoZSBtYXJrdXAgd2hlbiB0aGVcbiAgICAgICAgICAgIC8vIGN1cnJlbnQgcGFnZSBsaXZlcyBpbnNpZGUgdGhlIGdyb3VwLCBzbyB0aGUgZXhwYW5kZWQgc3RhdGUgaXMgcmlnaHQgb24gbG9hZC5cblxuICAgICAgICAgICAgJi5kcm9wZG93bi10b2dnbGUuc2hvdzo6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEEgZ3JvdXAgd2hvc2UgY2hpbGQgaXMgdGhlIGN1cnJlbnQgcGFnZS4gVGFibGVyIG1hcmtzIGl0IHdpdGggYSAzcHggcmFpbCBhZ2FpbnN0XG4gICAgICAgIC8vIHRoZSBwYW5lbCdzIGVkZ2UsIHdoaWNoIHJlYWRzIGFzIGEgc3RyYXkgbWFyayBvbmNlIHRoZSBpdGVtIGZpbGxzIGFyZSBpbnNldDsgdGhlXG4gICAgICAgIC8vIGdyb3VwIGlzIG1hcmtlZCBieSBjb2xvdXIgaW5zdGVhZCwgb25lIHN0ZXAgcXVpZXRlciB0aGFuIHRoZSBjaGlsZCdzIHBpbGwuXG4gICAgICAgIC8vIGA6bm90KC5hY3RpdmUpYCBrZWVwcyB0aGUgcnVsZSBvZmYgYSBsZWFmIHRoYXQgaXMgaXRzZWxmIHRoZSBjdXJyZW50IHBhZ2UuXG5cbiAgICAgICAgLm5hdi1pdGVtLmFjdGl2ZSA+IC5uYXYtbGluazpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWFjdGl2ZS1wYXJlbnQtZmcpO1xuXG4gICAgICAgICAgICAubmF2LWxpbmstaWNvbiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWl0ZW0uYWN0aXZlOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VjdGlvbiBsYWJlbHMsIGlmIGEgbWVudSBldmVyIGFkZHMgdGhlbS5cblxuICAgICAgICAubmF2LXN1YnRpdGxlLFxuICAgICAgICAubmF2LWhlYWRlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaGVhZGluZyk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXdpZGVyKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdWJtZW51cyBvcGVuIGluIHBsYWNlIC0gVGFibGVyIHJlbmRlcnMgdGhlbSBgcG9zaXRpb246IHN0YXRpY2AgaW5zaWRlIHRoZSByYWlsIC1cbiAgICAgICAgLy8gc28gdGhleSBhcmUgYSBuZXN0ZWQgd2VsbCByYXRoZXIgdGhhbiBhIGZsb2F0aW5nIHBhbmVsLiBUaGUgd2VsbCBncm91cHMgdGhlXG4gICAgICAgIC8vIGNoaWxkcmVuIGFuZCB0aGUgcGlsbCBvZiBhbiBhY3RpdmUgY2hpbGQgc2l0cyBpbnNpZGUgaXQuXG5cbiAgICAgICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWFyZ2luOiAycHggMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICBwYWRkaW5nOiAkc2lkZWJhci1zdWJtZW51LWluc2V0O1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1zdWJtZW51LWJnKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG5cbiAgICAgICAgICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6ICRzaWRlYmFyLWNoaWxkLWluZGVudDtcbiAgICAgICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItc3VibWVudS1mZyk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWhvdmVyLWJnKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tZmctaG92ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFRoZSBtZW51IGNsaXBzIGl0cyBvd24gb3ZlcmZsb3cgd2hpbGUgaXQgYW5pbWF0ZXMsIHdoaWNoIHdvdWxkIGN1dCBhblxuICAgICAgICAgICAgICAgIC8vIG91dGVyIHJpbmcsIHNvIHRoZSBjaGlsZCdzIHJpbmcgaXMgZHJhd24gaW5zaWRlIGl0LlxuXG4gICAgICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgMnB4IHZhcigtLXN3cC1zaWRlYmFyLWFjdGl2ZS1wYXJlbnQtZmcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXNpZGViYXItYWN0aXZlLWJnKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zaWRlYmFyLWFjdGl2ZS1mZyk7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNpZGViYXItc2hlbGwtZm9vdGVyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3Atc2lkZWJhci1ib3JkZXIpO1xuICAgIH1cblxuICAgIC5zaWRlYmFyLWNvbGxhcHNlLXRvZ2dsZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogJHNpZGViYXItaWNvbi1nYXA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1zd3AtY29udHJvbC1oZWlnaHQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1zaWRlYmFyLWl0ZW0tcmFkaXVzKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICB0ZXh0LWFsaWduOiBzdGFydDtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zaWRlYmFyLWhvdmVyLWJnKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNpZGViYXItcmluZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIERlc2t0b3AgaWNvbiByYWlsLiBUaGUgbWVudSBpdHNlbGYgaXMgdW5jaGFuZ2VkOiBsYWJlbHMgYXJlIHN0aWxsIGluIHRoZSBhY2Nlc3NpYmlsaXR5IHRyZWUsXG4vLyBhbmQgdGhlIGNvbnRyb2xsZXIgc3VwcGxpZXMgbmF0aXZlIHRpdGxlIHRvb2x0aXBzIGZyb20gdGhvc2UgbGFiZWxzLlxuQG1lZGlhICh3aWR0aCA+PSA5OTJweCkge1xuXG4gICAgaHRtbFtkYXRhLXNpZGViYXItY29sbGFwc2VkPSd0cnVlJ10ge1xuXG4gICAgICAgIC5uYXZiYXIubmF2YmFyLWV4cGFuZC1sZy5uYXZiYXItdmVydGljYWwge1xuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXN3cC1zaWRlYmFyLWNvbGxhcHNlZC13aWR0aCk7XG5cbiAgICAgICAgICAgIH4gLm5hdmJhcixcbiAgICAgICAgICAgIH4gLnBhZ2Utd3JhcHBlciB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zaWRlYmFyLWNvbGxhcHNlZC13aWR0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5hdmJhci1icmFuZC5zaWRlYmFyLWJyYW5kIHtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWlubGluZTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNoZWxsLWJyYW5kLXdvcmRtYXJrLFxuICAgICAgICAgICAgLnNpZGViYXItY29sbGFwc2UtbGFiZWwsXG4gICAgICAgICAgICAubmF2YmFyLWNvbGxhcHNlIC5uYXYtbGluay10aXRsZSxcbiAgICAgICAgICAgIC5uYXZiYXItY29sbGFwc2UgLm5hdi1zdWJ0aXRsZSxcbiAgICAgICAgICAgIC5uYXZiYXItY29sbGFwc2UgLm5hdi1oZWFkZXIge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uYXZiYXItY29sbGFwc2UgLm5hdmJhci1uYXYgPiAubmF2LWl0ZW0ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5hdmJhci1jb2xsYXBzZSAubmF2LWxpbmsge1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctaW5saW5lOiAwO1xuXG4gICAgICAgICAgICAgICAgJi5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uYXZiYXItY29sbGFwc2UgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICB6LWluZGV4OiB2YXIoLS1zd3Atei1kcm9wZG93bik7XG4gICAgICAgICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ6IDA7XG4gICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBjYWxjKDEwMCUgKyB2YXIoLS1zd3Atc3BhY2UtMikpO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMTNyZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWVsZXZhdGVkKTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcblxuICAgICAgICAgICAgICAgIC5kcm9wZG93bi1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zaWRlYmFyLXNoZWxsLWZvb3RlciB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zaWRlYmFyLWNvbGxhcHNlLXRvZ2dsZSB7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zaWRlYmFyLWNvbGxhcHNlLWljb24ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIEV4cGFuc2lvbiBpcyBkcml2ZW4gYnkgdGhlIGAuc2hvd2AgY2xhc3MgQm9vdHN0cmFwJ3MgZHJvcGRvd24gYWxyZWFkeSB0b2dnbGVzIC0gdGhlcmUgaXMgbm9cbi8vIHNlY29uZCBjb2xsYXBzZSBtZWNoYW5pc20gLSBhbmQgYW5pbWF0ZWQgaW4gQ1NTLiBgbWF4LWhlaWdodGAgZ2l2ZXMgdGhlIGhlaWdodCBhIHN0YXJ0IGFuZFxuLy8gYW4gZW5kIHZhbHVlLCBhbmQgYGRpc3BsYXlgIGlzIHRyYW5zaXRpb25lZCB3aXRoIGBhbGxvdy1kaXNjcmV0ZWAsIHNvIHRoZSBtZW51IHN0YXlzXG4vLyByZW5kZXJlZCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgY29sbGFwc2UgYW5kIHN0aWxsIGVuZHMgdXAgYGRpc3BsYXk6IG5vbmVgLCB3aGljaCBrZWVwcyBhXG4vLyBjbG9zZWQgZ3JvdXAgb3V0IG9mIHRoZSB0YWIgb3JkZXIgYW5kIG91dCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLlxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcblxuICAgIC5uYXZiYXIubmF2YmFyLXZlcnRpY2FsIC5uYXZiYXItY29sbGFwc2UgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBtYXgtaGVpZ2h0LCBvcGFjaXR5LCBkaXNwbGF5O1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1zd3AtZHVyYXRpb24tYmFzZSksIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSwgdmFyKC0tc3dwLWR1cmF0aW9uLWJhc2UpO1xuICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tc3dwLWVhc2UtaW4tb3V0KSwgbGluZWFyLCBsaW5lYXI7XG4gICAgICAgIHRyYW5zaXRpb24tYmVoYXZpb3I6IGFsbG93LWRpc2NyZXRlO1xuXG4gICAgICAgICYuc2hvdyB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiB2YXIoLS1zd3Atc2lkZWJhci1zdWJtZW51LW1heC1oZWlnaHQpO1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEEgbWVudSB0aGF0IGdvZXMgZnJvbSBub3QgcmVuZGVyZWQgdG8gcmVuZGVyZWQgaGFzIG5vIHByZXZpb3VzIHN0eWxlIHRvIGFuaW1hdGUgZnJvbSxcbiAgICAvLyBzbyB0aGUgb3BlbmluZyBzdGF0ZSBpcyBkZWNsYXJlZCBleHBsaWNpdGx5LlxuXG4gICAgQHN0YXJ0aW5nLXN0eWxlIHtcblxuICAgICAgICAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCAubmF2YmFyLWNvbGxhcHNlIC5kcm9wZG93bi1tZW51LnNob3cge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMDtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRoZSBjaGV2cm9uJ3Mgcm90YXRpb24gaXMgdGhlIG9ubHkgb3RoZXIgdHJhbnNmb3JtIGluIHRoZSByYWlsLCBzbyBpdCBpcyB0aGUgb25seSB0aGluZ1xuLy8gbGVmdCB0byBzd2l0Y2ggb2ZmOyB0aGUgY2hldnJvbiBzdGlsbCB0dXJucywgaXQganVzdCBkb2VzIG5vdCBzcGluIG9uIHRoZSB3YXkuXG5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCAubmF2YmFyLWNvbGxhcHNlIC5uYXYtbGluay5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi8vIE1vYmlsZTogdGhlIHNhbWUgYXNpZGUgYmVjb21lcyB0aGUgaG9yaXpvbnRhbCBiYXIsIGFuZCB0aGUgZHJhd2VyIHRoYXQgZHJvcHMgb3V0IG9mIHRoZVxuLy8gdG9nZ2xlciBpcyB0aGUgbmF2aWdhdGlvbi4gSXQgb3BlbnMgb24gdGhlIHJhaWwncyBvd24gc3VyZmFjZSwgbm90IG9uIGEgbGlnaHRlciBvbmUuXG5cbkBtZWRpYSAod2lkdGggPCA5OTJweCkge1xuXG4gICAgLm5hdmJhci5uYXZiYXItdmVydGljYWwge1xuXG4gICAgICAgID4gLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWlubGluZTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdmJhci1jb2xsYXBzZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJsb2NrOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1iZyk7XG5cbiAgICAgICAgICAgICYuc2hvdyxcbiAgICAgICAgICAgICYuY29sbGFwc2luZyB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICAgICAgICAgIHotaW5kZXg6IHZhcigtLXN3cC16LWZpeGVkKTtcbiAgICAgICAgICAgICAgICBpbnNldC1ibG9jazogdmFyKC0tc3dwLW5hdmJhci1oZWlnaHQpIDA7XG4gICAgICAgICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAwO1xuICAgICAgICAgICAgICAgIHdpZHRoOiBtaW4oMjByZW0sIGNhbGMoMTAwdncgLSAzcmVtKSk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3Atc2lkZWJhci1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGJhciBjYXJyaWVzIGEgY29weSBvZiB0aGUgdHdvIGNvbnRyb2xzIHRoZSB0b3AgbmF2YmFyIHNob3dzLiBUaG9zZSBhcmUgc3R5bGVkXG4gICAgICAgIC8vIGZvciBhIGxpZ2h0IGhlYWRlciwgc28gb24gdGhlIHJhaWwgdGhleSBiZWNvbWUgZ2hvc3QgY29udHJvbHMgYW5kIHRoZSBiYXIgc3RheXMgYVxuICAgICAgICAvLyBzaW5nbGUgY29sb3VyLlxuXG4gICAgICAgIC5uYXZiYXItbmF2LmZsZXgtcm93IHtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICAgICAgLm5hdi1jb21wYW55LXN3aXRjaCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1pdGVtLWZnLWhvdmVyKTtcblxuICAgICAgICAgICAgICAgIC5uYXZiYXItYnJhbmQtaW1hZ2Uge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaG92ZXItYmcpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYigyNTUgMjU1IDI1NSAvIDE4JSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2lkZWJhci1hY3RpdmUtZmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5hdi1saW5rIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaXRlbS1mZyk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXNpZGViYXItaXRlbS1yYWRpdXMpO1xuXG4gICAgICAgICAgICAgICAgJjpob3ZlcixcbiAgICAgICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaG92ZXItYmcpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXNpZGViYXItaXRlbS1mZy1ob3Zlcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNpZGViYXItcmluZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIEZvcm0gU3R5bGVzXG4gKlxuICogR2VuZXJpYyBmb3JtIGNvbXBvbmVudCBzdHlsZXMgZm9yIHRoZSBlbnRpcmUgYXBwbGljYXRpb24uXG4gKiBVc2VzIGRlc2lnbiBzeXN0ZW0gdG9rZW5zIGZvciBjb25zaXN0ZW50IHN0eWxpbmcuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBDT05UUk9MIEJBU0UgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbnRyb2wsXG4uZm9ybS1zZWxlY3Qge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1pbnB1dC1yYWRpdXMpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLWlucHV0LXBhZGRpbmcteSkgdmFyKC0tc3dwLWlucHV0LXBhZGRpbmcteCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1pbnB1dC1mb2N1cy1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtaW5wdXQtZm9jdXMtcmluZyk7XG4gICAgfVxuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBMQUJFTFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC8vIFJlcXVpcmVkIGluZGljYXRvclxuXG4gICAgJi5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnIConO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEZJRUxEIFdSQVBQRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tZmllbGQge1xuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnB1dC1ncm91cC10ZXh0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBIRUxQIFRFWFRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taGVscCxcbi5mb3JtLXRleHQsXG4uZm9ybS1oZWxwLXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgc21hbGwge1xuICAgICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT0dHTEUgU1dJVENIIChDaGVja2JveCBhcyBTd2l0Y2gpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxufVxuXG4uZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJTlBVVCBXSVRIIElDT04gKElucHV0IEdyb3Vwcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmlucHV0LWljb24tZ3JvdXAge1xuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiBub25lO1xuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcblxuICAgICAgICAgICAgfiAuaW5wdXQtZ3JvdXAtdGV4dCxcbiAgICAgICAgICAgICsgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBpY29uIGlzIG9uIHRoZSBsZWZ0XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1yaWdodDogbm9uZTtcblxuICAgICAgICArIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZBTElEQVRJT04gQlVUVE9OIElOIElOUFVUIEdST1VQXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnB1dC12YWxpZGF0ZS1ncm91cCB7XG5cbiAgICAuYnRuLXZhbGlkYXRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEdST1VQUyAoTmVzdGVkL0dyb3VwZWQgRmllbGRzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1ncm91cC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLmZvcm0tZ3JvdXAtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWdyb3VwLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWdyb3VwLWNvbnRlbnQge1xuXG4gICAgICAgIC5tYi0zOmxhc3QtY2hpbGQsXG4gICAgICAgIC5tYi00Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIFdJREdFVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkcmVzcy13aWRnZXQge1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIFZBTElEQVRJT04gU1RBVEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbnRyb2wuaXMtaW52YWxpZCxcbi5mb3JtLXNlbGVjdC5pcy1pbnZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIHBhZGRpbmctcmlnaHQ6IGNhbGMoMS41ZW0gKyAwLjc1cmVtKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDEyIDEyJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZWY0NDQ0JyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2VmNDQ0NCcgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlXCIpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgY2FsYygwLjM3NWVtICsgMC4xODc1cmVtKSBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKSBjYWxjKDAuNzVlbSArIDAuMzc1cmVtKTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1kYW5nZXIpO1xuICAgIH1cbn1cblxuLmZvcm0tY29udHJvbC5pcy12YWxpZCxcbi5mb3JtLXNlbGVjdC5pcy12YWxpZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2IoMTYgMTg1IDEyOSAvIDE1JSk7XG4gICAgfVxufVxuXG4uaW52YWxpZC1mZWVkYmFjayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4udmFsaWQtZmVlZGJhY2sge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJTEUgVVBMT0FEIC8gRFJPUFpPTkUgU1RZTElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZmlsZS11cGxvYWQtYXJlYSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmLmRyYWdvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC51cGxvYWQtaWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudXBsb2FkLXRleHQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG5cbiAgICAudXBsb2FkLWhpbnQge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gU3ltZm9ueSBVWCBEcm9wem9uZSBzdHlsaW5nXG5cbi5kcm9wem9uZSB7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgbWluLWhlaWdodDogYXV0bztcblxuICAgICY6aG92ZXIsXG4gICAgJi5kcm9wem9uZS1kcmFnb3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFQ1RJT04gVElUTEVTIChGb3Igb3JnYW5pemVkIGZvcm1zKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1zZWN0aW9uLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIHN2ZyxcbiAgICBpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TIChDYXJkIGZvb3RlciB3aXRoIGJ1dHRvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU3RhbmRhcmQgRm9ybSBBY3Rpb25zIFBhdHRlcm46XG4gKlxuICog4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gKiDilIIgW0NhbmNlbCAoZ2hvc3QpXSAgICAgICAgICAgICAgICAgICAgICBbU2F2ZSAocHJpbWFyeSArIGljb24pXeKUglxuICog4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4gKlxuICogLSBDYW5jZWw6IExlZnQgc2lkZSBPUiBnaG9zdCBzdHlsZVxuICogLSBTYXZlOiBSaWdodCBzaWRlLCBwcmltYXJ5IHN0eWxlLCB3aXRoIHNhdmUgaWNvblxuICovXG5cbi5mb3JtLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIC8vIFdoZW4gdXNlZCBpbiBhIGNhcmQgZm9vdGVyXG5cbiAgICAuY2FyZC1mb290ZXIgJiB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItdG9wOiBub25lO1xuICAgIH1cblxuICAgIC8vIFNwcmVhZCBidXR0b25zIChjYW5jZWwgbGVmdCwgc2F2ZSByaWdodClcblxuICAgICYuZm9ybS1hY3Rpb25zLXNwcmVhZCB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOTElORSBGT1JNXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIT1JJWk9OVEFMIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taG9yaXpvbnRhbCB7XG5cbiAgICAuZm9ybS1ncm91cCxcbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMjAwcHggMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09NUEFDVCBGT1JNXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWNvbXBhY3Qge1xuXG4gICAgLm1iLTMsXG4gICAgLm1iLTQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdMT0JBTCBCVVRUT04gRU5IQU5DRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRhYmxlcidzIC5idG4gYWxyZWFkeSBzZXRzIGRpc3BsYXk6IGlubGluZS1mbGV4IGFuZCBhbGlnbi1pdGVtczogY2VudGVyLFxuLy8gYnV0IGRvZXMgbm90IHNldCBnYXAuIEFkZCBjb25zaXN0ZW50IHNwYWNpbmcgYmV0d2VlbiBpY29uIGFuZCB0ZXh0LlxuXG4uYnRuIHtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgfVxufVxuXG4uYnRuLWdob3N0LWRhbmdlciB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1kYW5nZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVEFCIE5BVklHQVRJT04gSU4gQ0FSRCBIRUFERVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZSBmb250IHNpemUgZm9yIHRhYnMgaW4gY2FyZCBoZWFkZXJzXG5cbi5jYXJkLWhlYWRlci10YWJzIC5uYXYtbGluayB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBCb290c3RyYXAgNSBkb2VzIG5vdCBpbmNsdWRlIGEgNTAwLXdlaWdodCB1dGlsaXR5OyBhZGQgaXQgaGVyZSBhcyBhIHNoYXJlZCB1dGlsaXR5LlxuXG4uZnctbWVkaXVtIHtcbiAgICBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcblxuICAgIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuZm9ybS1zd2l0Y2gtd3JhcHBlciB7XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDIuMjVyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMTAwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIENvbXBhbnkgUGFnZXMgU3R5bGVzXG4gKlxuICogU3R5bGVzIGZvciBjb21wYW55IHNlbGVjdGlvbiBhbmQgY3JlYXRpb24gcGFnZXNcbiAqIEFsbCBzdHlsZXMgYXJlIHNjb3BlZCB0byAuY29tcGFueS1zZWxlY3QtcGFnZSBhbmQgLmNvbXBhbnktY3JlYXRlLXBhZ2VcbiAqIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBhZ2VzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNoYXJlZCBTdHlsZXMgKGJvdGggc2VsZWN0IGFuZCBjcmVhdGUgcGFnZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LXNlbGVjdC1wYWdlLFxuLmNvbXBhbnktY3JlYXRlLXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAgIC8vIEFwcGxpY2F0aW9uIEhlYWRlclxuXG4gICAgLmNvbXBhbnktcGFnZS1oZWFkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1sb2dvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktcGFnZS1icmFuZCB7XG5cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFBhZ2UgaW50cm8gc2VjdGlvbiAodXNlZCBieSBib3RoIHNlbGVjdCBhbmQgY3JlYXRlIHBhZ2VzKVxuXG4gICAgLmNvbXBhbnktcGFnZS1pbnRybyB7XG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hdmF0YXItbWQge1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5hdmF0YXItbGcge1xuICAgICAgICB3aWR0aDogMy41cmVtO1xuICAgICAgICBoZWlnaHQ6IDMuNXJlbTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5hdmF0YXItMnhsIHtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIC5hdmF0YXIteGwge1xuICAgICAgICB3aWR0aDogNXJlbTtcbiAgICAgICAgaGVpZ2h0OiA1cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci1pbml0aWFscyB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgfVxuXG4gICAgLmZvcm0taGludCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgYWRqdXN0bWVudHNcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAgICAgLmF2YXRhci1sZyB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI0cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYXZhdGFyLTJ4bCB7XG4gICAgICAgICAgICB3aWR0aDogM3JlbTtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oMiwgaDIge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbXBhbnkgU2VsZWN0aW9uIFBhZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktc2VsZWN0LXBhZ2Uge1xuICAgIC8vIE1haW4gQ2FyZCBDb250YWluZXJcblxuICAgIC5jYXJkLnNoYWRvdy1zbSB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIH1cblxuICAgIC8vIENvbXBhbnkgQ2FyZHNcblxuICAgIC5jYXJkLWNvbXBhbnkge1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1hbGwpO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgICAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGgzIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbXBhbnktYXZhdGFyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAgICAgLmF2YXRhciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciB3aXRoIGxvZ28gaW1hZ2VcblxuICAgICAgICAuYXZhdGFyIGltZyB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdmF0YXIgd2l0aCBpbml0aWFscyAtIGZvcmNlIHNvbGlkIHByaW1hcnkgYmFja2dyb3VuZFxuXG4gICAgICAgIC5hdmF0YXIuYmctcHJpbWFyeSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciBpbml0aWFscyB0ZXh0IC0gZm9yY2Ugd2hpdGUgY29sb3JcblxuICAgICAgICAuYXZhdGFyLWluaXRpYWxzLFxuICAgICAgICAuYXZhdGFyLmJnLXByaW1hcnkgc3BhbiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1hcnJvdyB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLWR1cmF0aW9uLWJhc2UpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cblxuICAgIC5taW4tdy0wIHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBDb21wYW55IENhcmRcblxuICAgIC5jYXJkLWNyZWF0ZS1jb21wYW55IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1hbGwpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDQpIDEwMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnctbWQtYXV0byB7XG4gICAgICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgICAgIC53LW1kLWF1dG8ge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFueSBDcmVhdGlvbiBQYWdlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb21wYW55LWNyZWF0ZS1wYWdlIHtcblxuICAgIC5mb3JtLXNtb290aCB7XG5cbiAgICAgICAgLmZvcm0tY29udHJvbDpmb2N1cyxcbiAgICAgICAgLmZvcm0tc2VsZWN0OmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMC4yNXJlbSByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFsZXJ0IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gICAgICAgICYuYWxlcnQtaW5mbyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDgpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3Atd2FybmluZy1yZ2IpLCAwLjA4KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atd2FybmluZy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hbGVydC1zdWNjZXNzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4tcHJpbWFyeSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTZXR0aW5ncyBQYWdlIFN0eWxlc1xuICogT25seSBjdXN0b20gc3R5bGVzIHRoYXQgY2FuJ3QgYmUgYWNoaWV2ZWQgd2l0aCBCb290c3RyYXAvVGFibGVyIHV0aWxpdGllc1xuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2V0dGluZ3MgUGFnZSBDb250YWluZXIgLSBNYXgtd2lkdGggY2VudGVyaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zZXR0aW5ncy1wYWdlIHtcbiAgICBtYXgtd2lkdGg6IDkwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiAycmVtO1xufVxuXG4uc2V0dGluZ3MtbmF2aWdhdGlvbiB7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlcixcbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2V0dGluZ3Mtc2VjdGlvbi1oZWFkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIGgyIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cblxuICAgIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDY1Y2g7XG4gICAgICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxufVxuXG4uc2V0dGluZ3Mtc2VjdGlvbi1oZWFkaW5nX19pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MnB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBmbGV4OiAwIDAgNDJweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4vLyBNb2JpbGU6IGhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnNcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLnNldHRpbmdzLXBhZ2UgPiAubmF2LXVuZGVybGluZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAubmF2LWl0ZW0ge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2V0dGluZ3Mtc2VjdGlvbi1oZWFkaW5nIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNldHRpbmdzIENhcmQgLSBwYXBlci1vbi1kZXNrIHN1cmZhY2UgcGVyIGRlc2lnbiBzeXN0ZW1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLWNvbnRlbnQtY2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgID4gLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTgpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgID4gLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChtZCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gYmxvY2tzIGluc2lkZSB0aGUgY2FyZCB1c2UgbGlnaHRlciBkaXZpZGVycyBzbyB0aGUgcGFnZSByZWFkcyBhc1xuICAgIC8vIGEgc2luZ2xlIHF1aWV0IHN1cmZhY2UsIG5vdCBmaXZlIHN0YWNrZWQgY2FyZHMuXG5cbiAgICAuY2FyZC1ib2R5ID4gLmJvcmRlci1ib3R0b20ge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8vIFNlY3Rpb24gaGVhZGluZzogbWF0Y2ggdGhlIGRlc2lnbiBzeXN0ZW0gdGl0bGUgc2NhbGUgYW5kIGxldCB0aGUgaWNvblxuICAgIC8vIGJlIGEgc2xhdGUgYWNjZW50IHJhdGhlciB0aGFuIGEgZmlmdGggZ3JlZW4gZWxlbWVudCBvbiB0aGUgcGFnZS5cblxuICAgIC5jYXJkLWJvZHkgaDMge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcblxuICAgICAgICA+IHN2ZyB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGVscGVyIHBhcmFncmFwaHMgc2l0IHVuZGVyIGhlYWRpbmdzOyBjYXAgdGhlaXIgcmVhZGluZyB3aWR0aC5cblxuICAgIC5jYXJkLWJvZHkgaDMgKyBwLnRleHQtbXV0ZWQge1xuICAgICAgICBtYXgtd2lkdGg6IDY1Y2g7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2dvIFVwbG9hZCAtIEN1c3RvbSBkcm9wem9uZSBzdHlsaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5sb2dvLXVwbG9hZC1jYXJkIHtcblxuICAgIC5sb2dvLXByZXZpZXctZnJhbWUge1xuICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgaGVpZ2h0OiA4MHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICAvLyBMb2dvcyBhcmUgcHJldmlld2VkIG9uIHdoaXRlIGJlY2F1c2UgdGhhdCBpcyB0aGUgZG9jdW1lbnQgc3VyZmFjZSB0aGV5IHRhcmdldC5cbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIGltZyB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wem9uZSB7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLmRyb3B6b25lLWRyYWdvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGFuZ2VyIFpvbmUgLSBzZXJpb3VzLCBub3QgdGhlYXRyaWNhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtZGFuZ2VyLXpvbmUgLmNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcikgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCkgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICAuY2FyZC10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlbGV0ZSBDb21wYW55IE1vZGFsIC0gRW5oYW5jZWQgc3R5bGluZ1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4jZGVsZXRlQ29tcGFueU1vZGFsIHtcblxuICAgIC5tb2RhbC1jb250ZW50IHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcbiAgICB9XG5cbiAgICAuZm9udC1tb25vc3BhY2Uge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ3VzdG9tIEZpZWxkcyAtIFJlb3JkZXJhYmxlIGxpc3Rcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmN1c3RvbS1maWVsZC1saXN0IHtcblxuICAgIC5jdXN0b20tZmllbGQtcm93IHtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAxMjBtcyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIgLmN1c3RvbS1maWVsZC1oYW5kbGUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNvcnRhYmxlLWdob3N0IHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDAuNDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiLCA5OSAxMDIgMjQxKSwgMC4wNik7XG4gICAgICAgIH1cblxuICAgICAgICAmLnNvcnRhYmxlLWNob3NlbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiwgOTkgMTAyIDI0MSksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmN1c3RvbS1maWVsZC1oYW5kbGUge1xuICAgICAgICBjdXJzb3I6IGdyYWI7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLW11dGVkLCAjOTRhM2I4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG5cbiAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgY3Vyc29yOiBncmFiYmluZztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuc2V0dGluZ3MtcGFnZSB7XG5cbiAgICAgICAgLm5hdi11bmRlcmxpbmUsXG4gICAgICAgIC5zZXR0aW5ncy1kYW5nZXItem9uZSxcbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVzaWduIHRlbXBsYXRlIHBpY2tlciAoU2V0dGluZ3MgPiBEZXNpZ24pXG4vLyBTZWxmLWNvbnRhaW5lZDogZG9lcyBub3QgcmVseSBvbiBUYWJsZXIncyBmb3JtLWltYWdlY2hlY2sgY29tcG9uZW50LiBUaGVcbi8vIHJhZGlvIGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgdG9nZ2xlZCB0aHJvdWdoIGl0cyB3cmFwcGluZyA8bGFiZWw+OyB0aGVcbi8vIHNlbGVjdGVkIHN0YXRlIHNob3dzIGFzIGEgcHJpbWFyeSBib3JkZXIgb24gdGhlIGNhcmQgcGx1cyBhIGNoZWNrIGJhZGdlLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udGVtcGxhdGUtcGlja2VyIHtcblxuICAgIC50ZW1wbGF0ZS1waWNrZXItY2FyZCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cbiAgICAgICAgJjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpjaGVja2VkKSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzIwNmJjNCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSh2YXIoLS10YmxyLXByaW1hcnktcmdiLCAzMiwgMTA3LCAxOTYpLCAwLjI1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgMzIsIDEwNywgMTk2KSwgMC41KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLy8gVmlzdWFsbHkgaGlkZGVuLCBidXQgc3RpbGwgZm9ybS1zdWJtaXR0YWJsZSBhbmQgZm9jdXNhYmxlOyBjbGlja3Mgb25cbiAgICAvLyB0aGUgbGFiZWwgKHRodW1ibmFpbCkgdG9nZ2xlIGl0IG5hdGl2ZWx5LlxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1pbnB1dCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLXRodW1iIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogNCAvIDM7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZS1zZWNvbmRhcnksICNmMWY1ZjkpO1xuXG4gICAgICAgIGlmcmFtZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDQwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDQwMCU7XG4gICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMjUpO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuXG4gICAgICAgICAgICAvLyBUaGUgaWZyYW1lIG11c3QgbmV2ZXIgc3dhbGxvdyBjbGlja3MgbWVhbnQgZm9yIHRoZSBsYWJlbC5cbiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgYmFkZ2UgaW4gdGhlIHRodW1ibmFpbCBjb3JuZXIsIG9ubHkgd2hpbGUgc2VsZWN0ZWQuXG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWNoZWNrIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDAuNXJlbTtcbiAgICAgICAgcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxLjc1cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuNzVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdGJsci1wcmltYXJ5LCAjMjA2YmM0KTtcbiAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMTUgMjMgNDIgLyAyNSUpO1xuICAgIH1cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItb3B0aW9uOmhhcygudGVtcGxhdGUtcGlja2VyLWlucHV0OmNoZWNrZWQpIC50ZW1wbGF0ZS1waWNrZXItY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgICYudGVtcGxhdGUtcGlja2VyLWRpc2FibGVkIHtcblxuICAgICAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbiB7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRlbXBsYXRlLXBpY2tlci10aHVtYiB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLlxuLy9cbi8vIEJyZWFrcG9pbnRzIGFyZSBkZWZpbmVkIGFzIGEgbWFwIG9mIChuYW1lOiBtaW5pbXVtIHdpZHRoKSwgb3JkZXIgZnJvbSBzbWFsbCB0byBsYXJnZTpcbi8vXG4vLyAgICAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KVxuLy9cbi8vIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYCBnbG9iYWwgdmFyaWFibGUgaXMgdXNlZCBhcyB0aGUgYCRicmVha3BvaW50c2AgYXJndW1lbnQgYnkgZGVmYXVsdC5cblxuLy8gTmFtZSBvZiB0aGUgbmV4dCBicmVha3BvaW50LCBvciBudWxsIGZvciB0aGUgbGFzdCBicmVha3BvaW50LlxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgbWRcbi8vICAgID4+IGJyZWFrcG9pbnQtbmV4dChzbSwgJGJyZWFrcG9pbnQtbmFtZXM6ICh4cyBzbSBtZCBsZyB4bCB4eGwpKVxuLy8gICAgbWRcbkBmdW5jdGlvbiBicmVha3BvaW50LW5leHQoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMsICRicmVha3BvaW50LW5hbWVzOiBtYXAta2V5cygkYnJlYWtwb2ludHMpKSB7XG4gICRuOiBpbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZigkbiA8IGxlbmd0aCgkYnJlYWtwb2ludC1uYW1lcyksIG50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSwgbnVsbCk7XG59XG5cbi8vIE1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTnVsbCBmb3IgdGhlIHNtYWxsZXN0IChmaXJzdCkgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1pbihzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA1NzZweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1pbiAhPSAwLCAkbWluLCBudWxsKTtcbn1cblxuLy8gTWF4aW11bSBicmVha3BvaW50IHdpZHRoLlxuLy8gVGhlIG1heGltdW0gdmFsdWUgaXMgcmVkdWNlZCBieSAwLjAycHggdG8gd29yayBhcm91bmQgdGhlIGxpbWl0YXRpb25zIG9mXG4vLyBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzIHdpdGggZnJhY3Rpb25hbCB3aWR0aHMuXG4vLyBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSL21lZGlhcXVlcmllcy00LyNtcS1taW4tbWF4XG4vLyBVc2VzIDAuMDJweCByYXRoZXIgdGhhbiAwLjAxcHggdG8gd29yayBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuXG4vLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODI2MVxuLy9cbi8vICAgID4+IGJyZWFrcG9pbnQtbWF4KG1kLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIDc2Ny45OHB4XG5AZnVuY3Rpb24gYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWF4IGFuZCAkbWF4ID4gMCwgJG1heCAtIC4wMiwgbnVsbCk7XG59XG5cbi8vIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuXG4vLyBVc2VmdWwgZm9yIG1ha2luZyByZXNwb25zaXZlIHV0aWxpdGllcy5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LWluZml4KHhzLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIFwiXCIgIChSZXR1cm5zIGEgYmxhbmsgc3RyaW5nKVxuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeChzbSwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIi1zbVwiXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1pbmZpeCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICBAcmV0dXJuIGlmKGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpID09IG51bGwsIFwiXCIsIFwiLSN7JG5hbWV9XCIpO1xufVxuXG4vLyBNZWRpYSBvZiBhdCBsZWFzdCB0aGUgbWluaW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgdG8gdGhlIGdpdmVuIGJyZWFrcG9pbnQgYW5kIHdpZGVyLlxuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSBvZiBhdCBtb3N0IHRoZSBtYXhpbXVtIGJyZWFrcG9pbnQgd2lkdGguIE5vIHF1ZXJ5IGZvciB0aGUgbGFyZ2VzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LWRvd24oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWF4IHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBNZWRpYSB0aGF0IHNwYW5zIG11bHRpcGxlIGJyZWFrcG9pbnQgd2lkdGhzLlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IGJldHdlZW4gdGhlIG1pbiBhbmQgbWF4IGJyZWFrcG9pbnRzXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1iZXR3ZWVuKCRsb3dlciwgJHVwcGVyLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24oJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBNZWRpYSBiZXR3ZWVuIHRoZSBicmVha3BvaW50J3MgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMuXG4vLyBObyBtaW5pbXVtIGZvciB0aGUgc21hbGxlc3QgYnJlYWtwb2ludCwgYW5kIG5vIG1heGltdW0gZm9yIHRoZSBsYXJnZXN0IG9uZS5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBvbmx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50LCBub3Qgdmlld3BvcnRzIGFueSB3aWRlciBvciBuYXJyb3dlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LW9ubHkoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogIGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbmV4dDogYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICAkbWF4OiAgYnJlYWtwb2ludC1tYXgoJG5leHQsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuZXh0LCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGFzaGJvYXJkIFN0eWxlc1xuICpcbiAqIFN0eWxlcyBmb3IgdGhlIHJlZGVzaWduZWQgZGFzaGJvYXJkIGluY2x1ZGluZyBoZXJvIHN0YXRzLFxuICogY2hhcnRzLCBhdHRlbnRpb24gcmVxdWlyZWQgc2VjdGlvbiwgcXVpY2sgYWN0aW9ucywgYW5kIGFjdGl2aXR5IGZlZWQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFUk8gU1RBVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXNoYm9hcmQtcGFnZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDByZW07XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbn1cblxuLmRhc2hib2FyZC1pbnRybyB7XG4gICAgbWFyZ2luOiBjYWxjKHZhcigtLXN3cC1zcGFjZS0yKSAqIC0xKSAwIHZhcigtLXN3cC1zcGFjZS01KTtcblxuICAgIHAge1xuICAgICAgICBtYXgtd2lkdGg6IDUycmVtO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgfVxufVxuXG4uZGFzaGJvYXJkLW92ZXJ2aWV3IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICA+IC5jb2wtMTIge1xuICAgICAgICBwYWRkaW5nLWlubGluZTogMDtcbiAgICB9XG59XG5cbi5kYXNoYm9hcmQtd29ya3NwYWNlIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDEuN2ZyKSBtaW5tYXgoMjByZW0sIDAuNzVmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xufVxuXG4uZGFzaGJvYXJkLW1haW4tY29sdW1uLFxuLmRhc2hib2FyZC1zaWRlLWNvbHVtbiB7XG4gICAgbWluLXdpZHRoOiAwO1xuXG4gICAgPiAuY29sLTEyIHtcbiAgICAgICAgcGFkZGluZy1pbmxpbmU6IDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC1zaWRlLWNvbHVtbiB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IGNhbGModmFyKC0tc3dwLW5hdmJhci1oZWlnaHQpICsgdmFyKC0tc3dwLXNwYWNlLTQpKTtcbn1cblxuQG1lZGlhICh3aWR0aCA8IDEyMDBweCkge1xuXG4gICAgLmRhc2hib2FyZC13b3Jrc3BhY2Uge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuZGFzaGJvYXJkLXNpZGUtY29sdW1uIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICA+IC5jb2wtMTIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDwgNzY4cHgpIHtcblxuICAgIC5kYXNoYm9hcmQtd29ya3NwYWNlLFxuICAgIC5kYXNoYm9hcmQtc2lkZS1jb2x1bW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuZGFzaGJvYXJkLW1haW4tY29sdW1uID4gLmNvbC0xMixcbiAgICAuZGFzaGJvYXJkLXNpZGUtY29sdW1uID4gLmNvbC0xMiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gRm91ciB0aWxlcywgYnV0IGRlbGliZXJhdGVseSBub3QgZm91ciBlcXVhbCB0aWxlcy4gVGhlIHJvdyBpcyBsYWlkIG91dCBvbiBhXG4vLyBuaW5lLXRyYWNrIGdyaWQ6IG9yZGluYXJ5IHRpbGVzIHNwYW4gdHdvIHRyYWNrcywgdGhlIHVyZ2VudCBvbmUgc3BhbnMgdGhyZWUuXG4vLyBTcGFucyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHBvc2l0aW9uYWwgY29sdW1uIHNpemVzIHNvIHRoZSBlbXBoYXNpcyBmb2xsb3dzIHRoZVxuLy8gYC0tdXJnZW50YCBjbGFzcyByYXRoZXIgdGhhbiB0aGUgdGlsZSdzIHBvc2l0aW9uIGluIHRoZSBtYXJrdXAuXG5cbi5kYXNoYm9hcmQtaGVyby1zdGF0cyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC8vIGBtaW5tYXgoMCwgMWZyKWAgcmF0aGVyIHRoYW4gYDFmcmAuIEEgYDFmcmAgdHJhY2sgaGFzIGFuIGF1dG9tYXRpY1xuICAgIC8vIG1pbmltdW0gZXF1YWwgdG8gaXRzIGNvbnRlbnQncyBtaW4tY29udGVudCB3aWR0aCwgYW5kIGAubW9uZXlgIGlzXG4gICAgLy8gYHdoaXRlLXNwYWNlOiBub3dyYXBgIC0gc28gYSBsb25nIGZvcm1hdHRlZCBhbW91bnQgd291bGQgd2lkZW4gdGhlIHRyYWNrXG4gICAgLy8gYW5kIHB1c2ggdGhlIHdob2xlIHJvdyBvdXQgb2YgdGhlIGNhcmQuIFplcm9pbmcgdGhlIG1pbmltdW0gbGV0cyB0aGVcbiAgICAvLyB0cmFjayBzaHJpbmsgdG8gdGhlIHNwYWNlIGFjdHVhbGx5IGF2YWlsYWJsZS5cbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA1NzdweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA+PSAxMjAxcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOSwgbWlubWF4KDAsIDFmcikpO1xuICAgIH1cbn1cblxuLnN0YXQtY2FyZCB7XG4gICAgLy8gR3JpZCBpdGVtcyBkZWZhdWx0IHRvIGBtaW4td2lkdGg6IGF1dG9gOyB3aXRob3V0IHRoaXMgdGhlIHRyYWNrIGFib3ZlIGlzXG4gICAgLy8gZnJlZSB0byBncm93IHBhc3QgdGhlIGNvbnRhaW5lciBhZ2Fpbi5cbiAgICBtaW4td2lkdGg6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFRoZSB2YWx1ZSBzY2FsZXMgYWdhaW5zdCB0aGUgdGlsZSwgbm90IHRoZSB2aWV3cG9ydC4gQ29udGFpbmVyIHF1ZXJ5XG4gICAgLy8gdW5pdHMgbGV0IGEgbmFycm93IHNwYW4tMiB0aWxlIHJlZHVjZSBpdHMgaGVhZGxpbmUgaW5zdGVhZCBvZiBsZXR0aW5nIGFcbiAgICAvLyBsb25nIGFtb3VudCBydW4gcGFzdCB0aGUgY2FyZCBlZGdlLlxuICAgIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTtcblxuICAgIC8vIE5vIGhvdmVyIHRyZWF0bWVudDogdGhlIHRpbGUgaXMgYW4gaW5lcnQgZGl2IHdpdGggbm8gbGluayBhbmQgbm8gaGFuZGxlci5cbiAgICAvLyBOb3RoaW5nIGhlcmUgdHJhbnNpdGlvbnMsIHNvIHRoZXJlIGlzIG5vdGhpbmcgZm9yIHJlZHVjZWQtbW90aW9uIHRvIHVuZG8uXG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xuICAgIH1cblxuICAgIC8vIFN0YXRlIGlzIGNhcnJpZWQgYnkgdGhlIGljb24gdGludCwgdGhlIHZhbHVlIGNvbG91ciBhbmQgdGhlIHN1cmZhY2UgdGludC5cbiAgICAvLyBOZXZlciBhIHNpZGUgc3RyaXBlLCBuZXZlciBhIGdsb3cuXG4gICAgLy8gVGhlIHRpbnQgbGl2ZXMgb24gLS1kYW5nZXIgYWxvbmUsIG5ldmVyIG9uIC0tdXJnZW50LiAtLXVyZ2VudCBpcyBhcHBsaWVkXG4gICAgLy8gdW5jb25kaXRpb25hbGx5IHRvIGhvbGQgdGhlIGdyaWQgdHJhY2ssIHNvIHRpbnRpbmcgaXQgd291bGQgcGFpbnQgYSByZWRcbiAgICAvLyBjYXJkIGZvciBhIHVzZXIgd2l0aCB6ZXJvIG92ZXJkdWUgaW52b2ljZXM6IHRoZSBzYW1lIGRlZmVjdCBhcyByZW5kZXJpbmdcbiAgICAvLyBhICQwLjAwIHRvdGFsIGluIHN1Y2Nlc3MgZ3JlZW4sIG1pcnJvcmVkLlxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBcIk92ZXJkdWVcIiBpcyB0aGUgb25seSBhY3Rpb25hYmxlIG51bWJlciBpbiB0aGUgcm93LCBzbyBpdCBtdXN0IG5vdCByZWFkIGFzXG4gICAgLy8gaW50ZXJjaGFuZ2VhYmxlIHdpdGggdGhlIHRvdGFscyBiZXNpZGUgaXQ6IGhhbGYgYWdhaW4gYXMgd2lkZSB3aGVyZSB0aGVyZVxuICAgIC8vIGlzIHJvb20gZm9yIGFuIGFzeW1tZXRyaWMgcm93LCBhbmQgYSBmdWxsIHR5cGUgc3RlcCBsYXJnZXIgYXQgZXZlcnkgd2lkdGguXG5cbiAgICAmLS11cmdlbnQge1xuICAgICAgICBAbWVkaWEgKHdpZHRoID49IDEyMDFweCkge1xuICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMztcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdGF0LXZhbHVlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAodmFyKC0tc3dwLXRleHQteGwpLCA5Y3FpLCB2YXIoLS1zd3AtdGV4dC0zeGwpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnN0YXQtY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLnN0YXQtaWNvbiB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgfVxufVxuXG4uc3RhdC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi5zdGF0LXZhbHVlIHtcbiAgICAvLyBTdGFydHMgYXQgMjRweCBhbmQgc3RlcHMgZG93biB3aXRoIHRoZSB0aWxlLCBib3R0b21pbmcgb3V0IGF0IDE4cHguIFRoZVxuICAgIC8vIDljcWkgc2xvcGUgaXMgdHVuZWQgc28gdGhlIG9yZGluYXJ5IGNhc2UgKGEgc3Bhbi0yIHRpbGUgYXQgdGhlIDEyMDFweFxuICAgIC8vIGJyZWFrcG9pbnQsIHJvdWdobHkgMTQycHggb2YgdmFsdWUgc3BhY2UpIGxhbmRzIG5lYXIgMThweCAtIHNtYWxsIGVub3VnaFxuICAgIC8vIGZvciBhIGxvbmcgZm9ybWF0dGVkIGFtb3VudCB0byBzdGF5IG9uIG9uZSBsaW5lLlxuICAgIGZvbnQtc2l6ZTogY2xhbXAodmFyKC0tc3dwLXRleHQtbGcpLCA5Y3FpLCB2YXIoLS1zd3AtdGV4dC0yeGwpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctdGlnaHQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cbiAgICAvLyBHcmVlbiBtZWFucyBcIlBhaWRcIi4gQSBsaWZldGltZSByZXZlbnVlIGFnZ3JlZ2F0ZSBpcyBub3QgYSBwYXltZW50IHN0YXRlLFxuICAgIC8vIHNvIHRoZXJlIGlzIG5vIGAtLXN1Y2Nlc3NgIGhlcmU7IHBhaWQgc2VtYW50aWNzIGxpdmUgaW4gYC5tb25leS0tcGFpZGAuXG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlci1kYXJrKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgdGlsZSBhbHJlYWR5IGNhcnJpZXMgdGhlIGVtcGhhc2lzOiBgLnN0YXQtdmFsdWVgIGlzIHRoZSBsYXJnZXN0IHRleHQgaW5cbiAgICAvLyB0aGUgY2FyZC4gYC5tb25leS0tdG90YWxgIHN0ZXBwaW5nIGl0IHVwIGFub3RoZXIgMTIuNSUgb24gdG9wIG9mIHRoYXQgaXMgd2hhdFxuICAgIC8vIHB1c2hlZCBcIlVTRCAxMjAsODgyLjE5XCIgcGFzdCB0aGUgY2FyZCBlZGdlIG9uIGEgc3Bhbi0yIHRpbGUuIFRoZSBtb2RpZmllciBpc1xuICAgIC8vIGtlcHQgZm9yIGl0cyB3ZWlnaHQsIHdoaWNoIHRoZSB0aWxlIHN0aWxsIHdhbnRzOyBvbmx5IHRoZSBzaXplIHN0ZXAgaXMgdW5kb25lLlxuICAgIC8vIFRoZSBhbW91bnQgaXMgYWxsb3dlZCB0byB3cmFwIHdpdGhpbiBpdHNlbGYgYmVsb3csIHNvIGEgZmlndXJlIHRoYXQgc3RpbGxcbiAgICAvLyBkb2VzIG5vdCBmaXQga2VlcHMgZXZlcnkgZGlnaXQgaW5zdGVhZCBvZiBiZWluZyBjbGlwcGVkLlxuXG4gICAgLm1vbmV5LS10b3RhbCAubW9uZXktYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgfVxufVxuXG4uc3RhdC1zdWJ2YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVkFMVUUgQ09OVEFJTk1FTlRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBgLm1vbmV5YCBpcyBkZWxpYmVyYXRlbHkgbm93cmFwIHNvIGEgY3VycmVuY3kgY29kZSBjYW4gbmV2ZXIgYmUgb3JwaGFuZWQgZnJvbVxuLy8gaXRzIGFtb3VudC4gSW5zaWRlIHRoZSBkYXNoYm9hcmQncyBmaXhlZC13aWR0aCBjYXJkcyB0aGF0IGd1YXJhbnRlZSBoYXMgdG8gYmVcbi8vIHJlY29uY2lsZWQgd2l0aCBhIGZpZ3VyZSB0aGF0IGlzIHNpbXBseSB3aWRlciB0aGFuIHRoZSBzcGFjZSBhdmFpbGFibGU6IHRoZVxuLy8gYW1vdW50IG1heSB3cmFwIHdpdGhpbiBpdHNlbGYgd2hpbGUgdGhlIGN1cnJlbmN5IHN0YXlzIGF0dGFjaGVkIHRvIGl0LiBPbmx5XG4vLyB0aGUgZGlnaXRzIGJyZWFrLCBzbyBldmVyeSBjaGFyYWN0ZXIgaXMgcHJlc2VydmVkIGFuZCBubyBmaW5hbmNpYWxcbi8vIGluZm9ybWF0aW9uIGlzIGNsaXBwZWQuIE9yZGluYXJ5IGFtb3VudHMgbmV2ZXIgcmVhY2ggdGhpcyBwYXRoIGJlY2F1c2UgdGhlXG4vLyBjb250YWluZXItc2NhbGVkIHR5cGUgYWJvdmUga2VlcHMgdGhlbSBvbiBvbmUgbGluZS5cblxuLnN0YXQtdmFsdWUsXG4uc3RhdC1zdWJ2YWx1ZSxcbi5hdHRlbnRpb24taXRlbS1hbW91bnQsXG4uYWN0aXZpdHktYW1vdW50IHtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG59XG5cbi5zdGF0LXZhbHVlIC5tb25leSxcbi5zdGF0LXN1YnZhbHVlIC5tb25leSxcbi5hdHRlbnRpb24taXRlbS1hbW91bnQgLm1vbmV5LFxuLmFjdGl2aXR5LWFtb3VudCAubW9uZXkge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zdGF0LXZhbHVlIC5tb25leS1hbW91bnQsXG4uc3RhdC1zdWJ2YWx1ZSAubW9uZXktYW1vdW50LFxuLmF0dGVudGlvbi1pdGVtLWFtb3VudCAubW9uZXktYW1vdW50LFxuLmFjdGl2aXR5LWFtb3VudCAubW9uZXktYW1vdW50IHtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIQVJUIENPTlRBSU5FUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXNoYm9hcmQtY2hhcnQtY29udGFpbmVyIHtcbiAgICBtaW4taGVpZ2h0OiAyODBweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXNoYm9hcmQtcGFnZSAuY2FyZCB7XG4gICAgb3ZlcmZsb3c6IGNsaXA7XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBtaW4taGVpZ2h0OiA0cmVtO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxufVxuXG4uZGFzaGJvYXJkLXJldmVudWUtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jb250YWluZXIge1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jZW50ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1zd3Atc3BhY2UtOCkpO1xuXG4gICAgLy8gQ2hhcnQuanMgcGFpbnRzIHRoZSBsZWdlbmQgaW5zaWRlIHRoZSBjYW52YXMgYWxvbmcgaXRzIGJvdHRvbSBlZGdlLCBzbyB0aGVcbiAgICAvLyByaW5nJ3MgY2VudHJlIHNpdHMgYSBsaXR0bGUgYWJvdmUgdGhlIGNvbnRhaW5lcidzIG1pZHBvaW50LiBUaGlzIG51ZGdlXG4gICAgLy8gY29tcGVuc2F0ZXMuIEl0IGlzIGEgZml4ZWQgZGlzdGFuY2UgcmF0aGVyIHRoYW4gYSBwZXJjZW50YWdlIG9mIHRoaXNcbiAgICAvLyBlbGVtZW50J3Mgb3duIGhlaWdodCwgc28gY2hhbmdpbmcgdGhlIHRvdGFsJ3MgdHlwZSBzaXplIG9yIHdyYXBwaW5nIGl0c1xuICAgIC8vIGxhYmVsIGNhbiBubyBsb25nZXIgZHJhZyB0aGUgbnVtYmVyIG9mZiB0aGUgcmluZydzIGNlbnRyZS5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCBjYWxjKC01MCUgLSB2YXIoLS1zd3Atc3BhY2UtMS01KSkpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LXRvdGFsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cbiAgICAvLyBEZW1vdGVkIGZyb20gMzJweDogdGhlIGxlYXN0IGFjdGlvbmFibGUgd2lkZ2V0IG9uIHRoZSBwYWdlIHNob3VsZCBub3Qgb3duXG4gICAgLy8gaXRzIGxhcmdlc3QgbnVtYmVyLiBUaGF0IG5vdyBiZWxvbmdzIHRvIHRoZSBvdmVyZHVlIGNvdW50LlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4uZGFzaGJvYXJkLWRvbnV0LWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZW1wdHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZW1wdHktaWNvbiB7XG4gICAgLy8gV2FzIGAtLXN3cC10ZXh0LWxpZ2h0YCAoMi41NjoxIG9uIHN1cmZhY2UpOiB0ZWNobmljYWxseSBkZWNvcmF0aW9uLCBidXRcbiAgICAvLyBjbG9zZSBlbm91Z2ggdG8gaW52aXNpYmxlIHRoYXQgaXQgcmVhZCBhcyBhIHJlbmRlcmluZyBmYXVsdC4gYC0tdGV4dC1tdXRlZGBcbiAgICAvLyBjbGVhcnMgMS40LjExIGZvciBhIG1lYW5pbmdmdWwgZ3JhcGhpYyBhbmQgc3RpbGwgc2l0cyBhIHN0ZXAgbGlnaHRlciB0aGFuXG4gICAgLy8gdGhlIHRleHQgYmVsb3cgaXQsIHNvIHRoZSBpY29uIHN1cHBvcnRzIHRoZSBtZXNzYWdlIGluc3RlYWQgb2YgbGVhZGluZyBpdC5cbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lbXB0eS10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vIEEgZmFpbGVkIHF1ZXJ5IGlzIG5vdCBhbiBlbXB0eSBhY2NvdW50LCBhbmQgbXVzdCBuZXZlciBpbXBlcnNvbmF0ZSBvbmUuIFRoZVxuLy8gZW1wdHkgc3RhdGUgYWJvdmUgaXMgY2FsbSBhbmQgZW5jb3VyYWdpbmc7IHRoaXMgb25lIG5hbWVzIGEgcHJvYmxlbSBhbmQgb2ZmZXJzXG4vLyBhIHdheSBvdXQgb2YgaXQuIENvbG91ciBhbXBsaWZpZXMgdGhlIGRpc3RpbmN0aW9uLCBpdCBuZXZlciBjYXJyaWVzIGl0IGFsb25lOlxuLy8gdGhlIHRleHQgbGFiZWwgZG9lcyB0aGF0LlxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yLWljb24ge1xuICAgIC8vIENvbnRhaW5lZCBpbiBhIHRpbnRlZCBtZWRhbGxpb24sIHVubGlrZSB0aGUgZW1wdHkgc3RhdGUncyBiYXJlIGljb24uIFRoaXNcbiAgICAvLyBpcyB0aGUgc2FtZSBcInN0YXRlIG1lZGFsbGlvblwiIHNoYXBlIGAuYXR0ZW50aW9uLWVtcHR5LWljb25gIGFscmVhZHkgdXNlcyxcbiAgICAvLyBzbyB0aGUgdHdvIHN0YXRlcyBhcmUgdG9sZCBhcGFydCBieSBmb3JtIGJlZm9yZSBjb2xvdXIgaXMgcmVhZCBhdCBhbGwuXG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgfVxufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yLXRpdGxlIHtcbiAgICAvLyBIZWF2aWVyIGFuZCBkYXJrZXIgdGhhbiBgLmRhc2hib2FyZC1jaGFydC1lbXB0eS10ZXh0YDogYSBzdGF0ZW1lbnQgb2Ygd2hhdFxuICAgIC8vIHdlbnQgd3JvbmcsIG5vdCBhIHNocnVnLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVycm9yLXRleHQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC13aWR0aDogNDJjaDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFUVEVOVElPTiBSRVFVSVJFRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmF0dGVudGlvbi1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS1pY29uIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmF0dGVudGlvbi1zZWN0aW9uIHtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgfVxuXG4gICAgJi0td2FybmluZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWRhcmspO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgfVxufVxuXG4uYXR0ZW50aW9uLWJhZGdlIHtcbiAgICAvLyBXYXMgMTFweCwgb2ZmLXJhbXAuIEJhZGdlIHRleHQgaXMgdGhlIGRvY3VtZW50ZWQgTGFiZWwgc3RlcCAoMTJweCkuXG4gICAgbWluLXdpZHRoOiAwO1xuICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyLWRhcmspO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8tZGFyayk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1pdGVtcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYXR0ZW50aW9uLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmF0dGVudGlvbi1pdGVtLW1haW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZmxleDogMTtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWlkIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5hdHRlbnRpb24taXRlbS1jbGllbnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmF0dGVudGlvbi1pdGVtLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5hdHRlbnRpb24taXRlbS1hbW91bnQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5hdHRlbnRpb24taXRlbS1kYXRlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUlDSyBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucXVpY2stYWN0aW9ucy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnF1aWNrLWFjdGlvbi1idG4ge1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXNlY29uZGFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zZWNvbmRhcnktbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1saWdodCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLS1pbmZvIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mby1kYXJrKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgICAgICAmLFxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5xdWljay1hY3Rpb24taWNvbiB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLnF1aWNrLWFjdGlvbi1sYWJlbCB7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSVZJVFkgVElNRUxJTkVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLmFjdGl2aXR5LXRpbWVsaW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5hY3Rpdml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktaWNvbiB7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgICYtLXBheW1lbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcy1kYXJrKTtcbiAgICB9XG5cbiAgICAmLS1pbnZvaWNlLFxuICAgICYtLWludm9pY2Vfc2VudCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cblxuICAgICYtLXF1b3RlX2FjY2VwdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtZGFyayk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfZGVjbGluZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItZGFyayk7XG4gICAgfVxuXG4gICAgJi0tcmVjdXJyaW5nX2dlbmVyYXRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWRhcmspO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmFjdGl2aXR5LWRlc2NyaXB0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cblxuLmFjdGl2aXR5LXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgLy8gV2FzIDE0cHgsIG9mZi1yYW1wLiBCb2R5IGlzIDE1cHgsIGFuZCBpdCBwYWlycyB3aXRoIHRoZSAxM3B4IG1vbm8gZG9jLWxpbmtcbiAgICAvLyBuZXN0ZWQgaW5zaWRlIGl0IGV4YWN0bHkgYXMgdGhlIHJhbXAgaW50ZW5kcy4gSXQgYWxzbyBrZWVwcyB0aGlzIHJvdyBhIHN0ZXBcbiAgICAvLyBhYm92ZSBgLmFjdGl2aXR5LWRldGFpbHNgIGJlbG93LCB3aGljaCB0aGUgMTNweCBzdGVwIHdvdWxkIGhhdmUgZmxhdHRlbmVkLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG59XG5cbi5hY3Rpdml0eS1kb2MtbGluayB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uYWN0aXZpdHktY2xpZW50LWxpbmsge1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi5hY3Rpdml0eS1zZXBhcmF0b3Ige1xuICAgIC8vIFRoaXMgaXMgdGV4dCwgbm90IGEgcnVsZSBvciBhIGdyYXBoaWMuIGAtLXN3cC10ZXh0LWxpZ2h0YCBpcyAyLjU2OjEgb24gdGhlXG4gICAgLy8gY2FyZCBzdXJmYWNlIGFuZCBmYWlscyBBQSBvdXRyaWdodC5cbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4uYWN0aXZpdHktYW1vdW50IHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4uYWN0aXZpdHktdGltZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cbiIsIi8qKlxuICogQ2xpZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIENsaWVudCB2aWV3IHBhZ2UuXG4gKiBGb2xsb3dzIHRoZSBkZXNpZ24gc3lzdGVtIHRva2VucyBhbmQgbW9kZXJuIFNhYVMgYWVzdGhldGljLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBUlRORVIgSU5ERVggUEFHRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBhcnRuZXItc3RhdC1jYXJkIHtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4ucGFydG5lci1zdGF0LXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI1O1xufVxuXG4ucGFydG5lci1zdGF0LXZhbHVlLS1tb25leSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbn1cblxuLnBhcnRuZXItc3RhdC1sYWJlbCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5wYXJ0bmVyLW5hdmlnYXRpb24tY2FyZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLnBhcnRuZXItbmF2aWdhdGlvbi1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGZsZXg6IDAgMCA0MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5wYXJ0bmVyLW5hdmlnYXRpb24tdGl0bGUsXG4ucGFydG5lci1uYXZpZ2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnBhcnRuZXItbmF2aWdhdGlvbi10aXRsZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG59XG5cbi5wYXJ0bmVyLW5hdmlnYXRpb24tZGVzY3JpcHRpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM1O1xufVxuXG4ucGFydG5lci1saXN0LWNhcmQge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICA+IC5jYXJkLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXItdGFicyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMykgMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIH1cblxuICAgID4gLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDTElFTlQgSEVSTyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtaGVybyB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi5jbGllbnQtaGVyby1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi5jbGllbnQtaGVyby1pZGVudGl0eSB7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uY2xpZW50LWhlcm8tYmFjayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5jbGllbnQtaGVyby1oZWFkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1oZXJvLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uY2xpZW50LWhlcm8tbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbGllbnQtaGVyby1tZXRhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFUIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY2xpZW50LXN0YXQtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi8vIEluY29tZSByZWNlaXZlZCBpcyBhIHBvc2l0aXZlIHN0YXRlOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZS5cblxuLmNsaWVudC1zdGF0LXZhbHVlLS1zdWNjZXNzIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4vLyBcIk91dHN0YW5kaW5nXCIgbWVhbnMgb3dlZCwgbm90IG92ZXJkdWUuIEFtYmVyLCBub3QgZGFuZ2VyIHJlZC5cbi8vIEtlcHQgLS1kYW5nZXIgYWxpYXMgc28gYW55IGxlZ2FjeSBjYWxsZXJzIHN0aWxsIHJlbmRlciBtZWFuaW5nZnVsbHkuXG5cbi5jbGllbnQtc3RhdC12YWx1ZS0td2FybmluZyxcbi5jbGllbnQtc3RhdC12YWx1ZS0tZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uY2xpZW50LXN0YXQtYmFkZ2VzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBDUkVESVQgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNyZWRpdC1jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uY2xpZW50LWNyZWRpdC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jbGllbnQtY3JlZGl0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgTkFWSUdBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXRhYnMtY2FyZCB7XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgfVxuXG4gICAgLmNhcmQtaGVhZGVyLXRhYnMge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpIDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpIHZhcigtLXN3cC1yYWRpdXMtbGcpIDAgMDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIH1cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLCBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Uge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMmVtIDAuNWVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRhYi1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5idXNpbmVzcy1wYXJ0bmVyLXJvbGUtY2FyZCB7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNVUFBMSUVSIEFDVElWSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdXBwbGllci1hY3Rpdml0eS1oZWFkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc3VwcGxpZXItYWN0aXZpdHktZGVzY3JpcHRpb24ge1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xufVxuXG4uc3VwcGxpZXItYWN0aXZpdHktY2FyZCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxufVxuXG4uc3VwcGxpZXItYWN0aXZpdHktY2FyZC10b3Age1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc3VwcGxpZXItYWN0aXZpdHktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MnB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uc3VwcGxpZXItYWN0aXZpdHktY291bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5zdXBwbGllci1hY3Rpdml0eS10aXRsZSB7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG59XG5cbi5zdXBwbGllci1hY3Rpdml0eS1jYXJkLWRlc2NyaXB0aW9uIHtcbiAgICBmbGV4OiAxO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5zdXBwbGllci1hY3Rpdml0eS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xufVxuXG4uY2xpZW50LXByb2ZpbGUtY2FyZCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5jbGllbnQtc2VjdGlvbi10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05UQUNUICYgQUREUkVTUyBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNvbnRhY3QtY2FyZCxcbi5jbGllbnQtYWRkcmVzcy1jYXJkIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmNsaWVudC1jb250YWN0LW5hbWUge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbi1zbSB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmJ0bi1naG9zdC1zZWNvbmRhcnkge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIERJU1BMQVlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1hZGRyZXNzLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtYWRkcmVzcy1tYXAtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1leHRyYSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWluLXdpZHRoOiA4MHB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ1VTVE9NIEZJRUxEUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGRzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5jdXN0b20tZmllbGRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxNDBweCwgMzAlKSAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uY3VzdG9tLWZpZWxkcy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG59XG5cbi5jdXN0b20tZmllbGRzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5jdXN0b20tZmllbGRzLWl0ZW0ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmNsaWVudC1zdGF0LXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8tbGF5b3V0IHtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLW1ldGEge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLWFjdGlvbnMge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgID4gLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jbGllbnQtdGFicy1jYXJkIC5uYXYtdGFicyB7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jbGllbnQtdGFicy1jYXJkIC5uYXYtaXRlbSB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5jbGllbnQtc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLnN1cHBsaWVyLWFjdGl2aXR5LWhlYWRpbmcge1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmNsaWVudC1oZXJvIC5kcm9wZG93bixcbiAgICAuY2xpZW50LWhlcm8gLmJ0bixcbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIC5idG4sXG4gICAgLmJ0bi1naG9zdC1zZWNvbmRhcnksXG4gICAgLmJ0bi1naG9zdC1kYW5nZXIsXG4gICAgLmNsaWVudC1mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0RERERERDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEludm9pY2UgVmlldyBQYWdlXG4gKlxuICogQWxsIHNoYXJlZCBkb2N1bWVudCB2aWV3IHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzLlxuICogSW52b2ljZS1zcGVjaWZpYyByZWN1cnJpbmcgaW52b2ljZSBzdHlsZXMgYXJlIGFsc28gaW4gdGhhdCBzaGFyZWQgY29tcG9uZW50LlxuICovXG5cbi8vIFJlY3VycmluZyBpbnZvaWNlIHNpZGViYXI6IHNjaGVkdWxlICYgZ2VuZXJhdGVkIGludm9pY2VzXG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uc2NoZWR1bGUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc2NoZWR1bGUtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgIC8vIERhdGVzIGFuZCBjb3VudHMgbGluZSB1cCBjbGVhbmx5IGRvd24gdGhlIHNjaGVkdWxlIHNpZGViYXJcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4ub2NjdXJyZW5jZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ub2NjdXJyZW5jZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi5vY2N1cnJlbmNlLWRhdGUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSwgNTAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWlkIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuIiwiLyoqXG4gKiBFeHRlcm5hbCBJbnZvaWNlIFZpZXdcbiAqXG4gKiBJbnZvaWNlLXNwZWNpZmljIHN0eWxlcyBmb3IgdGhlIHB1YmxpYy1mYWNpbmcgaW52b2ljZSBwYWdlLlxuICogQWxsIHNoYXJlZCBleHRlcm5hbCBkb2N1bWVudCBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MuXG4gKi9cblxuLy8gSW52b2ljZS1zcGVjaWZpYyBhY3Rpb24gYnV0dG9uXG5cbi5idG4taW52b2ljZS1hY3Rpb24ge1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4vLyBTY3JlZW4gcmVhZGVyIG9ubHkgdGV4dFxuXG4uc3Itb25seSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBtYXJnaW46IC0xcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBib3JkZXItd2lkdGg6IDA7XG59XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuYnRuLWludm9pY2UtYWN0aW9uOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG4iLCIvKipcbiAqIEV4dGVybmFsIFF1b3RlIFZpZXdcbiAqXG4gKiBBbGwgc2hhcmVkIGV4dGVybmFsIGRvY3VtZW50IHN0eWxlcyAoaW5jbHVkaW5nIHF1b3RlIHN0eWxlcykgYXJlIGluXG4gKiBjb21wb25lbnRzL19leHRlcm5hbC1kb2Mtdmlldy5zY3NzLlxuICpcbiAqIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gcXVvdGUtc3BlY2lmaWMgc3R5bGVzIGJleW9uZCB3aGF0IGlzIHNoYXJlZC5cbiAqL1xuIiwiLyoqXG4gKiBRdW90ZSBWaWV3IFBhZ2UgLSBRdW90ZS1TcGVjaWZpYyBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgZG9jdW1lbnQgbGF5b3V0IGlzIGluIGNvbXBvbmVudHMvX2RvY3VtZW50LXZpZXcuc2Nzcy5cbiAqIFRoaXMgZmlsZSBpcyBpbnRlbnRpb25hbGx5IG1pbmltYWwgLSBhbGwgc2hhcmVkIGRvYyB2aWV3IHN0eWxlcyBhcmUgaW4gdGhlIGNvbXBvbmVudC5cbiAqL1xuXG4vLyBObyBxdW90ZS1zcGVjaWZpYyBvdmVycmlkZXMgbmVlZGVkIGJleW9uZCB3aGF0IF9kb2N1bWVudC12aWV3LnNjc3MgcHJvdmlkZXMuXG4iLCIvKipcbiAqIFBheW1lbnQgTWFya2V0cGxhY2UgU3R5bGVzXG4gKiBPbmx5IHBheW1lbnQtc3BlY2lmaWMgc3R5bGVzLiBTaGFyZWQgbWFya2V0cGxhY2Ugc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF5bWVudCBNYXJrZXRwbGFjZSBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2Uge1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBUYWJzIE5hdmlnYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Utc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR2F0ZXdheSBDYXJkcyBHcmlkXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nYXRld2F5LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5nYXRld2F5LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKSwgMCAwIDAgMXB4IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeSkgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY29uZmlndXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNSkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjMpO1xuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpIDAlLCB2YXIoLS1zd3Atc3VjY2VzcykgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA4KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA0KSAxMDAlKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jdXN0b20tZ2F0ZXdheSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wMSkgMTAwJSk7XG4gICAgICAgIGJvcmRlcjogMnB4IGRhc2hlZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIC8vIEFkZCBob3Jpem9udGFsIGRpdmlkZXIgYWZ0ZXIgY3VzdG9tIGdhdGV3YXlcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGJvdHRvbTogY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS02KSAvIDIpO1xuICAgICAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLFxuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDAlLFxuICAgICAgICAgICAgICAgIHZhcigtLXN3cC1ib3JkZXIpIDE1JSxcbiAgICAgICAgICAgICAgICB2YXIoLS1zd3AtYm9yZGVyKSA4NSUsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBpbnNldDogLTJweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5KSwgdmFyKC0tc3dwLXByaW1hcnktZGFyaykpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgei1pbmRleDogLTE7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMDg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5nYXRld2F5LWljb24ge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5KSAwJSwgdmFyKC0tc3dwLXByaW1hcnktZGFyaykgMTAwJSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTJweDtcbiAgICAgICAgaGVpZ2h0OiA1MnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAudGV4dC1tdXRlZCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZS1zbSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBY3RpdmUgTWV0aG9kcyBQYW5lbCAtIFJpZ2h0IFNpZGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFjdGl2ZS1tZXRob2RzLXBhbmVsIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgPiAuZC1mbGV4ID4gLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxufVxuXG4uYWN0aXZlLW1ldGhvZHMtbGlzdCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IDEuMDYyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogNTZweDtcbiAgICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS0xMDApIDAlLCB2YXIoLS1zd3AtZ3JheS0yMDApIDEwMCUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gNCUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42ODc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjNyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gICAgICAgICYuYmctc3VjY2VzcyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2VzcykgMCUsIHZhcigtLXN3cC1zdWNjZXNzLWhvdmVyKSAxMDAlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5iZy1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktNDAwKSAwJSwgdmFyKC0tc3dwLWdyYXktNTAwKSAxMDAlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItd2lkdGg6IDEuNXB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcblxuICAgICAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMThweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyYXRpb24gRm9ybSBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWFya2V0cGxhY2Uge1xuICAgIC8vIEZpeCBjbG9zZSBidXR0b24gYWxpZ25tZW50IGluIGNhcmQgaGVhZGVyXG5cbiAgICAuY2FyZC1oZWFkZXIge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuYnRuLWljb24ge1xuICAgICAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIHNwYWNpbmcgYmV0d2VlbiBmb3JtIHN3aXRjaCBmaWVsZHMgKHRoZSBjb250YWluZXJzIHdpdGggYmFja2dyb3VuZHMpXG5cbiAgICBmb3JtIHtcblxuICAgICAgICAuZm9ybS1zd2l0Y2gtZmllbGQgKyAuZm9ybS1zd2l0Y2gtZmllbGQge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWRkIHNwYWNpbmcgYmV0d2VlbiByZWd1bGFyIGZvcm0gZmllbGRzXG5cbiAgICAgICAgLm1iLTMgKyAubWItMyB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBheW1lbnQgQ29uZmlndXJhdGlvbiBNb2RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tb2RhbC1iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYigwIDAgMCAvIDUwJSk7XG4gICAgei1pbmRleDogMTA0MDtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpO1xufVxuXG4ucGF5bWVudC1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5wYXltZW50LW1vZGFsLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSxcbiAgICAgICAgICAgICAgICAwIDEwcHggMTBweCAtNXB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDkyMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtOCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5wYXltZW50LW1vZGFsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4ucGF5bWVudC1tb2RhbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ucGF5bWVudC1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnBheW1lbnQtbW9kYWwtYm9keSB7XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIC8vIFJlbW92ZSBjYXJkIHN0eWxpbmcgZnJvbSBQYXltZW50U2V0dGluZ3Mgd2hlbiBpbnNpZGUgbW9kYWxcblxuICAgID4gZGl2ID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIHRoZSBjYXJkIGhlYWRlciBzaW5jZSBtb2RhbCBoYXMgaXRzIG93blxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBNb2JpbGUgYWRhcHRhdGlvbnNcbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLnBheW1lbnQtbW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtbW9kYWwtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiA5MHZoO1xuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAgICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1zbGlkZS11cC1tb2JpbGUgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNsaWRlLXVwLW1vYmlsZSB7XG5cbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByZXZlbnQgYm9keSBzY3JvbGwgd2hlbiBtb2RhbCBpcyBvcGVuXG5cbmJvZHk6aGFzKC5wYXltZW50LW1vZGFsKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFJlc3BvbnNpdmVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAubWFya2V0cGxhY2UtcGFuZWwge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmdhdGV3YXktZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cblxuICAgIC5hY3RpdmUtbWV0aG9kLWNhcmQge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAgICAgLmJ0bi1ncm91cCxcbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFicyBvbiBtb2JpbGVcblxuICAgIC5wYXltZW50LW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAucGF5bWVudC1tYXJrZXRwbGFjZSB7XG5cbiAgICAgICAgLm5hdi10YWJzLFxuICAgICAgICAubWFya2V0cGxhY2UtcGFuZWwsXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG4gICAgICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHYXRld2F5IEdyb3VwcyAoY2F0ZWdvcmlzZWQgbWFya2V0cGxhY2Ugc2VjdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nYXRld2F5LWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuZ2F0ZXdheS1ncm91cC1oZWFkZXIge1xuXG4gICAgICAgIGg2IHtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDdXN0b20gXCJjcmVhdGUgeW91ciBvd25cIiBjYXJkIHNpdHMgaW5zaWRlIHRoZSBvZmZsaW5lIGdyb3VwIG5vdywgc28gdGhlXG4gICAgLy8gbGVnYWN5IGZ1bGwtd2lkdGggZGl2aWRlciBpdCB1c2VkIHRvIGRyYXcgaXMgbm8gbG9uZ2VyIG5lZWRlZC5cblxuICAgIC5pcy1jdXN0b20tZ2F0ZXdheSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBMZWdhY3kgLyBhZHZhbmNlZCBwcm9jZXNzb3JzIGFyZSBjb2xsYXBzZWQgYXdheSBieSBkZWZhdWx0LlxuXG4uZ2F0ZXdheS1ncm91cC0tbW9yZSB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICA+IHN1bW1hcnkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciBoNiB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBcIkFib3V0IHRoaXMgZ2F0ZXdheVwiIGd1aWRhbmNlIHBhbmVsIChpbiB0aGUgY29uZmlnIG1vZGFsKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1nYXRld2F5LWFib3V0IHtcblxuICAgIC5hbGVydC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG5cbiAgICAucGF5bWVudC1nYXRld2F5LWNvbXBhcmUge1xuXG4gICAgICAgIHN1bW1hcnkge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogTm90aWZpY2F0aW9uIE1hcmtldHBsYWNlIFN0eWxlc1xuICogTm90aWZpY2F0aW9uLXNwZWNpZmljIHN0eWxlcy4gU2hhcmVkIG1hcmtldHBsYWNlIHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvZnVuY3Rpb25zJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy92YXJpYWJsZXMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL21peGlucyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE5vdGlmaWNhdGlvbiBNYXJrZXRwbGFjZSBDb250YWluZXJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm5vdGlmaWNhdGlvbi1tYXJrZXRwbGFjZSB7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWNvbG9ycyk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlLXNtIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1hcmtldHBsYWNlIFRhYnMgKFNNUy9DaGF0KSAtIEluc2lkZSBQYW5lbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubWFya2V0cGxhY2UtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4OiAxO1xuICAgIH1cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICAubmF2LWxpbmstaWNvbiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1ob3Zlcik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBTZWN0aW9uIEhlYWRlcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLXNlY3Rpb24taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJbnRlZ3JhdGlvbiBDYXJkcyBHcmlkXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1ncmlkIHtcbiAgICAvLyBDb250YWluZXIgZm9yIHRoZSBmdWxsIGludGVncmF0aW9uIGFyZWEgKG5vIGdyaWQgaGVyZSlcbn1cblxuLmludGVncmF0aW9uLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uaW50ZWdyYXRpb24tY2FyZHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblxuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobGcpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICB9XG59XG5cbi8vIEludGVncmF0aW9uIENhcmQgLSBWZXJ0aWNhbCBMYXlvdXRcblxuLmludGVncmF0aW9uLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDhweCAxNnB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjI1KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuaXMtY29uZmlndXJlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMyksIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wMSkpO1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yNSk7XG5cbiAgICAgICAgLmludGVncmF0aW9uLWNhcmQtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCksIHZhcigtLXN3cC1zdWNjZXNzKSk7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtaWNvbiB7XG4gICAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgICBoZWlnaHQ6IDY0cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCksIHZhcigtLXN3cC1ncmF5LTIwMCkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNnB4IHJnYigwIDAgMCAvIDYlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xuICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuICAgICAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWFjdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmVkIEludGVncmF0aW9ucyBQYW5lbCAtIFJpZ2h0IFNpZGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb25zLXBhbmVsIHtcblxuICAgIGg1IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgPiAuZC1mbGV4ID4gLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgfVxufVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbnMtbGlzdCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNvbmZpZ3VyZWQtaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjEpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1tZXRob2QtaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cblxuICAgIGg2IHtcbiAgICAgICAgZm9udC1zaXplOiAxLjA2MjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLW1ldGhvZC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMS41cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiBNb2RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNTAlKTtcbiAgICB6LWluZGV4OiAxMDQwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICB6LWluZGV4OiAxMDUwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMteGwpO1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMTAlKSxcbiAgICAgICAgICAgICAgICAwIDEwcHggMTBweCAtNXB4IHJnYigwIDAgMCAvIDQlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtOCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwIDAuM3MgY3ViaWMtYmV6aWVyKDAuMTYsIDEsIDAuMywgMSk7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1jbG9zZSB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1ib2R5IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gUmVtb3ZlIGNhcmQgc3R5bGluZyBmcm9tIE5vdGlmaWNhdGlvblRyYW5zcG9ydENvbmZpZ3VyYXRpb24gd2hlbiBpbnNpZGUgbW9kYWxcblxuICAgID4gZGl2ID4gLmNhcmQge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIHRoZSBjYXJkIGhlYWRlciBzaW5jZSBtb2RhbCBoYXMgaXRzIG93blxuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtYm9keSB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNhcmQtZm9vdGVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwIDAgMDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgUmVzcG9uc2l2ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgICAgIC5idG4tZ3JvdXAsXG4gICAgICAgICAgICAuZC1mbGV4LmdhcC0yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgICAgIC5idG4ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhvcml6b250YWwgc2Nyb2xsaW5nIHRhYnMgb24gbW9iaWxlXG5cbiAgICAubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlID4gLm5hdi10YWJzIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tc3dwLXNwYWNlLTQpICogLTEpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tbW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tb2RhbC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBhbmltYXRpb246IG5vdGlmaWNhdGlvbi1zbGlkZS11cC1tb2JpbGUgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbiAgICB9XG5cbiAgICBAa2V5ZnJhbWVzIG5vdGlmaWNhdGlvbi1zbGlkZS11cC1tb2JpbGUge1xuXG4gICAgICAgIGZyb20ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdG8ge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBQcmV2ZW50IGJvZHkgc2Nyb2xsIHdoZW4gbW9kYWwgaXMgb3BlblxuXG5ib2R5Omhhcygubm90aWZpY2F0aW9uLW1vZGFsKSB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHJpbnQgU3R5bGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlIHtcblxuICAgICAgICAubmF2LXRhYnMsXG4gICAgICAgIC5tYXJrZXRwbGFjZS1wYW5lbCxcbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/