/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[3]!./node_modules/@solidworx/platform/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[4]!./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: #2e963a;
  --swp-primary-rgb: 46, 150, 58;
  --swp-primary-hover: #268032;
  --swp-primary-dark: #1f6c29;
  --swp-primary-light: #e8f5e9;
  --swp-primary-lighter: #f1f9f2;
  --swp-secondary: #f0a015;
  --swp-secondary-rgb: 240, 160, 21;
  --swp-secondary-hover: #d89012;
  --swp-secondary-dark: #c8820e;
  --swp-secondary-light: #fff8e1;
  --swp-secondary-lighter: #fffcf0;
  --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-light: #fee2e2;
  --swp-danger-lighter: #fef2f2;
  --swp-warning: #f59e0b;
  --swp-warning-rgb: 245, 158, 11;
  --swp-warning-hover: #d97706;
  --swp-warning-light: #fef3c7;
  --swp-warning-lighter: #fffbeb;
  --swp-info: #3b82f6;
  --swp-info-rgb: 59, 130, 246;
  --swp-info-hover: #2563eb;
  --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-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);
}

: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(46 150 58 / 25%);
  --swp-shadow-primary-lg: 0 8px 20px 0 rgb(46 150 58 / 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(46 150 58 / 15%);
  --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-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-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-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;
}

:root {
  --tblr-primary: var(--swp-primary);
  --tblr-primary-rgb: var(--swp-primary-rgb);
  --tblr-success: var(--swp-success);
  --tblr-success-rgb: var(--swp-success-rgb);
  --tblr-danger: var(--swp-danger);
  --tblr-danger-rgb: var(--swp-danger-rgb);
  --tblr-warning: var(--swp-warning);
  --tblr-warning-rgb: var(--swp-warning-rgb);
  --tblr-info: var(--swp-info);
  --tblr-info-rgb: var(--swp-info-rgb);
  --tblr-link-color: var(--swp-link-color);
  --tblr-link-hover-color: var(--swp-link-hover-color);
  --tblr-body-bg: var(--swp-body-bg);
  --tblr-body-color: var(--swp-body-color);
  --tblr-card-bg: var(--swp-card-bg);
  --tblr-modal-bg: var(--swp-modal-bg);
  --tblr-table-bg: var(--swp-table-bg);
  --tblr-gray-50: var(--swp-gray-50);
  --tblr-gray-100: var(--swp-gray-100);
  --tblr-gray-200: var(--swp-gray-200);
  --tblr-gray-300: var(--swp-gray-300);
  --tblr-gray-400: var(--swp-gray-400);
  --tblr-gray-500: var(--swp-gray-500);
  --tblr-gray-600: var(--swp-gray-600);
  --tblr-gray-700: var(--swp-gray-700);
  --tblr-gray-800: var(--swp-gray-800);
  --tblr-gray-900: var(--swp-gray-900);
  --tblr-shadow-xs: var(--swp-shadow-xs);
  --tblr-shadow-sm: var(--swp-shadow-sm);
  --tblr-shadow-md: var(--swp-shadow-md);
  --tblr-shadow-lg: var(--swp-shadow-lg);
  --tblr-shadow-xl: var(--swp-shadow-xl);
  --tblr-shadow-2xl: var(--swp-shadow-2xl);
  --tblr-btn-font-weight: var(--swp-btn-font-weight);
  --tblr-btn-padding-x: var(--swp-btn-padding-x);
  --tblr-btn-padding-y: var(--swp-btn-padding-y);
  --tblr-modal-padding: var(--swp-modal-padding);
}

/**
 * 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 Invoice and Quote view pages.
 * Uses generic `doc-view-*` / `doc-*` class names to avoid duplication.
 * Both invoice-view.scss and quote-view.scss use these classes directly.
 */
.doc-view-page {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--swp-space-6);
}

.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-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;
  gap: var(--swp-space-3);
}
@media (width <= 768px) {
  .doc-view-header-actions {
    width: 100%;
    justify-content: flex-end;
  }
}

.doc-view-utility-actions {
  display: flex;
  align-items: center;
  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;
}

.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);
}

.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-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: #9aa0ac;
  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: #ffffff;
  border: 1px solid #d0d3d8;
  border-radius: 6px;
  font-size: 0.875rem;
  color: #354052;
  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: #2e963a;
  box-shadow: 0 0 0 3px rgba(46, 150, 58, 0.12);
  background-color: #ffffff;
  outline: none;
}
.global-search-input::placeholder {
  color: #9aa0ac;
}
.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: #9aa0ac;
  background-color: #f5f7fb;
  border: 1px solid #e6e7e9;
  border-radius: 3px;
  line-height: 1.4;
}

.search-help-trigger {
  background: none;
  border: 1px solid #e0e3e8;
  padding: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #adb5bd;
  transition: color 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
  line-height: 1;
}
.search-help-trigger:hover {
  color: #495057;
  border-color: #9aa0ac;
}

.search-help-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: #9aa0ac;
  margin-bottom: 0.75rem;
}

.search-help-op {
  font-size: 0.8rem;
  font-family: var(--tblr-font-monospace);
  background: #f5f7fb;
  padding: 0.15rem 0.5rem;
  border-radius: 4px;
  color: #354052;
}

.search-help-example {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 12px;
  background: #f8fafc;
  border-radius: 6px;
  border-left: 3px solid #2e963a;
}
.search-help-example code {
  font-size: 0.8rem;
  color: #1a56db;
  background: none;
  padding: 0;
  word-break: break-all;
}
.search-help-example span {
  font-size: 0.775rem;
  color: #9aa0ac;
}

#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: #ffffff;
  border: 1px solid #e6e7e9;
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  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: #9aa0ac;
  font-size: 0.875rem;
}

.search-results {
  max-height: 440px;
  overflow-y: auto;
  overscroll-behavior: contain;
  background-color: #ffffff;
  border-radius: 8px;
}
.search-results::-webkit-scrollbar {
  width: 4px;
}
.search-results::-webkit-scrollbar-track {
  background: transparent;
}
.search-results::-webkit-scrollbar-thumb {
  background-color: #e0e3e8;
  border-radius: 2px;
}

.search-group + .search-group {
  border-top: 1px solid #f0f2f5;
}
.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: #9aa0ac;
}

.search-result-item.is-active .search-result-link {
  background-color: #f5f7fb;
}
.search-result-item:hover .search-result-link {
  background-color: #f5f7fb;
  text-decoration: none;
}

.search-result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.875rem;
  color: #354052;
  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: #354052;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-subtitle {
  font-size: 0.775rem;
  color: #9aa0ac;
  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: #354052;
  white-space: nowrap;
}

.search-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2.5rem 1rem;
  color: #9aa0ac;
  background-color: #ffffff;
}
.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(--tblr-danger, #d63939);
  text-align: center;
  background-color: #ffffff;
}

.search-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 0.15rem 0.5rem;
  background-color: #e8f0fe;
  color: #1a56db;
  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 #f0f2f5;
  min-height: 0;
}
.search-chips-bar:empty {
  display: none;
}

.search-suggestions {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 220px;
  background: #ffffff;
  border: 1px solid #e6e7e9;
  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: #9aa0ac;
}
.search-suggestions-item {
  padding: 0.4rem 0.75rem;
  font-size: 0.85rem;
  cursor: pointer;
  color: #354052;
}
.search-suggestions-item:hover, .search-suggestions-item.is-active {
  background-color: #f5f7fb;
}
.search-suggestions-item code {
  font-size: 0.75rem;
  color: #6c757d;
  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-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 {
  position: relative;
  flex: 1;
  max-width: 320px;
}
.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-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: 320px;
  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);
  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 .row {
  --bs-gutter-x: 0.5rem;
}

.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 > div:has(> div > input[type=date]) {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--swp-space-2);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > 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);
}
.datagrid-filter-widget > div:has(> div > input[type=date]) > div input[type=date] {
  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 {
  padding-top: var(--swp-space-4);
  margin-top: var(--swp-space-2);
  border-top: 1px solid var(--swp-border-light);
}

.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 .datagrid-filter-field > .form-label {
  display: none;
}
.datagrid-filter-panel .datagrid-filter-field .row .form-label {
  display: block;
  font-size: var(--swp-text-xs);
  font-weight: var(--swp-font-normal);
  color: var(--swp-text-muted);
  margin-bottom: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div {
  padding-left: var(--swp-space-1);
  padding-right: var(--swp-space-1);
}
.datagrid-filter-panel .datagrid-filter-field .row > div:first-child {
  padding-left: 0;
}
.datagrid-filter-panel .datagrid-filter-field .row > div:last-child {
  padding-right: 0;
}
.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;
}

.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: #065f46;
  background: var(--swp-success-lighter);
}
.datagrid-status.status-danger {
  color: #991b1b;
  background: var(--swp-danger-lighter);
}
.datagrid-status.status-warning {
  color: #92400e;
  background: var(--swp-warning-lighter);
}
.datagrid-status.status-info {
  color: #1e40af;
  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: rgba(255, 255, 255, 0.7);
  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(--tblr-font-weight-semibold);
  color: var(--swp-text-primary);
}
.api-token-history .table {
  margin-bottom: 0;
  background: var(--tblr-white);
  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(--tblr-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(--tblr-font-weight-medium);
}

/**
 * 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);
}

/**
 * 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);
}

.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-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: 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)) .billing-items-header-row {
  grid-template-columns: minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
.billing-items-list:not(:has(.column-tax)) .billing-item-row {
  grid-template-columns: minmax(0, 3.8fr) minmax(100px, 0.9fr) 56px minmax(60px, 0.4fr) 24px;
}
@media (width <= 900px) {
  .billing-items-list:not(:has(.column-tax)) .billing-item-row {
    grid-template-columns: 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: 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;
  }
}

.billing-item-row {
  display: grid;
  grid-template-columns: 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 .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 .mobile-label {
  display: none;
}
@media (width <= 900px) {
  .billing-item-row {
    display: grid;
    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-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;
}

.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(10rem, 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 {
    border-radius: 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(--tblr-info-border-subtle);
  border-radius: var(--swp-radius-md);
  background: var(--tblr-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(--tblr-info-text-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(--tblr-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);
}

/**
 * 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-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-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;
}

@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);
}

.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: #ffffff;
  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: #ffffff;
  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 \3c 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 - 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.
 */
/**
 * SolidInvoice — Vertical Navbar (Sidebar)
 *
 * Tabler ships `.navbar-vertical.navbar-dark` as a heavy slate panel (gray-800)
 * that PRODUCT.md names as the AdminLTE anti-reference the rewrite is escaping.
 * This file recolors the sidebar one shade lighter (gray-700) so it still
 * carries presence, but uses tinted neutrals and a green-tinted active state
 * to differentiate it from generic Tabler admin output.
 *
 * Selector specificity targets `.navbar-vertical` so Tabler's mobile-collapse,
 * drawer, and dropdown rules continue to apply.
 */
.navbar.navbar-vertical,
.navbar.navbar-vertical.navbar-dark {
  background-color: var(--swp-gray-700);
  color: var(--swp-gray-300);
  border-right: 1px solid var(--swp-gray-800);
  box-shadow: none;
}
.navbar.navbar-vertical .navbar-brand,
.navbar.navbar-vertical.navbar-dark .navbar-brand {
  color: var(--swp-gray-50);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .navbar-brand-autodark,
.navbar.navbar-vertical.navbar-dark .navbar-brand-autodark {
  filter: none;
}
.navbar.navbar-vertical .nav-link,
.navbar.navbar-vertical.navbar-dark .nav-link {
  color: var(--swp-gray-300);
  border-radius: var(--swp-radius-md);
  transition: background-color var(--swp-transition-fast), color var(--swp-transition-fast);
}
.navbar.navbar-vertical .nav-link .nav-link-icon,
.navbar.navbar-vertical .nav-link .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link .nav-link-title {
  color: inherit;
}
.navbar.navbar-vertical .nav-link:hover,
.navbar.navbar-vertical.navbar-dark .nav-link:hover {
  background-color: var(--swp-gray-600);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link:focus-visible,
.navbar.navbar-vertical.navbar-dark .nav-link:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
  color: var(--swp-gray-50);
}
.navbar.navbar-vertical .nav-link.active,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active,
.navbar.navbar-vertical.navbar-dark .nav-link.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
  font-weight: var(--swp-font-semibold);
}
.navbar.navbar-vertical .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .nav-link.active .nav-link-title,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active .nav-link-icon,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .nav-link.active .nav-link-title,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active .nav-link-icon,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active .nav-link-title {
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-link.active:hover,
.navbar.navbar-vertical .navbar-nav .nav-item.active > .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .nav-link.active:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .nav-item.active > .nav-link.active:hover {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .nav-subtitle,
.navbar.navbar-vertical .nav-header,
.navbar.navbar-vertical.navbar-dark .nav-subtitle,
.navbar.navbar-vertical.navbar-dark .nav-header {
  color: var(--swp-gray-400);
  text-transform: uppercase;
  letter-spacing: var(--swp-tracking-wider);
  font-weight: var(--swp-font-semibold);
  font-size: var(--swp-text-xs);
}
.navbar.navbar-vertical .nav-link-toggle,
.navbar.navbar-vertical .dropdown-toggle::after,
.navbar.navbar-vertical.navbar-dark .nav-link-toggle,
.navbar.navbar-vertical.navbar-dark .dropdown-toggle::after {
  color: var(--swp-gray-400);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu {
  background-color: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  box-shadow: var(--swp-shadow-md);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item {
  color: var(--swp-text-secondary);
  border-radius: var(--swp-radius-sm);
  --tblr-nav-link-icon-color: currentcolor;
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:hover, .navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item:focus,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:hover,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item:focus {
  background-color: var(--swp-surface-hover);
  color: var(--swp-text-primary);
}
.navbar.navbar-vertical .navbar-nav .dropdown-menu .dropdown-item.active,
.navbar.navbar-vertical.navbar-dark .navbar-nav .dropdown-menu .dropdown-item.active {
  background-color: var(--swp-primary-light);
  color: var(--swp-primary-dark);
}
.navbar.navbar-vertical .navbar-toggler,
.navbar.navbar-vertical.navbar-dark .navbar-toggler {
  color: var(--swp-gray-200);
  border-color: var(--swp-gray-600);
}
.navbar.navbar-vertical .navbar-toggler:focus-visible,
.navbar.navbar-vertical.navbar-dark .navbar-toggler:focus-visible {
  outline: none;
  box-shadow: var(--swp-ring-primary);
}

@media (width < 992px) {
  .navbar.navbar-vertical.navbar-expand-lg .navbar-collapse {
    background-color: var(--swp-gray-700);
  }
}

/**
 * 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);
}

.ts-wrapper.full .ts-control {
  background-color: var(--swp-surface);
}

.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;
}

@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-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: 0.5rem;
  border: 1px solid #e2e8f0;
  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 #cbd5e1;
  border-radius: 0.5rem;
  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);
}
.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: #fef2f2;
  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-hero-stats {
  display: grid;
  gap: var(--swp-space-4);
  grid-template-columns: 1fr;
}
@media (width >= 577px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (width >= 1201px) {
  .dashboard-hero-stats {
    grid-template-columns: repeat(9, 1fr);
  }
}

.stat-card {
  background: var(--swp-surface);
  border: 1px solid var(--swp-border-light);
  border-radius: var(--swp-radius-lg);
  box-shadow: var(--swp-shadow-sm);
  padding: var(--swp-space-6);
}
@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: var(--swp-text-3xl);
}

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

.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);
}
.stat-icon--success {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.stat-icon--danger {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.stat-icon--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning);
}
.stat-icon--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.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: 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-hover);
}
.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;
}

.dashboard-chart-container {
  min-height: 280px;
  position: relative;
}

.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%;
  transform: translate(-50%, calc(-50% - var(--swp-space-1-5)));
  text-align: center;
  pointer-events: none;
  z-index: 1;
}

.dashboard-donut-total {
  display: block;
  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);
  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);
  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);
}
.attention-section-header--warning {
  color: var(--swp-warning-hover);
}
.attention-section-header--info {
  color: var(--swp-info);
}
.attention-section-header--primary {
  color: var(--swp-primary);
}

.attention-badge {
  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);
}
.attention-badge--warning {
  background: var(--swp-warning-light);
  color: var(--swp-warning-hover);
}
.attention-badge--info {
  background: var(--swp-info-light);
  color: var(--swp-info);
}
.attention-badge--primary {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}

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

.attention-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  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;
  gap: var(--swp-space-3);
  flex-shrink: 0;
}

.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, 1fr);
  gap: var(--swp-space-3);
}

.quick-action-btn {
  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-hover);
}
.quick-action-btn--info:hover {
  background: var(--swp-info-light);
}
.quick-action-btn--success {
  background: var(--swp-success-lighter);
  color: var(--swp-success-hover);
}
.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 {
  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);
}
.activity-icon--invoice, .activity-icon--invoice_sent {
  background: var(--swp-primary-light);
  color: var(--swp-primary);
}
.activity-icon--quote_accepted {
  background: var(--swp-success-light);
  color: var(--swp-success);
}
.activity-icon--quote_declined {
  background: var(--swp-danger-light);
  color: var(--swp-danger);
}
.activity-icon--recurring_generated {
  background: var(--swp-info-light);
  color: var(--swp-info);
}

.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 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--swp-text-secondary);
  text-decoration: none;
  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.
 */
.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-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-bottom: 0;
  border-bottom: none;
}
.client-tabs-card {
  /* .nav-tabs {
      border-bottom: 1px solid var(--swp-border);
      margin: 0 calc(-1 * var(--swp-space-6));
      padding: 0 var(--swp-space-6);
  } */
}
.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(46, 150, 58, 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);
}

.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 {
    text-align: center;
  }
  .client-hero-meta {
    justify-content: center;
  }
  .client-tabs-card .nav-tabs {
    margin: 0 calc(-1 * var(--swp-space-4));
    padding: 0 var(--swp-space-4);
    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);
  }
}
@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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQSxnQkFBZ0I7QUFBaEI7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUNBQTs7Ozs7O0VBQUE7QUFZQTtFQU1JO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQU1BO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBVUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFNQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBU0E7RUFDQTtFQUNBO0VBQ0E7RUFLQTtFQUNBO0VBTUE7RUFDQTtFQUNBO0VBTUE7RUFDQTtBRjlDSjs7QUVxREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRmxESjs7QUV5REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRnRESjs7QUU2REE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0FGakVKOztBRXdFQTtFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFHQTs7a0VBQUE7RUFHQTtFQUNBO0VBQ0E7QUY1RUo7O0FFbUZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBRmhGSjs7QUV1RkE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBS0E7RUFDQTtFQUNBO0VBQ0E7RUFJQTtFQUlBO0FGekdKOztBRTBIQTtFQU1JO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFHQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0VBQ0E7RUFDQTtFQUNBO0FGdElKOztBR25QQTs7Ozs7RUFBQTtBQVdBO0VBRUk7OztxQ0FBQTtFQU1BO3dFQUFBO0VBSUE7QUg0T0o7O0FHck9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUh3T0o7O0FHak9BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIb09KOztBRzdOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSGdPSjs7QUd6TkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUg0Tko7O0FHbk5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSHNOSjs7QUdqTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSG9OSjs7QUcvTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSGtOSjs7QUc3TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBSGdOSjs7QUczTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSDhNSjtBRzVNSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIOE1SOztBR3hNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIMk1KOztBR3RNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIeU1KOztBR3BNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FIdU1KOztBR2xNQTtFQUNJO0VBQ0E7QUhxTUo7O0FHaE1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FIbU1KOztBRzlMQTtFQUNJO0VBQ0E7QUhpTUo7O0FHNUxBO0VBQ0k7QUgrTEo7O0FHMUxBO0VBQ0k7RUFDQTtFQUNBO0FINkxKO0FHM0xJO0VBQ0k7RUFDQTtBSDZMUjs7QUd2TEE7RUFDSTtFQUNBO0VBQ0E7QUgwTEo7O0FHckxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUh3TEo7O0FHckxBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUh3TEo7O0FJdmFBOzs7Ozs7OztFQUFBO0FDQUE7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBcUJBO0VBQ0k7QUw4YUo7O0FLdmFBO0VBQ0k7RUFDQTtBTDBhSjtBS3hhSTtFQUFZO0FMMmFoQjtBS3phSTtFQUFZO0FMNGFoQjtBSzFhSTtFQUFZO0FMNmFoQjs7QUt0YUE7RUFDSTtFQUNBO0FMeWFKOztBS3RhQTtFQUNJO0VBQ0E7RUFDQTtBTHlhSjs7QUt0YUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUx5YUo7QUt2YUk7RUFDSTtFQUNBO0FMeWFSOztBS3JhQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUx3YUo7O0FLcmFBO0VBQ0k7RUFDQTtFQUNBO0FMd2FKOztBS2phQTtFQUNJO0VBQ0E7RUFDQTtBTG9hSjs7QUs3WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMZ2FKO0FLN1pJO0VBQ0k7QUwrWlI7QUs1Wkk7RUFDSTtFQUNBO0FMOFpSOztBS3RaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTHlaSjs7QUt0WkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUx5Wko7QUt2Wkk7RUFDSTtFQUNBO0FMeVpSOztBS3JaQTtFQUNJO0VBQ0E7QUx3Wko7O0FLclpBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMd1pKOztBS3JaQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FMd1pKOztBS2paQTtFQUNJO0FMb1pKOztBSzdZQTtFQUNJO0VBQ0E7RUFDQTtBTGdaSjtBSzlZSTtFQUxKO0lBTVE7SUFDQTtFTGlaTjtBQUNGOztBSzlZQTtFQUNJO0VBQ0E7QUxpWko7O0FLOVlBO0VBQ0k7QUxpWko7O0FLMVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUw2WUo7O0FLMVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FMNllKO0FLM1lJO0VBQVk7QUw4WWhCOztBS3ZZQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUwwWUo7QUt4WUk7O0VBQ0k7RUFDQTtBTDJZUjtBS3hZSTs7RUFDSTtBTDJZUjs7QUtuWUE7RUFFSTtJQUNJO0VMcVlOO0VLbFlFO0lBQ0k7SUFDQTtFTG9ZTjtFS2pZRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VMbVlOO0VLaFlFO0lBQ0k7SUFDQTtFTGtZTjtFSy9YRTtJQUNJO0VMaVlOO0VLOVhFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7RUxnWU47RUs3WEU7SUFDSTtJQUNBO0VMK1hOO0VLNVhFO0lBQ0k7RUw4WE47RUszWEU7SUFDSTtFTDZYTjtFSzNYTTtJQUNJO0VMNlhWO0FBQ0Y7QUtyWEE7RUFFSTtJQUNJO0VMc1hOO0VLblhFO0lBQ0k7RUxxWE47RUtsWEU7SUFDSTtFTG9YTjtBQUNGO0FNM3JCQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7RUFDQTtBTndyQko7O0FNanJCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTm9yQko7QU1sckJJO0VBWEo7SUFZUTtJQUNBO0VOcXJCTjtBQUNGOztBTWxyQkE7RUFDSTtFQUNBO0VBQ0E7QU5xckJKOztBTWxyQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOcXJCSjs7QU1sckJBO0VBQ0k7RUFDQTtFQUNBO0FOcXJCSjs7QU1sckJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFyQko7O0FNbHJCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOcXJCSjs7QU1sckJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFyQko7QU1uckJJO0VBQ0k7QU5xckJSOztBTS9xQkE7RUFDSTtFQUNBO0VBQ0E7QU5rckJKO0FNaHJCSTtFQUxKO0lBTVE7SUFDQTtFTm1yQk47QUFDRjs7QU1ockJBO0VBQ0k7RUFDQTtFQUNBO0FObXJCSjs7QU05cUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTmlyQko7QU0vcUJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOaXJCUjtBTS9xQlE7RUFDSTtBTmlyQlo7QU05cUJRO0VBQ0k7QU5nckJaO0FNN3FCUTtFQUNJO0FOK3FCWjtBTTNxQkk7RUFDSTtFQUNBO0FONnFCUjs7QU1ycUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTndxQko7QU10cUJJO0VBQ0k7RUFDQTtBTndxQlI7QU1ycUJJO0VBQ0k7QU51cUJSOztBTW5xQkE7RUFDSTtFQUNBO0VBQ0E7QU5zcUJKO0FNcHFCSTtFQUNJO0VBQ0E7QU5zcUJSOztBTTlwQkE7RUFDSTtFQUNBO0VBQ0E7QU5pcUJKO0FNL3BCSTtFQUxKO0lBTVE7RU5rcUJOO0FBQ0Y7O0FNM3BCQTtFQUNJO0FOOHBCSjs7QU0zcEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44cEJKOztBTXhwQkE7Ozs7RUFJSTtFQUNBO0VBQ0E7RUFDQTtBTjJwQko7QU1ycEJJOzs7O0VBQ0k7RUFDQTtBTjBwQlI7O0FNcHBCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnVwQko7QU1ycEJJO0VBUko7SUFTUTtJQUNBO0VOd3BCTjtBQUNGOztBTXJwQkE7RUFDSTtFQUNBO0VBQ0E7QU53cEJKOztBTXJwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOd3BCSjs7QU1ycEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU53cEJKOztBTXJwQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU53cEJKO0FNdHBCSTtFQUNJO0VBQ0E7RUFDQTtBTndwQlI7QU1ycEJJO0VBQ0k7RUFDQTtBTnVwQlI7QU1ycEJRO0VBQ0k7RUFDQTtBTnVwQlo7QU1ucEJJO0VBQ0k7QU5xcEJSO0FNbHBCSTtFQUNJO0FOb3BCUjtBTWxwQlE7RUFDSTtFQUNBO0FOb3BCWjs7QU03b0JBO0VBQ0k7QU5ncEJKO0FNOW9CSTtFQUhKO0lBSVE7RU5pcEJOO0FBQ0Y7O0FNOW9CQTtFQUNJO0VBQ0E7QU5pcEJKO0FNN29CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTitvQlo7QU03b0JZO0VBSUk7QU40b0JoQjtBTXZvQlE7RUF0Qko7SUF1QlE7RU4wb0JWO0FBQ0Y7QU1yb0JRO0VBQ0k7QU51b0JaO0FNcm9CWTtFQUNJO0FOdW9CaEI7QU1ub0JZO0VBUko7SUFTUTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RU5zb0JkO0VNcG9CYztJQUNJO0VOc29CbEI7RU1ub0JjO0lBQ0k7RU5xb0JsQjtBQUNGO0FNam9CUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5tb0JaO0FNam9CWTtFQUNJO0VBQ0E7QU5tb0JoQjtBTWhvQlk7RUFJSTtFQUNBO0VBQ0E7QU4rbkJoQjtBTTVuQlk7RUFDSTtFQUNBO0FOOG5CaEI7QU0xbkJZO0VBM0JKO0lBNEJRO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFTjZuQmQ7RU0zbkJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VONm5CbEI7RU0xbkJjO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VONG5CbEI7RU0xbkJrQjtJQUNJO0VONG5CdEI7RU14bkJjO0lBQ0k7SUFDQTtFTjBuQmxCO0FBQ0Y7QU1wbkJJO0VBRUk7SUFDSTtFTnFuQlY7RU1sbkJNO0lBQ0k7RU5vbkJWO0VNam5CTTtJQUNJO0VObW5CVjtFTWhuQk07SUFDSTtFTmtuQlY7RU0vbUJNO0lBQ0k7RU5pbkJWO0FBQ0Y7O0FNM21CQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOOG1CSjs7QU0zbUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU44bUJKOztBTTNtQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOOG1CSjtBTTVtQkk7RUFDSTtFQUNBO0FOOG1CUjtBTTNtQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FONm1CUjs7QU12bUJBO0VBQ0k7QU4wbUJKOztBTXJtQkE7RUFDSTtBTndtQko7O0FNcm1CQTtFQUNJO0VBQ0E7RUFDQTtBTndtQko7QU10bUJJO0VBQ0k7RUFDQTtFQUNBO0FOd21CUjtBTWxtQkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTm9tQlI7O0FNOWxCQTtFQUNJO0VBQ0E7RUFDQTtBTmltQko7O0FNNWxCSTtFQUNJO0VBQ0E7RUFDQTtBTitsQlI7O0FNM2xCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOOGxCSjs7QU0zbEJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTjhsQko7O0FNdmxCQTtFQUNJO0VBQ0E7RUFDQTtBTjBsQko7QU14bEJJO0VBTEo7SUFNUTtJQUNBO0VOMmxCTjtBQUNGOztBTXhsQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTjJsQko7O0FNeGxCQTtFQUNJO0FOMmxCSjs7QU14bEJBO0VBQ0k7QU4ybEJKOztBTXhsQkE7RUFDSTtBTjJsQko7O0FNeGxCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU4ybEJKOztBTXhsQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FOMmxCSjs7QU14bEJBO0VBQ0k7RUFDQTtBTjJsQko7O0FNeGxCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOMmxCSjs7QU14bEJBO0VBQ0k7QU4ybEJKOztBTXRsQkE7RUFDSTtFQUNBO0VBQ0E7QU55bEJKOztBTXBsQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTnVsQko7QU1ybEJJO0VBQ0k7RUFDQTtBTnVsQlI7QU1wbEJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5zbEJSO0FNaGxCSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOa2xCUjtBTTdrQkk7RUFDSTtFQUNBO0FOK2tCUjs7QU0za0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU44a0JKO0FNNWtCSTtFQUNJO0FOOGtCUjs7QU14a0JJO0VBQ0k7QU4ya0JSOztBTXJrQkE7RUFDSTtFQUNBO0VBQ0E7QU53a0JKOztBTXJrQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBTndrQko7QU10a0JJO0VBQ0k7RUFDQTtBTndrQlI7O0FNcGtCQTtFQUNJO0VBQ0E7RUFDQTtBTnVrQko7O0FNcGtCQTtFQUNJO0VBQ0E7RUFDQTtBTnVrQko7O0FNcGtCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FOdWtCSjs7QU1wa0JBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU51a0JKO0FNcmtCSTs7RUFDSTtBTndrQlI7O0FNbGtCQTtFQUNJO0VBQ0E7RUFDQTtBTnFrQko7O0FNbGtCQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5xa0JKOztBTWxrQkE7RUFDSTtFQUNBO0FOcWtCSjs7QU1sa0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5xa0JKOztBTWxrQkE7RUFDSTtFQUNBO0VBQ0E7QU5xa0JKOztBTWxrQkE7RUFDSTtFQUNBO0VBQ0E7QU5xa0JKOztBTWxrQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBTnFrQko7QU1ua0JJOztFQUNJO0FOc2tCUjs7QU1sa0JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QU5xa0JKOztBTWhrQkE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QU5ta0JKO0FNamtCSTs7RUFDSTtFQUNBO0FOb2tCUjs7QU1oa0JBO0VBQ0k7QU5ta0JKOztBTTVqQkE7RUFFSTtJQUNJO0lBQ0E7SUFDQTtFTjhqQk47RU0zakJFO0lBQ0k7RU42akJOO0VNMWpCRTtJQUNJO0VONGpCTjtFTXpqQkU7SUFDSTtJQUNBO0VOMmpCTjtFTXhqQkU7SUFDSTtJQUNBO0VOMGpCTjtFTXJqQk07SUFDSTtJQUNBO0lBQ0E7RU51akJWO0VNbmpCRTtJQUNJO0lBQ0E7SUFDQTtFTnFqQk47RU1sakJFO0lBQ0k7SUFDQTtJQUNBO0VOb2pCTjtFTWpqQkU7SUFDSTtFTm1qQk47QUFDRjtBT2g3Q0E7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0FQNjZDSjs7QU90NkNBO0VBQ0k7RUFDQTtBUHk2Q0o7QU9yNkNRO0VBQ0k7RUFDQTtFQUNBO0FQdTZDWjtBT242Q0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUHE2Q1I7QU9sNkNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBvNkNSOztBTzU1Q0E7RUFDSTtFQUNBO0VBQ0E7QVArNUNKO0FPNzVDSTtFQUNJO0FQKzVDUjtBTzU1Q0k7RUFDSTtBUDg1Q1I7O0FPcDVDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQdTVDSjs7QU9sNUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUHE1Q0o7O0FPbDVDQTtFQUNJO0VBQ0E7RUFDQTtBUHE1Q0o7O0FPaDVDQTtFQUNJO0VBQ0E7QVBtNUNKOztBTzU0Q0k7RUFDSTtFQUNBO0VBQ0E7QVArNENSOztBT3Y0Q0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUDA0Q0o7QU94NENJO0VBQ0k7QVAwNENSO0FPdjRDSTtFQUNJO0FQeTRDUjs7QU9yNENBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB3NENKOztBT3I0Q0E7RUFDSTtFQUNBO0FQdzRDSjs7QU9yNENBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVB3NENKOztBT2o0Q0E7RUFDSTtBUG80Q0o7O0FPajRDQTtFQUNJO0VBQ0E7RUFDQTtBUG80Q0o7O0FPajRDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQbzRDSjs7QU9qNENBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVBvNENKOztBTzczQ0E7RUFDSTtBUGc0Q0o7QU81M0NRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FQODNDWjtBT3gzQ1E7RUFDSTtFQUNBO0FQMDNDWjtBT3gzQ1k7RUFDSTtBUDAzQ2hCO0FPdjNDWTtFQUNJO0FQeTNDaEI7QU9yM0NRO0VBQ0k7RUFDQTtFQUNBO0FQdTNDWjtBT24zQ0k7RUFDSTtFQUNBO0VBQ0E7QVBxM0NSO0FPbDNDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQbzNDUjs7QU81MkNBO0VBQ0k7RUFDQTtFQUNBO0FQKzJDSjtBTzcyQ0k7RUFDSTtBUCsyQ1I7O0FPMzJDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQODJDSjtBTzUyQ0k7RUFDSTtBUDgyQ1I7O0FPMTJDQTtFQUNJO0VBQ0E7RUFDQTtBUDYyQ0o7O0FPMTJDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVA2MkNKOztBTzEyQ0E7RUFDSTtFQUNBO0VBQ0E7QVA2MkNKO0FPMzJDSTtFQUNJO0VBQ0E7QVA2MkNSO0FPMTJDSTtFQUNJO0VBQ0E7QVA0MkNSO0FPejJDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FQMjJDUjs7QU9qMkNJO0VBQ0k7RUFDQTtFQUNBO0FQbzJDUjtBT2oyQ0k7RUFDSTtFQUNBO0FQbTJDUjtBT2gyQ0k7RUFDSTtFQUNBO0VBQ0E7QVBrMkNSOztBT3gxQ0E7RUFDSTtFQUNBO0FQMjFDSjs7QU90MUNBO0VBQ0k7RUFDQTtBUHkxQ0o7O0FPcDFDQTtFQUNJO0VBQ0E7QVB1MUNKOztBT3AxQ0E7RUFDSTtFQUNBO0FQdTFDSjtBT3IxQ0k7RUFDSTtBUHUxQ1I7O0FPLzBDQTtFQUVJOztJQUVJO0VQaTFDTjtFTzkwQ0U7SUFDSTtFUGcxQ047QUFDRjtBTzcwQ0E7RUFFSTtJQUNJO0VQODBDTjtFTzMwQ0U7SUFDSTtFUDYwQ047RU8xMENFO0lBQ0k7RVA0MENOO0VPdjBDTTtJQUNJO0VQeTBDVjtBQUNGO0FPcjBDQTtFQUVJO0lBQ0k7SUFDQTtFUHMwQ047RU9uMENFO0lBQ0k7RVBxMENOO0VPbDBDRTs7SUFFSTtFUG8wQ047RU8vekNFO0lBQ0k7RVBpMENOO0VPL3pDTTtJQUNJO0lBQ0E7RVBpMENWO0VPOXpDTTtJQUNJO0VQZzBDVjtFTzd6Q007SUFDSTtFUCt6Q1Y7RU92ekNNO0lBQ0k7SUFDQTtFUHl6Q1Y7RU92ekNVO0lBQ0k7RVB5ekNkO0VPaHpDTTs7SUFFSTtFUGt6Q1Y7RU9oekNVOztJQUNJO0VQbXpDZDtFTzF5Q007SUFDSTtJQUNBO0VQNHlDVjtFTzF5Q1U7SUFDSTtJQUNBO0lBQ0E7RVA0eUNkO0VPMXlDYztJQUNJO0lBQ0E7RVA0eUNsQjtFT3h5Q1U7O0lBRUk7SUFDQTtFUDB5Q2Q7RU9ueUNFO0lBQ0k7RVBxeUNOO0VPbnlDTTtJQUNJO0VQcXlDVjtFT2x5Q007SUFDSTtFUG95Q1Y7QUFDRjtBTzV4Q0E7RUFFSTs7SUFFSTtJQUNBO0VQNnhDTjtFTzF4Q0U7SUFDSTtFUDR4Q047RU96eENFOztJQUVJO0lBQ0E7SUFDQTtFUDJ4Q047RU94eENFOzs7SUFHSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFUDB4Q047RU92eENFO0lBQ0k7SUFDQTtJQUNBO0VQeXhDTjtFT3R4Q0U7SUFDSTtJQUNBO0VQd3hDTjtFT3J4Q0U7OztJQUdJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVB1eENOO0VPcHhDRTtJQUNJO0lBQ0E7SUFDQTtFUHN4Q047RU9ueENFO0lBQ0k7RVBxeENOO0VPbHhDRTtJQUNJO0VQb3hDTjtFT2p4Q0U7SUFDSTtJQUNBO0VQbXhDTjtFT2h4Q0U7SUFDSTtFUGt4Q047RU8vd0NFOzs7SUFHSTtJQUNBO0lBQ0E7RVBpeENOO0VPOXdDRTtJQUNJO0lBQ0E7SUFDQTtFUGd4Q047RU83d0NFOzs7SUFHSTtJQUNBO0lBQ0E7RVArd0NOO0VPNXdDRTtJQUNJO0lBQ0E7SUFDQTtFUDh3Q047RU8zd0NFO0lBQ0k7SUFDQTtJQUNBO0VQNndDTjtFTzF3Q0U7SUFDSTtFUDR3Q047RU96d0NFO0lBQ0k7RVAyd0NOO0VPeHdDRTtJQUNJO0lBQ0E7RVAwd0NOO0FBQ0Y7QVF4M0RBOzs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJxM0RKO0FRbjNESTtFQUNJO0FScTNEUjtBUWwzREk7RUFDSTtFQUNBO0FSbzNEUjtBUWozREk7RUFDSTtFQUNBO0VBQ0E7QVJtM0RSO0FRajNEUTtFQUNJO0FSbTNEWjs7QVE1MkRJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVIrMkRSO0FRNTJESTtFQUNJO0FSODJEUjtBUTMyREk7RUFDSTtFQUNBO0VBQ0E7QVI2MkRSO0FRMzJEUTtFQUNJO0VBQ0E7RUFDQTtBUjYyRFo7QVExMkRRO0VBQ0k7RUFDQTtFQUNBO0FSNDJEWjtBUTEyRFk7RUFDSTtFQUNBO0FSNDJEaEI7QVF6MkRZO0VBQ0k7RUFDQTtBUjIyRGhCO0FRcjJEWTtFQUNJO0FSdTJEaEI7O0FRNzFEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBUmcyREo7O0FRNzFEQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJnMkRKOztBUTcxREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVJnMkRKOztBUTcxREE7RUFDSTtFQUNBO0FSZzJESjtBUTkxREk7RUFDSTtFQUNBO0VBQ0E7QVJnMkRSO0FRNzFESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVIrMURSOztBUTMxREE7RUFDSTtFQUNBO0VBQ0E7QVI4MURKOztBUTMxREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FSODFESjs7QVF2MURBO0VBRUk7SUFBTztFUjAxRFQ7RVF4MURFO0lBQUs7RVIyMURQO0FBQ0Y7QVF6MURBO0VBRUk7SUFDSTtJQUNBO0VSMDFETjtFUXYxREU7SUFDSTtJQUNBO0VSeTFETjtBQUNGO0FRdDFEQTtFQUVJO0lBQ0k7SUFDQTtFUnUxRE47RVFwMURFO0lBQ0k7SUFDQTtFUnMxRE47QUFDRjtBUS8wREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBUmkxREo7O0FROTBEQTtFQUNJO0VBQ0E7QVJpMURKOztBU3RpRUE7O0VBQUE7QUFJQTtFQUNJO0VBQ0E7QVR3aUVKO0FTdGlFSTtFQUNJO0VBQ0E7RUFDQTtBVHdpRVI7QVNyaUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR1aUVSO0FTcGlFSTtFQUNJO0VBQ0E7RUFJQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVG1pRVI7QVMvaEVRO0VBRUk7QVRnaUVaO0FTN2hFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUK2hFWjtBUzVoRVE7RUFDSTtBVDhoRVo7QVMxaEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ0aEVSO0FTemhFSTtFQUNJO0VBQ0E7RUFDQTtBVDJoRVI7QVN6aEVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDJoRVo7O0FTdGhFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5aEVKO0FTdmhFSTtFQUNJO0VBQ0E7QVR5aEVSOztBU3JoRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR3aEVKOztBU3JoRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR3aEVKOztBU3JoRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHdoRUo7QVN0aEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVHdoRVI7QVNyaEVJO0VBQ0k7RUFDQTtBVHVoRVI7O0FTbmhFQTtFQUdJO0FUb2hFSjs7QVNqaEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBR0E7RUFDQTtBVGdoRUo7QVM5Z0VJO0VBQ0k7RUFDQTtBVGdoRVI7O0FTNWdFQTtFQUVJO0lBQ0k7SUFDQTtFVDhnRU47RVMzZ0VFO0lBQ0k7SUFDQTtFVDZnRU47QUFDRjtBUzFnRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDRnRUo7O0FTemdFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ0Z0VKO0FTMWdFSTtFQUNJO0FUNGdFUjtBU3pnRUk7RUFDSTtBVDJnRVI7QVN4Z0VJO0VBQ0k7RUFDQTtBVDBnRVI7O0FTcGdFSTtFQUNJO0FUdWdFUjtBU3BnRUk7RUFDSTtBVHNnRVI7QVNuZ0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUcWdFUjs7QVMvL0RJO0VBQ0k7QVRrZ0VSO0FTLy9ESTtFQUNJO0VBQ0E7QVRpZ0VSOztBUzcvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVGdnRUo7O0FTNy9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVRnZ0VKO0FTOS9ESTtFQUNJO0FUZ2dFUjs7QVM1L0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVQrL0RKOztBUzUvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQrL0RKOztBUzUvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQrL0RKOztBUzUvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVCsvREo7O0FTNS9EQTtFQUNJO0VBQ0E7RUFDQTtBVCsvREo7O0FTNS9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUKy9ESjs7QVM1L0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQrL0RKO0FTNy9ESTtFQUNJO0VBQ0E7RUFDQTtBVCsvRFI7QVM1L0RJO0VBQ0k7RUFDQTtFQUNBO0FUOC9EUjs7QVMxL0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVDYvREo7O0FTMS9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2L0RKO0FTMy9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQ2L0RSO0FTMy9EUTtFQUNJO0FUNi9EWjs7QVN4L0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FUMi9ESjtBU3ovREk7RUFDSTtBVDIvRFI7O0FTdi9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVQwL0RKO0FTeC9ESTtFQUNJO0FUMC9EUjtBU3YvREk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVR5L0RSO0FTdC9ESTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FUdy9EUjtBU3QvRFE7RUFFSTtBVHUvRFo7QVNwL0RRO0VBQ0k7RUFDQTtFQUNBO0FUcy9EWjs7QVV4N0VBOzs7OztFQUFBO0FBV0E7RUFHSTtFQUNBO0FWbzdFSjtBVWg3RUk7RUFDSTtBVms3RVI7O0FVOTZFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWaTdFSjs7QVU5NkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZpN0VKOztBVTE2RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjY2RUo7QVUzNkVJO0VBVEo7SUFVUTtJQUNBO0VWODZFTjtBQUNGOztBVTM2RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWODZFSjs7QVUzNkVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVY4NkVKOztBVTM2RUE7RUFDSTtFQUNBO0VBQ0E7QVY4NkVKO0FVNTZFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY4NkVSO0FVMzZFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY2NkVSO0FVejZFUTtFQUNJO0FWMjZFWjtBVXg2RVE7RUFDSTtBVjA2RVo7QVV2NkVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZ5NkVaOztBVWg2RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVm02RUo7O0FVaDZFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZtNkVKO0FVajZFSTtFQUNJO0VBQ0E7QVZtNkVSO0FVajZFUTtFQUNJO0FWbTZFWjtBVS81RUk7RUFDSTtFQUNBO0FWaTZFUjtBVS81RVE7RUFDSTtFQUNBO0FWaTZFWjtBVTc1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVis1RVI7QVU1NUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjg1RVI7O0FVdDVFQTtFQUNJO0FWeTVFSjs7QVV0NUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5NUVKO0FVcjVFSTs7RUFFSTtBVnU1RVI7O0FVbjVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnM1RUo7O0FVbjVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWczVFSjtBVXA1RUk7RUFDSTtFQUNBO0VBQ0E7QVZzNUVSOztBVWw1RUE7RUFDSTtFQUNBO0VBQ0E7QVZxNUVKOztBVWw1RUE7RUFDSTtFQUNBO0VBQ0E7QVZxNUVKOztBVWw1RUE7RUFDSTtFQUNBO0VBQ0E7QVZxNUVKO0FVajVFSTs7RUFFSTtFQUNBO0FWbTVFUjtBVTk0RUk7RUFDSTtBVmc1RVI7O0FVNTRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYrNEVKOztBVXQ0RUk7RUFDSTtFQUNBO0VBQ0E7QVZ5NEVSO0FVcDRFWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZzNEVoQjtBVW40RVk7RUFDSTtBVnE0RWhCO0FVOTNFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZzRFUjtBVTkzRVE7RUFDSTtBVmc0RVo7QVUzM0VRO0VBQ0k7QVY2M0VaO0FVMTNFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjQzRVo7QVUxM0VZO0VBQ0k7RUFDQTtBVjQzRWhCO0FVejNFWTtFQUNJO0FWMjNFaEI7QVV0M0VZO0VBQ0k7RUFDQTtBVnczRWhCO0FVdDNFZ0I7RUFDSTtBVnczRXBCO0FVbjNFUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcTNFWjtBVS8yRUk7RUFDSTtBVmkzRVI7O0FVNzJFQTtFQUNJO0VBQ0E7RUFDQTtBVmczRUo7O0FVeDJFSTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBVjIyRVI7QVV6MkVROztFQUNJO0VBQ0E7QVY0MkVaO0FVdDJFSTtFQUNJO0FWdzJFUjtBVWoyRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWbTJFWjtBVWgyRVE7RUFDSTtFQUNBO0FWazJFWjtBVWgyRVk7RUFDSTtBVmsyRWhCO0FVLzFFWTtFQUNJO0FWaTJFaEI7QVUxMUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY0MUVSO0FVMTFFUTtFQUNJO0FWNDFFWjtBVXoxRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjIxRVo7QVV4MUVRO0VBQ0k7RUFDQTtFQUNBO0FWMDFFWjtBVXAxRUk7RUFDSTtBVnMxRVI7QVVqMUVJO0VBQ0k7RUFDQTtBVm0xRVI7QVVqMUVRO0VBQ0k7RUFDQTtBVm0xRVo7QVVqMUVZO0VBQ0k7RUFDQTtBVm0xRWhCOztBVXowRUE7RUFDSTtBVjQwRUo7O0FVejBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjQwRUo7O0FVejBFQTtFQUNJO0VBQ0E7RUFDQTtBVjQwRUo7O0FVejBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNDBFSjtBVTEwRUk7RUFDSTtFQUNBO0VBQ0E7QVY0MEVSOztBVXgwRUE7RUFDSTtFQUNBO0VBQ0E7QVYyMEVKOztBVXgwRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjIwRUo7O0FVeDBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBVjAwRUo7QVV4MEVJO0VBRUk7RUFDQTtFQUNBO0FWeTBFUjs7QVVyMEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ3MEVKO0FVdDBFSTtFQUVJO0VBQ0E7RUFDQTtBVnUwRVI7O0FVbjBFQTtFQUNJO0VBQ0E7RUFDQTtBVnMwRUo7O0FVbjBFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWczBFSjs7QVVuMEVBO0VBQ0k7RUFDQTtBVnMwRUo7O0FVN3pFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVmcwRVI7QVU1ekVRO0VBQ0k7RUFDQTtFQUNBO0FWOHpFWjtBVTN6RVE7RUFDSTtBVjZ6RVo7QVV6ekVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVYyekVSO0FVeHpFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVYwekVSO0FVeHpFUTtFQUNJO0FWMHpFWjtBVXZ6RVE7RUFDSTtFQUNBO0VBQ0E7QVZ5ekVaOztBVWh6RUE7RUFDSTtBVm16RUo7O0FVaHpFQTtFQUNJO0VBQ0E7RUFDQTtBVm16RUo7QVVqekVJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0FWbXpFUjtBVWh6RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWa3pFUjtBVS95RUk7RUFFSTtBVmd6RVI7QVU3eUVJO0VBQ0k7QVYreUVSO0FVN3lFUTtFQUNJO0FWK3lFWjtBVTV5RVE7RUFDSTtBVjh5RVo7QVU1eUVZO0VBQ0k7QVY4eUVoQjtBVXZ5RUk7RUFDSTtFQUNBO0FWeXlFUjtBVXR5RUk7RUFFSTtBVnV5RVI7QVVweUVJO0VBQ0k7RUFDQTtFQUNBO0FWc3lFUjtBVW55RUk7RUFDSTtBVnF5RVI7QVUveEVJOztFQUVJO0VBQ0E7RUFDQTtBVml5RVI7QVU5eEVJOztFQUVJO0FWZ3lFUjtBVTN4RUk7O0VBRUk7QVY2eEVSO0FVMXhFSTtFQUNJO0FWNHhFUjtBVXp4RUk7RUFDSTtFQUNBO0VBQ0E7QVYyeEVSO0FVdHhFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWd3hFUjtBVXB4RVE7RUFDSTtFQUNBO0FWc3hFWjs7QVUvd0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWa3hFSjtBVWh4RUk7RUFDSTtBVmt4RVI7QVUvd0VJO0VBQ0k7QVZpeEVSO0FVOXdFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZneEVSO0FVOXdFUTtFQUNJO0FWZ3hFWjtBVTV3RUk7RUFDSTtBVjh3RVI7O0FVdHdFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWeXdFSjs7QVV0d0VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZ5d0VKO0FVdHdFSTtFQUNJO0VBQ0E7QVZ3d0VSO0FVcndFSTtFQUNJO0VBQ0E7QVZ1d0VSO0FVcHdFSTtFQUNJO0VBQ0E7QVZzd0VSO0FVbndFSTtFQUNJO0VBQ0E7QVZxd0VSO0FVbHdFSTtFQUNJO0VBQ0E7QVZvd0VSOztBVTl2RUE7RUFDSTtFQUNBO0FWaXdFSjtBVTd2RUk7RUFFSTtFQUNBO0VBQ0E7QVY4dkVSOztBVXR2RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVnl2RVI7QVV0dkVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnd2RVI7QVV0dkVRO0VBQ0k7RUFDQTtFQUNBO0FWd3ZFWjtBVXJ2RVE7RUFDSTtBVnV2RVo7QVVwdkVRO0VBQ0k7QVZzdkVaO0FVcHZFWTtFQUNJO0FWc3ZFaEI7QVVudkVZO0VBQ0k7QVZxdkVoQjtBVWh2RUk7RUFDSTtBVmt2RVI7O0FVNXVFQTtFQUNJO0FWK3VFSjs7QVU1dUVBOztFQUVJO0FWK3VFSjs7QVV4dUVBO0VBQ0k7RUFDQTtFQUNBO0FWMnVFSjtBVXp1RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMnVFUjs7QVVudUVBO0VBQ0k7RUFDQTtBVnN1RUo7O0FVbnVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnN1RUo7QVVwdUVJO0VBQ0k7RUFDQTtBVnN1RVI7O0FVbHVFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWcXVFSjs7QVVsdUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWcXVFSjs7QVVsdUVBO0VBQ0k7RUFDQTtFQUNBO0FWcXVFSjs7QVU5dEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWaXVFSjtBVTd0RUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWK3RFUjs7QVV6dEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVY0dEVKOztBVXp0RUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBVjR0RUo7QVUxdEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjR0RVI7O0FVeHRFQTtFQUNJO0VBQ0E7RUFDQTtBVjJ0RUo7O0FVeHRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjJ0RUo7QVV6dEVJO0VBQ0k7RUFDQTtBVjJ0RVI7QVV4dEVJO0VBQ0k7QVYwdEVSO0FVdnRFSTtFQUNJO0FWeXRFUjtBVXZ0RVE7RUFDSTtBVnl0RVo7O0FVcHRFQTtFQUNJO0VBQ0E7RUFDQTtBVnV0RUo7O0FVcHRFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnV0RUo7QVVwdEVJO0VBQ0k7RUFDQTtBVnN0RVI7QVVudEVJO0VBQ0k7RUFDQTtBVnF0RVI7O0FVN3NFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZ3RFSjtBVTlzRUk7RUFUSjtJQVVRO0lBQ0E7RVZpdEVOO0FBQ0Y7O0FVOXNFQTtFQUNJO0VBQ0E7QVZpdEVKOztBVTlzRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWaXRFSjtBVS9zRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVml0RVI7QVUvc0VRO0VBQ0k7RUFDQTtFQUNBO0FWaXRFWjs7QVUxc0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWNnNFUjtBVXhzRVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVjBzRVo7QVV0c0VZO0VBQ0k7RUFDQTtFQUNBO0FWd3NFaEI7QVVwc0VRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZzc0VaO0FVbnNFUTtFQUNJO0VBQ0E7RUFDQTtBVnFzRVo7O0FVNXJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVityRUo7QVU3ckVJO0VBQ0k7RUFDQTtBVityRVI7QVU1ckVJO0VBQ0k7RUFDQTtBVjhyRVI7QVUzckVJO0VBQ0k7RUFDQTtBVjZyRVI7QVUxckVJO0VBQ0k7RUFDQTtBVjRyRVI7QVV6ckVJO0VBQ0k7RUFDQTtBVjJyRVI7QVV4ckVJO0VBQ0k7RUFDQTtBVjByRVI7O0FVbHJFQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FWcXJFSjs7QVU5cUVBO0VBQ0k7QVZpckVKO0FVL3FFSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVZpckVSOztBVTdxRUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWZ3JFSjs7QVV6cUVBO0VBRUk7SUFDSTtJQUNBO0VWMnFFTjtFVXhxRUU7SUFDSTtFVjBxRU47RVVycUVNOztJQUVJO0VWdXFFVjtFVW5xRUU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFVnFxRU47RVVscUVFO0lBQ0k7RVZvcUVOO0FBQ0Y7QVUxcEVJO0VBQ0k7RUFDQTtFQUNBO0FWNHBFUjs7QVV4cEVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FWMnBFSjtBVXhwRUk7RUFDSTtFQUNBO0FWMHBFUjtBVXZwRUk7RUFDSTtFQUNBO0FWeXBFUjs7QVVucEVBO0VBQ0k7RUFDQTtBVnNwRUo7QVVwcEVJO0VBQ0k7QVZzcEVSO0FVbnBFSTtFQUNJO0VBQ0E7QVZxcEVSOztBVWpwRUE7RUFDSTtFQUNBO0FWb3BFSjtBVWhwRUk7RUFDSTtFQUNBO0FWa3BFUjs7QVU5b0VBO0VBRUk7SUFDSTtJQUNBO0VWZ3BFTjtFVTdvRUU7SUFDSTtJQUNBO0VWK29FTjtBQUNGO0FVdG9FSTtFQUNJO0VBQ0E7RUFDQTtBVndvRVI7QVVyb0VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnVvRVI7QVVyb0VRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBVnVvRVo7QVVsb0VZO0VBQ0k7QVZvb0VoQjtBVWxvRWdCO0VBQ0k7QVZvb0VwQjtBVWpvRWdCO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVZtb0VwQjtBVS9uRVk7RUFDSTtBVmlvRWhCO0FVNW5FSTtFQUNJO0VBQ0E7RUFDQTtBVjhuRVI7O0FXM2tIQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtBWHlrSEo7QVd2a0hJO0VBQ0k7QVh5a0hSOztBV2prSEE7RUFDSTtBWG9rSEo7O0FXNWpIQTtFQUNJO0VBQ0E7RUFDQTtBWCtqSEo7O0FXNWpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FYK2pISjtBVzVqSEk7RUFDSTtFQUNBO0FYOGpIUjs7QVcxakhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYNmpISjs7QVcxakhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWDZqSEo7O0FXMWpIQTtFQUNJO0FYNmpISjs7QVcxakhBO0VBQ0k7RUFDQTtFQUNBO0FYNmpISjs7QVcxakhBO0VBQ0k7RUFDQTtBWDZqSEo7O0FXMWpIQTtFQUNJO0FYNmpISjs7QVcxakhBO0VBQ0k7RUFDQTtFQUNBO0FYNmpISjtBVzNqSEk7RUFMSjtJQU1RO0VYOGpITjtBQUNGOztBVzNqSEE7RUFDSTtBWDhqSEo7O0FXdmpIQTtFQUNJO0VBQ0E7RUFDQTtBWDBqSEo7O0FXdmpIQTtFQUNJO0FYMGpISjs7QVd2akhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYMGpISjs7QVd2akhBO0VBQ0k7RUFDQTtFQUNBO0FYMGpISjs7QVd2akhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVgwakhKO0FXeGpISTtFQU5KO0lBT1E7SUFDQTtFWDJqSE47RVd6akhNO0lBQ0k7RVgyakhWO0FBQ0Y7O0FXdmpIQTtFQUNJO0VBQ0E7RUFDQTtBWDBqSEo7O0FXdmpIQTtFQUNJO0FYMGpISjs7QVd2akhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVgwakhKOztBV25qSEE7RUFDSTtFQUNBO0VBQ0E7QVhzakhKOztBV25qSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYc2pISjtBV25qSEk7RUFDSTtFQUNBO0FYcWpIUjs7QVdqakhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FYb2pISjs7QVdqakhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWG9qSEo7O0FXampIQTtFQUNJO0FYb2pISjs7QVdqakhBO0VBQ0k7RUFDQTtFQUNBO0FYb2pISjs7QVdqakhBO0VBQ0k7RUFDQTtBWG9qSEo7O0FXampIQTtFQUNJO0FYb2pISjs7QVdqakhBO0VBQ0k7RUFDQTtFQUNBO0FYb2pISjtBV2xqSEk7RUFMSjtJQU1RO0VYcWpITjtBQUNGOztBVzlpSEE7RUFDSTtFQUNBO0VBQ0E7QVhpakhKOztBVzlpSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWGlqSEo7QVcvaUhJO0VBQ0k7RUFDQTtBWGlqSFI7QVc5aUhJO0VBQ0k7RUFDQTtFQUNBO0FYZ2pIUjs7QVd4aUhBO0VBRUk7SUFDSTtJQUNBO0VYMGlITjtFV3ZpSEU7SUFDSTtJQUNBO0VYeWlITjtBQUNGO0FXdGlIQTs7RUFFSTtBWHdpSEo7O0FXamlIQTs7RUFFSTtFQUNBO0FYb2lISjs7QVdqaUhBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVhvaUhKO0FXbGlISTs7RUFDSTtBWHFpSFI7O0FZNzFIQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0FaMjFISjs7QVl4MUhBO0VBQ0k7RUFDQTtFQUNBO0FaMjFISjs7QVlwMUhBO0VBQ0k7RUFDQTtBWnUxSEo7O0FZcDFIQTtFQUNJO0VBQ0E7RUFDQTtBWnUxSEo7O0FZcDFIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1MUhKOztBWXAxSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadTFISjs7QVlwMUhBO0VBQ0k7RUFDQTtFQUNBO0FadTFISjs7QVloMUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FabTFISjtBWWoxSEk7RUFDSTtFQUNBO0FabTFIUjs7QVkvMEhBO0VBQ0k7RUFDQTtFQUNBO0FaazFISjtBWWgxSEk7RUFMSjtJQU1RO0VabTFITjtBQUNGO0FZNzBIUTtFQUNJO0VBQ0E7QVorMEhaOztBWTEwSEE7RUFDSTtFQUNBO0VBQ0E7QVo2MEhKOztBWTEwSEE7RUFDSTtFQUNBO0VBQ0E7QVo2MEhKOztBWXgwSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjIwSEo7QVl6MEhJO0VBQ0k7RUFDQTtFQUNBO0FaMjBIUjtBWXgwSEk7RUFDSTtFQUNBO0VBR0E7RUFDQTtFQUNBO0VBQ0E7QVp3MEhSO0FZcjBISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1MEhSO0FZcjBIUTtFQUNJO0VBQ0E7QVp1MEhaOztBWWwwSEE7RUFDSTtFQUNBO0VBQ0E7QVpxMEhKO0FZbjBISTtFQUNJO0FacTBIUjtBWWwwSEk7RUFDSTtBWm8wSFI7O0FZOXpIQTtFQUNJO0VBQ0E7RUFDQTtBWmkwSEo7QVkvekhJO0VBTEo7SUFNUTtFWmswSE47QUFDRjs7QVkzekhBO0VBQ0k7QVo4ekhKOztBWTN6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHpISjs7QVkzekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo4ekhKOztBWTN6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVo4ekhKOztBWTN6SEE7RUFDSTtFQUNBO0VBQ0E7QVo4ekhKO0FZNXpISTtFQUNJO0FaOHpIUjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0FaNnpISjs7QVkxekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVo2ekhKOztBWTF6SEE7RUFDSTtFQUNBO0VBQ0E7QVo2ekhKOztBWTF6SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjZ6SEo7QVkzekhJO0VBQ0k7QVo2ekhSO0FZMXpISTtFQUNJO0FaNHpIUjtBWXp6SEk7RUFDSTtBWjJ6SFI7QVl4ekhJO0VBQ0k7RUFDQTtBWjB6SFI7O0FZbHpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FacXpISjtBWW56SEk7RUFOSjtJQU9RO0Vac3pITjtBQUNGO0FZcHpISTtFQVZKO0lBV1E7RVp1ekhOO0FBQ0Y7O0FZaHpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabXpISjs7QVloekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FabXpISjs7QVloekhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm16SEo7O0FZaHpIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabXpISjs7QVloekhBO0VBQ0k7QVptekhKOztBWTl5SEE7RUFDSTtBWml6SEo7O0FZOXlIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVppekhKO0FZL3lISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWml6SFI7QVk5eUhJO0VBQ0k7QVpnekhSO0FZN3lISTtFQUNJO0FaK3lIUjtBWTV5SEk7RUF4Qko7SUF5QlE7RVoreUhOO0FBQ0Y7O0FZeHlISTtFQUNJO0FaMnlIUjtBWXh5SEk7RUFDSTtBWjB5SFI7QVl4eUhRO0VBSEo7SUFJUTtFWjJ5SFY7QUFDRjs7QVlqeUhJOztFQUVJO0Fab3lIUjtBWWh5SFE7RUFESjtJQUVRO0VabXlIVjtBQUNGOztBWS94SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmt5SEo7QVloeUhJO0VBQ0k7QVpreUhSO0FZL3hISTtFQUNJO0FaaXlIUjtBWTl4SEk7RUFDSTtBWmd5SFI7QVk3eEhJO0VBQ0k7RUFDQTtBWit4SFI7QVk3eEhRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVoreEhaO0FZdnhIUTs7Ozs7O0VBRUk7QVo2eEhaO0FZcnhIUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnV4SFo7QVlweEhRO0VBQ0k7QVpzeEhaO0FZaHhIUTtFQUNJO0Faa3hIWjtBWTl3SEk7RUFDSTtFQUNBO0FaZ3hIUjtBWTl3SFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ3hIWjtBWTV3SEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjh3SFI7QVkzd0hJO0VBQ0k7QVo2d0hSO0FZendISTtFQTdGSjtJQThGUTtJQUNBO0lBQ0Esc0VBQ0k7SUFJSjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVp3d0hOO0VZdHdITTtJQUNJO0Vad3dIVjtFWXJ3SE07SUFDSTtFWnV3SFY7RVlwd0hNO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVpzd0hWO0VZbndITTtJQUNJO0VacXdIVjtFWW53SFU7SUFDSTtJQUNBO0VacXdIZDtFWWp3SE07SUFDSTtFWm13SFY7RVlqd0hVO0lBQ0k7RVptd0hkO0VZL3ZITTtJQUNJO0VaaXdIVjtFWS92SFU7SUFDSTtFWml3SGQ7RVk3dkhNO0lBQ0k7RVordkhWO0VZN3ZIVTtJQUNJO0VaK3ZIZDtFWTN2SE07SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RVo2dkhWO0VZMXZITTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VaNHZIVjtFWTF2SFU7SUFDSTtJQUNBO0VaNHZIZDtFWXp2SFU7SUFDSTtJQUNBO0lBQ0E7RVoydkhkO0FBQ0Y7O0FZcHZIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp1dkhKO0FZcnZISTtFQUNJO0VBQ0E7QVp1dkhSO0FZcHZISTtFQUNJO0VBQ0E7RUFDQTtBWnN2SFI7QVludkhJO0VBQ0k7RUFDQTtBWnF2SFI7O0FZL3VIQTtFQUNJO0VBQ0E7QVprdkhKOztBWS91SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVprdkhKO0FZaHZISTtFQUNJO0VBQ0E7RUFDQTtBWmt2SFI7O0FZbnVIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Fac3VISjs7QVludUhBO0VBQ0k7RUFDQTtFQUNBO0Fac3VISjs7QVludUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzdUhKOztBWW51SEE7RUFDSTtFQUNBO0Fac3VISjtBWXB1SEk7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpzdUhSOztBWWx1SEE7RUFDSTtFQUNBO0VBQ0E7QVpxdUhKOztBWWx1SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FacXVISjtBWW51SEk7RUFDSTtFQUNBO0FacXVIUjtBWWx1SEk7RUFDSTtFQUNBO0Fab3VIUjs7QVlodUhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm11SEo7QVlqdUhJO0VBQ0k7RUFDQTtFQUNBO0FabXVIUjs7QVkzdEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo4dEhKOztBWTN0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOHRISjs7QVkzdEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVo4dEhKOztBWTN0SEE7RUFDSTtFQUNBO0VBQ0E7QVo4dEhKOztBWTN0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjh0SEo7O0FZM3RIQTtFQUNJO0VBSUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoydEhKO0FZenRISTtFQWJKO0lBY1E7RVo0dEhOO0FBQ0Y7O0FZenRIQTtFQUNJO0VBQ0E7RUFDQTtBWjR0SEo7QVkxdEhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjR0SFI7QVkxdEhRO0VBUEo7SUFRUTtFWjZ0SFY7QUFDRjs7QVl6dEhBO0VBQ0k7RUFDQTtFQUNBO0FaNHRISjs7QVlydEhBO0VBQ0k7RUFDQTtBWnd0SEo7QVl0dEhJO0VBSko7SUFLUTtFWnl0SE47QUFDRjs7QVl0dEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp5dEhKOztBWXR0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5dEhKOztBWXR0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeXRISjs7QVl0dEhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp5dEhKOztBWXR0SEE7RUFDSTtBWnl0SEo7O0FZdHRIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaeXRISjtBWXZ0SEk7RUFDSTtBWnl0SFI7O0FZcnRIQTtFQUNJO0VBQ0E7QVp3dEhKOztBWXJ0SEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnd0SEo7O0FZbHRISTtFQUNJO0FacXRIUjs7QVlqdEhBO0VBQ0k7RUFDQTtFQUNBO0Fab3RISjtBWWx0SEk7RUFDSTtFQUNBO0VBQ0E7QVpvdEhSO0FZOXNISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpndEhSOztBWTFzSEE7RUFDSTtFQUNBO0VBQ0E7QVo2c0hKO0FZM3NISTtFQUNJO0VBQ0E7RUFDQTtBWjZzSFI7O0FZcnNIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp3c0hKO0FZdHNISTtFQUNJO0VBQ0E7QVp3c0hSO0FZdHNIUTtFQUNJO0Fad3NIWjtBWXJzSFE7RUFDSTtBWnVzSFo7O0FZbHNIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FacXNISjtBWW5zSEk7RUFDSTtBWnFzSFI7QVlsc0hJO0VBQ0k7QVpvc0hSOztBWWhzSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm1zSEo7O0FZaHNIQTtFQUNJO0FabXNISjs7QVloc0hBO0VBQ0k7RUFDQTtFQUNBO0FabXNISjs7QVkvckhBO0VBQ0k7QVprc0hKOztBWS9ySEE7RUFDSTtFQUNBO0VBQ0E7QVprc0hKO0FZaHNISTtFQUxKO0lBTVE7RVptc0hOO0FBQ0Y7O0FZNXJIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK3JISjs7QVk1ckhBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK3JISjs7QVkxckhBO0VBQ0k7RUFDQTtBWjZySEo7QVkzckhJO0VBQ0k7RUFDQTtFQUNBO0FaNnJIUjtBWTNySFE7RUFDSTtFQUNBO0FaNnJIWjtBWXpySEk7RUFDSTtFQUNBO0FaMnJIUjtBWXpySFE7RUFDSTtBWjJySFo7QVl2ckhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnlySFI7QVl0ckhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWndySFI7QVl0ckhRO0VBQ0k7RUFDQTtBWndySFo7QVlyckhRO0VBQ0k7RUFDQTtBWnVySFo7QVlyckhZO0VBQ0k7QVp1ckhoQjtBWWxySEk7RUFDSTtBWm9ySFI7O0FZNXFIQTtFQUVJO0lBQ0k7RVo4cUhOO0VZM3FIRTtJQUNJO0lBQ0E7SUFDQTtFWjZxSE47QUFDRjtBWTFxSEE7RUFFSTtJQUNJO0VaMnFITjtBQUNGO0FZeHFIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVowcUhKO0FZeHFISTtFQUNJO0VBQ0E7QVowcUhSOztBWXRxSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWnlxSEo7O0FZdHFIQTtFQUNJO0VBQ0E7RUFDQTtBWnlxSEo7O0FZdHFIQTtFQUNJO0VBQ0E7RUFDQTtBWnlxSEo7O0FZdHFIQTtFQUNJO0VBQ0E7RUFDQTtBWnlxSEo7O0FZdHFIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWnlxSEo7QVl2cUhJO0VBQ0k7RUFDQTtBWnlxSFI7QVl0cUhJO0VBQ0k7RUFDQTtFQUNBO0Fad3FIUjs7QVlocUhBO0VBRUk7SUFDSTtJQUNBO0Vaa3FITjtFWS9wSEU7SUFDSTtJQUNBO0VaaXFITjtBQUNGO0FZMXBIQTtFQUVJO0lBQ0k7SUFDQTtFWjJwSE47RVl4cEhFO0lBQ0k7SUFDQTtFWjBwSE47RVl2cEhFO0lBQ0k7SUFDQTtFWnlwSE47RVl0cEhFO0lBQ0k7RVp3cEhOO0VZcnBIRTs7O0lBR0k7RVp1cEhOO0VZcHBIRTtJQUNJO0Vac3BITjtFWXBwSE07SUFDSTtFWnNwSFY7RVlscEhFO0lBQ0k7RVpvcEhOO0VZbHBITTs7SUFFSTtFWm9wSFY7QUFDRjtBWXpvSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMm9ISjtBWXpvSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVoyb0hSO0FZem9IUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjJvSFo7QVl4b0hRO0VBQ0k7QVowb0haO0FZeG9IWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaMG9IaEI7QVl2b0hZO0VBQ0k7RUFDQTtFQUNBO0FaeW9IaEI7QVlwb0hJO0VBQ0k7RUFDQTtFQUNBO0Fac29IUjs7QVk3bkhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpnb0hSO0FZOW5IUTtFQU5KO0lBT1E7RVppb0hWO0FBQ0Y7QVkvbkhRO0VBQ0k7QVppb0haO0FZOW5IUTtFQUNJO0VBQ0E7RUFDQTtBWmdvSFo7QVk5bkhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVpnb0hoQjtBWTduSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK25IaEI7QVk1bkhZO0VBQ0k7RUFDQTtBWjhuSGhCO0FZM25IWTtFQUNJO0VBQ0E7RUFDQTtBWjZuSGhCO0FZeG5ISTtFQUNJO0VBQ0E7QVowbkhSO0FZcm5ISTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FadW5IUjtBWXJuSFE7RUFOSjtJQU9RO0Vad25IVjtBQUNGO0FZdG5IUTtFQUNJO0VBQ0E7RUFDQTtBWnduSFo7QVl0bkhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVp3bkhoQjtBWXJuSFk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FadW5IaEI7QVlubkhnQjtFQUVJO0Fab25IcEI7QVlobkhZO0VBQ0k7RUFDQTtBWmtuSGhCO0FZL21IWTtFQUNJO0VBQ0E7RUFDQTtBWmluSGhCOztBWTNtSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjhtSEo7QVk1bUhJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaOG1IUjtBWTNtSEk7RUFDSTtFQUNBO0VBQ0E7QVo2bUhSO0FZM21IUTtFQUNJO0VBQ0E7QVo2bUhaOztBWXRtSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaeW1ISjtBWXZtSEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVp5bUhSO0FZdm1IUTtFQUNJO0FaeW1IWjtBWXRtSFE7RUFDSTtBWndtSFo7QVlybUhRO0VBQ0k7QVp1bUhaO0FZbm1ISTtFQUNJO0VBQ0E7RUFDQTtBWnFtSFI7QVlubUhRO0VBQ0k7RUFDQTtFQUNBO0FacW1IWjtBWWxtSFE7RUFDSTtFQUNBO0VBQ0E7QVpvbUhaO0FZbG1IWTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWm9tSGhCO0FZbG1IZ0I7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QVpvbUhwQjtBWWptSGdCO0VBQ0k7QVptbUhwQjtBWTlsSFE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ21IWjtBWTlsSFk7RUFDSTtFQUNBO0FaZ21IaEI7QVk3bEhZO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWitsSGhCO0FZMWxISTtFQUNJO0FaNGxIUjs7QVlsbEhBO0VBQ0k7RUFDQTtBWnFsSEo7O0FZaGxIQTtFQUNJO0VBQ0E7RUFDQTtBWm1sSEo7O0FZaGxIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FabWxISjtBWWpsSEk7RUFDSTtBWm1sSFI7O0FZL2tIQTtFQUNJO0VBQ0E7RUFDQTtBWmtsSEo7O0FZL2tIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0Faa2xISjs7QVk3a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaZ2xISjs7QVk3a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWmdsSEo7QVk5a0hJO0VBQ0k7RUFDQTtFQUNBO0FaZ2xIUjs7QVk1a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaK2tISjs7QVk1a0hBO0VBQ0k7RUFDQTtFQUNBO0FaK2tISjs7QVkxa0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNmtISjs7QVkxa0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaNmtISjtBWTNrSEk7RUFDSTtFQUNBO0FaNmtIUjs7QVl6a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjRrSEo7QVkxa0hJO0VBQ0k7QVo0a0hSO0FZMWtIUTtFQUNJO0FaNGtIWjs7QVl2a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FaMGtISjs7QVl2a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QVowa0hKOztBWXZrSEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBWjBrSEo7O0FZdmtIQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FaMGtISjs7QVl2a0hBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBWjBrSEo7QVl4a0hJO0VBQ0k7RUFDQTtFQUNBO0FaMGtIUjs7QWF0MEtBOzs7Ozs7RUFBQTtBQVlBO0VBQ0k7QWJvMEtKOztBYWowS0E7RUFDSTtFQUNBO0VBQ0E7QWJvMEtKOztBYTd6S0E7RUFDSTtFQUNBO0FiZzBLSjs7QWE3ektBO0VBQ0k7RUFDQTtFQUNBO0FiZzBLSjs7QWE3ektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYmcwS0o7O0FhN3pLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJnMEtKOztBYTd6S0E7RUFDSTtFQUNBO0VBQ0E7QWJnMEtKOztBYXp6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjR6S0o7QWExektJO0VBTko7SUFPUTtFYjZ6S047QUFDRjs7QWF0ektBO0VBQ0k7RUFDQTtBYnl6S0o7QWF2ektJO0VBSko7SUFLUTtJQUNBO0ViMHpLTjtBQUNGOztBYXZ6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjB6S0o7O0FhdnpLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjB6S0o7O0FhdnpLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIwektKOztBYXZ6S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYjB6S0o7O0FhdnpLQTtFQUNJO0FiMHpLSjs7QWFyektBO0VBQ0k7RUFDQTtBYnd6S0o7QWF0ektJO0VBQ0k7QWJ3ektSO0FhcnpLSTtFQUNJO0VBQ0E7QWJ1ektSOztBYW56S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJzektKOztBYW56S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYnN6S0o7QWFwektJO0VBQ0k7RUFDQTtFQUNBO0Fic3pLUjs7QWFsektBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FicXpLSjs7QWFoektBO0VBQ0k7RUFDQTtFQUNBO0FibXpLSjs7QWFoektBO0VBQ0k7RUFDQTtFQUNBO0FibXpLSjs7QWFoektBO0VBQ0k7RUFDQTtBYm16S0o7O0FhaHpLQTtFQUNJO0VBQ0E7RUFDQTtBYm16S0o7O0FhOXlLQTtFQUNJO0VBQ0E7RUFDQTtBYml6S0o7O0FhOXlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYml6S0o7O0FhOXlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYml6S0o7O0FhOXlLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpektKOztBYTV5S0E7RUFDSTtFQUNBO0VBQ0E7QWIreUtKOztBYTV5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYit5S0o7O0FhNXlLQTtFQUNJO0VBQ0E7QWIreUtKOztBYTV5S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYit5S0o7O0FhMXlLQTtFQUNJO0FiNnlLSjs7QWF4eUtBO0VBQ0k7QWIyeUtKOztBYXh5S0E7RUFDSTtFQUNBO0VBQ0E7QWIyeUtKO0FhenlLSTtFQUNJO0VBQ0E7RUFDQTtBYjJ5S1I7QWFweUtJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnN5S1I7O0FhN3hLSTtFQURKO0lBRVE7RWJpeUtOO0FBQ0Y7O0FhOXhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiaXlLSjs7QWE5eEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiaXlLSjs7QWE5eEtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYml5S0o7O0FhOXhLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FiaXlLSjs7QWE5eEtBO0VBQ0k7QWJpeUtKOztBYTl4S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJpeUtKOztBYXZ4S0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMHhLUjtBYXh4S1E7RUFDSTtFQUNBO0FiMHhLWjtBYXB4S0k7RUFDSTtFQUNBO0Fic3hLUjtBYWp4S0k7RUFDSTtBYm14S1I7QWE5d0tJO0VBQ0k7RUFDQTtBYmd4S1I7QWEzd0tJO0VBQ0k7QWI2d0tSOztBYXJ3S0E7RUFDSTtFQUNBO0VBQ0E7QWJ3d0tKOztBYXJ3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnd3S0o7QWF0d0tJO0VBQ0k7RUFDQTtBYnd3S1I7QWFyd0tJO0VBQ0k7RUFDQTtFQUNBO0FidXdLUjtBYXJ3S1E7RUFDSTtFQUNBO0FidXdLWjtBYXB3S1E7RUFDSTtFQUNBO0Fic3dLWjtBYWx3S0k7RUFDSTtFQUNBO0Fib3dLUjs7QWFod0tBO0VBQ0k7QWJtd0tKOztBYWh3S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBYm13S0o7O0FhaHdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtd0tKOztBYWh3S0E7RUFDSTtFQUNBO0FibXdLSjs7QWFod0tBO0VBQ0k7RUFDQTtBYm13S0o7O0FhaHdLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJtd0tKOztBYTV2S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIrdktKO0FhN3ZLSTs7RUFFSTtBYit2S1I7O0FhM3ZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjh2S0o7QWE1dktJO0VBQ0k7RUFDQTtBYjh2S1I7O0FhdHZLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FieXZLSjtBYXZ2S0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FieXZLUjtBYXR2S0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ3dktSO0FhcnZLSTtFQUNJO0VBQ0E7RUFDQTtBYnV2S1I7QWFwdktJO0VBQ0k7RUFDQTtBYnN2S1I7O0FhaHZLQTtFQUNJO0FibXZLSjs7QWE1dUtBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiK3VLSjtBYTd1S0k7O0VBQ0k7RUFDQTtBYmd2S1I7QWE3dUtJOztFQUNJO0VBQ0E7QWJndktSO0FhOXVLUTs7RUFDSTtBYml2S1o7O0FhNXVLQTtFQUNJO0FiK3VLSjs7QWE1dUtBO0VBQ0k7RUFDQTtBYit1S0o7O0FheHVLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIydUtKOztBYXh1S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIydUtKOztBYXh1S0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FiMnVLSjs7QWF4dUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYjJ1S0o7O0FheHVLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWIydUtKOztBYXh1S0E7RUFDSTtBYjJ1S0o7O0FhcHVLQTtFQUNJO0VBQ0E7RUFDQTtBYnV1S0o7O0FhcHVLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWJ1dUtKOztBYXB1S0E7RUFDSTtFQUNBO0FidXVLSjs7QWFwdUtBO0VBQ0k7RUFDQTtBYnV1S0o7O0FhcHVLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FidXVLSjs7QWFwdUtBO0VBQ0k7RUFDQTtFQUNBO0FidXVLSjs7QWFwdUtBO0VBQ0k7RUFDQTtFQUNBO0FidXVLSjs7QWFwdUtBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnV1S0o7QWFydUtJO0VBQ0k7RUFDQTtBYnV1S1I7O0FhbnVLQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBYnN1S0o7O0FhL3RLQTtFQUNJO0VBQ0E7RUFDQTtBYmt1S0o7QWFodUtJO0VBQ0k7RUFDQTtBYmt1S1I7QWEvdEtJO0VBQ0k7QWJpdUtSOztBYXp0S0E7RUFFSTtJQUNJO0lBQ0E7RWIydEtOO0VheHRLRTtJQUNJO0lBQ0E7RWIwdEtOO0VhdnRLRTtJQUNJO0lBQ0E7RWJ5dEtOO0VhdHRLRTtJQUNJO0Vid3RLTjtFYXJ0S0U7SUFDSTtFYnV0S047RWFwdEtFO0lBQ0k7RWJzdEtOO0VhbnRLRTtJQUNJO0lBQ0E7RWJxdEtOO0VhbnRLTTtJQUNJO0lBQ0E7RWJxdEtWO0VhanRLRTtJQUNJO0lBQ0E7SUFDQTtFYm10S047QUFDRjtBY3poTUE7Ozs7O0VBQUE7QUFTQTtFQUNJO0Fkd2hNSjtBY3RoTUk7RUFDSTtFQUNBO0Fkd2hNUjs7QWV0aU1BOzs7OztFQUFBO0FBV0E7RUFDSTtBZm9pTUo7O0FnQmhqTUE7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0FoQjhpTUo7QWdCNWlNSTtFQUpKO0lBS1E7SUFDQTtFaEIraU1OO0FBQ0Y7O0FnQjVpTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQitpTUo7O0FnQjVpTUE7RUFDSTtFQUNBO0FoQitpTUo7O0FnQjVpTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCK2lNSjtBZ0I3aU1JO0VBQ0k7RUFDQTtFQUNBO0FoQitpTVI7QWdCNWlNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoQjhpTVI7O0FnQjFpTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjZpTUo7O0FnQjFpTUE7RUFDSTtBaEI2aU1KOztBZ0J0aU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQnlpTUo7QWdCdmlNSTtFQVhKO0lBWVE7SUFDQTtJQUNBO0VoQjBpTU47QUFDRjs7QWdCdmlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEIwaU1KOztBZ0J2aU1BO0VBQ0k7QWhCMGlNSjs7QWdCdmlNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEIwaU1KOztBZ0J2aU1BO0VBQ0k7RUFDQTtFQUNBO0FoQjBpTUo7O0FnQm5pTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJzaU1KO0FnQm5pTUk7RUFDSTtBaEJxaU1SOztBZ0JqaU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm9pTUo7O0FnQmppTUE7RUFDSTtFQUNBO0FoQm9pTUo7O0FnQmppTUE7RUFDSTtBaEJvaU1KOztBZ0JqaU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQm9pTUo7O0FnQjdoTUE7RUFDSTtFQUNBO0VBQ0E7QWhCZ2lNSjtBZ0I5aE1JO0VBTEo7SUFNUTtJQUNBO0VoQmlpTU47QUFDRjs7QWdCOWhNQTtFQUNJO0VBQ0E7RUFDQTtBaEJpaU1KOztBZ0I5aE1BO0VBQ0k7QWhCaWlNSjs7QWdCOWhNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCaWlNSjs7QWdCOWhNQTtFQUNJO0VBQ0E7RUFDQTtBaEJpaU1KOztBZ0IxaE1BO0VBQ0k7RUFDQTtFQUNBO0FoQjZoTUo7O0FnQjFoTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQjZoTUo7QWdCM2hNSTtFQUNJO0FoQjZoTVI7O0FnQnpoTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEI0aE1KOztBZ0J6aE1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhCNGhNSjs7QWdCemhNQTtFQUNJO0VBQ0E7QWhCNGhNSjs7QWdCemhNQTtFQUNJO0VBQ0E7QWhCNGhNSjs7QWdCemhNQTtFQUNJO0FoQjRoTUo7O0FnQnpoTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEI0aE1KOztBZ0J6aE1BO0VBQ0k7RUFDQTtFQUNBO0FoQjRoTUo7O0FnQnpoTUE7RUFDSTtFQUNBO0FoQjRoTUo7O0FnQnJoTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJ3aE1KO0FnQnRoTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEJ3aE1SO0FnQnJoTUk7RUFDSTtBaEJ1aE1SO0FnQnBoTUk7RUFDSTtBaEJzaE1SOztBZ0I5Z01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEJpaE1KOztBZ0I5Z01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCaWhNSjtBZ0IvZ01JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCaWhNUjtBZ0I5Z01JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWhCZ2hNUjs7QWdCNWdNQTtFQUNJO0VBQ0E7RUFDQTtBaEIrZ01KO0FnQjdnTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEIrZ01SO0FnQjdnTVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoQitnTVo7O0FnQnJnTUE7RUFFSTtJQUNJO0VoQnVnTU47QUFDRjtBZ0JwZ01BO0VBR0k7SUFDSTtFaEJvZ01OO0VnQmxnTU07SUFDSTtJQUNBO0VoQm9nTVY7QUFDRjtBZ0I1L0xBO0VBRUk7O0lBRUk7RWhCNi9MTjtBQUNGO0FpQmo1TUE7Ozs7O0VBQUE7QUFhSTtFQUNJO0FqQjQ0TVI7O0FpQnQ0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnk0TUo7QWlCdjRNSTtFQVBKO0lBUVE7SUFDQTtJQUNBO0VqQjA0TU47QUFDRjs7QWlCdjRNQTtFQUNJO0FqQjA0TUo7O0FpQnY0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakIwNE1KO0FpQng0TUk7RUFOSjtJQU9RO0lBQ0E7RWpCMjRNTjtFaUJ6NE1NO0lBQ0k7SUFDQTtFakIyNE1WO0FBQ0Y7O0FpQm40TUE7RUFDSTtBakJzNE1KOztBaUJuNE1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCczRNSjtBaUJwNE1JO0VBTko7SUFPUTtJQUNBO0VqQnU0TU47QUFDRjs7QWlCcDRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnU0TUo7QWlCcjRNSTtFQUNJO0VBQ0E7RUFDQTtBakJ1NE1SO0FpQnA0TUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnM0TVI7QWlCbjRNSTtFQUNJO0FqQnE0TVI7O0FpQmo0TUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJvNE1KO0FpQmw0TUk7RUFOSjtJQU9RO0VqQnE0TU47QUFDRjs7QWlCbDRNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCcTRNSjs7QWlCbDRNQTtFQUNJO0FqQnE0TUo7QWlCbjRNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxNE1SO0FpQm40TVE7RUFDSTtBakJxNE1aO0FpQmw0TVE7RUFDSTtBakJvNE1aO0FpQmg0TUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQms0TVI7QWlCLzNNSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQmk0TVI7O0FpQjMzTUE7RUFDSTtBakI4M01KOztBaUIzM01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakI4M01KO0FpQjUzTUk7RUFDSTtFQUNBO0FqQjgzTVI7QWlCMzNNSTtFQUNJO0FqQjYzTVI7O0FpQnIzTUE7RUFDSTtBakJ3M01KOztBaUJyM01BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQnczTUo7QWlCdDNNSTtFQVJKO0lBU1E7SUFDQTtFakJ5M01OO0FBQ0Y7O0FpQnAzTUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCdTNNUjtBaUJyM01RO0VBQ0k7RUFDQTtFQUNBO0FqQnUzTVo7O0FpQjkyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCaTNNSjs7QWlCNTJNSTtFQUNJO0VBQ0E7RUFDQTtBakIrMk1SO0FpQjUyTUk7RUFDSTtFQUNBO0FqQjgyTVI7QWlCMzJNSTtFQUNJO0FqQjYyTVI7QWlCMzJNUTtFQUhKO0lBSVE7RWpCODJNVjtBQUNGOztBaUJ4Mk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCMjJNSjtBaUJ6Mk1JO0VBQ0k7RUFDQTtFQUNBO0FqQjIyTVI7O0FpQnIyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQncyTUo7O0FpQnIyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJ3Mk1KOztBaUJuMk1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJzMk1KO0FpQnAyTUk7RUFDSTtFQUNBO0FqQnMyTVI7QWlCbjJNSTtFQUNJO0VBQ0E7RUFDQTtBakJxMk1SO0FpQmwyTUk7RUFyQko7SUFzQlE7SUFDQTtFakJxMk1OO0FBQ0Y7O0FpQmgyTUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBakJtMk1KO0FpQmoyTUk7RUFDSTtFQUNBO0VBQ0E7QWpCbTJNUjtBaUJqMk1RO0VBQ0k7QWpCbTJNWjs7QWlCNTFNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCKzFNSjtBaUI3MU1JO0VBQ0k7QWpCKzFNUjtBaUI1MU1JO0VBQ0k7QWpCODFNUjtBaUIzMU1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWpCNjFNUjs7QWlCdjFNQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FqQjAxTUo7QWlCeDFNSTtFQUNJO0VBQ0E7RUFDQTtBakIwMU1SO0FpQnYxTUk7RUFDSTtFQUNBO0VBQ0E7QWpCeTFNUjtBaUJ0MU1JO0VBQ0k7RUFDQTtBakJ3MU1SOztBaUJsMU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBakJxMU1KOztBaUJoMU1BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FqQm0xTUo7QWlCajFNSTtFQUNJO0VBQ0E7RUFDQTtBakJtMU1SO0FpQmgxTUk7RUFDSTtFQUNBO0VBQ0E7QWpCazFNUjtBaUJoMU1RO0VBQ0k7QWpCazFNWjtBaUI5ME1JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpCZzFNUjs7QWlCeDBNQTtFQUVJO0lBQ0k7RWpCMDBNTjtFaUJ2ME1FO0lBQ0k7RWpCeTBNTjtFaUJ0ME1FO0lBQ0k7SUFDQTtFakJ3ME1OO0VpQnIwTUU7SUFDSTtFakJ1ME1OO0VpQnAwTUU7SUFDSTtFakJzME1OO0VpQm4wTUU7SUFDSTtFakJxME1OO0FBQ0Y7QWlCbDBNQTtFQUVJO0lBQ0k7RWpCbTBNTjtFaUJoME1FO0lBQ0k7RWpCazBNTjtFaUIvek1FO0lBQ0k7SUFDQTtFakJpME1OO0VpQjl6TUU7SUFDSTtFakJnME1OO0VpQjd6TUU7SUFDSTtFakIrek1OO0FBQ0Y7QWlCdHpNQTs7RUFFSTtFQUNBO0FqQnd6TUo7O0FpQnB6TUE7RUFFSTtJQUNJO0VqQnN6TU47RWlCbnpNRTtJQUNJO0VqQnF6TU47QUFDRjtBaUJqek1BO0VBRUk7Ozs7SUFJSTtFakJrek1OO0FBQ0Y7QWtCaDJOQTs7Ozs7O0VBQUE7QUFZQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCNjFOSjs7QWtCMTFOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FsQjYxTko7O0FrQjExTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCNjFOSjs7QWtCMTFOQTtFQUNJO0FsQjYxTko7O0FrQjExTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQjYxTko7O0FrQjExTkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEI2MU5KOztBa0IxMU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCNjFOSjs7QWtCMTFOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCNjFOSjtBa0IzMU5JO0VBQ0k7RUFDQTtBbEI2MU5SOztBa0JyMU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCdzFOSjs7QWtCcjFOQTtFQUNJO0VBQ0E7RUFDQTtBbEJ3MU5KOztBa0JyMU5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQncxTko7QWtCdDFOSTtFQUNJO0VBQ0E7QWxCdzFOUjs7QWtCaDFOQTtFQUNJO0VBQ0E7QWxCbTFOSjs7QWtCaDFOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJtMU5KO0FrQmoxTkk7RUFDSTtFQUNBO0FsQm0xTlI7QWtCaDFOSTtFQUNJO0VBQ0E7QWxCazFOUjs7QWtCOTBOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCaTFOSjs7QWtCOTBOQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJpMU5KOztBa0I5ME5BO0VBQ0k7RUFDQTtBbEJpMU5KOztBa0I5ME5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbEJpMU5KOztBa0I5ME5BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QWxCaTFOSjs7QWtCOTBOQTtFQUNJO0FsQmkxTko7O0FrQnIwTkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJ3ME5SO0FrQnQwTlE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FsQnUwTlo7QWtCbjBOWTtFQUNJO0VBQ0E7QWxCcTBOaEI7QWtCajBOUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxCbTBOWjtBa0JqME5ZO0VBQ0k7RUFDQTtFQUNBO0FsQm0wTmhCO0FrQi96TlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbEJpME5aOztBa0J0ek5BO0VBRUk7SUFDSTtJQUNBO0lBQ0E7RWxCd3pOTjtFa0J0ek5NO0lBQ0k7SUFDQTtFbEJ3ek5WO0VrQnB6TkU7SUFDSTtFbEJzek5OO0VrQm56TkU7SUFDSTtFbEJxek5OO0VrQmx6TkU7SUFDSTtFbEJvek5OO0VrQmx6Tk07SUFDSTtJQUNBO0VsQm96TlY7RWtCaHpORTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VsQmt6Tk47RWtCL3lORTtJQUNJO0VsQml6Tk47RWtCOXlORTtJQUNJO0lBQ0E7RWxCZ3pOTjtFa0I5eU5NO0lBQ0k7SUFDQTtFbEJnek5WO0VrQjV5TkU7SUFDSTtFbEI4eU5OO0VrQjN5TkU7SUFDSTtFbEI2eU5OO0VrQnh5Tk07SUFDSTtJQUNBO0VsQjB5TlY7RWtCdnlOTTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0VsQnl5TlY7RWtCcnlORTtJQUNJO0VsQnV5Tk47RWtCcnlOTTtJQUNJO0lBQ0E7RWxCdXlOVjtFa0JyeU5VO0lBQ0k7SUFDQTtFbEJ1eU5kO0VrQm55Tk07SUFDSTtFbEJxeU5WO0VrQmx5Tk07SUFDSTtFbEJveU5WO0VrQmp5Tk07SUFDSTtFbEJteU5WO0FBQ0Y7QWtCOXhOQTtFQUVJO0lBQ0k7RWxCK3hOTjtBQUNGO0FrQnh4TkE7RUFFSTtJQUNJO0VsQnl4Tk47QUFDRjtBbUJ2cE9BOzs7Ozs7Ozs7O0VBQUE7QUFnQkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQm9wT0o7O0FtQmpwT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Cb3BPSjs7QW1CanBPQTtFQUVJO0lBQ0k7SUFDQTtFbkJtcE9OO0VtQmhwT0U7SUFDSTtJQUNBO0VuQmtwT047QUFDRjtBbUJ6b09BO0VBQ0k7RUFDQTtFQUNBO0FuQjJvT0o7QW1Cem9PSTtFQUNJO0VBQ0E7QW5CMm9PUjs7QW1CcG9PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQnVvT0o7QW1Ccm9PSTtFQUNJO0VBQ0E7QW5CdW9PUjs7QW1Cbm9PQTtFQUNJO0VBQ0E7QW5Cc29PSjs7QW1Cbm9PQTtFQUNJO0VBQ0E7QW5Cc29PSjs7QW1Cbm9PQTtFQUNJO0VBQ0E7QW5Cc29PSjs7QW1Cbm9PQTtFQUNJO0VBQ0E7QW5Cc29PSjs7QW1Cbm9PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkJzb09KOztBbUJub09BO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5Cc29PSjs7QW1CL25PQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQmtvT0o7QW1CaG9PSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQmtvT1I7QW1CL25PSTtFQUNJO0VBQ0E7RUFDQTtBbkJpb09SO0FtQjluT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CZ29PUjtBbUI5bk9RO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CZ29PWjs7QW1CeG5PQTtFQUNJO0FuQjJuT0o7O0FtQnBuT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkJ1bk9KO0FtQnJuT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQnVuT1I7QW1Ccm5PUTtFQUNJO0VBQ0E7QW5CdW5PWjtBbUJwbk9RO0VBQ0k7QW5Cc25PWjtBbUJubk9RO0VBQ0k7RUFDQTtBbkJxbk9aO0FtQi9tT1E7RUFDSTtFQUNBO0FuQmluT1o7QW1COW1PUTtFQUNJO0FuQmduT1o7QW1CN21PUTtFQUNJO0VBQ0E7QW5CK21PWjs7QW1CN2xPSTtFQUNJO0FuQmdtT1I7O0FtQnhsT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CMmxPSjtBbUJ6bE9JO0VBQ0k7QW5CMmxPUjtBbUJ4bE9JO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5CMGxPUjtBbUJ2bE9JO0VBQ0k7RUFDQTtBbkJ5bE9SO0FtQnBsT0k7RUFDSTtFQUNBO0VBQ0E7QW5Cc2xPUjtBbUJwbE9RO0VBQ0k7RUFDQTtFQUNBO0FuQnNsT1o7QW1CcGxPWTtFQUNJO0FuQnNsT2hCO0FtQi9rT0k7RUFDSTtFQUNBO0VBQ0E7QW5CaWxPUjtBbUIva09RO0VBQ0k7RUFDQTtFQUNBO0FuQmlsT1o7QW1CL2tPWTtFQUNJO0FuQmlsT2hCOztBbUJya09JO0VBQ0k7RUFDQTtBbkJ3a09SOztBbUJwa09BO0VBQ0k7RUFDQTtFQUNBLDBGQUNJO0FuQnNrT1I7QW1CaGtPSTtFQUNJO0FuQmtrT1I7QW1CM2pPSTtFQUNJO0FuQjZqT1I7O0FtQnpqT0E7RUFDSTtFQUNBO0FuQjRqT0o7QW1CMWpPSTtFQUNJO0FuQjRqT1I7O0FtQnBqT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5CdWpPSjtBbUJyak9JO0VBQ0k7QW5CdWpPUjs7QW1CampPQTtFQUNJO0VBQ0E7RUFDQTtFQUNBLDBGQUNJO0FuQm1qT1I7QW1CaGpPSTtFQUNJO0VBQ0E7QW5Ca2pPUjtBbUIvaU9JO0VBQ0k7QW5CaWpPUjtBbUI5aU9JO0VBQ0k7QW5CZ2pPUjtBbUI5aU9RO0VBQ0k7QW5CZ2pPWjs7QW1CM2lPQTtFQUNJO0VBQ0E7QW5COGlPSjs7QW1CM2lPQTtFQUNJO0FuQjhpT0o7O0FtQnppT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI0aU9KO0FtQjFpT0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBbkI0aU9SOztBbUJyaU9BO0VBQ0k7RUFDQTtBbkJ3aU9KOztBbUJyaU9BO0VBQ0k7RUFDQTtBbkJ3aU9KOztBbUJyaU9BO0VBQ0k7QW5Cd2lPSjs7QW1CbGlPQTtFQUNJO0VBQ0E7RUFDQTtBbkJxaU9KO0FtQmhpT0k7RUFDSTtFQUNBO0FuQmtpT1I7O0FtQnJoT0k7RUFDSTtBbkJ3aE9SOztBbUJwaE9BO0VBQ0k7RUFDQTtFQUNBO0FuQnVoT0o7QW1CcmhPSTtFQUNJO0FuQnVoT1I7QW1CamhPSTtFQUNJO0FuQm1oT1I7O0FtQi9nT0E7RUFDSTtBbkJraE9KOztBbUIvZ09BO0VBQ0k7RUFDQTtFQUNBO0FuQmtoT0o7O0FtQjdnT0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQmdoT0o7QW1COWdPSTtFQUNJO0VBQ0E7RUFDQTtBbkJnaE9SOztBbUJ4Z09BO0VBRUk7SUFDSTtFbkIwZ09OO0VtQnJnT007SUFDSTtJQUNBO0lBQ0E7RW5CdWdPVjtFbUJwZ09NO0lBQ0k7RW5Cc2dPVjtFbUJwZ09VO0lBQ0k7RW5Cc2dPZDtFbUJqZ09FO0lBQ0k7RW5CbWdPTjtFbUJoZ09FO0lBQ0k7SUFDQTtFbkJrZ09OO0VtQmhnT007SUFDSTtJQUNBO0VuQmtnT1Y7RW1COS9ORTtJQUNJO0VuQmdnT047RW1CNy9ORTtJQUNJO0VuQisvTk47RW1CNS9ORTtJQUNJO0VuQjgvTk47RW1Cei9OTTtJQUNJO0VuQjIvTlY7RW1Cci9OTTtJQUNJO0lBQ0E7SUFDQTtFbkJ1L05WO0VtQnAvTk07SUFDSTtFbkJzL05WO0FBQ0Y7QW1Cai9OQTtFQUVJO0lBQ0k7SUFDQTtFbkJrL05OO0FBQ0Y7QW1CeitOQTtFQUVJO0lBQ0k7RW5CMCtOTjtFbUJ2K05FOzs7SUFHSTtFbkJ5K05OO0FBQ0Y7QW1CbCtOQTtFQUVJO0lBQ0k7RW5CbStOTjtFbUJoK05FO0lBQ0k7SUFDQTtFbkJrK05OO0VtQi85TkU7SUFDSTtFbkJpK05OO0VtQjk5TkU7SUFDSTtFbkJnK05OO0FBQ0Y7QW9Cbm1QQTs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUNJO0VBQ0E7QXBCMmxQSjs7QW9CdGxQQTtFQUNJO0FwQnlsUEo7O0FvQmxsUEE7RUFDSTtFQUNBO0VBQ0E7QXBCcWxQSjs7QW9CL2tQQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGlQQUNJO0FwQmlsUFI7QW9CemtQSTtFQUNJO0VBQ0E7QXBCMmtQUjtBb0J6a1BRO0VBQ0k7QXBCMmtQWjtBb0Jua1BJO0VBQ0k7RUFDQTtBcEJxa1BSO0FvQjlqUEk7RUFDSTtFQUNBO0VBQ0E7QXBCZ2tQUjtBb0I5alBRO0VBQ0k7RUFDQTtFQUNBO0FwQmdrUFo7QW9CN2pQUTtFQUNJO0FwQitqUFo7QW9CMWpQUTtFQUNJO0FwQjRqUFo7O0FvQnJqUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQndqUEo7O0FvQnJqUEE7RUFDSTtBcEJ3alBKOztBb0JyalBBO0VBQ0k7RUFDQTtBcEJ3alBKOztBb0JyalBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBCd2pQSjs7QW9CbmpQQTtFQUNJO0VBQ0E7RUFDQTtBcEJzalBKOztBb0JualBBO0VBQ0k7RUFDQTtFQUNBO0FwQnNqUEo7O0FvQm5qUEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBcEJzalBKOztBb0JoalBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEJtalBKOztBb0I1aVBBO0VBQ0k7RUFDQTtBcEIraVBKOztBb0J4aVBBO0VBQ0k7RUFDQTtFQUNBO0FwQjJpUEo7O0FvQnhpUEE7RUFDSTtBcEIyaVBKOztBb0JqaVBBO0VBRUk7SUFDSTtFcEJtaVBOO0FBQ0Y7QXFCbnZQQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXNCQTtFQUdJO0FyQmt2UEo7QXFCNXVQSTtFQUNJO0FyQjh1UFI7QXFCM3VQSTtFQUNJO0VBQ0E7RUFDQTtBckI2dVBSO0FxQnh1UEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0Esc0xBQ0k7QXJCeXVQWjtBcUJsdVBJO0VBQ0k7RUFDQTtBckJvdVBSO0FxQjl0UEk7RUFDSTtFQUNBO0VBQ0E7QXJCZ3VQUjtBcUI3dFBJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXJCK3RQUjtBcUJ6dFBJOztFQUVJO0FyQjJ0UFI7QXFCeHRQSTtFQUNJO0FyQjB0UFI7QXFCdnRQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCeXRQUjtBcUJ0dFBJO0VBQ0k7QXJCd3RQUjtBcUI5c1BJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJndFBSO0FxQnJzUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCdXNQUjtBcUJoc1BJO0VBQ0k7RUFDQTtBckJrc1BSO0FxQi9yUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckJpc1BSO0FxQnRyUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FyQndyUFI7QXFCdHJQUTtFQUNJO0VBQ0E7RUFDQTtBckJ3clBaO0FxQnJyUFE7RUFDSTtBckJ1clBaO0FxQi9xUEk7RUFDSTtFQUNBO0FyQmlyUFI7QXFCM3FQSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBckI2cVBSO0FxQnZxUEk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXJCeXFQUjtBcUJ2cVBRO0VBQ0k7RUFDQTtFQUNBO0FyQnlxUFo7QXFCanFQSTtFQUVJO0lBQ0k7RXJCa3FQVjtFcUIvcFBNO0lBQ0k7RXJCaXFQVjtBQUNGOztBcUI3cFBBO0VBRUk7SUFDSTtJQUNBO0VyQitwUE47RXFCNXBQRTtJQUNJO0lBQ0E7RXJCOHBQTjtBQUNGO0FxQnBwUEE7RUFJUTs7O0lBR0k7RXJCbXBQVjtFcUJocFBNO0lBQ0k7RXJCa3BQVjtBQUNGO0FzQjM2UEE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBMEJBO0VBT0k7RUFDQTtFQUNBO0VBR0E7RUFHQTtBdEJrNlBKOztBc0I1NVBBO0VBQ0k7QXRCKzVQSjs7QXNCejVQQTtFQUNJO0VBQ0E7QXRCNDVQSjs7QXNCbDVQQTtFQUNJO0F0QnE1UEo7O0FzQmg1UEE7RUFDSTtBdEJtNVBKOztBc0I1NFBBO0VBQ0k7RUFDQTtBdEIrNFBKOztBc0JyNFBBO0VBQ0k7QXRCdzRQSjs7QXVCcitQQTs7Ozs7Ozs7RUFBQTtBQ0FBOzs7Ozs7Ozs7OztFQUFBO0FBYUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7QXhCZy9QSjtBd0I1K1BJOztFQUNJO0VBQ0E7QXhCKytQUjtBd0I1K1BJOztFQUNJO0F4QisrUFI7QXdCMStQSTs7RUFDSTtFQUNBO0VBQ0E7QXhCNitQUjtBd0IxK1BROzs7O0VBRUk7QXhCOCtQWjtBd0J6K1BROztFQUNJO0VBQ0E7QXhCNCtQWjtBd0J2K1BROztFQUNJO0VBQ0E7RUFDQTtBeEIwK1BaO0F3Qi85UEk7Ozs7RUFFSTtFQUNBO0VBQ0E7QXhCbStQUjtBd0JqK1BROzs7Ozs7OztFQUVJO0F4QnkrUFo7QXdCdCtQUTs7OztFQUNJO0VBQ0E7QXhCMitQWjtBd0JyK1BJOzs7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBeEJ5K1BSO0F3QnArUEk7Ozs7RUFFSTtBeEJ3K1BSO0F3QmwrUEk7O0VBQ0k7RUFDQTtFQUNBO0F4QnErUFI7QXdCbitQUTs7RUFDSTtFQUNBO0VBS0E7QXhCaytQWjtBd0JoK1BZOzs7RUFFSTtFQUNBO0F4Qm0rUGhCO0F3QmgrUFk7O0VBQ0k7RUFDQTtBeEJtK1BoQjtBd0I1OVBJOztFQUNJO0VBQ0E7QXhCKzlQUjtBd0I3OVBROztFQUNJO0VBQ0E7QXhCZytQWjs7QXdCeDlQSTtFQURKO0lBRVE7RXhCNDlQTjtBQUNGOztBeUJsblFBOzs7OztFQUFBO0FBV0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJnblFKO0F5QjdtUUk7O0VBQ0k7RUFDQTtBekJnblFSO0F5QjdtUUk7O0VBQ0k7QXpCZ25RUjs7QXlCeG1RQTtFQUNJO0F6QjJtUUo7O0F5QnBtUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJ1bVFKO0F5Qm5tUUk7RUFDSTtFQUNBO0F6QnFtUVI7O0F5QjNsUUk7RUFDSTtFQUNBO0VBQ0E7QXpCOGxRUjtBeUIzbFFJOztFQUVJO0VBQ0E7QXpCNmxRUjtBeUIxbFFROztFQUNJO0VBQ0E7QXpCNmxRWjtBeUJ6bFFJO0VBQ0k7RUFDQTtFQUNBO0F6QjJsUVI7O0F5Qm5sUUE7OztFQUdJO0VBQ0E7RUFDQTtFQUNBO0F6QnNsUUo7QXlCcGxRSTs7O0VBQ0k7QXpCd2xRUjs7QXlCaGxRQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCbWxRSjtBeUJobFFJO0VBQ0k7RUFDQTtBekJrbFFSOztBeUI5a1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXpCaWxRSjtBeUIva1FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCaWxRUjtBeUIva1FRO0VBQ0k7QXpCaWxRWjtBeUI5a1FRO0VBQ0k7QXpCZ2xRWjtBeUI1a1FJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekI4a1FSOztBeUJwa1FJO0VBQ0k7RUFDQTtFQUNBO0F6QnVrUVI7QXlCcmtRUTtFQUNJO0VBQ0E7QXpCdWtRWjtBeUJua1FJO0VBQ0k7QXpCcWtRUjtBeUJua1FRO0VBQ0k7RUFDQTtBekJxa1FaO0F5Qm5rUVk7O0VBRUk7QXpCcWtRaEI7QXlCOWpRSTtFQUNJO0F6QmdrUVI7QXlCOWpRUTtFQUNJO0F6QmdrUVo7O0F5QnJqUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJ3alFSO0F5QnRqUVE7RUFDSTtFQUNBO0F6QndqUVo7O0F5Qi9pUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJralFKO0F5QmhqUUk7RUFDSTtBekJralFSO0F5Qi9pUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBekJpalFSO0F5QjVpUVE7O0VBRUk7QXpCOGlRWjs7QXlCbmlRSTtFQUNJO0F6QnNpUVI7QXlCbmlRSTtFQUNJO0VBQ0E7QXpCcWlRUjtBeUJsaVFJOztFQUVJO0F6Qm9pUVI7O0F5QjVoUUE7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0F6QitoUUo7QXlCN2hRSTs7RUFDSTtFQUNBO0F6QmdpUVI7O0F5QjVoUUE7O0VBRUk7QXpCK2hRSjtBeUI3aFFJOztFQUNJO0VBQ0E7QXpCZ2lRUjs7QXlCNWhRQTtFQUNJO0VBQ0E7RUFDQTtBekIraFFKOztBeUI1aFFBO0VBQ0k7RUFDQTtFQUNBO0F6QitoUUo7O0F5QnhoUUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBekIwaFFKO0F5QnhoUUk7RUFFSTtFQUNBO0F6QnloUVI7QXlCdGhRSTtFQUNJO0VBQ0E7QXpCd2hRUjtBeUJ0aFFRO0VBQ0k7RUFDQTtBekJ3aFFaO0F5QnBoUUk7RUFDSTtFQUNBO0F6QnNoUVI7QXlCbmhRSTtFQUNJO0VBQ0E7RUFDQTtBekJxaFFSOztBeUIvZ1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QXpCaWhRSjtBeUIvZ1FJO0VBRUk7RUFDQTtBekJnaFFSOztBeUJ4Z1FBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCMmdRSjtBeUJ6Z1FJOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0F6QjJnUVI7O0F5Qm5nUUE7Ozs7Ozs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBekJxZ1FKO0F5QmpnUUk7RUFDSTtFQUNBO0VBQ0E7QXpCbWdRUjtBeUI5L1BJO0VBQ0k7QXpCZ2dRUjs7QXlCeC9QQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0F6QjIvUEo7QXlCei9QSTs7RUFFSTtBekIyL1BSOztBeUJqL1BJOzs7RUFHSTtFQUNBO0VBQ0E7RUFDQTtBekJvL1BSO0F5QmwvUFE7RUFSSjs7O0lBU1E7RXpCdS9QVjtBQUNGO0F5QnAvUEk7RUFDSTtFQUNBO0VBQ0E7QXpCcy9QUjtBeUJwL1BRO0VBTEo7SUFNUTtJQUNBO0V6QnUvUFY7QUFDRjs7QXlCNytQSTs7RUFFSTtBekJnL1BSO0F5QjcrUEk7O0VBRUk7RUFDQTtBekIrK1BSO0F5QjUrUEk7RUFDSTtFQUNBO0F6QjgrUFI7O0F5Qm4rUEE7RUFDSTtBekJzK1BKOztBeUIvOVBBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXpCaytQSjtBeUJoK1BJO0VBQ0k7RUFDQTtBekJrK1BSOztBeUI5OVBBO0VBQ0k7RUFDQTtFQUNBO0F6QmkrUEo7QXlCLzlQSTtFQUNJO0VBQ0E7QXpCaStQUjtBeUI5OVBJO0VBQ0k7QXpCZytQUjs7QXlCdDlQQTtFQUNJO0F6Qnk5UEo7O0F5Qmg5UEE7RUFDSTtBekJtOVBKOztBeUJoOVBBO0VBRUk7SUFDSTtFekJrOVBOO0V5Qjc4UE07SUFDSTtJQUNBO0V6Qis4UFY7RXlCMzhQRTtJQUNJO0V6QjY4UE47RXlCMThQRTtJQUNJO0lBQ0E7RXpCNDhQTjtFeUIxOFBNO0lBQ0k7SUFDQTtFekI0OFBWO0FBQ0Y7QTBCMWhSQTs7Ozs7O0VBQUE7QUFZQTs7RUFFSTtFQUNBO0VBQ0E7QTFCdWhSSjtBMEJuaFJJOztFQUNJO0VBQ0E7RUFDQTtBMUJzaFJSO0EwQm5oUkk7O0VBQ0k7RUFDQTtFQUNBO0ExQnNoUlI7QTBCcGhSUTs7RUFDSTtFQUNBO0ExQnVoUlo7QTBCamhSUTs7RUFDSTtFQUNBO0ExQm9oUlo7QTBCNWdSUTs7RUFDSTtFQUNBO0VBQ0E7QTFCK2dSWjtBMEI1Z1JROztFQUNJO0ExQitnUlo7QTBCM2dSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQjhnUlI7QTBCM2dSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQjhnUlI7QTBCM2dSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUI4Z1JSO0EwQjNnUkk7O0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUI4Z1JSO0EwQjNnUkk7O0VBQ0k7RUFDQTtFQUNBO0ExQjhnUlI7QTBCM2dSSTs7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUI4Z1JSO0EwQjFnUkk7RUFFSTs7SUFDSTtJQUNBO0UxQjRnUlY7RTBCMWdSVTs7SUFDSTtJQUNBO0UxQjZnUmQ7RTBCemdSTTs7SUFDSTtJQUNBO0lBQ0E7RTFCNGdSVjtFMEJ6Z1JNOzs7SUFDSTtFMUI2Z1JWO0FBQ0Y7O0EwQmxnUkk7RUFDSTtFQUNBO0VBQ0E7QTFCcWdSUjtBMEJoZ1JJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBMUJrZ1JSO0EwQmhnUlE7RUFDSTtFQUNBO0VBQ0E7QTFCa2dSWjtBMEJoZ1JZO0VBQ0k7QTFCa2dSaEI7QTBCLy9RWTtFQUNJO0ExQmlnUmhCO0EwQjcvUVE7RUFDSTtBMUIrL1FaO0EwQjMvUUk7RUFDSTtBMUI2L1FSO0EwQjMvUVE7RUFDSTtBMUI2L1FaO0EwQngvUVE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBMUIwL1FaO0EwQnIvUVE7RUFDSTtFQUNBO0ExQnUvUVo7QTBCbC9RUTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBMUJvL1FaO0EwQmgvUUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0ExQmsvUVI7QTBCLytRSTtFQUNJO0ExQmkvUVI7QTBCNStRSTtFQUNJO0VBQ0E7RUFDQTtBMUI4K1FSO0EwQjUrUVE7RUFDSTtFQUNBO0ExQjgrUVo7QTBCMStRSTtFQUNJO0ExQjQrUVI7QTBCeitRSTtFQUVJO0lBQ0k7RTFCMCtRVjtBQUNGOztBMEI5OVFROztFQUVJO0VBQ0E7QTFCaStRWjtBMEI3OVFJO0VBQ0k7RUFDQTtBMUIrOVFSO0EwQjU5UUk7RUFDSTtFQUNBO0ExQjg5UVI7QTBCNTlRUTtFQUNJO0VBQ0E7QTFCODlRWjtBMEIzOVFRO0VBQ0k7RUFDQTtBMUI2OVFaO0EwQjE5UVE7RUFDSTtFQUNBO0ExQjQ5UVo7QTBCeDlRSTtFQUNJO0VBQ0E7QTFCMDlRUjs7QTJCcnZSQTs7O0VBQUE7QUFhQTtFQUNJO0VBQ0E7RUFDQTtBM0IrdVJKOztBNEJuclJJO0VEdERBO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTNCNnVSTjtFMkIzdVJNO0lBQ0k7RTNCNnVSVjtFMkIxdVJNO0lBQ0k7RTNCNHVSVjtBQUNGO0EyQnB1UkE7RUFDSTtBM0JzdVJKO0EyQnB1Ukk7RUFDSTtBM0JzdVJSO0EyQm51Ukk7RUFDSTtBM0JxdVJSO0E0QjN0Ukk7RURYQTtJQUlRO0UzQnN1UlY7QUFDRjtBMkJudVJJO0VBQ0k7RUFDQTtBM0JxdVJSO0E0QnB1Ukk7RURIQTtJQUtRO0UzQnN1UlY7QUFDRjtBMkJodVJJO0VBQ0k7QTNCa3VSUjtBMkI1dFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNCOHRSUjtBMkI1dFJRO0VBQ0k7QTNCOHRSWjtBMkJ4dFJJO0VBQ0k7QTNCMHRSUjs7QTJCaHRSSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0JtdFJSO0EyQmp0UlE7RUFDSTtFQUNBO0VBQ0E7QTNCbXRSWjtBMkIvc1JJO0VBQ0k7RUFDQTtFQUNBO0EzQml0UlI7QTJCL3NSUTtFQUVJO0VBQ0E7QTNCZ3RSWjs7QTJCdnNSQTtFQUNJO0VBQ0E7QTNCMHNSSjtBMkJ4c1JJO0VBQ0k7QTNCMHNSUjtBMkJ2c1JJO0VBQ0k7RUFDQTtFQUNBO0EzQnlzUlI7QTJCdnNSUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCeXNSWjtBMkJyc1JJO0VBQ0k7QTNCdXNSUjtBMkJyc1JRO0VBQ0k7RUFDQTtFQUNBO0EzQnVzUlo7O0EyQjVyUkk7RUFDSTtFQUNBO0EzQityUlI7QTJCNXJSSTtFQUNJO0VBQ0E7RUFDQTtBM0I4clJSOztBMkJwclJJO0VBQ0k7QTNCdXJSUjtBMkJyclJRO0VBQ0k7QTNCdXJSWjtBMkJwclJRO0VBQ0k7RUFDQTtBM0JzclJaO0EyQm5yUlE7RUFDSTtBM0JxclJaO0EyQmpyUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EzQm1yUlI7QTJCanJSUTtFQUNJO0EzQm1yUlo7O0EyQjFxUkE7RUFJUTs7O0lBR0k7RTNCMHFSVjtBQUNGO0EyQjdwUkk7RUFDSTtFQUNBO0EzQitwUlI7QTJCN3BSUTtFQUNJO0VBQ0E7QTNCK3BSWjtBMkI1cFJRO0VBQ0k7QTNCOHBSWjtBMkIxcFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTNCNHBSUjtBMkJ0cFJJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0J3cFJSO0EyQnJwUkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTNCdXBSUjtBMkJycFJRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUdBO0EzQnFwUlo7QTJCL29SSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBM0JpcFJSO0EyQjlvUkk7RUFDSTtBM0JncFJSO0EyQjNvUlE7RUFDSTtBM0I2b1JaO0EyQjFvUlE7RUFDSTtBM0I0b1JaOztBNkI1OVJBOzs7OztFQUFBO0FBZ0JBO0VBQ0k7RUFDQTtFQUNBO0E3QnE5Uko7QTZCbjlSSTtFQUxKO0lBTVE7RTdCczlSTjtBQUNGO0E2QnA5Ukk7RUFUSjtJQVVRO0U3QnU5Uk47QUFDRjs7QTZCcDlSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCdTlSSjtBNkJsOVJJO0VBVko7SUFXUTtFN0JxOVJOO0FBQ0Y7QTZCNThSSTtFQUNJO0VBQ0E7QTdCODhSUjtBNkJ0OFJRO0VBREo7SUFFUTtFN0J5OFJWO0FBQ0Y7QTZCdjhSUTtFQUNJO0E3Qnk4Ulo7O0E2QnA4UkE7RUFDSTtFQUNBO0VBQ0E7QTdCdThSSjs7QTZCcDhSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QnU4Uko7QTZCcjhSSTtFQUNJO0VBQ0E7QTdCdThSUjtBNkJwOFJJO0VBQ0k7RUFDQTtBN0JzOFJSO0E2Qm44Ukk7RUFDSTtFQUNBO0E3QnE4UlI7QTZCbDhSSTtFQUNJO0VBQ0E7QTdCbzhSUjtBNkJqOFJJO0VBQ0k7RUFDQTtBN0JtOFJSOztBNkIvN1JBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTdCazhSSjs7QTZCLzdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCazhSSjs7QTZCLzdSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JrOFJKO0E2Qjc3Ukk7RUFDSTtBN0IrN1JSO0E2QnA3Ukk7RUFDSTtBN0JzN1JSOztBNkJsN1JBO0VBQ0k7RUFDQTtFQUNBO0E3QnE3Uko7O0E2Qjk2UkE7RUFDSTtFQUNBO0E3Qmk3Uko7O0E2Qjk2UkE7RUFDSTtBN0JpN1JKOztBNkI5NlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JpN1JKOztBNkI5NlJBO0VBQ0k7QTdCaTdSSjs7QTZCOTZSQTtFQUNJO0VBQ0E7RUFDQTtFQU9BO0VBQ0E7RUFDQTtFQUNBO0E3QjI2Uko7O0E2Qng2UkE7RUFDSTtFQUlBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0J3NlJKOztBNkJyNlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCdzZSSjs7QTZCcjZSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0J3NlJKOztBNkJyNlJBO0VBS0k7RUFDQTtBN0JvNlJKOztBNkJqNlJBO0VBQ0k7RUFDQTtBN0JvNlJKOztBNkI1NVJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qis1Uko7O0E2QjU1UkE7RUFJSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCNDVSSjtBNkIxNVJJO0VBQ0k7RUFDQTtBN0I0NVJSOztBNkJ4NVJBO0VBR0k7RUFDQTtFQUNBO0VBQ0E7QTdCeTVSSjs7QTZCdDVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E3Qnk1Uko7O0E2Qmw1UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCcTVSSjs7QTZCbDVSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0JxNVJKOztBNkJsNVJBO0VBQ0k7RUFDQTtBN0JxNVJKOztBNkJsNVJBO0VBQ0k7RUFDQTtFQUNBO0E3QnE1Uko7O0E2Qmg1Ukk7RUFDSTtFQUNBO0E3Qm01UlI7O0E2Qi80UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qms1Uko7QTZCaDVSSTtFQUNJO0E3Qms1UlI7QTZCLzRSSTtFQUNJO0E3Qmk1UlI7QTZCOTRSSTtFQUNJO0E3Qmc1UlI7QTZCNzRSSTtFQUNJO0E3Qis0UlI7O0E2QjM0UkE7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBN0I2NFJKO0E2QjM0Ukk7RUFDSTtFQUNBO0E3QjY0UlI7QTZCMTRSSTtFQUNJO0VBQ0E7QTdCNDRSUjtBNkJ6NFJJO0VBQ0k7RUFDQTtBN0IyNFJSO0E2Qng0Ukk7RUFDSTtFQUNBO0E3QjA0UlI7O0E2QnQ0UkE7RUFDSTtFQUNBO0VBQ0E7QTdCeTRSSjs7QTZCdDRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0J5NFJKO0E2QnQ0Ukk7RUFDSTtBN0J3NFJSO0E2QnI0Ukk7RUFDSTtFQUNBO0E3QnU0UlI7QTZCcDRSSTtFQUNJO0E3QnM0UlI7QTZCcDRSUTtFQUNJO0E3QnM0Ulo7QTZCbjRSUTtFQUNJO0E3QnE0Ulo7O0E2Qmg0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3Qm00Uko7O0E2Qmg0UkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBN0JtNFJKOztBNkJoNFJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QTdCbTRSSjs7QTZCaDRSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E3Qm00Uko7O0E2Qmg0UkE7RUFDSTtFQUNBO0VBQ0E7QTdCbTRSSjs7QTZCaDRSQTtFQUNJO0VBQ0E7RUFDQTtBN0JtNFJKOztBNkI1M1JBO0VBQ0k7RUFDQTtFQUNBO0E3QiszUko7O0E2QjUzUkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCKzNSSjtBNkIzM1JJO0VBQ0k7RUFDQTtBN0I2M1JSO0E2QjEzUkk7RUFDSTtFQUNBO0E3QjQzUlI7QTZCejNSSTtFQUNJO0VBQ0E7QTdCMjNSUjtBNkJ6M1JRO0VBQ0k7QTdCMjNSWjtBNkJ2M1JJO0VBQ0k7RUFDQTtBN0J5M1JSO0E2QnYzUlE7RUFDSTtBN0J5M1JaO0E2QnIzUkk7RUFDSTtFQUNBO0E3QnUzUlI7QTZCcjNSUTtFQUNJO0E3QnUzUlo7QTZCbjNSSTtFQUNJO0VBQ0E7QTdCcTNSUjtBNkJuM1JRO0VBQ0k7QTdCcTNSWjtBNkJqM1JJO0VBRUk7SUFFSTtJQUNBO0U3QmkzUlY7QUFDRjs7QTZCNzJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCZzNSSjs7QTZCNzJSQTtFQUNJO0VBQ0E7RUFDQTtBN0JnM1JKOztBNkJ4MlJBO0VBQ0k7RUFDQTtBN0IyMlJKOztBNkJ4MlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0IyMlJKO0E2QnoyUkk7RUFDSTtBN0IyMlJSOztBNkJ2MlJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0IwMlJKO0E2QngyUkk7RUFDSTtFQUNBO0E3QjAyUlI7QTZCdjJSSTtFQUVJO0VBQ0E7QTdCdzJSUjtBNkJyMlJJO0VBQ0k7RUFDQTtBN0J1MlJSO0E2QnAyUkk7RUFDSTtFQUNBO0E3QnMyUlI7QTZCbjJSSTtFQUNJO0VBQ0E7QTdCcTJSUjs7QTZCajJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCbzJSSjs7QTZCajJSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCbzJSSjs7QTZCaDJSQTtFQUNJO0VBS0E7QTdCKzFSSjs7QTZCNTFSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0IrMVJKO0E2QjcxUkk7RUFDSTtFQUNBO0E3QisxUlI7QTZCNTFSSTtFQUNJO0VBQ0E7QTdCODFSUjs7QTZCMTFSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdCNjFSSjs7QTZCMTFSQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E3QjYxUko7QTZCMzFSSTtFQUNJO0E3QjYxUlI7QTZCMTFSSTtFQUNJO0VBQ0E7RUFDQTtBN0I0MVJSO0E2QnoxUkk7RUFDSTtBN0IyMVJSOztBNkJ2MVJBO0VBR0k7QTdCdzFSSjs7QTZCcjFSQTtFQUNJO0VBQ0E7RUFDQTtBN0J3MVJKOztBNkJyMVJBO0VBQ0k7QTdCdzFSSjs7QThCeGlUQTs7Ozs7RUFBQTtBQVdBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnNpVEo7O0E4Qm5pVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QnNpVEo7O0E4Qm5pVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCc2lUSjtBOEJwaVRJO0VBQ0k7RUFDQTtFQUNBO0E5QnNpVFI7QThCcGlUUTtFQUNJO0E5QnNpVFo7O0E4QmppVEE7RUFDSTtFQUNBO0VBQ0E7QTlCb2lUSjs7QThCN2hUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJnaVRKOztBOEI3aFRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5QmdpVEo7O0E4QjNoVEE7RUFDSTtBOUI4aFRKOztBOEJ4aFRBOztFQUVJO0E5QjJoVEo7O0E4QnhoVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUIyaFRKOztBOEJwaFRBO0VBQ0k7QTlCdWhUSjtBOEJyaFRJO0VBQ0k7QTlCdWhUUjs7QThCbmhUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCc2hUSjs7QThCbmhUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QnNoVEo7O0E4Qm5oVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJzaFRKOztBOEI3Z1RJO0VBQ0k7RUFDQTtBOUJnaFRSO0E4QnBoVEE7RUFPSTs7OztLQUFBO0E5Qm9oVEo7QThCOWdUSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBOUJnaFRSO0E4QjlnVFE7RUFDSTtFQUNBO0E5QmdoVFo7QThCN2dUUTtFQUNJO0VBQ0E7QTlCK2dUWjtBOEI1Z1RRO0VBQ0k7RUFDQTtFQUNBO0E5QjhnVFo7QThCMWdUSTtFQUNJO0E5QjRnVFI7O0E4QnBnVEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJ1Z1RKOztBOEJwZ1RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCdWdUSjtBOEJyZ1RJO0VBQ0k7RUFDQTtBOUJ1Z1RSOztBOEIvL1NBOztFQUVJO0VBQ0E7QTlCa2dUSjtBOEJoZ1RJOztFQUNJO0E5Qm1nVFI7QThCaGdUSTs7RUFDSTtFQUNBO0VBQ0E7QTlCbWdUUjtBOEJoZ1RJOztFQUNJO0E5Qm1nVFI7O0E4Qi8vU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCa2dUSjs7QThCLy9TQTtFQUNJO0VBQ0E7QTlCa2dUSjs7QThCLy9TQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QmtnVEo7QThCaGdUSTtFQUNJO0E5QmtnVFI7O0E4QjkvU0E7RUFDSTtFQUNBO0VBQ0E7QTlCaWdUSjs7QThCOS9TQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QmlnVEo7O0E4QjkvU0E7RUFDSTtBOUJpZ1RKO0E4Qi8vU0k7RUFDSTtFQUNBO0E5QmlnVFI7QThCLy9TUTtFQUNJO0E5QmlnVFo7O0E4QngvU0E7RUFDSTtFQUNBO0VBQ0E7QTlCMi9TSjs7QThCeC9TQTtFQUNJO0VBQ0E7RUFDQTtBOUIyL1NKO0E4QnovU0k7RUFDSTtFQUNBO0E5QjIvU1I7QThCeC9TSTtFQUNJO0E5QjAvU1I7O0E4QmwvU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCcS9TSjs7QThCOStTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0E5QmkvU0o7O0E4QjkrU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBOUJpL1NKOztBOEIxK1NBO0VBQ0k7RUFDQTtFQUNBO0E5QjYrU0o7O0E4QjErU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCNitTSjs7QThCMStTQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCNitTSjtBOEIzK1NJO0VBQ0k7QTlCNitTUjs7QThCeitTQTtFQUNJO0VBQ0E7QTlCNCtTSjs7QThCeitTQTtFQUNJO0E5QjQrU0o7O0E4Qm4rU0k7RUFDSTtFQUNBO0VBQ0E7QTlCcytTUjtBOEJuK1NJO0VBQ0k7QTlCcStTUjs7QThCaitTQTtFQUNJO0VBQ0E7RUFDQTtBOUJvK1NKOztBOEJqK1NBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0E5Qm8rU0o7QThCbCtTSTtFQUNJO0E5Qm8rU1I7O0E4QmgrU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTlCbStTSjs7QThCaCtTQTtFQUNJO0VBQ0E7RUFDQTtBOUJtK1NKO0E4QmorU0k7RUFDSTtFQUNBO0E5Qm0rU1I7QThCaitTUTtFQUNJO0E5Qm0rU1o7QThCLzlTSTtFQUNJO0VBQ0E7QTlCaStTUjs7QThCNzlTQTtFQUVJO0lBQ0k7SUFDQTtFOUIrOVNOO0FBQ0Y7QThCeDlTQTtFQUVJO0lBQ0k7RTlCeTlTTjtFOEJ0OVNFO0lBQ0k7RTlCdzlTTjtFOEJyOVNFO0lBQ0k7RTlCdTlTTjtBQUNGO0E4QnA5U0E7RUFFSTtJQUNJO0U5QnE5U047RThCbDlTRTtJQUNJO0U5Qm85U047RThCajlTRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RTlCbTlTTjtFOEJqOVNNO0lBQ0k7RTlCbTlTVjtFOEIvOFNFO0lBQ0k7RTlCaTlTTjtFOEI5OFNFO0lBQ0k7SUFDQTtJQUNBO0U5Qmc5U047QUFDRjtBOEJ6OFNBO0VBRUk7Ozs7OztJQU1JO0U5QjA4U047RThCdjhTRTtJQUNJO0lBQ0E7RTlCeThTTjtBQUNGO0ErQjc5VEE7Ozs7O0VBQUE7QUFTQTtFQUNJO0VBQ0E7RUFDQTtBL0I0OVRKOztBK0J6OVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QS9CNDlUSjs7QStCejlUQTtFQUNJO0VBQ0E7RUFDQTtBL0I0OVRKOztBK0J6OVRBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFHQTtBL0IwOVRKOztBK0J2OVRBO0VBQ0k7RUFDQTtFQUNBO0EvQjA5VEo7O0ErQnY5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQjA5VEo7QStCeDlUSTtFQUNJO0VBQ0E7QS9CMDlUUjs7QStCdDlUQTtFQUNJO0EvQnk5VEo7O0ErQnQ5VEE7RUFDSTtFQUNBO0VBQ0E7QS9CeTlUSjs7QStCdDlUQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0EvQnk5VEo7O0ErQnQ5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBL0J5OVRKO0ErQnY5VEk7RUFDSTtFQUNBO0EvQnk5VFI7O0ErQnI5VEE7RUFDSTtBL0J3OVRKOztBK0JyOVRBO0VBQ0k7RUFDQTtFQUNBO0EvQnc5VEo7O0ErQnI5VEE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBL0J3OVRKOztBZ0Nsa1VBOzs7OztFQUFBO0FBU0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaENra1VKO0FnQ2hrVUk7RUFDSTtFQUNBO0FoQ2trVVI7QWdDL2pVSTtFQUNJO0FoQ2lrVVI7O0FnQzNqVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhDOGpVSjs7QWdDM2pVQTtFQUVJO0lBQ0k7SUFDQTtFaEM2alVOO0FBQ0Y7QWlDem1VQTs7Ozs7OztFQUFBO0FDQUE7Ozs7O0VBQUE7QUNBQTs7O0VBQUE7QUFhQTtFQUNJO0FuQ2duVUo7O0FtQ3ptVUE7RUFDSTtBbkM0bVVKO0FtQzFtVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DNG1VUjtBbUMxbVVRO0VBQ0k7RUFDQTtBbkM0bVVaO0FtQ3ptVVE7RUFDSTtFQUNBO0VBQ0E7QW5DMm1VWjtBbUN4bVVRO0VBQ0k7RUFDQTtFQUNBO0FuQzBtVVo7O0FtQ2ptVUE7RUFDSTtFQUNBO0FuQ29tVUo7O0FtQ2ptVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkNvbVVKO0FtQ2xtVUk7RUFDSTtFQUNBO0VBQ0E7QW5Db21VUjtBbUNsbVVRO0VBQ0k7RUFDQTtFQUNBO0FuQ29tVVo7QW1DaG1VSTtFQUNJO0VBQ0E7QW5Da21VUjtBbUNobVVRO0VBQ0k7RUFDQTtBbkNrbVVaO0FtQy9sVVE7RUFDSTtFQUNBO0FuQ2ltVVo7QW1DN2xVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FuQytsVVI7QW1DM2xVUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQzZsVVo7QW1DdGxVUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5Dd2xVWjtBbUNybFVRO0VBQ0k7RUFDQTtFQUNBO0FuQ3VsVVo7QW1DcGxVUTtFQUNJO0VBQ0E7RUFDQTtBbkNzbFVaO0FtQ3BsVVk7RUFDSTtBbkNzbFVoQjtBbUNubFVZO0VBQ0k7RUFDQTtFQUNBO0FuQ3FsVWhCO0FtQ2hsVUk7RUFDSTtBbkNrbFVSO0FtQy9rVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ2lsVVI7QW1DOWtVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DZ2xVUjtBbUM3a1VJO0VBQ0k7RUFDQTtFQUNBO0FuQytrVVI7QW1DNWtVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQzhrVVI7QW1DNWtVUTtFQUNJO0VBQ0E7QW5DOGtVWjtBbUMxa1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkM0a1VSOztBbUNsa1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5DcWtVUjtBbUNsa1VJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkNva1VSOztBbUNoa1VBO0VBQ0k7RUFDQTtBbkNta1VKOztBbUNoa1VBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkNta1VKO0FtQ2prVUk7RUFDSTtFQUNBO0VBQ0E7QW5DbWtVUjtBbUNqa1VRO0VBQ0k7RUFDQTtFQUNBO0FuQ21rVVo7QW1DaGtVUTtFQUNJO0VBQ0E7RUFDQTtBbkNra1VaO0FtQzlqVUk7RUFDSTtBbkNna1VSO0FtQzdqVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQytqVVI7QW1DNWpVSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DOGpVUjtBbUM1alVRO0VBQ0k7RUFDQTtBbkM4alVaO0FtQzFqVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DNGpVUjtBbUMxalVRO0VBQ0k7RUFDQTtFQUNBO0FuQzRqVVo7QW1DempVUTtFQUNJO0VBQ0E7RUFDQTtBbkMyalVaO0FtQ3ZqVUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQ3lqVVI7QW1DdmpVUTtFQUNJO0FuQ3lqVVo7QW1DdGpVUTtFQUNJO0VBQ0E7QW5Dd2pVWjtBbUN0alVZO0VBQ0k7RUFDQTtBbkN3alVoQjs7QW1DemlVUTtFQUNJO0FuQzRpVVo7QW1DMWlVWTtFQUNJO0FuQzRpVWhCO0FtQ3ppVVk7RUFDSTtBbkMyaVVoQjtBbUNsaVVRO0VBQ0k7QW5Db2lVWjtBbUMvaFVRO0VBQ0k7QW5DaWlVWjs7QW1DeGhVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkMyaFVKOztBbUN4aFVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FuQzJoVUo7O0FtQ3hoVUE7RUFDSTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QW5DMGhVSjs7QW1DdmhVQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBbkMwaFVKOztBbUN2aFVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5DMGhVSjs7QW1DdmhVQTtFQUNJO0VBQ0E7QW5DMGhVSjs7QW1DdmhVQTtFQUNJO0VBQ0E7RUFDQTtBbkMwaFVKO0FtQ3RoVUk7RUFDSTtFQUNBO0VBQ0E7QW5Dd2hVUjtBbUN0aFVRO0VBQ0k7QW5Dd2hVWjtBbUNyaFVRO0VBQ0k7QW5DdWhVWjtBbUNwaFVRO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QW5Dc2hVWjs7QTRCajZVSTtFT21aQTtJQUNJO0lBQ0E7RW5Da2hVTjtFbUMvZ1VFO0lBQ0k7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFbkNpaFVOO0VtQzlnVUU7SUFFSTtNQUNJO0luQytnVVI7SW1DNWdVSTtNQUNJO0luQzhnVVI7RUFDRjtBQUNGO0FtQ3pnVUE7RUFDSTtBbkMyZ1VKOztBNEIxN1VJO0VPd2JBO0lBQ0k7SUFDQTtJQUNBO0VuQ3NnVU47RW1DbmdVRTtJQUNJO0VuQ3FnVU47RW1DaGdVTTtJQUNJO0lBQ0E7SUFDQTtFbkNrZ1VWO0VtQ2hnVVU7O0lBRUk7RW5Da2dVZDtFbUNoZ1VjOztJQUNJO0VuQ21nVWxCO0VtQzMvVEU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VuQzYvVE47RW1DMy9UTTtJQUNJO0VuQzYvVFY7RW1DMS9UTTtJQUNJO0VuQzQvVFY7QUFDRjtBbUNwL1RBO0VBSVE7OztJQUdJO0VuQ20vVFY7RW1DaC9UTTtJQUNJO0VuQ2svVFY7QUFDRjtBbUMxK1RBO0VBQ0k7QW5DNCtUSjtBbUN4K1RRO0VBQ0k7QW5DMCtUWjtBbUNuK1RJO0VBQ0k7QW5DcStUUjtBbUNuK1RRO0VBQ0k7QW5DcStUWjs7QW1DOTlUQTtFQUNJO0VBQ0E7QW5DaStUSjtBbUMvOVRJO0VBQ0k7RUFDQTtBbkNpK1RSO0FtQy85VFE7RUFDSTtBbkNpK1RaO0FtQzk5VFE7RUFDSTtBbkNnK1RaOztBbUNyOVRJO0VBQ0k7QW5DdzlUUjtBbUNuOVRRO0VBQ0k7RUFDQTtBbkNxOVRaO0FtQ245VFk7RUFDSTtBbkNxOVRoQjs7QW9DOWxWQTs7O0VBQUE7QUFhQTtFQUNJO0FwQ3dsVko7O0FvQ2psVkE7RUFDSTtBcENvbFZKO0FvQ2xsVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDb2xWUjtBb0NsbFZRO0VBQ0k7RUFDQTtBcENvbFZaO0FvQ2psVlE7RUFDSTtFQUNBO0VBQ0E7QXBDbWxWWjtBb0NobFZRO0VBQ0k7RUFDQTtFQUNBO0FwQ2tsVlo7O0FvQ3prVkE7RUFDSTtFQUNBO0FwQzRrVko7QW9DMWtWSTtFQUNJO0FwQzRrVlI7QW9DemtWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzJrVlI7QW9DemtWUTtFQUNJO0VBQ0E7QXBDMmtWWjtBb0N4a1ZRO0VBQ0k7RUFDQTtBcEMwa1ZaO0FvQ3ZrVlE7RUFDSTtFQUNBO0VBQ0E7QXBDeWtWWjs7QW9DaGtWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDbWtWSjs7QW9DeGpWQTtFQUNJO0FwQzJqVko7QW9DempWSTtFQUNJO0FwQzJqVlI7O0FvQ3ZqVkE7RUFDSTtFQUNBO0VBQ0E7QXBDMGpWSjtBNEJ0b1ZJO0VReUVKO0lBTVE7RXBDMmpWTjtBQUNGOztBb0N0alZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEN5alZKO0FvQ3ZqVkk7RUFDSTtFQUNBO0VBQ0E7QXBDeWpWUjtBb0N2alZRO0VBQ0k7RUFDQTtFQUNBO0FwQ3lqVlo7QW9DdGpWUTtFQUNJO0VBQ0E7QXBDd2pWWjtBb0NwalZJO0VBQ0k7RUFDQTtBcENzalZSO0FvQ3BqVlE7RUFDSTtFQUNBO0FwQ3NqVlo7QW9DbmpWUTtFQUNJO0VBQ0E7QXBDcWpWWjtBb0NqalZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENtalZSO0FvQ2hqVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENralZSO0FvQ2hqVlE7RUFDSTtFQUNBO0FwQ2tqVlo7QW9DOWlWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDZ2pWUjtBb0M3aVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQytpVlI7QW9DNWlWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzhpVlI7QW9DM2lWSTtFQUNJO0FwQzZpVlI7QW9DM2lWUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEM2aVZaOztBb0NqaVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QXBDb2lWUjtBb0NqaVZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENtaVZSOztBb0MvaFZBO0VBQ0k7RUFDQTtBcENraVZKOztBb0MvaFZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENraVZKO0FvQ2hpVkk7RUFDSTtFQUNBO0VBQ0E7QXBDa2lWUjtBb0NoaVZRO0VBQ0k7RUFDQTtFQUNBO0FwQ2tpVlo7QW9DL2hWUTtFQUNJO0VBQ0E7RUFDQTtBcENpaVZaO0FvQzdoVkk7RUFDSTtBcEMraFZSO0FvQzVoVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQzhoVlI7QW9DM2hWSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDNmhWUjtBb0MzaFZRO0VBQ0k7RUFDQTtBcEM2aFZaO0FvQ3poVkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDMmhWUjtBb0N4aFZJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcEMwaFZSO0FvQ3hoVlE7RUFDSTtBcEMwaFZaO0FvQ3ZoVlE7RUFDSTtFQUNBO0FwQ3loVlo7QW9DdmhWWTtFQUNJO0VBQ0E7QXBDeWhWaEI7O0FvQy9nVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDa2hWSjs7QW9DL2dWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBcENraFZKOztBb0MvZ1ZBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FwQ2loVko7O0FvQzlnVkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QXBDaWhWSjs7QW9DOWdWQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQ2loVko7O0FvQzlnVkE7RUFDSTtFQUNBO0FwQ2loVko7O0FvQzlnVkE7RUFDSTtFQUNBO0VBQ0E7QXBDaWhWSjtBb0M3Z1ZJO0VBQ0k7RUFDQTtFQUNBO0FwQytnVlI7QW9DN2dWUTtFQUNJO0FwQytnVlo7QW9DNWdWUTtFQUNJO0FwQzhnVlo7QW9DM2dWUTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FwQzZnVlo7O0E0Qng1Vkk7RVFzWkE7SUFDSTtJQUNBO0lBQ0E7RXBDc2dWTjtFb0NqZ1ZNO0lBQ0k7SUFDQTtJQUNBO0VwQ21nVlY7RW9DamdWVTs7SUFFSTtFcENtZ1ZkO0VvQ2pnVmM7O0lBQ0k7RXBDb2dWbEI7RW9DNS9VRTtJQUNJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXBDOC9VTjtFb0M1L1VNO0lBQ0k7RXBDOC9VVjtFb0MzL1VNO0lBQ0k7RXBDNi9VVjtFb0N6L1VFO0lBQ0k7SUFDQTtFcEMyL1VOO0VvQ3gvVUU7SUFDSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VwQzAvVU47RW9Ddi9VRTtJQUVJO01BQ0k7SXBDdy9VUjtJb0NyL1VJO01BQ0k7SXBDdS9VUjtFQUNGO0FBQ0Y7QW9DbC9VQTtFQUNJO0FwQ28vVUo7O0FvQzcrVUE7RUFJUTs7O0lBR0k7RXBDNitVVjtFb0MxK1VNO0lBQ0k7RXBDNCtVVjtBQUNGO0FBcjZWQTs7Ozs7R0FBQSxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvYXBwLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZGVzaWduLXN5c3RlbS9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL190b2tlbnMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9kZXNpZ24tc3lzdGVtL190eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19mb3JtLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2dsb2JhbC1zZWFyY2guc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19kYXRhZ3JpZC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX2NsaWVudC1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fYmlsbGluZy1mb3JtLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudC1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fcGF5bWVudHMtbGlzdC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX3VzZXJzLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19wcm9maWxlLXBhZ2Uuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL190d28tZmFjdG9yLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fbm90aWZpY2F0aW9ucy1wYWdlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fc3Vic2NyaXB0aW9uLXBhZ2VzLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY29tcG9uZW50cy9fb25ib2FyZGluZy1jaGVja2xpc3Quc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9jb21wb25lbnRzL19vbmJvYXJkaW5nLXdpemFyZC5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL2NvbXBvbmVudHMvX21vbmV5LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvbGF5b3V0cy9faW5kZXguc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9sYXlvdXRzL19uYXZiYXItdmVydGljYWwuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fZm9ybXMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fY29tcGFueS5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3NldHRpbmdzLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9zY3NzL21peGlucy9fYnJlYWtwb2ludHMuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9fZGFzaGJvYXJkLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvY2xpZW50LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvaW52b2ljZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZXh0ZXJuYWwtaW52b2ljZS12aWV3LnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3MvZXh0ZXJuYWwtcXVvdGUtdmlldy5zY3NzIiwid2VicGFjazovL3NvbGlkaW52b2ljZS8uL2Fzc2V0cy9zY3NzL3F1b3RlLXZpZXcuc2NzcyIsIndlYnBhY2s6Ly9zb2xpZGludm9pY2UvLi9hc3NldHMvc2Nzcy9wYXltZW50LW1hcmtldHBsYWNlLnNjc3MiLCJ3ZWJwYWNrOi8vc29saWRpbnZvaWNlLy4vYXNzZXRzL3Njc3Mvbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTb2xpZEludm9pY2UgTWFpbiBBcHBsaWNhdGlvbiBTdHlsZXNoZWV0XG4gKlxuICogVGhpcyBpcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgYWxsIGFwcGxpY2F0aW9uIHN0eWxlcy5cbiAqIEl0IGltcG9ydHMgQm9vdHN0cmFwLCB0aGUgZGVzaWduIHN5c3RlbSwgY29tcG9uZW50cywgYW5kIGxheW91dHMuXG4gKi9cblxuQHVzZSAnc2Fzczpjb2xvcic7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDEuIEJPT1RTVFJBUCBDT1JFIElNUE9SVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSW1wb3J0IEJvb3RzdHJhcCBmdW5jdGlvbnMgZmlyc3QgKG5lZWRlZCBmb3IgY29sb3IgbWFuaXB1bGF0aW9uLCBldGMuKVxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAyLiBTT0xJRElOVk9JQ0UgQlJBTkQgVkFSSUFCTEVTIChPdmVycmlkZSBCb290c3RyYXAgZGVmYXVsdHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFByaW1hcnkgY29sb3JzXG4kZ3JlZW4tYmFzZTogIzJlOTYzYTtcbiRncmVlbi1kYXJrOiAjMWY2YzI5O1xuJGdyZWVuLWxpZ2h0OiAjZThmNWU5O1xuJG9yYW5nZS1iYXNlOiAjZjBhMDE1O1xuJG9yYW5nZS1kYXJrOiAjYzg4MjBlO1xuJG9yYW5nZS1saWdodDogI2ZmZjhlMTtcblxuLy8gT3ZlcnJpZGUgQm9vdHN0cmFwIHZhcmlhYmxlc1xuJHByaW1hcnk6ICRncmVlbi1iYXNlO1xuJHNlY29uZGFyeTogJG9yYW5nZS1iYXNlO1xuXG4vLyBCb2R5IGFuZCBMaW5rIENvbG9yc1xuJGJvZHktY29sb3I6ICMzMzMzMzM7XG4kYm9keS1iZzogI2Y0ZjZmODtcbiRsaW5rLWNvbG9yOiAkcHJpbWFyeTtcbiRsaW5rLWhvdmVyLWNvbG9yOiAkZ3JlZW4tZGFyaztcblxuLy8gQnV0dG9uIHN0YXRlc1xuJGJ0bi1wcmltYXJ5LWJnOiAkcHJpbWFyeTtcbiRidG4tcHJpbWFyeS1ib3JkZXItY29sb3I6ICRwcmltYXJ5O1xuJGJ0bi1wcmltYXJ5LWhvdmVyLWJnOiAkZ3JlZW4tZGFyaztcbiRidG4tcHJpbWFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRncmVlbi1kYXJrO1xuJGJ0bi1wcmltYXJ5LWFjdGl2ZS1iZzogJGdyZWVuLWRhcms7XG4kYnRuLXByaW1hcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJGdyZWVuLWRhcms7XG4kYnRuLXNlY29uZGFyeS1iZzogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogJHNlY29uZGFyeTtcbiRidG4tc2Vjb25kYXJ5LWhvdmVyLWJnOiAkb3JhbmdlLWRhcms7XG4kYnRuLXNlY29uZGFyeS1ob3Zlci1ib3JkZXItY29sb3I6ICRvcmFuZ2UtZGFyaztcbiRidG4tc2Vjb25kYXJ5LWFjdGl2ZS1iZzogJG9yYW5nZS1kYXJrO1xuJGJ0bi1zZWNvbmRhcnktYWN0aXZlLWJvcmRlci1jb2xvcjogJG9yYW5nZS1kYXJrO1xuXG4vLyBBbGVydCBDb2xvcnNcbiRhbGVydC1wcmltYXJ5LWJnOiAkZ3JlZW4tbGlnaHQ7XG4kYWxlcnQtcHJpbWFyeS1ib3JkZXItY29sb3I6IGNvbG9yLmFkanVzdCgkZ3JlZW4tbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtcHJpbWFyeS10ZXh0OiAkZ3JlZW4tZGFyaztcbiRhbGVydC1zZWNvbmRhcnktYmc6ICRvcmFuZ2UtbGlnaHQ7XG4kYWxlcnQtc2Vjb25kYXJ5LWJvcmRlci1jb2xvcjogY29sb3IuYWRqdXN0KCRvcmFuZ2UtbGlnaHQsICRsaWdodG5lc3M6IC01JSk7XG4kYWxlcnQtc2Vjb25kYXJ5LXRleHQ6ICRvcmFuZ2UtZGFyaztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gMy4gREVTSUdOIFNZU1RFTSBGT1VOREFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIHR5cG9ncmFwaHksIGV0Yy4pXG5AaW1wb3J0ICcuL2Rlc2lnbi1zeXN0ZW0vaW5kZXgnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyA0LiBDT01QT05FTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgY29tcG9uZW50IHN0eWxlc1xuQGltcG9ydCAnLi9jb21wb25lbnRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNS4gTEFZT1VUIFBBVFRFUk5TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEltcG9ydCBhbGwgbGF5b3V0IHN0eWxlc1xuQGltcG9ydCAnLi9sYXlvdXRzL2luZGV4JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gNi4gRk9STSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2VuZXJpYyBmb3JtIGNvbXBvbmVudHMgKHJldXNhYmxlIGFjcm9zcyB0aGUgYXBwKVxuQGltcG9ydCAnLi9mb3Jtcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIDcuIFBBR0UtU1BFQ0lGSUMgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbXBhbnkgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NvbXBhbnknO1xuXG4vLyBTZXR0aW5ncyBwYWdlIGN1c3RvbSBzdHlsZXNcbkBpbXBvcnQgJy4vc2V0dGluZ3MnO1xuXG4vLyBEYXNoYm9hcmQgY3VzdG9tIHN0eWxlc1xuQGltcG9ydCAnLi9kYXNoYm9hcmQnO1xuXG4vLyBDbGllbnQgcGFnZSBjdXN0b20gc3R5bGVzXG5AaW1wb3J0ICcuL2NsaWVudCc7XG5cbi8vIEludm9pY2UgdmlldyBwYWdlIHN0eWxlc1xuQGltcG9ydCAnLi9pbnZvaWNlLXZpZXcnO1xuXG4vLyBFeHRlcm5hbCBpbnZvaWNlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLWludm9pY2Utdmlldyc7XG5cbi8vIEV4dGVybmFsIHF1b3RlIHZpZXcgcGFnZSBzdHlsZXMgKHB1YmxpYy1mYWNpbmcpXG5AaW1wb3J0ICcuL2V4dGVybmFsLXF1b3RlLXZpZXcnO1xuXG4vLyBRdW90ZSB2aWV3IHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3F1b3RlLXZpZXcnO1xuXG4vLyBQYXltZW50IG1hcmtldHBsYWNlIHBhZ2Ugc3R5bGVzXG5AaW1wb3J0ICcuL3BheW1lbnQtbWFya2V0cGxhY2UnO1xuXG4vLyBOb3RpZmljYXRpb24gbWFya2V0cGxhY2UgcGFnZSBzdHlsZXNcbkBpbXBvcnQgJy4vbm90aWZpY2F0aW9uLW1hcmtldHBsYWNlJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gOC4gTEVHQUNZIEJPT1RTVFJBUCBPVkVSUklERVMgKFRvIGJlIGNsZWFuZWQgdXApXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFRoZXNlIGFyZSB0ZW1wb3Jhcnkgb3ZlcnJpZGVzIHRoYXQgc2hvdWxkIGV2ZW50dWFsbHkgYmUgbW92ZWRcbi8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgZmlsZXMgaW4gdGhlIGRlc2lnbiBzeXN0ZW0uXG5cbi8vIEtlZXAgbGVnYWN5IGFjdGl2ZSBuYXYgc3R5bGluZyBmb3Igbm93XG5cbi8qIC5uYXYtbGluay5hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWYyZmY7XG4gICAgY29sb3I6ICM0ZjQ2ZTU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59ICovXG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTWFpbiBJbmRleFxuICpcbiAqIEltcG9ydHMgYWxsIGRlc2lnbiBzeXN0ZW0gZm91bmRhdGlvbiBmaWxlcy5cbiAqIFRoaXMgZmlsZSBzaG91bGQgYmUgaW1wb3J0ZWQgZWFybHkgaW4gYXBwLnNjc3MsXG4gKiBhZnRlciBCb290c3RyYXAgZnVuY3Rpb25zL3ZhcmlhYmxlcyBidXQgYmVmb3JlIGNvbXBvbmVudHMuXG4gKi9cblxuLy8gQ29yZSBkZXNpZ24gdG9rZW5zIChjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGV0Yy4pXG5AaW1wb3J0ICd0b2tlbnMnO1xuXG4vLyBUeXBvZ3JhcGh5IHN5c3RlbVxuQGltcG9ydCAndHlwb2dyYXBoeSc7XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRGVzaWduIFRva2Vuc1xuICpcbiAqIENvcmUgZGVzaWduIHRva2VucyBkZWZpbmluZyBjb2xvcnMsIHNwYWNpbmcsIHNoYWRvd3MsIGJvcmRlciByYWRpdXMsXG4gKiBhbmQgdHJhbnNpdGlvbnMuIEFsbCB2YWx1ZXMgYXJlIGV4cG9zZWQgYXMgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzXG4gKiB3aXRoIHRoZSBgLS1zd3AtYCBwcmVmaXggZm9yIHJ1bnRpbWUgdGhlbWluZyBzdXBwb3J0LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTE9SIFBBTEVUVEVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBCcmFuZCBDb2xvcnMgKFByaW1hcnkgJiBTZWNvbmRhcnkpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gUHJpbWFyeTogR3JlZW4gLSBVc2VkIGZvciBtYWluIENUQXMsIGxpbmtzLCBhY3RpdmUgc3RhdGVzXG4gICAgLS1zd3AtcHJpbWFyeTogIzJlOTYzYTtcbiAgICAtLXN3cC1wcmltYXJ5LXJnYjogNDYsIDE1MCwgNTg7XG4gICAgLS1zd3AtcHJpbWFyeS1ob3ZlcjogIzI2ODAzMjtcbiAgICAtLXN3cC1wcmltYXJ5LWRhcms6ICMxZjZjMjk7XG4gICAgLS1zd3AtcHJpbWFyeS1saWdodDogI2U4ZjVlOTtcbiAgICAtLXN3cC1wcmltYXJ5LWxpZ2h0ZXI6ICNmMWY5ZjI7XG5cbiAgICAvLyBTZWNvbmRhcnk6IE9yYW5nZSAtIFVzZWQgc3BhcmluZ2x5IGZvciBhY2NlbnRzXG4gICAgLS1zd3Atc2Vjb25kYXJ5OiAjZjBhMDE1O1xuICAgIC0tc3dwLXNlY29uZGFyeS1yZ2I6IDI0MCwgMTYwLCAyMTtcbiAgICAtLXN3cC1zZWNvbmRhcnktaG92ZXI6ICNkODkwMTI7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWRhcms6ICNjODgyMGU7XG4gICAgLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0OiAjZmZmOGUxO1xuICAgIC0tc3dwLXNlY29uZGFyeS1saWdodGVyOiAjZmZmY2YwO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIE5ldXRyYWwgQ29sb3JzIChTbGF0ZS1iYXNlZCBncmF5IHNjYWxlIGZvciBtb2Rlcm4gZmVlbClcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1ncmF5LTUwOiAjZjhmYWZjO1xuICAgIC0tc3dwLWdyYXktMTAwOiAjZjFmNWY5O1xuICAgIC0tc3dwLWdyYXktMjAwOiAjZTJlOGYwO1xuICAgIC0tc3dwLWdyYXktMzAwOiAjY2JkNWUxO1xuICAgIC0tc3dwLWdyYXktNDAwOiAjOTRhM2I4O1xuICAgIC0tc3dwLWdyYXktNTAwOiAjNjQ3NDhiO1xuICAgIC0tc3dwLWdyYXktNjAwOiAjNDc1NTY5O1xuICAgIC0tc3dwLWdyYXktNzAwOiAjMzM0MTU1O1xuICAgIC0tc3dwLWdyYXktODAwOiAjMWUyOTNiO1xuICAgIC0tc3dwLWdyYXktOTAwOiAjMGYxNzJhO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFNlbWFudGljIENvbG9ycyAoRmVlZGJhY2sgJiBTdGF0dXMpXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8gU3VjY2Vzc1xuICAgIC8vIE5PVEU6IGBzdWNjZXNzYCAoMi41NDoxIG9uIHN1cmZhY2UpIGFuZCBgc3VjY2Vzcy1ob3ZlcmAgKDMuNzc6MSkgYXJlIGZpbGxcbiAgICAvLyBjb2xvdXJzLCBub3QgdGV4dCBjb2xvdXJzIC0gYm90aCBmYWlsIFdDQUcgQUEgYXMgdGV4dC4gVXNlIGBzdWNjZXNzLWRhcmtgXG4gICAgLy8gZm9yIGFueSBzdWNjZXNzLWNvbG91cmVkICp0ZXh0Ki4gU2VlIERFU0lHTi5tZCAtIFRoZSBMZWdpYmxlIFN0YXR1cyBSdWxlLlxuICAgIC0tc3dwLXN1Y2Nlc3M6ICMxMGI5ODE7XG4gICAgLS1zd3Atc3VjY2Vzcy1yZ2I6IDE2LCAxODUsIDEyOTtcbiAgICAtLXN3cC1zdWNjZXNzLWhvdmVyOiAjMDU5NjY5O1xuICAgIC0tc3dwLXN1Y2Nlc3MtZGFyazogIzA0Nzg1NzsgICAvLyBFbWVyYWxkLTcwMCAtIEFBLXNhZmUgc3VjY2VzcyB0ZXh0ICg1LjQ4OjEgb24gc3VyZmFjZSwgNS4wNjoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3Atc3VjY2Vzcy1saWdodDogI2QxZmFlNTtcbiAgICAtLXN3cC1zdWNjZXNzLWxpZ2h0ZXI6ICNlY2ZkZjU7XG5cbiAgICAvLyBEYW5nZXJcbiAgICAvLyBOT1RFOiBgZGFuZ2VyYCAoMy43NjoxIG9uIHN1cmZhY2UpIGlzIGEgZmlsbCBjb2xvdXIsIG5vdCBhIHRleHQgY29sb3VyLlxuICAgIC8vIFVzZSBgZGFuZ2VyLWRhcmtgIGZvciBkYW5nZXItY29sb3VyZWQgKnRleHQqLlxuICAgIC0tc3dwLWRhbmdlcjogI2VmNDQ0NDtcbiAgICAtLXN3cC1kYW5nZXItcmdiOiAyMzksIDY4LCA2ODtcbiAgICAtLXN3cC1kYW5nZXItaG92ZXI6ICNkYzI2MjY7XG4gICAgLS1zd3AtZGFuZ2VyLWRhcms6ICNiOTFjMWM7ICAgIC8vIFJlZC03MDAgLSBBQS1zYWZlIGRhbmdlciB0ZXh0ICg2LjQ3OjEgb24gc3VyZmFjZSwgNS45NzoxIG9uIGJvZHktYmcpXG4gICAgLS1zd3AtZGFuZ2VyLWxpZ2h0OiAjZmVlMmUyO1xuICAgIC0tc3dwLWRhbmdlci1saWdodGVyOiAjZmVmMmYyO1xuXG4gICAgLy8gV2FybmluZ1xuICAgIC0tc3dwLXdhcm5pbmc6ICNmNTllMGI7XG4gICAgLS1zd3Atd2FybmluZy1yZ2I6IDI0NSwgMTU4LCAxMTtcbiAgICAtLXN3cC13YXJuaW5nLWhvdmVyOiAjZDk3NzA2O1xuICAgIC0tc3dwLXdhcm5pbmctbGlnaHQ6ICNmZWYzYzc7XG4gICAgLS1zd3Atd2FybmluZy1saWdodGVyOiAjZmZmYmViO1xuXG4gICAgLy8gSW5mb1xuICAgIC0tc3dwLWluZm86ICMzYjgyZjY7XG4gICAgLS1zd3AtaW5mby1yZ2I6IDU5LCAxMzAsIDI0NjtcbiAgICAtLXN3cC1pbmZvLWhvdmVyOiAjMjU2M2ViO1xuICAgIC0tc3dwLWluZm8tbGlnaHQ6ICNkYmVhZmU7XG4gICAgLS1zd3AtaW5mby1saWdodGVyOiAjZWZmNmZmO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIFN1cmZhY2UgQ29sb3JzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLS1zd3AtYm9keS1iZzogI2Y0ZjZmODtcbiAgICAtLXN3cC1zdXJmYWNlOiAjZmZmZmZmO1xuICAgIC0tc3dwLXN1cmZhY2UtaG92ZXI6ICNmOGZhZmM7XG4gICAgLS1zd3Atc3VyZmFjZS1lbGV2YXRlZDogI2ZmZmZmZjtcbiAgICAtLXN3cC1zdXJmYWNlLW92ZXJsYXk6IHJnYigxNSAyMyA0MiAvIDUwJSk7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gVGV4dCBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLyBEZWZhdWx0IGJvZHkgdGV4dC4gQWxpYXNlcyBgdGV4dC1wcmltYXJ5YCByYXRoZXIgdGhhbiBkdXBsaWNhdGluZyB0aGVcbiAgICAvLyBsaXRlcmFsIC0gaXQgd2FzIGEgcHVyZSAjMzMzMzMzIGdyYXksIHdoaWNoIHRoZSBUaW50ZWQgTmV1dHJhbHMgUnVsZVxuICAgIC8vIHByb2hpYml0cywgYW5kIHRoZXJlIGlzIG5vIHJlYXNvbiBmb3IgdGhlIHR3byB0byBldmVyIGRpdmVyZ2UuXG4gICAgLS1zd3AtYm9keS1jb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgLS1zd3AtdGV4dC1wcmltYXJ5OiAjMWUyOTNiO1xuICAgIC0tc3dwLXRleHQtc2Vjb25kYXJ5OiAjNDc1NTY5O1xuICAgIC0tc3dwLXRleHQtbXV0ZWQ6ICM2NDc0OGI7XG5cbiAgICAvLyBXQVJOSU5HOiAyLjU2OjEgb24gc3VyZmFjZSwgMi4zNzoxIG9uIGJvZHktYmcgLSBGQUlMUyBXQ0FHIEFBICgxLjQuMykuXG4gICAgLy8gU2FmZSBPTkxZIGZvciBkaXNhYmxlZCB0ZXh0IChleGVtcHQgZnJvbSAxLjQuMykgYW5kIGRlY29yYXRpdmUgZ2x5cGhzLlxuICAgIC8vIE5ldmVyIHVzZSBmb3IgcGxhY2Vob2xkZXJzIG9yIGFueSBvdGhlciBtZWFuaW5nZnVsIHRleHQuXG4gICAgLS1zd3AtdGV4dC1saWdodDogIzk0YTNiODtcbiAgICAtLXN3cC10ZXh0LWludmVyc2U6ICNmZmZmZmY7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gQm9yZGVyIENvbG9yc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC0tc3dwLWJvcmRlcjogI2UyZThmMDtcbiAgICAtLXN3cC1ib3JkZXItbGlnaHQ6ICNmMWY1Zjk7XG4gICAgLS1zd3AtYm9yZGVyLWRhcms6ICNjYmQ1ZTE7XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gTGluayBDb2xvcnNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAtLXN3cC1saW5rLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1zd3AtbGluay1ob3Zlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNQQUNJTkcgU0NBTEUgKDhweCBiYXNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3Atc3BhY2UtMDogMDtcbiAgICAtLXN3cC1zcGFjZS1weDogMXB4O1xuICAgIC0tc3dwLXNwYWNlLTAtNTogMC4xMjVyZW07ICAvLyAycHhcbiAgICAtLXN3cC1zcGFjZS0xOiAwLjI1cmVtOyAgICAgLy8gNHB4XG4gICAgLS1zd3Atc3BhY2UtMS01OiAwLjM3NXJlbTsgIC8vIDZweFxuICAgIC0tc3dwLXNwYWNlLTI6IDAuNXJlbTsgICAgICAvLyA4cHhcbiAgICAtLXN3cC1zcGFjZS0yLTU6IDAuNjI1cmVtOyAgLy8gMTBweFxuICAgIC0tc3dwLXNwYWNlLTM6IDAuNzVyZW07ICAgICAvLyAxMnB4XG4gICAgLS1zd3Atc3BhY2UtMy01OiAwLjg3NXJlbTsgIC8vIDE0cHhcbiAgICAtLXN3cC1zcGFjZS00OiAxcmVtOyAgICAgICAgLy8gMTZweFxuICAgIC0tc3dwLXNwYWNlLTU6IDEuMjVyZW07ICAgICAvLyAyMHB4XG4gICAgLS1zd3Atc3BhY2UtNjogMS41cmVtOyAgICAgIC8vIDI0cHhcbiAgICAtLXN3cC1zcGFjZS03OiAxLjc1cmVtOyAgICAgLy8gMjhweFxuICAgIC0tc3dwLXNwYWNlLTg6IDJyZW07ICAgICAgICAvLyAzMnB4XG4gICAgLS1zd3Atc3BhY2UtOTogMi4yNXJlbTsgICAgIC8vIDM2cHhcbiAgICAtLXN3cC1zcGFjZS0xMDogMi41cmVtOyAgICAgLy8gNDBweFxuICAgIC0tc3dwLXNwYWNlLTExOiAyLjc1cmVtOyAgICAvLyA0NHB4XG4gICAgLS1zd3Atc3BhY2UtMTI6IDNyZW07ICAgICAgIC8vIDQ4cHhcbiAgICAtLXN3cC1zcGFjZS0xNDogMy41cmVtOyAgICAgLy8gNTZweFxuICAgIC0tc3dwLXNwYWNlLTE2OiA0cmVtOyAgICAgICAvLyA2NHB4XG4gICAgLS1zd3Atc3BhY2UtMjA6IDVyZW07ICAgICAgIC8vIDgwcHhcbiAgICAtLXN3cC1zcGFjZS0yNDogNnJlbTsgICAgICAgLy8gOTZweFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCT1JERVIgUkFESVVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC1yYWRpdXMtbm9uZTogMDtcbiAgICAtLXN3cC1yYWRpdXMtc206IDAuMzc1cmVtOyAgICAvLyA2cHggLSBTbWFsbCBlbGVtZW50cywgdGFnc1xuICAgIC0tc3dwLXJhZGl1cy1tZDogMC41cmVtOyAgICAgIC8vIDhweCAtIEZvcm0gY29udHJvbHMsIGJ1dHRvbnNcbiAgICAtLXN3cC1yYWRpdXMtbGc6IDAuNzVyZW07ICAgICAvLyAxMnB4IC0gQ2FyZHMsIG1vZGFsc1xuICAgIC0tc3dwLXJhZGl1cy14bDogMXJlbTsgICAgICAgIC8vIDE2cHggLSBMYXJnZSBjYXJkcywgZGlhbG9nc1xuICAgIC0tc3dwLXJhZGl1cy0yeGw6IDEuNXJlbTsgICAgIC8vIDI0cHggLSBFeHRyYSBsYXJnZSBlbGVtZW50c1xuICAgIC0tc3dwLXJhZGl1cy1mdWxsOiA5OTk5cHg7ICAgIC8vIFBpbGwgc2hhcGVcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0hBRE9XUyAoU3VidGxlLCBtb2Rlcm4gZWxldmF0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLy8gRWxldmF0aW9uIHNoYWRvd3NcbiAgICAtLXN3cC1zaGFkb3cteHM6IDAgMXB4IDJweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICAtLXN3cC1zaGFkb3ctc206IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDEwJSksIDAgMXB4IDJweCAtMXB4IHJnYigwIDAgMCAvIDEwJSk7XG4gICAgLS1zd3Atc2hhZG93LW1kOiAwIDRweCA2cHggLTFweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDJweCA0cHggLTJweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDRweCA2cHggLTRweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgIC0tc3dwLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLCAwIDhweCAxMHB4IC02cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAtLXN3cC1zaGFkb3ctMnhsOiAwIDI1cHggNTBweCAtMTJweCByZ2IoMCAwIDAgLyAyNSUpO1xuXG4gICAgLy8gSW5uZXIgc2hhZG93XG4gICAgLS1zd3Atc2hhZG93LWlubmVyOiBpbnNldCAwIDJweCA0cHggMCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAvLyBDb2xvcmVkIHNoYWRvd3MgZm9yIGJ1dHRvbnMgYW5kIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgLS1zd3Atc2hhZG93LXByaW1hcnk6IDAgNHB4IDE0cHggMCByZ2IoNDYgMTUwIDU4IC8gMjUlKTtcbiAgICAtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZzogMCA4cHggMjBweCAwIHJnYig0NiAxNTAgNTggLyAzMCUpO1xuICAgIC0tc3dwLXNoYWRvdy1kYW5nZXI6IDAgNHB4IDE0cHggMCByZ2IoMjM5IDY4IDY4IC8gMjUlKTtcbiAgICAtLXN3cC1zaGFkb3ctZGFuZ2VyLWxnOiAwIDhweCAyMHB4IDAgcmdiKDIzOSA2OCA2OCAvIDMwJSk7XG5cbiAgICAvLyBGb2N1cyByaW5nIHNoYWRvd1xuICAgIC0tc3dwLXJpbmctcHJpbWFyeTogMCAwIDAgM3B4IHJnYig0NiAxNTAgNTggLyAxNSUpO1xuICAgIC0tc3dwLXJpbmctZGFuZ2VyOiAwIDAgMCAzcHggcmdiKDIzOSA2OCA2OCAvIDE1JSk7XG4gICAgLS1zd3AtcmluZy1vZmZzZXQ6IDAgMCAwIDJweCB2YXIoLS1zd3Atc3VyZmFjZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRSQU5TSVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAvLyBEdXJhdGlvbnNcbiAgICAtLXN3cC1kdXJhdGlvbi1mYXN0OiAxNTBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1iYXNlOiAyMDBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1zbG93OiAzMDBtcztcbiAgICAtLXN3cC1kdXJhdGlvbi1zbG93ZXI6IDQwMG1zO1xuXG4gICAgLy8gVGltaW5nIGZ1bmN0aW9uc1xuICAgIC0tc3dwLWVhc2UtbGluZWFyOiBsaW5lYXI7XG4gICAgLS1zd3AtZWFzZS1pbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSk7XG4gICAgLS1zd3AtZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpO1xuICAgIC0tc3dwLWVhc2UtaW4tb3V0OiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuXG4gICAgLy8gQ29tbW9uIHRyYW5zaXRpb25zXG4gICAgLS1zd3AtdHJhbnNpdGlvbi1mYXN0OiB2YXIoLS1zd3AtZHVyYXRpb24tZmFzdCkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAtLXN3cC10cmFuc2l0aW9uLWJhc2U6IHZhcigtLXN3cC1kdXJhdGlvbi1iYXNlKSB2YXIoLS1zd3AtZWFzZS1pbi1vdXQpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tc2xvdzogdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLWluLW91dCk7XG5cbiAgICAvLyBQcm9wZXJ0eS1zcGVjaWZpYyB0cmFuc2l0aW9uc1xuICAgIC0tc3dwLXRyYW5zaXRpb24tY29sb3JzOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tc2hhZG93OiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgIC0tc3dwLXRyYW5zaXRpb24tdHJhbnNmb3JtOiB0cmFuc2Zvcm0gdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgLS1zd3AtdHJhbnNpdGlvbi1hbGw6IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gWi1JTkRFWCBTQ0FMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3Atei1kcm9wZG93bjogMTAwMDtcbiAgICAtLXN3cC16LXN0aWNreTogMTAyMDtcbiAgICAtLXN3cC16LWZpeGVkOiAxMDMwO1xuICAgIC0tc3dwLXotbW9kYWwtYmFja2Ryb3A6IDEwNDA7XG4gICAgLS1zd3Atei1tb2RhbDogMTA1MDtcbiAgICAtLXN3cC16LXBvcG92ZXI6IDEwNjA7XG4gICAgLS1zd3Atei10b29sdGlwOiAxMDcwO1xuICAgIC0tc3dwLXotdG9hc3Q6IDEwODA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTVBPTkVOVC1TUEVDSUZJQyBUT0tFTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIENhcmRcbiAgICAtLXN3cC1jYXJkLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtY2FyZC1ib3JkZXI6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIC0tc3dwLWNhcmQtcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAtLXN3cC1jYXJkLXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgLS1zd3AtY2FyZC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgLS1zd3AtY2FyZC1oZWFkZXItcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICAtLXN3cC1jYXJkLWZvb3Rlci1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gRm9ybSBjb250cm9sc1xuICAgIC0tc3dwLWlucHV0LWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtaW5wdXQtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAtLXN3cC1pbnB1dC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIC0tc3dwLWlucHV0LXBhZGRpbmcteTogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgLS1zd3AtaW5wdXQtcGFkZGluZy14OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgLS1zd3AtaW5wdXQtZm9jdXMtYm9yZGVyOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgLS1zd3AtaW5wdXQtZm9jdXMtcmluZzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG5cbiAgICAvLyBCdXR0b25zXG4gICAgLS1zd3AtYnRuLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtYnRuLXBhZGRpbmcteTogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG4gICAgLS1zd3AtYnRuLXBhZGRpbmcteDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIC0tc3dwLWJ0bi1mb250LXdlaWdodDogNTAwO1xuXG4gICAgLy8gTW9kYWxcbiAgICAtLXN3cC1tb2RhbC1iZzogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIC0tc3dwLW1vZGFsLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgLS1zd3AtbW9kYWwtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICAtLXN3cC1tb2RhbC1wYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBUYWJsZVxuICAgIC0tc3dwLXRhYmxlLWJnOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgLS1zd3AtdGFibGUtYm9yZGVyOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAtLXN3cC10YWJsZS1oZWFkZXItYmc6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAtLXN3cC10YWJsZS1yb3ctaG92ZXItYmc6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAtLXN3cC10YWJsZS1jZWxsLXBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBBbGVydFxuICAgIC0tc3dwLWFsZXJ0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgLS1zd3AtYWxlcnQtcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLy8gTW9uZXkgZGlzcGxheSAoc2lnbmF0dXJlIGNvbXBvbmVudCAtIHNlZSBjb21wb25lbnRzL19tb25leS5zY3NzKVxuICAgIC8vIEV2ZXJ5IGNvbG91ciBoZXJlIGlzIEFBLWNvbXBsaWFudCBhZ2FpbnN0IEJPVEggYHN1cmZhY2VgIGFuZCBgYm9keS1iZ2AsXG4gICAgLy8gYmVjYXVzZSBtb25leSBtdXN0IG5ldmVyIGJlIG1pc3JlYWRhYmxlIG9uIGFueSBzdXJmYWNlIGl0IGxhbmRzIG9uLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5OiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpOyAgLy8gNy41ODoxIC8gNi45OToxXG4gICAgLS1zd3AtbW9uZXktbmV1dHJhbDogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7ICAgICAvLyAxNC42MzoxIC8gMTMuNTA6MVxuICAgIC0tc3dwLW1vbmV5LXBhaWQ6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspOyAgICAgICAgLy8gNS40ODoxIC8gNS4wNjoxXG4gICAgLS1zd3AtbW9uZXktb3ZlcmR1ZTogdmFyKC0tc3dwLWRhbmdlci1kYXJrKTsgICAgICAvLyA2LjQ3OjEgLyA1Ljk3OjFcblxuICAgIC8vIFJlbGF0aXZlIHN0ZXAgYXBwbGllZCB0byBhIGAubW9uZXktLXRvdGFsYCBhbW91bnQuIFVuaXRsZXNzIG11bHRpcGxpZXIgc29cbiAgICAvLyB0aGUgc3RlcCBpcyBjb3JyZWN0IGF0IGV2ZXJ5IGluaGVyaXRlZCBiYXNlIHNpemUuXG4gICAgLS1zd3AtbW9uZXktdG90YWwtc2NhbGU6IDEuMTI1O1xuXG4gICAgLy8gUmVsYXRpdmUgc2l6ZSBvZiB0aGUgY3VycmVuY3kgY29kZSBhZ2FpbnN0IGl0cyBhbW91bnQuIFRoZSBjb2RlIGlzIGEgdW5pdCxcbiAgICAvLyBub3QgYSBzZWNvbmQgbnVtYmVyLCBhbmQgcmVhZHMgYXMgc3Vib3JkaW5hdGUgcmF0aGVyIHRoYW4gY29tcGV0aW5nLlxuICAgIC0tc3dwLW1vbmV5LWN1cnJlbmN5LXNjYWxlOiAwLjc1ZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQkxFUiBCUklER0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGFibGVyIHJlYWRzIGl0cyBvd24gYC0tdGJsci0qYCB0b2tlbnMsIHNvIGhhbmRpbmcgaXQgdGhlc2UgaXMgd2hhdCBtYWtlcyBpdHNcbi8vIGJ1dHRvbnMsIGxpbmtzLCBiYWRnZXMsIHRhYmxlcyBhbmQgbW9kYWxzIGNhcnJ5IHRoZSBTb2xpZEludm9pY2UgYnJhbmQgcmF0aGVyXG4vLyB0aGFuIFRhYmxlcidzIHN0b2NrIGJsdWUtYW5kLXNsYXRlLlxuXG4vLyBUaGlzIHVzZWQgdG8gaGFwcGVuIGJ5IGFjY2lkZW50OiB0aGUgcGxhdGZvcm0gY29tcGlsZWQgVGFibGVyIDEuNCB3aXRoXG4vLyBgJHByZWZpeDogc3dwLWAsIHNvIGV2ZXJ5IHRva2VuIGFib3ZlIGxhbmRlZCBvbiB0aGUgZXhhY3QgbmFtZSBUYWJsZXIgd2FzXG4vLyByZWFkaW5nLiBUYWJsZXIgMS41IGRyb3BwZWQgYCRwcmVmaXhgIGFuZCB0aGUgY29tcGlsZWQgQ1NTIGlzIGAtLXRibHItKmBcbi8vIGFnYWluLCBzbyB0aGUgc2FtZSAzOSB0b2tlbnMgaGF2ZSB0byBiZSBoYW5kZWQgb3ZlciBieSBuYW1lLiBWYWx1ZXMgc3RheVxuLy8gc2luZ2xlLXNvdXJjZWQgYWJvdmUg4oCUIG9ubHkgdGhlIGFsaWFzZXMgbGl2ZSBoZXJlLlxuXG46cm9vdCB7XG4gICAgLy8gQnJhbmQgcGFsZXR0ZS5cblxuICAgIC8vIGBzZWNvbmRhcnlgIGlzIGRlbGliZXJhdGVseSBhYnNlbnQ6IG91cnMgaXMgdGhlIG9yYW5nZSBhY2NlbnQsIFRhYmxlcidzIGlzIHRoZSBuZXV0cmFsXG4gICAgLy8gZ3JleSBiZWhpbmQgYC50ZXh0LXNlY29uZGFyeWAsIGAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5YCBhbmQgYXZhdGFyIHRpbGVzLiBIYW5kaW5nIG91clxuICAgIC8vIG9yYW5nZSBvdmVyIHR1cm5zIGV2ZXJ5IG11dGVkIGxhYmVsIG9yYW5nZSwgc28gVGFibGVyIGtlZXBzIGl0cyBvd24uXG4gICAgLS10YmxyLXByaW1hcnk6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAtLXRibHItcHJpbWFyeS1yZ2I6IHZhcigtLXN3cC1wcmltYXJ5LXJnYik7XG4gICAgLS10YmxyLXN1Y2Nlc3M6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAtLXRibHItc3VjY2Vzcy1yZ2I6IHZhcigtLXN3cC1zdWNjZXNzLXJnYik7XG4gICAgLS10YmxyLWRhbmdlcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgLS10YmxyLWRhbmdlci1yZ2I6IHZhcigtLXN3cC1kYW5nZXItcmdiKTtcbiAgICAtLXRibHItd2FybmluZzogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgIC0tdGJsci13YXJuaW5nLXJnYjogdmFyKC0tc3dwLXdhcm5pbmctcmdiKTtcbiAgICAtLXRibHItaW5mbzogdmFyKC0tc3dwLWluZm8pO1xuICAgIC0tdGJsci1pbmZvLXJnYjogdmFyKC0tc3dwLWluZm8tcmdiKTtcblxuICAgIC8vIExpbmtzXG4gICAgLS10YmxyLWxpbmstY29sb3I6IHZhcigtLXN3cC1saW5rLWNvbG9yKTtcbiAgICAtLXRibHItbGluay1ob3Zlci1jb2xvcjogdmFyKC0tc3dwLWxpbmstaG92ZXItY29sb3IpO1xuXG4gICAgLy8gU3VyZmFjZXNcbiAgICAtLXRibHItYm9keS1iZzogdmFyKC0tc3dwLWJvZHktYmcpO1xuICAgIC0tdGJsci1ib2R5LWNvbG9yOiB2YXIoLS1zd3AtYm9keS1jb2xvcik7XG4gICAgLS10YmxyLWNhcmQtYmc6IHZhcigtLXN3cC1jYXJkLWJnKTtcbiAgICAtLXRibHItbW9kYWwtYmc6IHZhcigtLXN3cC1tb2RhbC1iZyk7XG4gICAgLS10YmxyLXRhYmxlLWJnOiB2YXIoLS1zd3AtdGFibGUtYmcpO1xuXG4gICAgLy8gTmV1dHJhbCByYW1wXG4gICAgLS10YmxyLWdyYXktNTA6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAtLXRibHItZ3JheS0xMDA6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgLS10YmxyLWdyYXktMjAwOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgIC0tdGJsci1ncmF5LTMwMDogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAtLXRibHItZ3JheS00MDA6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgLS10YmxyLWdyYXktNTAwOiB2YXIoLS1zd3AtZ3JheS01MDApO1xuICAgIC0tdGJsci1ncmF5LTYwMDogdmFyKC0tc3dwLWdyYXktNjAwKTtcbiAgICAtLXRibHItZ3JheS03MDA6IHZhcigtLXN3cC1ncmF5LTcwMCk7XG4gICAgLS10YmxyLWdyYXktODAwOiB2YXIoLS1zd3AtZ3JheS04MDApO1xuICAgIC0tdGJsci1ncmF5LTkwMDogdmFyKC0tc3dwLWdyYXktOTAwKTtcblxuICAgIC8vIEVsZXZhdGlvblxuICAgIC0tdGJsci1zaGFkb3cteHM6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuICAgIC0tdGJsci1zaGFkb3ctc206IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIC0tdGJsci1zaGFkb3ctbWQ6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIC0tdGJsci1zaGFkb3ctbGc6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIC0tdGJsci1zaGFkb3cteGw6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIC0tdGJsci1zaGFkb3ctMnhsOiB2YXIoLS1zd3Atc2hhZG93LTJ4bCk7XG5cbiAgICAvLyBDb21wb25lbnQgbWV0cmljc1xuICAgIC0tdGJsci1idG4tZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1idG4tZm9udC13ZWlnaHQpO1xuICAgIC0tdGJsci1idG4tcGFkZGluZy14OiB2YXIoLS1zd3AtYnRuLXBhZGRpbmcteCk7XG4gICAgLS10YmxyLWJ0bi1wYWRkaW5nLXk6IHZhcigtLXN3cC1idG4tcGFkZGluZy15KTtcbiAgICAtLXRibHItbW9kYWwtcGFkZGluZzogdmFyKC0tc3dwLW1vZGFsLXBhZGRpbmcpO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIFR5cG9ncmFwaHlcbiAqXG4gKiBUeXBvZ3JhcGh5IHNjYWxlLCBmb250IGZhbWlsaWVzLCB3ZWlnaHRzLCBhbmQgbGluZSBoZWlnaHRzLlxuICogVXNlcyBzeXN0ZW0gZm9udHMgZm9yIG9wdGltYWwgcGVyZm9ybWFuY2UgYW5kIG5hdGl2ZSBmZWVsLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgRkFNSUxJRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC8vIFN5c3RlbSBmb250IHN0YWNrIC0gTW9kZXJuLCBwZXJmb3JtYW50LCBuYXRpdmUgZmVlbFxuICAgIC0tc3dwLWZvbnQtc2FuczogLWFwcGxlLXN5c3RlbSwgYmxpbmttYWNzeXN0ZW1mb250LCAnU2Vnb2UgVUknLCByb2JvdG8sXG4gICAgICAgICAgICAgICAgICAgICAnSGVsdmV0aWNhIE5ldWUnLCBhcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsXG4gICAgICAgICAgICAgICAgICAgICAnQXBwbGUgQ29sb3IgRW1vamknLCAnU2Vnb2UgVUkgRW1vamknLCAnU2Vnb2UgVUkgU3ltYm9sJyxcbiAgICAgICAgICAgICAgICAgICAgICdOb3RvIENvbG9yIEVtb2ppJztcblxuICAgIC8vIE1vbm9zcGFjZSBmb3IgY29kZSwgbnVtYmVycyBpbiB0YWJsZXNcbiAgICAtLXN3cC1mb250LW1vbm86IHVpLW1vbm9zcGFjZSwgc2Ztb25vLXJlZ3VsYXIsICdTRiBNb25vJywgbWVubG8sIG1vbmFjbyxcbiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGFzLCAnTGliZXJhdGlvbiBNb25vJywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuXG4gICAgLy8gRGVmYXVsdCBmb250IGZhbWlseVxuICAgIC0tc3dwLWZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1zYW5zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9OVCBTSVpFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtdGV4dC14czogMC43NXJlbTsgICAgICAgLy8gMTJweCAtIEZpbmUgcHJpbnQsIGJhZGdlc1xuICAgIC0tc3dwLXRleHQtc206IDAuODEyNXJlbTsgICAgIC8vIDEzcHggLSBIZWxwIHRleHQsIGNhcHRpb25zXG4gICAgLS1zd3AtdGV4dC1iYXNlOiAwLjkzNzVyZW07ICAgLy8gMTVweCAtIEJvZHkgdGV4dCAoc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gMTRweCBmb3IgcmVhZGFiaWxpdHkpXG4gICAgLS1zd3AtdGV4dC1tZDogMXJlbTsgICAgICAgICAgLy8gMTZweCAtIEVtcGhhc2l6ZWQgYm9keVxuICAgIC0tc3dwLXRleHQtbGc6IDEuMTI1cmVtOyAgICAgIC8vIDE4cHggLSBDYXJkIHRpdGxlcywgc2VjdGlvbiBoZWFkZXJzXG4gICAgLS1zd3AtdGV4dC14bDogMS4yNXJlbTsgICAgICAgLy8gMjBweCAtIFBhZ2Ugc3VidGl0bGVzXG4gICAgLS1zd3AtdGV4dC0yeGw6IDEuNXJlbTsgICAgICAgLy8gMjRweCAtIFBhZ2UgdGl0bGVzXG4gICAgLS1zd3AtdGV4dC0zeGw6IDEuODc1cmVtOyAgICAgLy8gMzBweCAtIEhlcm8gdGl0bGVzXG4gICAgLS1zd3AtdGV4dC00eGw6IDIuMjVyZW07ICAgICAgLy8gMzZweCAtIExhcmdlIGRpc3BsYXlcbiAgICAtLXN3cC10ZXh0LTV4bDogM3JlbTsgICAgICAgICAvLyA0OHB4IC0gRXh0cmEgbGFyZ2UgZGlzcGxheVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIEhFSUdIVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuOnJvb3Qge1xuICAgIC0tc3dwLWxlYWRpbmctbm9uZTogMTtcbiAgICAtLXN3cC1sZWFkaW5nLXRpZ2h0OiAxLjI1O1xuICAgIC0tc3dwLWxlYWRpbmctc251ZzogMS4zNzU7XG4gICAgLS1zd3AtbGVhZGluZy1ub3JtYWw6IDEuNTtcbiAgICAtLXN3cC1sZWFkaW5nLXJlbGF4ZWQ6IDEuNjI1O1xuICAgIC0tc3dwLWxlYWRpbmctbG9vc2U6IDI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPTlQgV0VJR0hUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG46cm9vdCB7XG4gICAgLS1zd3AtZm9udC10aGluOiAxMDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWxpZ2h0OiAyMDA7XG4gICAgLS1zd3AtZm9udC1saWdodDogMzAwO1xuICAgIC0tc3dwLWZvbnQtbm9ybWFsOiA0MDA7XG4gICAgLS1zd3AtZm9udC1tZWRpdW06IDUwMDtcbiAgICAtLXN3cC1mb250LXNlbWlib2xkOiA2MDA7XG4gICAgLS1zd3AtZm9udC1ib2xkOiA3MDA7XG4gICAgLS1zd3AtZm9udC1leHRyYWJvbGQ6IDgwMDtcbiAgICAtLXN3cC1mb250LWJsYWNrOiA5MDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExFVFRFUiBTUEFDSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbjpyb290IHtcbiAgICAtLXN3cC10cmFja2luZy10aWdodGVyOiAtMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXRpZ2h0OiAtMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy1ub3JtYWw6IDA7XG4gICAgLS1zd3AtdHJhY2tpbmctd2lkZTogMC4wMjVlbTtcbiAgICAtLXN3cC10cmFja2luZy13aWRlcjogMC4wNWVtO1xuICAgIC0tc3dwLXRyYWNraW5nLXdpZGVzdDogMC4xZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUE9HUkFQSFkgVVRJTElUWSBDTEFTU0VTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgdGl0bGUgLSBMYXJnZSwgcHJvbWluZW50IGhlYWRpbmdcblxuLnRleHQtcGFnZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXRpZ2h0KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG59XG5cbi8vIFBhZ2Ugc3VidGl0bGVcblxuLnRleHQtcGFnZS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBDYXJkIHRpdGxlXG5cbi50ZXh0LWNhcmQtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLXNudWcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gQ2FyZCBzdWJ0aXRsZVxuXG4udGV4dC1jYXJkLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBTZWN0aW9uIHRpdGxlICh3aXRoIGljb24gcGF0dGVybilcblxuLnRleHQtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctc251Zyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIHN2ZyxcbiAgICBpIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi8vIExhYmVsIHRleHQgKGZvcm0gbGFiZWxzLCB0YWJsZSBoZWFkZXJzKVxuXG4udGV4dC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi8vIEJvZHkgdGV4dFxuXG4udGV4dC1ib2R5IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ub3JtYWwpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1yZWxheGVkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xufVxuXG4vLyBTbWFsbC9IZWxwIHRleHRcblxuLnRleHQtaGVscCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXN3cC1sZWFkaW5nLW5vcm1hbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTW9ub3NwYWNlIHRleHQgKGZvciBJRHMsIGNvZGVzKVxuXG4udGV4dC1tb25vIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi8vIFRhYmxlIGhlYWRlciB0ZXh0XG5cbi50ZXh0LXRhYmxlLWhlYWRlciB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi8vIEVtcGhhc2l6ZWQvSGlnaGxpZ2h0IHRleHRcblxuLnRleHQtZW1waGFzaXMge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBNdXRlZCB0ZXh0XG5cbi50ZXh0LXN1YnRsZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLy8gTGluayBzdHlsaW5nXG5cbi50ZXh0LWxpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1jb2xvcik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtbGluay1ob3Zlci1jb2xvcik7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLy8gVHJ1bmNhdGUgdGV4dCB3aXRoIGVsbGlwc2lzXG5cbi50ZXh0LXRydW5jYXRlIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8vIE11bHRpLWxpbmUgdHJ1bmNhdGlvbiAocmVxdWlyZXMgLXdlYmtpdClcblxuLnRleHQtbGluZS1jbGFtcC0yIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGV4dC1saW5lLWNsYW1wLTMge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gQ29tcG9uZW50IEluZGV4XG4gKlxuICogQ3VzdG9tIGNvbXBvbmVudCBzdHlsZXMgdGhhdCBleHRlbmQgQm9vdHN0cmFwL1RhYmxlci5cbiAqIE9ubHkgYWRkIHN0eWxlcyBoZXJlIHRoYXQgcHJvdmlkZSBmdW5jdGlvbmFsaXR5IGJleW9uZCB3aGF0IEJvb3RzdHJhcC9UYWJsZXIgb2ZmZXIuXG4gKlxuICogTm90ZTogTW9zdCBjb21wb25lbnQgc3R5bGluZyBjb21lcyBmcm9tIEJvb3RzdHJhcCA1IGFuZCBUYWJsZXIuXG4gKiBUaGlzIGZpbGUgaW1wb3J0cyBvbmx5IGN1c3RvbSBleHRlbnNpb25zLCBub3QgcmVwbGFjZW1lbnRzLlxuICovXG5cbi8vIFNoYXJlZCBGb3JtIFBhZ2UgLSBDb25zb2xpZGF0ZWQgZm9ybS1wYWdlIGxheW91dCBwYXR0ZXJuXG5AaW1wb3J0ICdmb3JtLXBhZ2UnO1xuXG4vLyBEb2N1bWVudCBWaWV3IC0gU2hhcmVkIGxheW91dCBmb3IgSW52b2ljZSBhbmQgUXVvdGUgdmlldyBwYWdlc1xuQGltcG9ydCAnZG9jdW1lbnQtdmlldyc7XG5cbi8vIEV4dGVybmFsIERvY3VtZW50IFZpZXcgLSBTaGFyZWQgbGF5b3V0IGZvciBwdWJsaWMtZmFjaW5nIEludm9pY2UgYW5kIFF1b3RlIHBhZ2VzXG5AaW1wb3J0ICdleHRlcm5hbC1kb2Mtdmlldyc7XG5cbi8vIE1hcmtldHBsYWNlIC0gU2hhcmVkIHN0eWxlcyBmb3IgUGF5bWVudCBhbmQgTm90aWZpY2F0aW9uIG1hcmtldHBsYWNlIHBhZ2VzXG5AaW1wb3J0ICdtYXJrZXRwbGFjZSc7XG5cbi8vIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG5AaW1wb3J0ICdnbG9iYWwtc2VhcmNoJztcblxuLy8gRGF0YUdyaWQgLSBNb2Rlcm4gdGFibGUvZ3JpZCBjb21wb25lbnQgc3R5bGVzXG5AaW1wb3J0ICdkYXRhZ3JpZCc7XG5cbi8vIENsaWVudCBGb3JtIC0gTW9kZXJuIGNsaWVudCBjcmVhdGlvbiBmb3JtXG5AaW1wb3J0ICdjbGllbnQtZm9ybSc7XG5cbi8vIEJpbGxpbmcgRm9ybSAtIFNoYXJlZCBzdHlsZXMgZm9yIEludm9pY2UgYW5kIFF1b3RlIGNyZWF0aW9uIGZvcm1zXG5AaW1wb3J0ICdiaWxsaW5nLWZvcm0nO1xuXG4vLyBQYXltZW50IFBhZ2UgLSBJbnZvaWNlIHBheW1lbnQgZm9ybSB3aXRoIG1ldGhvZCBzZWxlY3Rpb25cbkBpbXBvcnQgJ3BheW1lbnQtcGFnZSc7XG5cbi8vIFBheW1lbnRzIExpc3QgLSBQYXltZW50cyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMgYW5kIGZpbHRlcnNcbkBpbXBvcnQgJ3BheW1lbnRzLWxpc3QnO1xuXG4vLyBVc2VycyBQYWdlIC0gVXNlcnMgbGlzdCB3aXRoIEtQSSBjYXJkcyBhbmQgdGFic1xuQGltcG9ydCAndXNlcnMtcGFnZSc7XG5cbi8vIFByb2ZpbGUgUGFnZSAtIFVzZXIgcHJvZmlsZSBhbmQgc2V0dGluZ3MgcGFnZXNcbkBpbXBvcnQgJ3Byb2ZpbGUtcGFnZSc7XG5cbi8vIFR3by1GYWN0b3IgQXV0aGVudGljYXRpb24gLSAyRkEgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gcGFnZXNcbkBpbXBvcnQgJ3R3by1mYWN0b3InO1xuXG4vLyBOb3RpZmljYXRpb25zIFBhZ2UgLSBVc2VyIG5vdGlmaWNhdGlvbiBwcmVmZXJlbmNlc1xuQGltcG9ydCAnbm90aWZpY2F0aW9ucy1wYWdlJztcblxuLy8gU3Vic2NyaXB0aW9uIFBhZ2VzIC0gVHJpYWwgZXhwaXJlZCwgY2FuY2VsbGVkLCBwZW5kaW5nIHN1YnNjcmlwdGlvbiBzdGF0ZXNcbkBpbXBvcnQgJ3N1YnNjcmlwdGlvbi1wYWdlcyc7XG5cbi8vIE9uYm9hcmRpbmcgQ2hlY2tsaXN0IC0gRGFzaGJvYXJkIGNoZWNrbGlzdCB3aWRnZXQgc3R5bGVzXG5AaW1wb3J0ICdvbmJvYXJkaW5nLWNoZWNrbGlzdCc7XG5cbi8vIE9uYm9hcmRpbmcgV2l6YXJkIC0gRmlyc3QtcnVuIGZsb3cgKC9vbmJvYXJkaW5nKSBzdHlsZXNcbkBpbXBvcnQgJ29uYm9hcmRpbmctd2l6YXJkJztcblxuLy8gTW9uZXkgLSBTaWduYXR1cmUgY29tcG9uZW50OyBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBldmVyeSBjdXJyZW5jeSB2YWx1ZVxuQGltcG9ydCAnbW9uZXknO1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTaGFyZWQgRm9ybSBQYWdlIFN0eWxlc1xuICpcbiAqIENvbnNvbGlkYXRlZCBmb3JtLXBhZ2UgbGF5b3V0IHBhdHRlcm4gdXNlZCBhY3Jvc3MgVGF4QnVuZGxlLCBDbGllbnRCdW5kbGUsXG4gKiBVc2VyQnVuZGxlIChQcm9maWxlLCBJbnZpdGUsIENoYW5nZVBhc3N3b3JkKSBhbmQgc2ltaWxhciBmb3JtIHBhZ2VzLlxuICpcbiAqIFRlbXBsYXRlIHN0cnVjdHVyZTpcbiAqICAgLmZvcm0tcGFnZSA+IC5mb3JtLXBhZ2UtY29udGFpbmVyWy0tbmFycm93fC0tbWVkaXVtfC0td2lkZV0gPlxuICogICAgIC5mb3JtLXBhZ2UtaGVhZGVyID4gLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCA+XG4gKiAgICAgICAuZm9ybS1wYWdlLWljb25bLS1zZWN1cml0eV0gKyBkaXYoLmZvcm0tcGFnZS10aXRsZSArIC5mb3JtLXBhZ2Utc3VidGl0bGUpXG4gKiAgICAgLmZvcm0tcGFnZS1zZWN0aW9ucyA+IC5mb3JtLXBhZ2Utc2VjdGlvbiA+XG4gKiAgICAgICAuc2VjdGlvbi1oZWFkZXIgPiAuc2VjdGlvbi1pY29uWy0tc2VjdXJpdHldICsgLnNlY3Rpb24taGVhZGVyLXRleHRcbiAqICAgICAgICAgKC5zZWN0aW9uLXRpdGxlICsgLnNlY3Rpb24tZGVzY3JpcHRpb24pXG4gKiAgICAgICAuc2VjdGlvbi1jb250ZW50ID4gLmZvcm0tZ3JpZCA+IC5mb3JtLWZpZWxkWy5mb3JtLWZpZWxkLXdpZGVdXG4gKiAgICAgLmZvcm0tcGFnZS1hY3Rpb25zID4gLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyWy0tbWVkaXVtXVxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgV1JBUFBFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBXSURUSC1DT05TVFJBSU5FRCBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1jb250YWluZXIge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMjQpO1xuXG4gICAgJi0tbmFycm93IHsgbWF4LXdpZHRoOiA4MDBweDsgfVxuXG4gICAgJi0tbWVkaXVtIHsgbWF4LXdpZHRoOiA5MDBweDsgfVxuXG4gICAgJi0td2lkZSAgIHsgbWF4LXdpZHRoOiAxMTAwcHg7IH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFHRSBIRUFERVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1oZWFkZXIge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgMDtcbn1cblxuLmZvcm0tcGFnZS1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uZm9ybS1wYWdlLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1zZWN1cml0eSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjEpIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cbn1cblxuLmZvcm0tcGFnZS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTtcbn1cblxuLmZvcm0tcGFnZS1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTEpIDAgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OUyBMSVNUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXBhZ2Utc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5ESVZJRFVBTCBTRUNUSU9OIENBUkRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSEFSRUQgU0VDVElPTiBIRUFERVIgKHVzZWQgaW5zaWRlIGZvcm0tcGFnZS1zZWN0aW9uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpIHZhcigtLXN3cC1zcGFjZS02KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLnNlY3Rpb24taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuXG4gICAgJi0tc2VjdXJpdHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMTUpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpIDEwMCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cbn1cblxuLnNlY3Rpb24taGVhZGVyLXRleHQge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLnNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OIEJPRFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24tY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUV08tQ09MVU1OIEZPUk0gR1JJRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG59XG5cbi5mb3JtLWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5mb3JtLWZpZWxkLXdpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUSUNLWSBGT09URVIgQUNUSU9OUyBCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tcGFnZS1hY3Rpb25zIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGJveC1zaGFkb3c6IDAgLTRweCAxMnB4IHJnYigwIDAgMCAvIDUlKTtcbn1cblxuLmZvcm0tcGFnZS1hY3Rpb25zLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAmLS1tZWRpdW0geyBtYXgtd2lkdGg6IDkwMHB4OyB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVOSEFOQ0VEIFNBVkUgQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4tc2F2ZSxcbi5idG4tc2F2ZS1wcmltYXJ5IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnkpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZyk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC5mb3JtLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaGVhZGVyLWNvbnRlbnQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtaWNvbiB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgfVxuXG4gICAgLmZvcm0tcGFnZS10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLnNlY3Rpb24taWNvbiB7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgfVxuXG4gICAgLnNlY3Rpb24tY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZm9ybS1wYWdlLWFjdGlvbnMtaW5uZXIge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBSSU5UIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLmZvcm0tcGFnZS1hY3Rpb25zIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLXBhZ2UtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gRG9jdW1lbnQgVmlldyBTaGFyZWQgU3R5bGVzXG4gKlxuICogU2hhcmVkIGxheW91dCBhbmQgY29tcG9uZW50IHN0eWxlcyBmb3IgSW52b2ljZSBhbmQgUXVvdGUgdmlldyBwYWdlcy5cbiAqIFVzZXMgZ2VuZXJpYyBgZG9jLXZpZXctKmAgLyBgZG9jLSpgIGNsYXNzIG5hbWVzIHRvIGF2b2lkIGR1cGxpY2F0aW9uLlxuICogQm90aCBpbnZvaWNlLXZpZXcuc2NzcyBhbmQgcXVvdGUtdmlldy5zY3NzIHVzZSB0aGVzZSBjbGFzc2VzIGRpcmVjdGx5LlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1wYWdlIHtcbiAgICBtYXgtd2lkdGg6IDE0MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICB9XG59XG5cbi5kb2Mtdmlldy1oZWFkZXItbGVmdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uZG9jLXZpZXctaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5kb2Mtdmlldy10aXRsZS1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZG9jLXZpZXctdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteGwsIDEuMjVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG5cbi5kb2Mtdmlldy1tZXRhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uZG9jLXZpZXctbWV0YS1pdGVtIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbn1cblxuLy8gSGVhZGVyIEFjdGlvbnNcblxuLmRvYy12aWV3LWhlYWRlci1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIH1cbn1cblxuLmRvYy12aWV3LXV0aWxpdHktYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4vLyBEcm9wZG93biBzdHlsaW5nXG5cbi5kb2Mtdmlldy1oZWFkZXIgLmRyb3Bkb3duLW1lbnUge1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGV4dC1kYW5nZXI6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcGRvd24tZGl2aWRlciB7XG4gICAgICAgIG1hcmdpbjogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRVJPIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLWhlcm8ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeS1sZyk7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4uYnRuLWhlcm8tdXJnZW50IHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZGFuZ2VyKSAwJSwgdmFyKC0tc3dwLWRhbmdlci1ob3ZlcikgMTAwJSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWRhbmdlcik7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWRhbmdlci1ob3ZlcikgMCUsIHZhcigtLXN3cC1kYW5nZXIpIDEwMCUpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWRhbmdlci1sZyk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQUlOIENPTlRFTlQgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kb2Mtdmlldy1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDM0MHB4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMDI0cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBET0NVTUVOVCBBUkVBIChNYWluKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctZG9jdW1lbnQge1xuICAgIG1pbi13aWR0aDogMDsgLy8gUHJldmVudCBvdmVyZmxvd1xufVxuXG4uZG9jLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyBQaWxsLXNoYXBlZCBzdGF0dXMgY2hpcHMgd2hlcmV2ZXIgdGhleSBhcHBlYXIgaW5zaWRlIHRoZSBkb2N1bWVudCB2aWV3IG9yIGl0c1xuLy8gc2lkZWJhciwgbWF0Y2hpbmcgdGhlIGRlc2lnbiBzeXN0ZW0gc3BlYyAocmFkaXVzLWZ1bGwsIHdlaWdodCA1MDAsIDJweCB4IDEwcHgpLlxuXG4uZG9jLWNhcmQgLmJhZGdlLFxuLmRvYy1wYWdlLWhlYWRlciAuYmFkZ2UsXG4uZG9jLXZpZXctaGVhZGVyIC5iYWRnZSxcbi5kb2Mtdmlldy1zaWRlYmFyIC5iYWRnZSB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBwYWRkaW5nOiAycHggMTBweDtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGxldHRlci1zcGFjaW5nOiAwO1xuXG4gICAgLy8gVGFibGVyIGJpbmRzIGB0ZXh0LWdyYXktZmdgIHRvIGFtYmVyIHZpYSAtLWJzLXNlY29uZGFyeTsgdGhpcyBtYWtlcyBhXG4gICAgLy8gYENhbmNlbGxlZGAgY2hpcCByZWFkIGFzIGEgd2FybmluZy4gUGluIHRoZSBuZXV0cmFsIGNoaXAgdG8gc2xhdGUgc28gdGhlXG4gICAgLy8gY29sb3VyIG1hdGNoZXMgd2hhdCB0aGUgY2xhc3MgbmFtZSBpbXBsaWVzLlxuXG4gICAgJi5iZy1ncmF5LnRleHQtZ3JheS1mZyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gRG9jdW1lbnQgSGVhZGVyIChGcm9tL1RvKVxuXG4uZG9jLWhlYWRlci1mcm9tLXRvIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS04KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tc3dwLWdyYXktNTApIDAlLCB2YXIoLS1zd3Atc3VyZmFjZSkgMTAwJSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxufVxuXG4uZG9jLXBhcnR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5kb2MtcGFydHktbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRvYy1wYXJ0eS1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnLCAxLjEyNXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbn1cblxuLmRvYy1wYXJ0eS1kZXRhaWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxuXG4gICAgLmRldGFpbC1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgJjo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogXCI6XCI7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kZXRhaWwtdmFsdWUge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICBhLmRldGFpbC12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTGluZSBJdGVtcyBUYWJsZVxuXG4uZG9jLWl0ZW1zIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5kb2MtaXRlbXMtdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cbiAgICB0aGVhZCB7XG5cbiAgICAgICAgdGgge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMsIDAuNzVyZW0pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAgICAgJi5jb2x1bW4tcHJpY2UsXG4gICAgICAgICAgICAmLmNvbHVtbi1xdHksXG4gICAgICAgICAgICAmLmNvbHVtbi10YXgsXG4gICAgICAgICAgICAmLmNvbHVtbi10b3RhbCB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIaWRlIHRhYmxlIGhlYWRlciBvbiBtb2JpbGVcbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA2NDBweCkge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRib2R5IHtcblxuICAgICAgICB0ciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YWNrIHJvd3MgYXMgY2FyZHMgb24gbW9iaWxlXG4gICAgICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDY0MHB4KSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcblxuICAgICAgICAgICAgJi5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmNvbHVtbi1wcmljZSxcbiAgICAgICAgICAgICYuY29sdW1uLXF0eSxcbiAgICAgICAgICAgICYuY29sdW1uLXRheCxcbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFjayBjZWxscyBvbiBtb2JpbGVcbiAgICAgICAgICAgIEBtZWRpYSAod2lkdGggPD0gNjQwcHgpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBhdHRyKGRhdGEtbGFiZWwpO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJi5jb2x1bW4tZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgICAgICAgICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICYuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29sdW1uIHdpZHRocyAoZGVza3RvcCBvbmx5KVxuICAgIEBtZWRpYSAod2lkdGggPj0gNjQxcHgpIHtcblxuICAgICAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgICAgICB3aWR0aDogMTIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdGF4IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBUb3RhbHMgU2VjdGlvblxuXG4uZG9jLXRvdGFscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBwYWRkaW5nLXRvcDogMDtcbn1cblxuLmRvYy10b3RhbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1pbi13aWR0aDogMjgwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbn1cblxuLnRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG5cbiAgICAudG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB9XG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cbn1cblxuLy8gUGF5bWVudHMgcmVjZWl2ZWQgYXJlIG1vbmV5IGluOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZSBoZXJlLlxuXG4udG90YWxzLXJvdy1wYXltZW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi8vIEEgZGlzY291bnQgaXMgYSBkZWR1Y3Rpb24sIG5vdCBhIHN1Y2Nlc3Mgc3RhdGUuIFN0YXkgbmV1dHJhbDsgcXVpZXQgJDAgY2FzZXMuXG5cbi50b3RhbHMtcm93LWRpc2NvdW50IC50b3RhbHMtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi50b3RhbHMtcm93LWZpbmFsIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQsIDYwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBHcmFuZCB0b3RhbCBpcyBpbmZvcm1hdGlvbmFsOyBncmVlbiBpcyByZXNlcnZlZCBmb3IgYWN0dWFsbHktcGFpZCBzdGF0ZXNcbiAgICAvLyAoaGFuZGxlZCBieSAuc3VtbWFyeS1pdGVtLXBhaWQgLyAudG90YWxzLXJvdy1wYXltZW50KS5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnLCAxLjEyNXJlbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cbn1cblxuLy8gRG9jdW1lbnQgRm9vdGVyIChUZXJtcyAmIE5vdGVzKVxuXG4uZG9jLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5kb2MtZm9vdGVyLXNlY3Rpb24ge1xuXG4gICAgJiArICYge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5kb2MtZm9vdGVyLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbn1cblxuLmRvYy1mb290ZXItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0lERUJBUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZG9jLXZpZXctc2lkZWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSAxMDI0cHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gICAgfVxufVxuXG4uZG9jLXNpZGViYXItY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLW11dGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXN1Y2Nlc3Mge1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1oaWdobGlnaHQge1xuICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uZG9jLXNpZGViYXItY2FyZC1zdWNjZXNzIC5kb2Mtc2lkZWJhci1jYXJkLWljb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkLCA2MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5kb2Mtc2lkZWJhci1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gU3VtbWFyeSBHcmlkXG5cbi5kb2Mtc3VtbWFyeS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi8vIFN1bW1hcnkgSXRlbXNcblxuLnN1bW1hcnktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIC5zdW1tYXJ5LWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5zdW1tYXJ5LXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgfVxuXG4gICAgLy8gQW1vdW50IGZpZWxkOiB0b3RhbCBpbnZvaWNlIHZhbHVlLiBOZXV0cmFsIGJ5IGRlZmF1bHQ7IHRoZSBzdGF0dXMgcm93IGNhcnJpZXNcbiAgICAvLyB0aGUgXCJQYWlkIC8gT3ZlcmR1ZSAvIERyYWZ0XCIgbWVhbmluZy4gR3JlZW4gaGVyZSB3b3VsZCBkb3VibGUtZW5jb2RlLlxuXG4gICAgLnN1bW1hcnktdmFsdWUtYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlLCAxcmVtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgfVxuXG4gICAgLy8gQmFsYW5jZSBzdGlsbCBvd2VkOiBhbWJlciBhdHRlbnRpb24gaXMgYXBwcm9wcmlhdGUuXG5cbiAgICAuc3VtbWFyeS12YWx1ZS1iYWxhbmNlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQsIDcwMCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZyk7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1pdGVtLW92ZXJkdWUge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IGNhbGMoLTEgKiB2YXIoLS1zd3Atc3BhY2UtMikpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWl0ZW0tcGFpZCB7XG5cbiAgICAuc3VtbWFyeS12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxufVxuXG4vLyBDbGllbnQgSW5mbyAodXNlZCBpbiBzaWRlYmFyKVxuXG4uY2xpZW50LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmNsaWVudC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLmNsaWVudC1jb250YWN0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY2xpZW50LWNvbnRhY3Qge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5jb250YWN0LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5jb250YWN0LWVtYWlsLFxuLmNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIG9wYWNpdHk6IDAuNjtcbiAgICB9XG59XG5cbi8vIFBheW1lbnRzIExpc3QgKHVzZWQgaW4gaW52b2ljZSBzaWRlYmFyKVxuXG4ucGF5bWVudHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4ucGF5bWVudC1jYXJkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5wYXltZW50LWNhcmQtY2FwdHVyZWQge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG59XG5cbi5wYXltZW50LWNhcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnBheW1lbnQtYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UsIDFyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkLCA3MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtY2FyZC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5wYXltZW50LW1ldGhvZCxcbi5wYXltZW50LWRhdGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzLCAwLjc1cmVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLnBheW1lbnQtbWVzc2FnZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cywgMC43NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLy8gUmVsYXRlZCBkb2N1bWVudCBsaW5rc1xuXG4ucmVsYXRlZC1xdW90ZS1saW5rLFxuLnJlbGF0ZWQtaW52b2ljZS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4ucmVsYXRlZC1pbnZvaWNlLXN0YXR1cyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5kb2Mtdmlldy1wYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmRvYy12aWV3LWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAuZG9jLXZpZXctZG9jdW1lbnQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAuZG9jLWNhcmQge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRvYy1oZWFkZXItZnJvbS10byB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDIwcHggMDtcbiAgICB9XG5cbiAgICAuZG9jLWl0ZW1zLXRhYmxlIHtcblxuICAgICAgICB0aGVhZCB0aCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCkgIWltcG9ydGFudDtcbiAgICAgICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZG9jLXRvdGFscy1ncmlkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuZG9jLWZvb3RlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLm5vLXByaW50IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgRG9jdW1lbnQgVmlldyAtIFNoYXJlZCBTdHlsZXNcbiAqXG4gKiBTaGFyZWQgc3R5bGVzIGZvciBwdWJsaWMtZmFjaW5nIGludm9pY2UgYW5kIHF1b3RlIHZpZXdzLlxuICogSW52b2ljZS1zcGVjaWZpYzogZXh0ZXJuYWwtaW52b2ljZS12aWV3LnNjc3NcbiAqIFF1b3RlLXNwZWNpZmljOiBleHRlcm5hbC1xdW90ZS12aWV3LnNjc3NcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQUdFIFdSQVBQRVIgKHNoYXJlZCBiYXNlKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWdyYXktNTAsICNmOGZhZmMpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBUFAgQlJBTkRJTkcgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hcHAtYnJhbmRpbmctaGVhZGVyIHtcbiAgICBwYWRkaW5nOiAxLjVyZW0gMDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuXG4gICAgLmFwcC1sb2dvIHtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNDBweDtcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYXBwLWJyYW5kLW5hbWUge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgfVxuXG4gICAgLmFwcC1icmFuZC10YWdsaW5lIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItc2Vjb25kYXJ5LCAjNjQ3NDhiKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSU9OIEJBUiAoVE9QKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1hY3Rpb24tYmFyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWJnLXN1cmZhY2UsICNmZmZmZmYpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQT0dSQVBIWSAmIFZJU1VBTCBISUVSQVJDSFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29tcGFueSBuYW1lIGluIGhlYWRlclxuXG4uZXh0LWRvYy1jb21wYW55LW5hbWUge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbn1cblxuLy8gRG9jdW1lbnQgbnVtYmVyIC0gbGFyZ2UgYW5kIHByb21pbmVudFxuXG4uZXh0LWRvYy1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5leHQtZG9jLW51bWJlci1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLy8gVkFUIG51bWJlciAtIHN1YnRsZSBvcGFjaXR5XG5cbi5leHQtZG9jLXZhdC1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMC45Mzc1cmVtO1xuICAgIG9wYWNpdHk6IDAuNzU7XG59XG5cbi8vIExvZ28gY29udGFpbmVyXG5cbi5leHQtZG9jLWxvZ28ge1xuXG4gICAgaW1nIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUVUQURBVEEgQ0FSRCAtIERhdGUsIER1ZSBEYXRlLCBUb3RhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1tZXRhZGF0YS1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2IoMCAwIDAgLyA1JSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYigwIDAgMCAvIDglKTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtbWV0YWRhdGEtbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi5leHQtZG9jLW1ldGFkYXRhLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG59XG5cbi5leHQtZG9jLW1ldGFkYXRhLXRvdGFsIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1wcmltYXJ5LCAjMmU5NjNhKTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGUk9NIC8gVE8gU0VDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmV4dC1kb2MtcGFydGllcy1zZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4uZXh0LWRvYy1wYXJ0eS1sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG9wYWNpdHk6IDAuNjtcbn1cblxuLmV4dC1kb2MtcGFydHktbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi5leHQtZG9jLXBhcnR5LWRldGFpbCB7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElORSBJVEVNUyBUQUJMRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy1pdGVtcy10YWJsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcblxuICAgIHRoZWFkIHtcblxuICAgICAgICB0aCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3IsICNjYmQ1ZTEpO1xuICAgICAgICAgICAgcGFkZGluZzogMC44NzVyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkge1xuXG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1saWdodCwgI2UyZThmMCk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGJsci1ncmF5LTUwLCAjZjhmYWZjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMC43NXJlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pdGVtLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgfVxuXG4gICAgLml0ZW0tYW1vdW50IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAndG51bSc7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RBTFMgQ0FSRFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZXh0LWRvYy10b3RhbHMtY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDAgMCAwIC8gNSUpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG59XG5cbi5leHQtZG9jLXRvdGFscy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMC42MjVyZW0gMDtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuMzc1cmVtO1xuICAgIH1cbn1cblxuLmV4dC1kb2MtdG90YWxzLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuOTM3NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGJsci1ib2R5LWNvbG9yLCAjMWUyOTNiKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZXh0LWRvYy10b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRibHItYm9keS1jb2xvciwgIzFlMjkzYik7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAndG51bSc7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4uZXh0LWRvYy10b3RhbHMtZmluYWwge1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB2YXIoLS10YmxyLWJvcmRlci1jb2xvci1kYXJrLCAjOTRhM2I4KTtcbiAgICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgICBtYXJnaW4tdG9wOiAwLjc1cmVtO1xuXG4gICAgLmV4dC1kb2MtdG90YWxzLXJvdyB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwIDA7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtdG90YWxzLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXRibHItcHJpbWFyeSwgIzJlOTYzYSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9PVEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5leHQtZG9jLWZvb3RlciB7XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItYmctc3VyZmFjZSwgI2ZmZmZmZik7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG5cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIGltZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDI0cHg7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBUkQgUkVGSU5FTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3RhdHVzIGJhZGdlc1xuXG4uYmFkZ2Uge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG59XG5cbi8vIEhvcml6b250YWwgcnVsZXNcblxuaHIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGJsci1ib3JkZXItY29sb3ItbGlnaHQsICNlMmU4ZjApO1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi8vIEZvY3VzIHN0eWxlcyBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvblxuXG4uYnRuOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS10YmxyLXByaW1hcnksICMyZTk2M2EpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG59XG5cbi5jYXJkLWxnIHtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiKDAgMCAwIC8gOCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItYm9yZGVyLWNvbG9yLWxpZ2h0LCAjZTJlOGYwKTtcblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAyLjVyZW07XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MXB4KSB7XG5cbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkIC5jYXJkLWJvZHksXG4gICAgLmV4dC1kb2MtdG90YWxzLWNhcmQgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuMjVyZW07XG4gICAgfVxuXG4gICAgLmNhcmQtbGcgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2N3B4KSB7XG5cbiAgICAuZXh0LWRvYy1udW1iZXIge1xuICAgICAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy10b3RhbHMtZmluYWwgLmV4dC1kb2MtdG90YWxzLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLXBhcnRpZXMtc2VjdGlvbiB7XG5cbiAgICAgICAgLmNvbC1zbS02OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuXG4gICAgLmNvbnRhaW5lci14bCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1sZyAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMS41cmVtO1xuICAgIH1cblxuICAgIC5leHQtZG9jLW1ldGFkYXRhLWNhcmQgLmNhcmQtYm9keSxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICB9XG5cbiAgICAvLyBBcHAgYnJhbmRpbmcgaGVhZGVyIC0gc3RhY2sgb24gbW9iaWxlXG5cbiAgICAuYXBwLWJyYW5kaW5nLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW0gMDtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAuYXBwLWJyYW5kLW5hbWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmFwcC1icmFuZC10YWdsaW5lIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9vdGVyIC0gc3RhY2sgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1mb290ZXIge1xuXG4gICAgICAgIC5idG4tc20ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG5cbiAgICAgICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN0YWNrIG1ldGFkYXRhIGl0ZW1zIG9uIG1vYmlsZVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCB7XG5cbiAgICAgICAgLmNvbC1zbS00LFxuICAgICAgICAuY29sLXNtLTYge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICAgICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWFrZSBhY3Rpb24gYnV0dG9ucyBzdGFjayBuaWNlbHkgb24gbW9iaWxlXG5cbiAgICAuZXh0LWRvYy1hY3Rpb24tYmFyIHtcblxuICAgICAgICAuZC1mbGV4Lmp1c3RpZnktY29udGVudC1iZXR3ZWVuIHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IDAuNzVyZW07XG5cbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmJ0bi1wcmltYXJ5LFxuICAgICAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGFibGUgYWRqdXN0bWVudHNcblxuICAgIC5leHQtZG9jLWl0ZW1zLXRhYmxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcblxuICAgICAgICB0aGVhZCB0aCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuODc1cmVtIDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm8tcHJpbnQsXG4gICAgLmQtcHJpbnQtbm9uZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQHBhZ2Uge1xuICAgICAgICBtYXJnaW46IDFjbTtcbiAgICB9XG5cbiAgICBodG1sLFxuICAgIGJvZHkge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5leHQtZG9jLXBhZ2UsXG4gICAgLnBhZ2Utd3JhcHBlcixcbiAgICAucGFnZS1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNvbnRhaW5lci14bCB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwLjVjbSAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQsXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZCxcbiAgICAuZXh0LWRvYy10b3RhbHMtY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RlZTJlNjtcbiAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50O1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgfVxuXG4gICAgLmNhcmQtbGcgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG5cbiAgICB0YWJsZSB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXV0bztcbiAgICB9XG5cbiAgICB0ciB7XG4gICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIGJyZWFrLWFmdGVyOiBhdXRvO1xuICAgIH1cblxuICAgIHRoZWFkIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICAgIH1cblxuICAgIC5iZy1saWdodCxcbiAgICAuZXh0LWRvYy1tZXRhZGF0YS1jYXJkLFxuICAgIC5leHQtZG9jLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLmJnLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzM1NDUgIWltcG9ydGFudDtcbiAgICAgICAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgICAgICBwcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xuICAgIH1cblxuICAgIC50ZXh0LXByaW1hcnksXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtdG90YWwsXG4gICAgLmV4dC1kb2MtdG90YWxzLWZpbmFsIC5leHQtZG9jLXRvdGFscy12YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAjMmU5NjNhICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAudGV4dC1kYW5nZXIge1xuICAgICAgICBjb2xvcjogI2RjMzU0NSAhaW1wb3J0YW50O1xuICAgICAgICAtd2Via2l0LXByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgICAgIHByaW50LWNvbG9yLWFkanVzdDogZXhhY3Q7XG4gICAgfVxuXG4gICAgLnRleHQtc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMTBiOTgxICFpbXBvcnRhbnQ7XG4gICAgICAgIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICAgICAgcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbiAgICB9XG5cbiAgICAuZXh0LWRvYy1pdGVtcy10YWJsZSB0Ym9keSB0cjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmV4dC1kb2MtbWV0YWRhdGEtY2FyZDpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBociB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogI2NiZDVlMSAhaW1wb3J0YW50O1xuICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBTaGFyZWQgTWFya2V0cGxhY2UgU3R5bGVzXG4gKlxuICogQ29tbW9uIHN0eWxlcyBzaGFyZWQgYmV0d2VlbiBQYXltZW50QnVuZGxlIGFuZCBOb3RpZmljYXRpb25CdW5kbGUgbWFya2V0cGxhY2UgcGFnZXMuXG4gKiBQYWdlLXNwZWNpZmljIHN0eWxlcyByZW1haW4gaW4gcGF5bWVudC1tYXJrZXRwbGFjZS5zY3NzIGFuZCBub3RpZmljYXRpb24tbWFya2V0cGxhY2Uuc2Nzcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQVJLRVRQTEFDRSBQQU5FTCAtIExlZnQgU2lkZSBTdGlja3kgUGFuZWxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSB2YXIoLS1zd3Atc3BhY2UtMTYpKTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiA2cHg7XG4gICAgfVxuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tYXJrZXRwbGFjZS1oZWFkZXIge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICB9XG5cbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAycHggcmdiKDAgMCAwIC8gNSUpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDA7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMDtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJjpoYXMoLmZvcm0tY29udHJvbDpmb2N1cykge1xuXG4gICAgICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFTEVURSBDT05GSVJNQVRJT04gTkVTVEVEIE1PREFMXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNjAlKTtcbiAgICB6LWluZGV4OiAxMDYwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjE1cyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNzA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4xNXMgZWFzZTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24tY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAyNXB4IDUwcHggLTEycHggcmdiKDAgMCAwIC8gMjUlKTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2NhbGUtaW4gMC4ycyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLmRlbGV0ZS1jb25maXJtYXRpb24taGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgaDQge1xuICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmRlbGV0ZS1pY29uLXdyYXBwZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgIGhlaWdodDogNDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi5kZWxldGUtY29uZmlybWF0aW9uLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4uZGVsZXRlLWNvbmZpcm1hdGlvbi1mb290ZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTSEFSRUQgQU5JTUFUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cblxuICAgIHRvIHsgb3BhY2l0eTogMTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNsaWRlLXVwIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45OCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIG1hcmtldHBsYWNlLXNjYWxlLWluIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVUSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJhZGdlLXNtIHtcbiAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xufVxuXG4ubWFya2V0cGxhY2Utc2VhcmNoLWNsZWFyIHtcbiAgICB6LWluZGV4OiAxMDtcbiAgICByaWdodDogOHB4ICFpbXBvcnRhbnQ7XG59XG4iLCIvKipcbiAqIEdsb2JhbCBTZWFyY2ggLSBUb3AgbmF2aWdhdGlvbiBzZWFyY2ggYmFyIHdpdGggbGl2ZSByZXN1bHRzIGRyb3Bkb3duXG4gKi9cblxuLmdsb2JhbC1zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuXG4gICAgJi1pbnB1dC13cmFwcGVyIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgICYtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMC43NXJlbTtcbiAgICAgICAgdG9wOiA1MCU7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICAmLWlucHV0IHtcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgLy8gMC43NXJlbSBpY29uLWxlZnQgKyAxcmVtIGljb24td2lkdGggKyAwLjVyZW0gZ2FwID0gMi4yNXJlbVxuICAgICAgICAvLyBSaWdodDogaGVscC1idG4gMjBweCArIGdhcCA2cHggKyBzaG9ydGN1dCB+NjVweCArIG1hcmdpbiAxMHB4ID0gfjEwMXB4IOKJiCA2LjVyZW1cbiAgICAgICAgcGFkZGluZzogMCA2LjVyZW0gMCAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMzhweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDM4cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNkMGQzZDg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6ICMzNTQwNTI7XG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcblxuICAgICAgICAvLyBSZW1vdmUgYnJvd3NlciBkZWZhdWx0IHNlYXJjaCBjYW5jZWwgYnV0dG9uXG5cbiAgICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbiAgICAgICAgJjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICMyZTk2M2E7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiKDQ2IDE1MCA1OCAvIDEyJSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi1hY3Rpb25zIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogMC42MjVyZW07XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgIH1cblxuICAgICYtc2hvcnRjdXQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDNweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAga2JkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xcmVtIDAuMzVyZW07XG4gICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS10YmxyLWZvbnQtbW9ub3NwYWNlKTtcbiAgICAgICAgICAgIGNvbG9yOiAjOWFhMGFjO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjdmYjtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNmU3ZTk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS40O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhcmNoLWhlbHAtdHJpZ2dlciB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlM2U4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiAjYWRiNWJkO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAjNDk1MDU3O1xuICAgICAgICBib3JkZXItY29sb3I6ICM5YWEwYWM7XG4gICAgfVxufVxuXG4uc2VhcmNoLWhlbHAtc2VjdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG4gICAgY29sb3I6ICM5YWEwYWM7XG4gICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLnNlYXJjaC1oZWxwLW9wIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tdGJsci1mb250LW1vbm9zcGFjZSk7XG4gICAgYmFja2dyb3VuZDogI2Y1ZjdmYjtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgY29sb3I6ICMzNTQwNTI7XG59XG5cbi5zZWFyY2gtaGVscC1leGFtcGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAzcHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogI2Y4ZmFmYztcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjMmU5NjNhO1xuXG4gICAgY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBjb2xvcjogIzFhNTZkYjtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuICAgIH1cblxuICAgIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDAuNzc1cmVtO1xuICAgICAgICBjb2xvcjogIzlhYTBhYztcbiAgICB9XG59XG5cbiNzZWFyY2hIZWxwTW9kYWwgLm1vZGFsLWJvZHkge1xuICAgIC8vIFRoZSBzZWFyY2ggZ3VpZGUgbGF5cyBvdXQgaXRzIG93biBmdWxsLWJsZWVkIHNlY3Rpb25zIChiYW5kcywgZGl2aWRlcnMsXG4gICAgLy8gY29sdW1ucyksIHNvIHRoZSBtb2RhbCBib2R5IG11c3Qgbm90IGFkZCBwYWRkaW5nIG9mIGl0cyBvd24uXG4gICAgcGFkZGluZzogMDtcbn1cblxuLnNlYXJjaC1kcm9wZG93biB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiBjYWxjKDEwMCUgKyA2cHgpO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgbWluLXdpZHRoOiA1MjBweDtcblxuICAgIC8vIEV4dGVuZCBzeW1tZXRyaWNhbGx5IGJleW9uZCB0aGUgaW5wdXQgZm9yIGEgd2lkZXIgcGFuZWxcbiAgICBtYXJnaW4tbGVmdDogLTYwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNjBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlNmU3ZTk7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDQwcHggcmdiKDAgMCAwIC8gMTglKSwgMCAycHggOHB4IHJnYigwIDAgMCAvIDglKTtcblxuICAgIC8vIFVzZSBpc29sYXRpb24gdG8gYXZvaWQgc3RhY2tpbmcgY29udGV4dCBpc3N1ZXMgZnJvbSB0aGUgbmF2YmFyXG4gICAgaXNvbGF0aW9uOiBpc29sYXRlO1xuICAgIHotaW5kZXg6IDk5OTk7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYW5pbWF0aW9uOiBzZWFyY2gtZHJvcGRvd24taW4gMC4xMnMgZWFzZS1vdXQ7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHNlYXJjaC1kcm9wZG93bi1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpIHNjYWxlKDAuOTkpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLnNlYXJjaC1zcGlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAwLjVyZW07XG4gICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICBjb2xvcjogIzlhYTBhYztcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4uc2VhcmNoLXJlc3VsdHMge1xuICAgIG1heC1oZWlnaHQ6IDQ0MHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IDRweDtcbiAgICB9XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTNlODtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIH1cbn1cblxuLnNlYXJjaC1ncm91cCB7XG5cbiAgICAmICsgJiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZjBmMmY1O1xuICAgIH1cblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgICYtbGFiZWwge1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbSAwLjg3NXJlbSAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1pdGVtIHtcblxuICAgICYuaXMtYWN0aXZlIC5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgIH1cblxuICAgICY6aG92ZXIgLnNlYXJjaC1yZXN1bHQtbGluayB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY3ZmI7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG59XG5cbi5zZWFyY2gtcmVzdWx0LWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgcGFkZGluZzogMC41cmVtIDAuODc1cmVtO1xuICAgIGNvbG9yOiAjMzU0MDUyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMDhzIGVhc2U7XG59XG5cbi5zZWFyY2gtcmVzdWx0LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogMzRweDtcbiAgICBoZWlnaHQ6IDM0cHg7XG4gICAgcGFkZGluZzogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcblxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnNlYXJjaC1yZXN1bHQtYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc2VhcmNoLXJlc3VsdC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiAjMzU0MDUyO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnNlYXJjaC1yZXN1bHQtc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NzVyZW07XG4gICAgY29sb3I6ICM5YWEwYWM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1hcmdpbi10b3A6IDFweDtcbn1cblxuLnNlYXJjaC1yZXN1bHQtYXNpZGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjJyZW07XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LWJhZGdlIHtcbiAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNDVyZW07XG59XG5cbi5zZWFyY2gtcmVzdWx0LW1ldGEge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICMzNTQwNTI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnNlYXJjaC1lbXB0eSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMi41cmVtIDFyZW07XG4gICAgY29sb3I6ICM5YWEwYWM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcblxuICAgICYtaWNvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgfVxuXG4gICAgJi10ZXh0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgIH1cbn1cblxuLnNlYXJjaC1lcnJvciB7XG4gICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10YmxyLWRhbmdlciwgI2Q2MzkzOSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG59XG5cbi5zZWFyY2gtY2hpcCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBwYWRkaW5nOiAwLjE1cmVtIDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThmMGZlO1xuICAgIGNvbG9yOiAjMWE1NmRiO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLXJlbW92ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc2VhcmNoLWNoaXBzLWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA0cHg7XG4gICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmMGYyZjU7XG4gICAgbWluLWhlaWdodDogMDtcblxuICAgICY6ZW1wdHkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLnNlYXJjaC1zdWdnZXN0aW9ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogY2FsYygxMDAlICsgNHB4KTtcbiAgICBsZWZ0OiAwO1xuICAgIG1pbi13aWR0aDogMjIwcHg7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTZlN2U5O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYigwIDAgMCAvIDEyJSk7XG4gICAgei1pbmRleDogMTAwMDA7XG4gICAgcGFkZGluZzogMC4yNXJlbSAwO1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmLmlzLW9wZW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbSAwLjFyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICAgICAgY29sb3I6ICM5YWEwYWM7XG4gICAgfVxuXG4gICAgJi1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogIzM1NDA1MjtcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLmlzLWFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2ZiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29kZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgICAgICBjb2xvcjogIzZjNzU3ZDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEYXRhR3JpZCBDb21wb25lbnQgU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBkYXRhIGdyaWQgc3R5bGluZyBmb2xsb3dpbmcgdGhlIFNvbGlkSW52b2ljZSBkZXNpZ24gc3lzdGVtLlxuICogVXNlcyBkZXNpZ24gdG9rZW5zIGZyb20gX3Rva2Vucy5zY3NzIGZvciBjb25zaXN0ZW5jeS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEQVRBR1JJRCBCQVNFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZCB7XG4gICAgLy8gQ29udGFpbmVyIGZvciB0aGUgZW50aXJlIGRhdGFncmlkIGNvbXBvbmVudFxuICAgIC8vIE5vdGU6IG92ZXJmbG93IGlzIE5PVCBzZXQgdG8gaGlkZGVuIHRvIGFsbG93IGRyb3Bkb3ducyB0byBleHRlbmQgYmV5b25kIGJvdW5kc1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIC8vIEZsYXNoIG1lc3NhZ2VzIGluc2lkZSB0aGUgZGF0YWdyaWRcblxuICAgID4gLmFsZXJ0IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG59XG5cbi5kYXRhZ3JpZC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUFSQ0ggJiBGSUxURVIgQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtdG9vbGJhci1zdGFydCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZGF0YWdyaWQtdG9vbGJhci1lbmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmRhdGFncmlkLXNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDE7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gtaWNvbiB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtc2VhcmNoLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElWRSBGSUxURVJTIChDaGlwcyBpbiB0b29sYmFyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtYWN0aXZlLWZpbHRlcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuXG4gICAgICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXJlbW92ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGF0YWdyaWQtYWN0aXZlLWZpbHRlci1rZXkge1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnOic7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1hY3RpdmUtZmlsdGVyLXZhbHVlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWFjdGl2ZS1maWx0ZXItcmVtb3ZlIHtcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSUxURVIgUEFORUwgKERyb3Bkb3duKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtZmlsdGVyLWRyb3Bkb3duIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwge1xuICAgIHdpZHRoOiAzMjBweDtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjAwcHgpO1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLy8gRW5zdXJlIG5lc3RlZCBkcm9wZG93bnMgKGxpa2Ugc2VsZWN0MikgYXBwZWFyIGFib3ZlIHRoZSBwYW5lbFxuXG4gICAgLmRyb3Bkb3duLW1lbnUsXG4gICAgLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIHtcbiAgICAgICAgei1pbmRleDogMTA2MCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLXRpdGxlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItcGFuZWwtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAzNTBweCk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmRhdGFncmlkLWZpbHRlci1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5kYXRhZ3JpZC1maWx0ZXItZmllbGQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIC8vIEVuc3VyZSBkcm9wZG93bnMgd2l0aGluIGZpZWxkcyBoYXZlIHByb3BlciB6LWluZGV4XG5cbiAgICAuZm9ybS1zZWxlY3QsXG4gICAgc2VsZWN0IHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC8vIERhdGUgcmFuZ2UgZmllbGRzXG5cbiAgICAucm93IHtcbiAgICAgICAgLS1icy1ndXR0ZXIteDogMC41cmVtO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWZpbHRlci1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLmRhdGFncmlkLWZpbHRlci13aWRnZXQge1xuICAgIC8vIENvbnRhaW5lciBmb3IgZm9ybSB3aWRnZXRzXG5cbiAgICAvLyBEYXRlIHJhbmdlIGZpZWxkcyAtIGRpc3BsYXkgaW5saW5lIChzaWRlIGJ5IHNpZGUpXG4gICAgLy8gVGhlIERhdGVSYW5nZUZvcm1UeXBlIGNyZWF0ZXMgYSBjb250YWluZXIgZGl2IHdpdGggc3RhcnQvZW5kIGRhdGUgZmllbGRzXG5cbiAgICA+IGRpdjpoYXMoPiBkaXYgPiBpbnB1dFt0eXBlPVwiZGF0ZVwiXSkge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIC8vIEVhY2ggZGF0ZSBmaWVsZCBjb250YWluZXJcblxuICAgICAgICAgICAgLmZvcm0tbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmRlZCBjaG9pY2UgKGNoZWNrYm94ZXMvcmFkaW9zKSAtIHJlbmRlciBhcyBzdGFuZGFyZCBjaGVja2JveGVzXG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVycmlkZSBhbnkgc3dpdGNoIHN0eWxlcyAtIGZvcmNlIHJlZ3VsYXIgY2hlY2tib3ggYXBwZWFyYW5jZVxuXG4gICAgICAgICYuZm9ybS1zd2l0Y2gge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBzd2l0Y2gvcGlsbCBhcHBlYXJhbmNlXG5cbiAgICAgICAgICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXG4gICAgICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyMCAyMCclM2UlM2NwYXRoIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZmZmJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIHN0cm9rZS13aWR0aD0nMycgZD0nTTYgMTBsMyAzbDYtNicvJTNlJTNjL3N2ZyUzZVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTcGFjZSBiZXR3ZWVuIGNoZWNrYm94ZXNcblxuICAgIC5mb3JtLWNoZWNrICsgLmZvcm0tY2hlY2sge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtZmlsdGVyLXBhbmVsLWZvb3RlciB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyBGb3JtIGVsZW1lbnRzIHdpdGhpbiBmaWx0ZXIgcGFuZWxcblxuLmRhdGFncmlkLWZpbHRlci1wYW5lbCB7XG4gICAgLy8gU3RhbmRhcmQgZm9ybSBjb250cm9sc1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBuZXN0ZWQgbGFiZWxzIGZyb20gRGF0ZVJhbmdlRm9ybVR5cGUgKHdlIHNob3cgb3VyIG93bilcblxuICAgIC5kYXRhZ3JpZC1maWx0ZXItZmllbGQgPiAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gRGF0ZSByYW5nZSBzdWItbGFiZWxzXG5cbiAgICAuZGF0YWdyaWQtZmlsdGVyLWZpZWxkIC5yb3cge1xuXG4gICAgICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbm9ybWFsKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNdWx0aXBsZSBjaG9pY2UgY2hlY2tib3hlc1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gV2hlbiBtdWx0aXBsZSBjaGVja2JveGVzIGluIGEgbGlzdFxuXG4gICAgLmZvcm0tY2hlY2sgKyAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG5cbiAgICAvLyBTZWxlY3QgZHJvcGRvd24gYWRqdXN0bWVudHNcblxuICAgIHNlbGVjdFttdWx0aXBsZV0ge1xuICAgICAgICBtaW4taGVpZ2h0OiAxMjBweDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEpO1xuXG4gICAgICAgIG9wdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICAgICAgICAgJjpjaGVja2VkIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVYUE9SVCBNRU5VIChEcm9wZG93bilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLWV4cG9ydC1kcm9wZG93biB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUge1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWhlYWRlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uZGF0YWdyaWQtZXhwb3J0LW1lbnUtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LXN1YnRpdGxlIHtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1tZW51LWJvZHkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uOmhvdmVyICYsXG4gICAgLmRhdGFncmlkLWV4cG9ydC1vcHRpb246Zm9jdXMtdmlzaWJsZSAmIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tdGV4dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmRhdGFncmlkLWV4cG9ydC1vcHRpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG59XG5cbi5kYXRhZ3JpZC1leHBvcnQtb3B0aW9uLWhpbnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTFVNTiBWSVNJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1jb2x1bW4tcGlja2VyIHtcblxuICAgIC5kcm9wZG93bi10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgICAgIH1cblxuICAgICAgICAmOjphZnRlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lOyAvLyBIaWRlIGRlZmF1bHQgZHJvcGRvd24gY2FyZXRcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICAgICAgbWF4LWhlaWdodDogMzIwcHg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICAgICAgYWNjZW50LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQkxFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtdGFibGUtd3JhcHBlciB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLmRhdGFncmlkLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgdGgsXG4gICAgdGQge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxuXG4gICAgdGgge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB9XG5cbiAgICB0Ym9keSB7XG4gICAgICAgIC8vIFRhYnVsYXIgZmlndXJlcyBhY3Jvc3MgdGhlIHRhYmxlIHNvIGFtb3VudHMsIElEcyBhbmQgZGF0ZXMgYWxpZ24gY2xlYW5seVxuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgIH1cblxuICAgIHRib2R5IHRyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuc2VsZWN0ZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbHVtbiB0eXBlc1xuXG4gICAgLmNvbC1jaGVja2JveCB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgdGguY29sLWNoZWNrYm94IHtcbiAgICAgICAgLy8gS2VlcCBoZWFkZXIgY2hlY2tib3ggY2VudGVyZWQgdG8gbWF0Y2ggY2VsbHNcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5jb2wtaWQge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5jb2wtZGF0ZSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuXG4gICAgLy8gTW9uZXkgY29sdW1uczogcmlnaHQtYWxpZ24gYm90aCBoZWFkZXIgYW5kIGNlbGwsIHRhYnVsYXIgZmlndXJlcyBvbiBzeXN0ZW0gZm9udC5cbiAgICAvLyBNb25vIGlzIHJlc2VydmVkIGZvciBpZGVudGlmaWVycyBwZXIgdGhlIGRlc2lnbiBzeXN0ZW07IG1vbmV5IHJlYWRzIGFzIGRhdGEsIG5vdCBjb2RlLlxuXG4gICAgLmNvbC1hbW91bnQsXG4gICAgLmNvbC1tb25leSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICB9XG5cbiAgICB0aC5jb2wtYW1vdW50LFxuICAgIHRoLmNvbC1tb25leSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cblxuICAgIC8vIFRoZSBzb3J0YWJsZSBsaW5rIGluc2lkZSBhIHJpZ2h0LWFsaWduZWQgaGVhZGVyIG5lZWRzIGl0cyBjb250ZW50IHB1c2hlZCByaWdodCB0b29cblxuICAgIHRoLmNvbC1hbW91bnQgLmRhdGFncmlkLXNvcnQtbGluayxcbiAgICB0aC5jb2wtbW9uZXkgLmRhdGFncmlkLXNvcnQtbGluayB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLmNvbC1zdGF0dXMge1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2wtYWN0aW9ucyB7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gVGFibGVyIGJhZGdlcyBsaXZlIGluc2lkZSBzdGF0dXMgY2VsbHMuIFRoZSBkZXNpZ24gc3lzdGVtIG1hbmRhdGVzIHBpbGwgY2hpcHMuXG5cbiAgICB0Ym9keSAuYmFkZ2Uge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBwYWRkaW5nOiAycHggMTBweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwO1xuXG4gICAgICAgIC8vIGB0ZXh0LWdyYXktZmdgIGlzIGFtYmVyLWJvdW5kOyBuZXV0cmFsaXNlIHRoZSBDYW5jZWxsZWQgY2hpcCBleHBsaWNpdGx5LlxuXG4gICAgICAgICYuYmctZ3JheS50ZXh0LWdyYXktZmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTb3J0YWJsZSBjb2x1bW4gaGVhZGVyc1xuXG4uZGF0YWdyaWQtc29ydC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLnNvcnRlZCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXNvcnQtaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgICBvcGFjaXR5OiAwLjM1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIC5kYXRhZ3JpZC1zb3J0LWljb24ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUk9XIEFDVElPTlMgKEljb24gQnV0dG9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXJvdy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRhdGFncmlkLWFjdGlvbi1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5hY3Rpb24tdmlldzpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuYWN0aW9uLWVkaXQ6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLmFjdGlvbi1kZWxldGU6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgfVxufVxuXG4vLyBUaHJlZS1kb3QgbWVudSBidXR0b25cblxuLmRhdGFncmlkLW1vcmUtYnRuIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlcixcbiAgICAmW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cbn1cblxuLy8gVGhyZWUtZG90IGRyb3Bkb3duIG1lbnUgY29udGFpbmVyXG5cbi5kYXRhZ3JpZC1tb3JlLW1lbnUge1xuXG4gICAgLmRyb3Bkb3duLW1lbnUge1xuICAgICAgICBtaW4td2lkdGg6IDE2MHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYudGV4dC1kYW5nZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kcm9wZG93bi1kaXZpZGVyIHtcbiAgICAgICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMDtcbiAgICB9XG59XG5cbi8vIFNob3cgbW9yZSBidXR0b24gb24gcm93IGhvdmVyIG9ubHkgKHN1YnRsZSBVWClcblxudGJvZHkgdHI6bm90KDpob3ZlcikgLmRhdGFncmlkLW1vcmUtYnRuIHtcbiAgICBvcGFjaXR5OiAwO1xufVxuXG50Ym9keSB0cjpob3ZlciAuZGF0YWdyaWQtbW9yZS1idG4sXG4uZGF0YWdyaWQtbW9yZS1tZW51LnNob3cgLmRhdGFncmlkLW1vcmUtYnRuIHtcbiAgICBvcGFjaXR5OiAwLjY7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENIRUNLQk9YIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtY2hlY2tib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYWNjZW50LWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVNUFRZIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1lbXB0eSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTE2KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGF0YWdyaWQtZW1wdHktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIGhlaWdodDogODBweDtcbiAgICBtYXJnaW46IDAgYXV0byB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWVtcHR5LXRpdGxlIHtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5kYXRhZ3JpZC1lbXB0eS1tZXNzYWdlIHtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLmRhdGFncmlkLWVtcHR5LWFjdGlvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRkxPQVRJTkcgQlVMSyBBQ1RJT04gQkFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1idWxrLWJhciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMjRweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMTAwcHgpO1xuICAgIHotaW5kZXg6IDk5OTk7IC8vIFZlcnkgaGlnaCB0byBlbnN1cmUgdmlzaWJpbGl0eSBhYm92ZSBldmVyeXRoaW5nXG4gICAgb3BhY2l0eTogMDtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLFxuICAgICAgICAgICAgICAgIG9wYWNpdHkgMzAwbXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSksXG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eSAwcyAzMDBtcztcblxuICAgICYudmlzaWJsZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5IDMwMG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLFxuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5IDBzO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWJ1bGstYmFyLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTkwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14bCk7XG59XG5cbi5kYXRhZ3JpZC1idWxrLWNvdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLmNvdW50IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTkwMCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtYnVsay1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5kYXRhZ3JpZC1idWxrLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1IDI1NSAyNTUgLyAxMCUpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG4gICAgfVxuXG4gICAgJi5idG4tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiKDIzOSA2OCA2OCAvIDIwJSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1idWxrLWRpdmlkZXIge1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUgMjU1IDI1NSAvIDIwJSk7XG59XG5cbi5kYXRhZ3JpZC1idWxrLWNsb3NlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS00MDApO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gMTAlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0lOQVRJT04gRk9PVEVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5kYXRhZ3JpZC1mb290ZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1mb290ZXItaW5mbyB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRhdGFncmlkLXBlci1wYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgIHNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xLTUpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtcGFnaW5hdGlvbiB7XG5cbiAgICAucGFnaW5hdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgfVxuXG4gICAgLnBhZ2UtaXRlbSB7XG5cbiAgICAgICAgLnBhZ2UtbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUgLnBhZ2UtbGluayB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5kaXNhYmxlZCAucGFnZS1saW5rIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUQVRVUyBCQURHRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXN0YXR1cyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMC01KSB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wMjVlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICYuc3RhdHVzLXN1Y2Nlc3Mge1xuICAgICAgICBjb2xvcjogIzA2NWY0NjtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6ICM5OTFiMWI7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJi5zdGF0dXMtd2FybmluZyB7XG4gICAgICAgIGNvbG9yOiAjOTI0MDBlO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodGVyKTtcbiAgICB9XG5cbiAgICAmLnN0YXR1cy1pbmZvIHtcbiAgICAgICAgY29sb3I6ICMxZTQwYWY7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnktZGFyayk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICYuc3RhdHVzLXNlY29uZGFyeSB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS03MDApO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVMQVRJVkUgREFURVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtcmVsYXRpdmUtZGF0ZSB7XG4gICAgY3Vyc29yOiBoZWxwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4O1xuICAgIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDFweDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTE9BRElORyBTVEFURVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGF0YWdyaWQtbG9hZGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBpbnNldDogMDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiKDI1NSAyNTUgMjU1IC8gNzAlKTtcbiAgICAgICAgei1pbmRleDogMTA7XG4gICAgfVxufVxuXG4uZGF0YWdyaWQtbG9hZGluZy1pbmRpY2F0b3Ige1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgei1pbmRleDogMTE7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmRhdGFncmlkLWhlYWRlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1zZWFyY2gge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLXRhYmxlIHtcblxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kYXRhZ3JpZC1idWxrLWJhci1pbm5lciB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmRhdGFncmlkLWJ1bGstZGl2aWRlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFWFBBTkRBQkxFIFJPV1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmRhdGFncmlkLXRhYmxlIHtcbiAgICAvLyBFeHBhbmQgY29sdW1uIHN0eWxpbmdcblxuICAgIC5jb2wtZXhwYW5kIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLmRhdGFncmlkLWV4cGFuZC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyMDBtcyBlYXNlO1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4vLyBEZXRhaWwgcm93IChoaWRkZW4gYnkgZGVmYXVsdClcblxuLmRhdGFncmlkLWRldGFpbC1yb3cge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuXG4gICAgJi52aXNpYmxlIHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIH1cblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG59XG5cbi5kYXRhZ3JpZC1kZXRhaWwtY29udGVudCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbmltYXRpb246IGRhdGFncmlkLXNsaWRlLWRvd24gMjAwbXMgZWFzZTtcblxuICAgIC8vIE92ZXJyaWRlIG5lc3RlZCBkYXRhZ3JpZCBjYXJkIHN0eWxlcyB3aGVuIGluc2lkZSBkZXRhaWwgcm93XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBkYXRhZ3JpZC1zbGlkZS1kb3duIHtcblxuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuICAgIH1cblxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVBJIFRPS0VOIEhJU1RPUlkgKEV4cGFuZGFibGUgUm93IERldGFpbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmFwaS10b2tlbi1oaXN0b3J5IHtcblxuICAgIGg0IHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tdGJsci1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAudGFibGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLXdoaXRlKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRoZWFkIHRoIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRib2R5IHtcblxuICAgICAgICAgICAgdHIge1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UtaG92ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHI6bGFzdC1jaGlsZCB0ZCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS10YmxyLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBDbGllbnQgRm9ybSBTdHlsZXNcbiAqXG4gKiBDbGllbnQtc3BlY2lmaWMgc3R5bGVzIGZvciB0aGUgY2xpZW50IGNyZWF0aW9uL2VkaXQgZm9ybS5cbiAqIE91dGVyIGZvcm0tcGFnZSBsYXlvdXQgdXNlcyBzaGFyZWQgY2xhc3NlcyBmcm9tIF9mb3JtLXBhZ2Uuc2Nzcy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPUFRJT05BTCBTRUNUSU9OIFZBUklBTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1mb3JtLXNlY3Rpb24tb3B0aW9uYWwge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcblxuICAgIC5zZWN0aW9uLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVRVUlSRUQgLyBPUFRJT05BTCBTRUNUSU9OIElDT04gTU9ESUZJRVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3Rpb24taWNvbi1yZXF1aXJlZCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09OVEFDVCBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jb250YWN0cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5jb250YWN0LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmNvbnRhY3QtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5jb250YWN0LWF2YXRhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uY29udGFjdC1jYXJkLXRpdGxlIHtcbiAgICBmbGV4OiAxO1xufVxuXG4uY29udGFjdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cbi5jb250YWN0LWNhcmQtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNvbnRhY3QtY2FyZC1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5jb250YWN0LWZvcm0tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi5jb250YWN0LWZpZWxkLWVtYWlsIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERJVElPTkFMIENPTlRBQ1QgREVUQUlMU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWRkaXRpb25hbC1kZXRhaWxzLXNlY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtaGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYWRkaXRpb25hbC1kZXRhaWwtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMTQwcHggMWZyIGF1dG87XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgLmFkZGl0aW9uYWwtZGV0YWlsLWFjdGlvbiB7XG4gICAgICAgICAgICBqdXN0aWZ5LXNlbGY6IGVuZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmFkZGl0aW9uYWwtZGV0YWlsLWFjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5hZGRpdGlvbmFsLWRldGFpbHMtYWRkIHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5hZGQtZGV0YWlsLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUREUkVTUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRyZXNzZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYWRkcmVzcy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6Zm9jdXMtd2l0aGluIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuNCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpO1xuICAgIH1cbn1cblxuLmFkZHJlc3MtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5hZGRyZXNzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbn1cblxuLmFkZHJlc3MtY2FyZC10aXRsZSB7XG4gICAgZmxleDogMTtcbn1cblxuLmFkZHJlc3MtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uYWRkcmVzcy1jYXJkLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5hZGRyZXNzLWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uYWRkcmVzcy1mb3JtLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc2cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBREQgSVRFTSBBQ1RJT04gQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGQtaXRlbS1hY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG59XG5cbi5hZGQtaXRlbS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTItNSkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGJvcmRlci1zdHlsZTogZGFzaGVkO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnKyc7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNWVtO1xuICAgICAgICBmb250LXdlaWdodDogMzAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OIEZPUiBORVcgSVRFTVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGtleWZyYW1lcyBjbGllbnQtc2xpZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG4uY29udGFjdC1jYXJkLFxuLmFkZHJlc3MtY2FyZCB7XG4gICAgYW5pbWF0aW9uOiBjbGllbnQtc2xpZGUtaW4gMC4ycyBlYXNlLW91dDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1QVFkgU1RBVEUgU1RZTElOR1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29udGFjdHMtbGlzdDplbXB0eTo6YmVmb3JlLFxuLmFkZHJlc3Nlcy1saXN0OmVtcHR5OjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5lbXB0eS1jb250YWN0cy1oaW50LFxuLmVtcHR5LWFkZHJlc3Nlcy1oaW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBCaWxsaW5nIEZvcm0gU3R5bGVzXG4gKlxuICogTW9kZXJuLCBjbGVhbiBpbnZvaWNlIGNyZWF0aW9uIGZvcm0gd2l0aCAyLWNvbHVtbiBsYXlvdXQsXG4gKiBzdGlja3kgdG90YWxzIHNpZGViYXIsIGFuZCBjb2xsYXBzaWJsZSBzZWN0aW9ucy5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCSUxMSU5HIEZPUk0gUEFHRSBDT05UQUlORVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZm9ybS1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xufVxuXG4uYmlsbGluZy1mb3JtLWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yNCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5iaWxsaW5nLWZvcm0taGVhZGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDA7XG59XG5cbi5iaWxsaW5nLWZvcm0taGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmJpbGxpbmctZm9ybS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uYmlsbGluZy1mb3JtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4uYmlsbGluZy1mb3JtLXN1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwIDA7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJJTExJTkcgREVUQUlMUyBTRUNUSU9OIChDbGllbnQsIEludm9pY2UgSUQsIERhdGVzLCBEaXNjb3VudClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZGV0YWlscy1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpmb2N1cy13aXRoaW4ge1xuICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCk7XG4gICAgfVxufVxuXG4uYmlsbGluZy1kZXRhaWxzLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAvLyBNb2RpZmllciBmb3IgZm9ybXMgd2l0aG91dCBkYXRlIGZpZWxkcyAoZS5nLiwgUXVvdGVzKVxuXG4gICAgJi0tbm8tZGF0ZXMge1xuXG4gICAgICAgIC5iaWxsaW5nLWRldGFpbHMtcmlnaHQge1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJpbGxpbmctZGV0YWlscy1sZWZ0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5iaWxsaW5nLWRldGFpbHMtcmlnaHQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLy8gSW52b2ljZSBJRCB3aXRoIGlubGluZSBlZGl0XG5cbi5iaWxsaW5nLWlkLWRpc3BsYXkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAuYmlsbGluZy1pZC1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWlkLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0yeGwpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG5cbiAgICAgICAgLy8gSWRlbnRpZmllcnMgYXJlIG5vdCBtb25leS4gUHJpbWFyeSBncmVlbiBpcyByZXNlcnZlZCBmb3IgcGFpZCBzdGF0ZXMgYW5kIENUQXMuXG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pZC1lZGl0IHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1pZC1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLy8gRGF0ZSBmaWVsZHMgcm93XG5cbi5pbnZvaWNlLWRhdGVzLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDU3NnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0xJRU5UIFNFTEVDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXNlbGVjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc2VsZWN0ZWQtY2xpZW50LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBiaWxsaW5nLXNsaWRlLWluIDAuMnMgZWFzZS1vdXQ7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnNlbGVjdGVkLWNsaWVudC1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtY2hhbmdlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi5zZWxlY3RlZC1jbGllbnQtY29udGFjdHMge1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jb250YWN0cy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNvbnRhY3RzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNvbnRhY3QtY2hlY2tib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmNvbnRhY3QtbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIC5jb250YWN0LWVtYWlsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNQUlOIENPTlRFTlQgLSAyIENPTFVNTiBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZm9ybS1tYWluIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDMyMHB4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gMTEwMHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDI4MHB4O1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMSU5FIElURU1TIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctaXRlbXMtc2VjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmJpbGxpbmctaXRlbXMtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xufVxuXG4uYmlsbGluZy1pdGVtcy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYmlsbGluZy1pdGVtcy1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi8vIExpbmUgaXRlbXMgbGlzdCAocmVzcG9uc2l2ZSBncmlkKVxuXG4uYmlsbGluZy1pdGVtcy1saXN0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMi42ZnIpIG1pbm1heCgxMzBweCwgMS4xZnIpIDU2cHggbWlubWF4KDE0MHB4LCAwLjlmcikgbWlubWF4KDYwcHgsIDAuNGZyKSAyNHB4O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLy8gV2l0aG91dCB0YXggY29sdW1uIC0gZ2l2ZSBkZXNjcmlwdGlvbiBldmVuIG1vcmUgc3BhY2VcblxuLmJpbGxpbmctaXRlbXMtbGlzdDpub3QoOmhhcyguY29sdW1uLXRheCkpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAzLjhmcikgbWlubWF4KDEwMHB4LCAwLjlmcikgNTZweCBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAzLjhmcikgbWlubWF4KDEwMHB4LCAwLjlmcikgNTZweCBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA5MDBweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFdoZW4gdGhlIFRheCBjb2x1bW4gZXhpc3RzIGJ1dCBubyBsaW5lLXRheCBkcm9wZG93bnMgYXJlIGFkZGVkIG9uIGFueSByb3csXG4vLyBzaHJpbmsgdGhlIFRheCBzbG90IHNvIHRoZSBcIisgQWRkIHRheFwiIGJ1dHRvbiBkb2Vzbid0IGxlYXZlIGEgdmlzaWJsZSBnYXBcbi8vIGJldHdlZW4gVGF4IGFuZCBUb3RhbC4gVGhlIHdpZGVyIHNsb3QgcmV0dXJucyB0aGUgbW9tZW50IGEgdGF4IHJvdyBhcHBlYXJzLlxuXG4uYmlsbGluZy1pdGVtcy1saXN0OmhhcyguY29sdW1uLXRheCk6bm90KDpoYXMoLmxpbmUtdGF4LXJvdykpIHtcblxuICAgIC5iaWxsaW5nLWl0ZW1zLWhlYWRlci1yb3csXG4gICAgLmJpbGxpbmctaXRlbS1yb3cge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAzLjJmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoODBweCwgMC41ZnIpIG1pbm1heCg2MHB4LCAwLjRmcikgMjRweDtcbiAgICB9XG5cbiAgICAuYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAyLjZmcikgbWlubWF4KDEzMHB4LCAxLjFmcikgNTZweCBtaW5tYXgoMTQwcHgsIDAuOWZyKSBtaW5tYXgoNjBweCwgMC40ZnIpIDI0cHg7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgID4gZGl2IHtcbiAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IGdyaWQgYmxvd291dFxuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgfVxuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAuY29sdW1uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50IGdyaWQgYmxvd291dFxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG4gICAgICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXByaWNlLFxuICAgIC5jb2x1bW4tcXR5LFxuICAgIC5jb2x1bW4tdGF4IHtcblxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgIC8vIFNsaW0gZG93biB0aGUgbGVhZGluZyBjdXJyZW5jeS1zeW1ib2wgYWRkb24gKHRoZSBcIiRcIi9cIuKCrFwiIHByZWZpeClcbiAgICAgICAgLy8gc28gaXQgc3RvcHMgZWF0aW5nIH4zMCUgb2YgdGhlIGNvbHVtbidzIHVzYWJsZSBpbnB1dCB3aWR0aC5cblxuICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNHJlbTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0IHtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb2x1bW4tcXR5IHtcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLXRvdGFsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAgICAgLml0ZW0tdG90YWwtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIH1cblxuICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIE1vYmlsZSByZXNwb25zaXZlIGxheW91dFxuICAgIEBtZWRpYSAod2lkdGggPD0gOTAwcHgpIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWFyZWFzOlxuICAgICAgICAgICAgJ2Rlc2MgZGVzYydcbiAgICAgICAgICAgICdwcmljZSBxdHknXG4gICAgICAgICAgICAndGF4IHRheCdcbiAgICAgICAgICAgICdhY3Rpb25zIHRvdGFsJztcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IGRlc2M7XG5cbiAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi1wcmljZSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHByaWNlO1xuXG4gICAgICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLXF0eSB7XG4gICAgICAgICAgICBncmlkLWFyZWE6IHF0eTtcblxuICAgICAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmNvbHVtbi10YXgge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiB0YXg7XG5cbiAgICAgICAgICAgIHNlbGVjdCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29sdW1uLWFjdGlvbnMge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiBhY3Rpb25zO1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb2x1bW4tdG90YWwge1xuICAgICAgICAgICAgZ3JpZC1hcmVhOiB0b3RhbDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAgICAgICAgIC5tb2JpbGUtbGFiZWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuaXRlbS10b3RhbC12YWx1ZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBSZW1vdmUgaXRlbSBidXR0b25cblxuLnJlbW92ZS1pdGVtLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAycHggNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAycHg7XG4gICAgfVxufVxuXG4vLyBBZGQgaXRlbSBidXR0b25cblxuLmFkZC1pdGVtLWFjdGlvbiB7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4uYWRkLWl0ZW0tYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQRVItTElORSBNVUxUSS1UQVggKFN0YWNrZWQgcm93cyBpbiB0aGUgVGF4IGNvbHVtbilcbi8vIEVhY2ggLmxpbmUtdGF4LXJvdyB1c2VzIGEgc2luZ2xlLXJvdyBmbGV4IGxheW91dDpcbi8vICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSQXG4vLyAgIOKUgiB0YXggZHJvcGRvd24gICAgICAgICAgICAgICAgICAgIOKUgiAgw5cgIOKUglxuLy8gICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDilIDilIDilIDilIDilJhcbi8vIENvbXBvdW5kIGlzIGEgcHJvcGVydHkgb2YgdGhlIHVuZGVybHlpbmcgVGF4IHJhdGUgKHNuYXBzaG90dGVkIGludG8gTGluZVRheFxuLy8gdmlhIGBzbmFwc2hvdEZyb21gKSDigJQgdGhlcmUncyBubyBwZXItbGluZSBvdmVycmlkZSwgc28gdGhlIGZvcm0gZG9lc24ndFxuLy8gZXhwb3NlIGl0LlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubGluZS10YXgtY29sbGVjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmxpbmUtdGF4LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDRweDtcbn1cblxuLmxpbmUtdGF4LXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG59XG5cbi5saW5lLXRheC1maWVsZC10YXgge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIHNlbGVjdCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICBwYWRkaW5nOiA0cHggMjJweCA0cHggOHB4O1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgNnB4IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAxMnB4O1xuICAgIH1cbn1cblxuLmxpbmUtdGF4LWFjdGlvbnMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmxpbmUtdGF4LXJlbW92ZS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMnB4IDRweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksIGJhY2tncm91bmQgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICB3aWR0aDogMTJweDtcbiAgICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgIH1cblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLWRhbmdlci1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5saW5lLXRheC1hZGQtYnRuIHtcbiAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5WT0lDRS1MRVZFTCBUQVhFUyAoV2l0aGhvbGRpbmcgJiBhZGp1c3RtZW50cylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG59XG5cbi5iaWxsaW5nLWludm9pY2UtdGF4ZXMtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1tZCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheGVzLXN1YnRpdGxlIHtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbn1cblxuLmJpbGxpbmctaW52b2ljZS10YXhlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pbnZvaWNlLXRheC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG5cbiAgICAvLyBUaGUgZGlyZWN0aW9uIHNlbGVjdCBjYXJyaWVzIGJvdGggYSBjYXJldCBhbmQgYSBjbGVhciBidXR0b24sIHNvIGEgYmFyZSBgMWZyYCBjb2xsYXBzZXNcbiAgICAvLyBmYXIgZW5vdWdoIGZvciB0aGUgbG9uZ2VzdCBvcHRpb24gKFwiSW5mb3JtYXRpb25hbFwiKSB0byBydW4gdW5kZXJuZWF0aCB0aGVtLlxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDJmcikgbWlubWF4KDEwcmVtLCAxZnIpIG1pbm1heCgwLCAzZnIpIGF1dG87XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLmludm9pY2UtdGF4LWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICAubW9iaWxlLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5pbnZvaWNlLXRheC1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UQUxTIFNJREVCQVIgKFN0aWNreSBvbiBEZXNrdG9wKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYmlsbGluZy10b3RhbHMtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gOTkycHgpIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbi5iaWxsaW5nLXRvdGFscy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmJpbGxpbmctdG90YWxzLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLmJpbGxpbmctdG90YWxzLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMikgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLmJpbGxpbmctdG90YWxzLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5iaWxsaW5nLXRvdGFscy1ib2R5IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG59XG5cbi50b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuXG4gICAgJjpub3QoOmxhc3QtY2hpbGQpIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cbn1cblxuLnRvdGFscy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi50b3RhbHMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi50b3RhbHMtcm93LWRpc2NvdW50IHtcbiAgICAvLyBBIGRpc2NvdW50IGlzIGEgZGVkdWN0aW9uLCBub3QgYW4gZXJyb3IuIFF1aWV0IGl0IGRvd24gaW5zdGVhZCBvZiBmbGFnZ2luZyBpdCByZWQuXG5cbiAgICAudG90YWxzLXZhbHVlIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB9XG59XG5cbi50b3RhbHMtcm93LXRvdGFsIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1kYXJrKTtcblxuICAgIC50b3RhbHMtbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cblxuICAgIC8vIFRoZSBncmFuZCB0b3RhbCBpcyBpbmZvcm1hdGlvbmFsLCBub3QgYSBcIlBhaWRcIiBzdGF0ZS4gR3JlZW4gb25seSB3aGVuIHRoZVxuICAgIC8vIGludm9pY2UgaXMgYWN0dWFsbHkgcGFpZDsgb24gdGhlIGVkaXQgc2NyZWVuIHRoaXMgc3RheXMgbmV1dHJhbCB0ZXh0LlxuXG4gICAgLnRvdGFscy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbn1cblxuLy8gRGlzY291bnQgZmllbGQgaW4gc2lkZWJhclxuXG4uZGlzY291bnQtZmllbGQge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBURVJNUyAmIE5PVEVTIENPTExBUFNJQkxFIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctdGVybXMtc2VjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICZbb3Blbl0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgLnRlcm1zLXN1bW1hcnkge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRlcm1zLXN1bW1hcnktaWNvbiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi50ZXJtcy1zdW1tYXJ5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxufVxuXG4udGVybXMtc3VtbWFyeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xufVxuXG4udGVybXMtc3VtbWFyeS10ZXh0IHtcbiAgICBmbGV4OiAxO1xufVxuXG4udGVybXMtc3VtbWFyeS10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG59XG5cblxuLnRlcm1zLWNvbnRlbnQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLnRlcm1zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gQUNUSU9OUyAoU3RpY2t5IEZvb3Rlcilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJpbGxpbmctZm9ybS1hY3Rpb25zIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIGJveC1zaGFkb3c6IDAgLTRweCAxMnB4IHJnYigwIDAgMCAvIDUlKTtcbn1cblxuLmJpbGxpbmctZm9ybS1hY3Rpb25zLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4vLyBTcGxpdCBidXR0b24gZ3JvdXAgZm9yIHNhdmUgYWN0aW9uc1xuXG4uc2F2ZS1idXR0b24tZ3JvdXAge1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAuYnRuLXNhdmUtcHJpbWFyeSB7XG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2IoMjU1IDI1NSAyNTUgLyAyMCUpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZHJvcGRvd24tbWVudSB7XG4gICAgICAgIG1pbi13aWR0aDogMTgwcHg7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbGcpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24taXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PQklMRSBMSU5FIElURU0gQ0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmJpbGxpbmctaXRlbXMtdGFibGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWl0ZW1zLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoID49IDc2OXB4KSB7XG5cbiAgICAuYmlsbGluZy1pdGVtcy1jYXJkcyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYW5pbWF0aW9uOiBiaWxsaW5nLXNsaWRlLWluIDAuMnMgZWFzZS1vdXQ7XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjQpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA4KTtcbiAgICB9XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYmlsbGluZy1pdGVtLWNhcmQtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5iaWxsaW5nLWl0ZW0tY2FyZC1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmJpbGxpbmctaXRlbS1jYXJkLXRvdGFsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAuaXRlbS10b3RhbC1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIH1cblxuICAgIC5pdGVtLXRvdGFsLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBTklNQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBrZXlmcmFtZXMgYmlsbGluZy1zbGlkZS1pbiB7XG5cbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgQURKVVNUTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgLmJpbGxpbmctZm9ybS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yMCk7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWZvcm0taWNvbiB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cblxuICAgIC5iaWxsaW5nLWRldGFpbHMtc2VjdGlvbixcbiAgICAuYmlsbGluZy1pdGVtcy1zZWN0aW9uLFxuICAgIC5iaWxsaW5nLXRvdGFscy1jYXJkIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgfVxuXG4gICAgLmJpbGxpbmctZm9ybS1hY3Rpb25zLWlubmVyIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJpbGxpbmctaWQtZGlzcGxheSB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgICAgICAuYmlsbGluZy1pZC1sYWJlbCxcbiAgICAgICAgLmJpbGxpbmctaWQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVDVVJSSU5HIElOVk9JQ0UgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlY3VycmluZyBTY2hlZHVsZSBTZWN0aW9uIChvbiBjcmVhdGUvZWRpdCBwYWdlKVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ibG9jazogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAuc2VjdGlvbi1oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgcGFkZGluZy1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLWVuZDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgICAgIC5zZWN0aW9uLWhlYWRlci1pY29uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VjdGlvbi1oZWFkZXItY29udGVudCB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgICAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEpIDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5zZWN0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAucmVjdXJyaW5nLXNjaGVkdWxlLWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi8vIFJlY3VycmluZyBPcHRpb25zIFdyYXBwZXIgLSBTdHlsZSBmb3JtIGZpZWxkcyByZW5kZXJlZCBieSBEeW5hbWljRm9ybUJ1aWxkZXJcblxuLnJlY3VycmluZy1vcHRpb25zLXdyYXBwZXIge1xuICAgIC8vIFR5cGUgZmllbGQgKHJhZGlvIGJ1dHRvbnMpIC0gTWFrZSB0aGVtIHZpc3VhbCBjYXJkc1xuXG4gICAgW2lkJD0nX3R5cGUnXSwgW2lkJD0nX2VuZFR5cGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIG1hcmdpbi1ibG9jay1zdGFydDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIEBtZWRpYSAod2lkdGggPD0gNzY4cHgpIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbC5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gLmZvcm0tY2hlY2sge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0ncmFkaW8nXSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmOmhvdmVyIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkICsgbGFiZWwge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIFtpZCQ9J19lbmRUeXBlJ10ge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcikgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvLyBEYXlzIGZpZWxkIGZvciBXZWVrbHkvWWVhcmx5IChjaGVja2JveGVzIGZvciBkYXlzL21vbnRocykgLSBNYWtlIHRoZW0gYnV0dG9uIHRvZ2dsZXNcblxuICAgIFtpZCQ9J19kYXlzJ10ge1xuICAgICAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoODBweCwgMWZyKSk7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBtYXJnaW4tYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICAgICBAbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG4gICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDcwcHgsIDFmcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgPiAuZm9ybS1jaGVjayB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICBpbnB1dFt0eXBlPSdjaGVja2JveCddIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcblxuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0ZXh0IGNvbnRlbnQgaXMgdmlzaWJsZVxuXG4gICAgICAgICAgICAgICAgJjo6YmVmb3JlLFxuICAgICAgICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpob3ZlciBsYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnJlY3VycmluZy1mcmVxdWVuY3ktZGlzcGxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA1KSAxMDAlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG5cbiAgICAucmVjdXJyaW5nLWZyZXF1ZW5jeS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAzNnB4O1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5yZWN1cnJpbmctZnJlcXVlbmN5LXRleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBWYXJpYWJsZSBIZWxwIC0gQ29sbGFwc2libGUgSW5mbyBCb3hcblxuLnJlY3VycmluZy12YXJpYWJsZXMtaGVscCB7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXRibHItaW5mby1ib3JkZXItc3VidGxlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWluZm8tYmctc3VidGxlKTtcblxuICAgIC52YXJpYWJsZXMtc3VtbWFyeSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1pbmZvLXRleHQtZW1waGFzaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnZhcmlhYmxlcy1jb250ZW50IHtcbiAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmctYmxvY2stc3RhcnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgYm9yZGVyLWJsb2NrLXN0YXJ0OiAxcHggc29saWQgdmFyKC0tdGJsci1pbmZvLWJvcmRlci1zdWJ0bGUpO1xuXG4gICAgICAgIC52YXJpYWJsZXMtZGVzY3JpcHRpb24ge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC52YXJpYWJsZXMtbGlzdCB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuXG4gICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcblxuICAgICAgICAgICAgICAgIGNvZGUge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnZhcmlhYmxlLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAudmFyaWFibGUtZXhhbXBsZSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICBib3JkZXItaW5saW5lLXN0YXJ0OiAzcHggc29saWQgdmFyKC0tc3dwLWluZm8pO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmV4YW1wbGUtdGV4dCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJltvcGVuXSAudmFyaWFibGVzLXN1bW1hcnkge1xuICAgICAgICBtYXJnaW4tYmxvY2stZW5kOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVDVVJSSU5HIElOVk9JQ0UgVklFVyBQQUdFIFNJREVCQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gSGlnaGxpZ2h0ZWQgY2FyZCAoZS5nLiwgUmVjdXJyaW5nIFNjaGVkdWxlIGNhcmQpXG5cbi5pbnZvaWNlLXNpZGViYXItY2FyZC1oaWdobGlnaHQge1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAzKSwgdHJhbnNwYXJlbnQpO1xufVxuXG4vLyBSZWN1cnJpbmcgU2NoZWR1bGUgR3JpZCAobGFiZWwgfCB2YWx1ZSBwYWlycylcblxuLnJlY3VycmluZy1zY2hlZHVsZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIDA7XG5cbiAgICAmOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgfVxufVxuXG4ucmVjdXJyaW5nLXNjaGVkdWxlLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5yZWN1cnJpbmctc2NoZWR1bGUtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLy8gVXBjb21pbmcgT2NjdXJyZW5jZXMgTGlzdFxuXG4ub2NjdXJyZW5jZXMtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcbiAgICB9XG59XG5cbi5vY2N1cnJlbmNlLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzJweDtcbiAgICBoZWlnaHQ6IDMycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm9jY3VycmVuY2UtZGF0ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBHZW5lcmF0ZWQgSW52b2ljZXMgTGlzdFxuXG4uZ2VuZXJhdGVkLWludm9pY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgIH1cbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgLmdlbmVyYXRlZC1pbnZvaWNlLW51bWJlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtbnVtYmVyIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLXRvdGFsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4udmlldy1hbGwtbGluayB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gUGF5bWVudCBQYWdlIFN0eWxlc1xuICpcbiAqIE1vZGVybiwgY2xlYW4gcGF5bWVudCBwYWdlIHdpdGggdHdvLWNvbHVtbiBsYXlvdXQsXG4gKiBjYXJkLWJhc2VkIHBheW1lbnQgbWV0aG9kIHNlbGVjdGlvbiwgYW5kIGludm9pY2Ugc3VtbWFyeS5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVlNRU5UIFBBR0UgQ09OVEFJTkVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LXBhZ2Uge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbi5wYXltZW50LWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBR0UgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KSAwO1xufVxuXG4ucGF5bWVudC1oZWFkZXItY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucGF5bWVudC1oZWFkZXItaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSkgMTAwJSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtaGVhZGVyLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtO1xufVxuXG4ucGF5bWVudC1oZWFkZXItc3VidGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS0xKSAwIDAgMDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFdPLUNPTFVNTiBMQVlPVVRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbGF5b3V0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5WT0lDRSBTVU1NQVJZIENBUkQgKExlZnQgQ29sdW1uKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1pbnZvaWNlLXN1bW1hcnkge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG9yZGVyOiAyO1xuICAgIH1cbn1cblxuLmludm9pY2Utc3VtbWFyeS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmludm9pY2Utc3VtbWFyeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtaW5mby1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uaW52b2ljZS1zdW1tYXJ5LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5pbnZvaWNlLXN1bW1hcnktYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4vLyBTdW1tYXJ5IFNlY3Rpb25zXG5cbi5zdW1tYXJ5LXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLXRvcDogMDtcbiAgICB9XG5cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiBub25lO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LXNlY3Rpb24tbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnN1bW1hcnktY2xpZW50LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAuY2xpZW50LW5hbWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEtNSkgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG59XG5cbi8vIEludm9pY2UgRGV0YWlscyBHcmlkXG5cbi5pbnZvaWNlLWRldGFpbHMtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZGV0YWlsLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmRldGFpbC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmRldGFpbC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4vLyBMaW5lIEl0ZW1zIFByZXZpZXdcblxuLmxpbmUtaXRlbXMtcHJldmlldyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ubGluZS1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcbn1cblxuLmxpbmUtaXRlbS1kZXNjIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWF4LXdpZHRoOiA2MCU7XG59XG5cbi5saW5lLWl0ZW0tYW1vdW50IHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG4vLyBTdW1tYXJ5IFRvdGFsc1xuXG4uc3VtbWFyeS10b3RhbHMge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xufVxuXG4uc3VtbWFyeS10b3RhbHMgLnRvdGFscy1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gQSBkaXNjb3VudCBpcyBhIGRlZHVjdGlvbiwgbm90IGFuIGVycm9yLiBTdGF5IG5ldXRyYWwuXG5cbi5zdW1tYXJ5LXRvdGFscyAudG90YWxzLXJvdy1kaXNjb3VudCAudG90YWxzLXZhbHVlIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xufVxuXG4vLyBQYXltZW50cyBhbHJlYWR5IHJlY2VpdmVkIGFyZSBwb3NpdGl2ZSBtb25leSBpbi5cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LXBheW1lbnQgLnRvdGFscy12YWx1ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLnN1bW1hcnktdG90YWxzIC50b3RhbHMtcm93LWJhbGFuY2Uge1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuXG4gICAgLnRvdGFscy1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgYW1vdW50LXRvLXBheSBpcyBpbmZvcm1hdGlvbmFsOyBncmVlbiB3b3VsZCBpbXBseSBcIlBhaWRcIiwgd2hpY2ggaXRcbiAgICAvLyBpc24ndCB5ZXQuIFRoZSBcIkJhbGFuY2UgcmVtYWluaW5nXCIgY2FsbG91dCBuZXh0IHRvIHRoZSBhbW91bnQgZmllbGRcbiAgICAvLyBhbHJlYWR5IGNhcnJpZXMgdGhlIGF0dGVudGlvbi5cblxuICAgIC50b3RhbHMtdmFsdWUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBGT1JNIENBUkQgKFJpZ2h0IENvbHVtbilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtZm9ybS1zZWN0aW9uIHtcbiAgICBAbWVkaWEgKHdpZHRoIDw9IDk5MnB4KSB7XG4gICAgICAgIG9yZGVyOiAxO1xuICAgIH1cbn1cblxuLnBheW1lbnQtZm9ybS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnBheW1lbnQtZm9ybS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi5wYXltZW50LWZvcm0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4ucGF5bWVudC1mb3JtLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LWZvcm0tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xufVxuXG4ucGF5bWVudC1mb3JtLWZvb3RlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgRk9STSBCT0RZIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1mb3JtLWJvZHkge1xuICAgIC8vIFN0eWxlIGZvcm0gbGFiZWxzXG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgJi5yZXF1aXJlZDo6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJyAqJztcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvcm0gaGVscCB0ZXh0XG5cbiAgICAuZm9ybS10ZXh0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAvLyBGaXggZm9yIG1vbmV5IHR5cGUgaW5wdXQgZ3JvdXBzXG5cbiAgICAuaW5wdXQtZ3JvdXAge1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAvLyBUZXh0YXJlYSBzdHlsaW5nXG5cbiAgICB0ZXh0YXJlYS5mb3JtLWNvbnRyb2wge1xuICAgICAgICBtaW4taGVpZ2h0OiA4MHB4O1xuICAgICAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBwcm9wZXIgc3BhY2luZyBiZXR3ZWVuIGZvcm0gZ3JvdXBzXG5cbiAgICAubWItNDpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBNRVRIT0RTIEdSSURcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBheW1lbnQtbWV0aG9kcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgICY6aGFzKC5wYXltZW50LW1ldGhvZC1pbnB1dDpjaGVja2VkKSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG5cbiAgICAgICAgLnBheW1lbnQtbWV0aG9kLWNoZWNrIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnBheW1lbnQtbWV0aG9kLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmOmhhcygucGF5bWVudC1tZXRob2QtaW5wdXQ6Zm9jdXMtdmlzaWJsZSkge1xuICAgICAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIH1cbn1cblxuLnBheW1lbnQtbWV0aG9kLXByZWZlcnJlZCB7XG4gICAgb3JkZXI6IC0xO1xufVxuXG4ucGF5bWVudC1tZXRob2QtaW5wdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICBmbGV4OiAxO1xufVxuXG4ucGF5bWVudC1tZXRob2QtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0xMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLW5hbWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG59XG5cbi5wYXltZW50LW1ldGhvZC1iYWRnZS1vbmxpbmUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xufVxuXG4ucGF5bWVudC1tZXRob2QtYmFkZ2UtY3JlZGl0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtbWV0aG9kLWNoZWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU1PVU5UIEZJRUxEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hbW91bnQtZmllbGQtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mb3JtLWxhYmVsLFxuICAgIC5mb3JtLXNlY3Rpb24tbGFiZWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLmFtb3VudC1iYWxhbmNlLWhpbnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMSkgdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuXG4gICAgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENBUFRVUkUgT05MSU5FIEZJRUxEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jYXB0dXJlLW9ubGluZS1maWVsZCB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcblxuICAgIC5mb3JtLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICB3aWR0aDogMi41cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAuZm9ybS1oZWxwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctbGVmdDogY2FsYygyLjVyZW0gKyB2YXIoLS1zd3Atc3BhY2UtMikpO1xuICAgIH1cbn1cblxuLy8gSGlkZSBjYXB0dXJlIG9ubGluZSBzZWN0aW9uIHdoZW4gb2ZmbGluZSBtZXRob2Qgc2VsZWN0ZWRcblxuW2RhdGEtcGF5bWVudC1tZXRob2Qtc2VsZWN0LXRhcmdldD1cImNhcHR1cmVPbmxpbmVcIl0uZC1ub25lIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUNLQUJMRSBMSU5LUyAoQ2xpZW50ICYgSW52b2ljZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1uYW1lLWxpbmssXG4uaW52b2ljZS1pZC1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbGllbnQtbmFtZS1saW5rIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbn1cblxuLmludm9pY2UtaWQtbGluayB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8sIG1vbm9zcGFjZSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBBWU1FTlQgSElTVE9SWSBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWhpc3RvcnktY2FyZCB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ucGF5bWVudC1oaXN0b3J5LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbn1cblxuLnBheW1lbnQtaGlzdG9yeS1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0LCAjZmVmM2M3KSAwJSwgcmdiKDI0NSAxNTggMTEgLyAyMCUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atd2FybmluZywgI2Y1OWUwYik7XG59XG5cbi5wYXltZW50LWhpc3RvcnktdGl0bGUge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LWhpc3RvcnktY291bnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG59XG5cbi5wYXltZW50LWhpc3RvcnktYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS01KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZTUVOVCBDQVJEUyAoTWF0Y2hpbmcgUFIgIzIyMTUgc3R5bGUpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50cy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5wYXltZW50LWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLnBheW1lbnQtY2FyZC1jYXB0dXJlZCB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyLCByZ2IoMTYgMTg1IDEyOSAvIDUlKSk7XG59XG5cbi5wYXltZW50LWNhcmQtZmFpbGVkIHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodGVyLCByZ2IoMjM5IDY4IDY4IC8gNSUpKTtcbn1cblxuLnBheW1lbnQtY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4ucGF5bWVudC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLnBheW1lbnQtY2FyZC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5wYXltZW50LWRldGFpbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG5cbiAgICBzdmcge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cbn1cblxuLnBheW1lbnQtbWVzc2FnZSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUEFZIEJVVFRPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYnRuLXBheSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctcHJpbWFyeSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1wcmltYXJ5LWxnKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBBREpVU1RNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2OHB4KSB7XG5cbiAgICAucGF5bWVudC1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xNik7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgMDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1oZWFkZXItaWNvbiB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtaGVhZGVyLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLnBheW1lbnQtbWV0aG9kcy1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLmludm9pY2UtZGV0YWlscy1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLnBheW1lbnQtZm9ybS1mb290ZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5hbW91bnQtZmllbGQtd3JhcHBlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFBheW1lbnRzIExpc3QgUGFnZSBTdHlsZXNcbiAqXG4gKiBNaW5pbWFsIHN0eWxpbmcgZm9yIHRoZSBwYXltZW50cyBsaXN0IHBhZ2Ugd2l0aCBLUEkgY2FyZHMuXG4gKiBNb3N0IHN0eWxlcyBjb21lIGZyb20gVGFibGVyL0Jvb3RzdHJhcCAtIHRoaXMgZmlsZSBvbmx5IGFkZHMgc3BlY2lmaWMgY3VzdG9taXphdGlvbnMuXG4gKi9cblxuLy8gS1BJIFN0YXRpc3RpY3MgQ2FyZHMgLSBzdWJ0bGUgaG92ZXIgZWZmZWN0XG5cbi5yb3ctZGVjayAuY2FyZC1zbSB7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYigwIDAgMCAvIDglKTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSAtIFVzZXJzIFBhZ2UgU3R5bGVzXG4gKlxuICogTW9kZXJuIHVzZXJzIGxpc3QgcGFnZSB3aXRoIEtQSSBjYXJkcyBhbmQgdGFiYmVkIGludGVyZmFjZS5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVU0VSUyBQQUdFIENPTlRBSU5FUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udXNlcnMtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gS1BJIFNUQVRTIENBUkRTIChUb3Agb2YgUGFnZSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVXNlcyBzdGFuZGFyZCBCb290c3RyYXAgY2FyZC1zbSBzdHlsaW5nIGZyb20gcmVjZW50IHJlZGVzaWduc1xuLy8gTm8gY3VzdG9tIHN0eWxlcyBuZWVkZWQgLSBCb290c3RyYXAvVGFibGVyIGhhbmRsZXMgdGhpc1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUJTIElOIENBUkQgSEVBREVSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFVzZXMgc3RhbmRhcmQgbmF2LXRhYnMgY2FyZC1oZWFkZXItdGFicyBwYXR0ZXJuXG4vLyBDdXN0b20gdGFiIHN0eWxlcyBhcmUgaW4gX3RhYnMuc2NzcyBjb21wb25lbnRcbi8vIE5vIGFkZGl0aW9uYWwgY3VzdG9tIHN0eWxlcyBuZWVkZWRcblxuLy8gRW1wdHkgc3RhdGUgdXNlcyBUYWJsZXIncyBidWlsdC1pbiAuZW1wdHkgY29tcG9uZW50IGNsYXNzZXNcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gUHJvZmlsZSBQYWdlIFN0eWxlc1xuICpcbiAqIFN0eWxlcyBmb3IgdGhlIHVzZXIgcHJvZmlsZSB2aWV3IGFuZCBzaWRlYmFyIG5hdmlnYXRpb24uXG4gKiBGb3JtIHBhZ2VzIChlZGl0LCBjaGFuZ2UtcGFzc3dvcmQpIHVzZSBzaGFyZWQgY2xhc3NlcyBmcm9tIF9mb3JtLXBhZ2Uuc2Nzcy5cbiAqIEluY2x1ZGVzOiBzaWRlYmFyIG5hdmlnYXRpb24sIHByb2ZpbGUgdmlldywgc2VjdXJpdHkgc3RhdHVzLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNJREVCQVIgTkFWSUdBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1zaWRlYmFyIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA5OTEuOThweCkge1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4ucHJvZmlsZS1uYXYtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5wcm9maWxlLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ucHJvZmlsZS1uYXYtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtbmF2LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBjb2xvcjogY3VycmVudGNvbG9yO1xufVxuXG4ucHJvZmlsZS1uYXYtdGV4dCB7XG4gICAgZmxleDogMTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJPRklMRSBWSUVXIC0gSEVBREVSIFdJVEggQVZBVEFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wcm9maWxlLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG59XG5cbi5wcm9maWxlLWF2YXRhciB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikgMTAwJSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xufVxuXG4ucHJvZmlsZS1oZWFkZXItaW5mbyB7XG4gICAgZmxleDogMTtcbn1cblxuLnByb2ZpbGUtbmFtZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07XG59XG5cbi5wcm9maWxlLWVtYWlsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiB2YXIoLS1zd3Atc3BhY2UtMSkgMCAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBJTkZPUk1BVElPTiBTRUNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucHJvZmlsZS1zZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgIH1cbn1cblxuLnByb2ZpbGUtc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xufVxuXG4ucHJvZmlsZS1zZWN0aW9uLXRpdGxlIHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5wcm9maWxlLXNlY3Rpb24tYm9keSB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xufVxuXG4ucHJvZmlsZS1zZWN0aW9uLWZvb3RlciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJPRklMRSBWSUVXIC0gREVUQUlMIEdSSURcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnByb2ZpbGUtZGV0YWlsLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS01KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cbn1cblxuLmRldGFpbC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kZXRhaWwtaXRlbS13aWRlIHtcbiAgICBncmlkLWNvbHVtbjogMSAvIC0xO1xufVxuXG4uZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDI1ZW07XG59XG5cbi5kZXRhaWwtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUk9GSUxFIFZJRVcgLSBTRUNVUklUWSBTVEFUVVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNlY3VyaXR5LXN0YXR1cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uc2VjdXJpdHktaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXItZGFyayk7XG4gICAgfVxufVxuXG4uc2VjdXJpdHktaXRlbS1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlY3VyaXR5LWl0ZW0taWNvbi1zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0taWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC13YXJuaW5nLXJnYiksIDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tY29udGVudCB7XG4gICAgZmxleDogMTtcbn1cblxuLnNlY3VyaXR5LWl0ZW0tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0wLTUpO1xufVxuXG4uc2VjdXJpdHktaXRlbS1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5zZWN1cml0eS1pdGVtLWFjdGlvbiB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR09PR0xFIFNJR04tSU4gQlVUVE9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nb29nbGUtc2lnbmluLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQQVNTV09SRCBSRVFVSVJFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnBhc3N3b3JkLXJlcXVpcmVtZW50cyB7XG4gICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjA1KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLnBhc3N3b3JkLXJlcXVpcmVtZW50cy1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAuc2VjdGlvbi1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtaW5mby1yZ2IpLCAwLjE1KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvKTtcbiAgICB9XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuLnBhc3N3b3JkLXJlcXVpcmVtZW50cy1saXN0IHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgbGkge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKSAwIHZhcigtLXN3cC1zcGFjZS0xKSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAmOjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJ+Kckyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBUYWJsZXQgYWRqdXN0bWVudHNcbkBtZWRpYSAod2lkdGggPj0gNzY4cHgpIGFuZCAod2lkdGggPD0gOTkxLjk4cHgpIHtcblxuICAgIC5wcm9maWxlLXNpZGViYXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgLy8gUHJvZmlsZSBzZWN0aW9uIGZvb3RlciBidXR0b25zXG5cbiAgICAucHJvZmlsZS1zZWN0aW9uLWZvb3RlciB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5wcm9maWxlLXNlY3Rpb24tZm9vdGVyLFxuICAgIC5wcm9maWxlLXNpZGViYXIge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBUd28tRmFjdG9yIEF1dGhlbnRpY2F0aW9uIFN0eWxlc1xuICpcbiAqIE1vZGVybiAyRkEgY29uZmlndXJhdGlvbiBhbmQgbG9naW4gcGFnZXMgd2l0aCBlbGVnYW50IGRlc2lnbi5cbiAqIE1hdGNoZXMgdGhlIHByb2ZpbGUgcGFnZSBwYXR0ZXJucyBhbmQgVGFibGVyIGRlc2lnbiBzeXN0ZW0uXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHVVJBVElPTiBQQUdFIC0gMkZBIFNFVFRJTkdTIFNFQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi50d28tZmFjdG9yLXNldHRpbmdzIHtcblxuICAgIC5mb3JtLXBhZ2Utc2VjdGlvbnMge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG59XG5cbi8vIFNlY3Rpb24gQ29udGVudCBMYXlvdXRcblxuLnR3by1mYWN0b3Itc2VjdGlvbi1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi50d28tZmFjdG9yLXNlY3Rpb24taW5mbyB7XG4gICAgZmxleDogMTtcbn1cblxuLnR3by1mYWN0b3Itc2VjdGlvbi1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICBAbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgICAgIC5idG4ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVE9UUCBTRVRVUCBNT0RBTFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udG90cC1zZXR1cC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xufVxuXG4uc2V0dXAtc3RlcHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG59XG5cbi5zZXR1cC1zdGVwcyAuc3RlcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICYuYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAuc3RlcC1udW1iZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgYmFja2dyb3VuZDogY3VycmVudGNvbG9yO1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1ib2xkKTtcbiAgICAgICAgb3BhY2l0eTogMC44O1xuICAgIH1cblxuICAgICYuYWN0aXZlIC5zdGVwLW51bWJlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4ucXItY29kZS1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTUpO1xuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4ucXItY29kZS1pbWFnZSB7XG4gICAgbWF4LXdpZHRoOiAzMDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5tYW51YWwtZW50cnktZGV0YWlscyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgc3VtbWFyeSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWFudWFsLWVudHJ5LWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIH1cblxuICAgIC5tYW51YWwtZW50cnktY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gVmVyaWZpY2F0aW9uIEZvcm1cblxuLnZlcmlmaWNhdGlvbi1mb3JtLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIDA7XG59XG5cbi52ZXJpZmljYXRpb24tY29kZS1pbnB1dCB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVlbSAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAhaW1wb3J0YW50O1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4zZW07XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG5cbiAgICAmOmZvY3VzIHtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCQUNLVVAgQ09ERVMgTU9EQUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJhY2t1cC1jb2Rlcy1tb2RhbC1jb250ZW50IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgMDtcbn1cblxuLmJhY2t1cC1jb2Rlcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIEBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLmJhY2t1cC1jb2RlLWl0ZW0ge1xuXG4gICAgY29kZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLXN3cC1mb250LW1vbm8pO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExPR0lOIFBBR0VTIC0gMkZBIFZFUklGSUNBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4udHdvLWZhY3Rvci1sb2dpbi1wYWdlIHtcbiAgICBtaW4taGVpZ2h0OiAxMDB2aDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnR3by1mYWN0b3ItbG9naW4tY2FyZCB7XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2IoMCAwIDAgLyA4JSk7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmNhcmQtc3RhdHVzLXRvcCB7XG4gICAgICAgIGhlaWdodDogNHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gQXZhdGFyIEljb25cblxuLnR3by1mYWN0b3ItYXZhdGFyIHtcbiAgICB3aWR0aDogNzJweDtcbiAgICBoZWlnaHQ6IDcycHg7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuXG4gICAgJi50d28tZmFjdG9yLWF2YXRhci1zdWNjZXNzIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMSkgMTAwJSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgIH1cbn1cblxuLy8gTG9naW4gSGVhZGluZ1xuXG4udHdvLWZhY3Rvci1sb2dpbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4udHdvLWZhY3Rvci1sb2dpbi1kZXNjcmlwdGlvbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vIFZlcmlmaWNhdGlvbiBDb2RlIElucHV0IChmb3IgbG9naW4gcGFnZXMpXG5cbi50d28tZmFjdG9yLWNvZGUtaW5wdXQge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC41ZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNlbTtcbiAgICAgICAgb3BhY2l0eTogMC40O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNWVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA1NzUuOThweCkge1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8vIEZvcm0gSGludFxuXG4udHdvLWZhY3Rvci1mb3JtLWhpbnQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRydXN0IERldmljZSBPcHRpb25cblxuLnRydXN0LWRldmljZS1vcHRpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBtYXJnaW46IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuXG4gICAgLmZvcm0tY2hlY2sge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2staW5wdXQge1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjE1ZW07XG4gICAgfVxuXG4gICAgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLy8gQWx0ZXJuYXRpdmUgTWV0aG9kcyBTZWN0aW9uXG5cbi5hbHRlcm5hdGl2ZS1tZXRob2RzIHtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLmFsdGVybmF0aXZlLW1ldGhvZHMtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5hbHRlcm5hdGl2ZS1tZXRob2RzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbn1cblxuLy8gU2VjdXJpdHkgTm90aWNlXG5cbi50d28tZmFjdG9yLXNlY3VyaXR5LW5vdGljZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLy8gRW1haWwgUmVzZW5kIFNlY3Rpb25cblxuLmVtYWlsLXJlc2VuZC1zZWN0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1pbmZvLXJnYiksIDAuMDUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcblxuICAgIC5yZXNlbmQtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5yZXNlbmQtbGluayB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5leHBpcnktd2FybmluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFU1BPTlNJVkUgREVTSUdOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgIC50b3RwLXNldHVwLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgIH1cblxuICAgIC5zZXR1cC1zdGVwcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAucXItY29kZS1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAucXItY29kZS1pbWFnZSB7XG4gICAgICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgfVxuXG4gICAgLnZlcmlmaWNhdGlvbi1mb3JtLWNvbnRhaW5lciB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSAwO1xuICAgIH1cblxuICAgIC5iYWNrdXAtY29kZXMtZ3JpZCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5xci1jb2RlLWltYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDtcbiAgICB9XG5cbiAgICAudHdvLWZhY3Rvci1sb2dpbi1jYXJkIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC50d28tZmFjdG9yLWF2YXRhciB7XG4gICAgICAgIHdpZHRoOiA2NHB4O1xuICAgICAgICBoZWlnaHQ6IDY0cHg7XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItbG9naW4tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgfVxuXG4gICAgLnR3by1mYWN0b3ItbG9naW4tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFkgSU1QUk9WRU1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEZvY3VzIHZpc2libGUgc3R5bGVzXG5cbi5iYWNrdXAtY29kZS1pdGVtIGNvZGU6Zm9jdXMtdmlzaWJsZSxcbi5tYW51YWwtZW50cnktZGV0YWlscyBzdW1tYXJ5OmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDJweCBzb2xpZCB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbn1cblxuLy8gSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnRcbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuXG4gICAgLnFyLWNvZGUtaW1hZ2Uge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG5cbiAgICAuYmFja3VwLWNvZGUtaXRlbSBjb2RlIHtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAycHg7XG4gICAgfVxufVxuXG4vLyBSZWR1Y2VkIG1vdGlvbiBzdXBwb3J0XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLmJhY2t1cC1jb2RlLWl0ZW0gY29kZSxcbiAgICAuc2V0dXAtc3RlcHMgLnN0ZXAsXG4gICAgLm1hbnVhbC1lbnRyeS1kZXRhaWxzIHN1bW1hcnksXG4gICAgLnR3by1mYWN0b3ItY29kZS1pbnB1dCB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgLSBOb3RpZmljYXRpb25zIFBhZ2UgU3R5bGVzXG4gKlxuICogTm90aWZpY2F0aW9uIHByZWZlcmVuY2VzIHBhZ2Ugd2l0aCBjYXJkLWJhc2VkIGxheW91dCBhbmQgY2F0ZWdvcnkgZ3JvdXBpbmcuXG4gKiBQYWdlIGNvbnRhaW5lci9oZWFkZXIvZm9vdGVyIHVzZSBzaGFyZWQgZm9ybS1wYWdlLSogY2xhc3NlcyBmcm9tIF9mb3JtLXBhZ2Uuc2Nzcy5cbiAqIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IG5vdGlmaWNhdGlvbi1zcGVjaWZpYyBzdHlsZXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5URUdSQVRJT04gTUFOQUdFTUVOVCBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWluZm8ge1xuICAgIGZsZXg6IDE7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuLmludGVncmF0aW9uLW1hbmFnZW1lbnQtZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5pbnRlZ3JhdGlvbi1tYW5hZ2VtZW50LWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4uaW50ZWdyYXRpb24tYmFkZ2Uge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBOT1RJRklDQVRJT04gR1JPVVBTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyAvLyBTaW5nbGUgY29sdW1uIG9uIG1vYmlsZVxuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uZ3JvdXAtdGl0bGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk9USUZJQ0FUSU9OIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tY2FyZHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWRhcmspO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXNtKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7IC8vIEFsbG93cyB0ZXh0IHRydW5jYXRpb25cbn1cblxuLm5vdGlmaWNhdGlvbi1jYXJkLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDgpIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5ub3RpZmljYXRpb24tY2FyZC1pbmZvIHtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ubm90aWZpY2F0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIG1hcmdpbjogMDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4ubm90aWZpY2F0aW9uLWNhcmQtY2hhbm5lbHMge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFOTkVMIENIRUNLQk9YRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBCb290c3RyYXAgZm9ybS1jaGVjayBpbnRlZ3JhdGlvbiAtIGNvbXBhY3QgaW5saW5lIHN0eWxlXG5cbi5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG5cbiAgICAuZm9ybS1jaGVjayB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgICAgIC8vIEhpZGUgY2hlY2tib3ggdmlzdWFsbHkgYnV0IGtlZXAgaXQgYWNjZXNzaWJsZSBmb3IgZm9ybSBzdWJtaXNzaW9uXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGZvY3VzIHJpbmcgdG8gbGFiZWwgd2hlbiBjaGVja2JveCBpcyBmb2N1c2VkXG5cbiAgICAgICAgICAgICY6Zm9jdXMgKyAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1jaGVjay1sYWJlbCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMS01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtc20pO1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2staW5wdXQ6Y2hlY2tlZCArIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIERFU0lHTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBNb2JpbGUgKDwgNzY4cHgpXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuaW50ZWdyYXRpb24tbWFuYWdlbWVudC1oZWFkZXIge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLW1hbmFnZW1lbnQtbGlzdCB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tZ3JvdXBzIHtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgLmdyb3VwLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1kZXNjcmlwdGlvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIH1cblxuICAgIC5ub3RpZmljYXRpb24tY2FyZC1jaGFubmVscyB7XG5cbiAgICAgICAgLm5vdGlmaWNhdGlvbi1jaGFubmVscy1saXN0IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvcm0tY2hlY2sgLmZvcm0tY2hlY2stbGFiZWwge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9ucy1lbXB0eS1zdGF0ZSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAgICAgLmVtcHR5LXN0YXRlLWljb24ge1xuICAgICAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDY0cHg7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gVGFibGV0IGFuZCBEZXNrdG9wICg+IDc2OHB4KSAtIDIgY29sdW1uIGxheW91dCBmb3IgY2F0ZWdvcmllc1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkge1xuXG4gICAgLm5vdGlmaWNhdGlvbi1ncm91cHMge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAubm90aWZpY2F0aW9uLWNhcmQge1xuICAgICAgICBicmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQU5JTUFUSU9OUyAtIERpc2FibGVkIGZvciBjbGVhbmVyLCBmYXN0ZXIgcmVuZGVyaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEFuaW1hdGlvbnMgcmVtb3ZlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBjbGVhbmVyIGZlZWxcbiIsIi8qKlxuICogU29saWRJbnZvaWNlIC0gU3Vic2NyaXB0aW9uIFBhZ2VzIFN0eWxlc1xuICpcbiAqIEJpbGxpbmcsIHBsYW4tcGlja2VyLCBhbmQgc3Vic2NyaXB0aW9uLXN0YXRlIHBhZ2VzIChwcmljaW5nLCBvdmVydmlldyxcbiAqIGNoYW5nZSwgY2FuY2VsbGVkLCBwYXVzZWQsIHBlbmRpbmcsIHRyaWFsIGV4cGlyZWQpLlxuICpcbiAqIEFsbCB2YWx1ZXMgYXJlIGAtLXN3cC0qYCBkZXNpZ24gdG9rZW5zLiBTdGF0ZSBpcyBjYXJyaWVkIGJ5IGEgc29mdCBpY29uXG4gKiBtZWRhbGxpb24gKyBoZWFkaW5nLCBuZXZlciBieSBhIGRlY29yYXRpdmUgYWNjZW50IHN0cmlwZSwgYSBjb2xvcmVkIGdsb3csIG9yXG4gKiBhIGxvb3BpbmcgYW5pbWF0aW9uLiBDb2xvdXIgc3RheXMgb24gdGhlIGJyYW5kOiBUcnVzdCBHcmVlbiBpcyB0aGUgb25seVxuICogYWNjZW50OyB0aGVyZSBpcyBubyBUYWJsZXIgYmx1ZSBhbmQgbm8gYW1iZXItYnktYWNjaWRlbnQgaGVyZS5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCQVNFIFBBR0UgTEFZT1VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS0yNCkpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNjQwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xMCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXhsKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhsKTtcbiAgICBhbmltYXRpb246IHN1YnNjcmlwdGlvbi1mYWRlLWluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgc3Vic2NyaXB0aW9uLWZhZGUtaW4ge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFQURFUiBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFBhZ2UgaGVhZGVyIChhYm92ZSBzdWJzY3JpcHRpb24gY29udGFpbmVyKVxuXG4uc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuXG4gICAgLmg0IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gU29mdCBtZWRhbGxpb24sIGZsYXQgdGludCArIHRpbnRlZCBnbHlwaCAodGhlIHNhbWUgbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZFxuLy8gZW1wdHkgc3RhdGVzIGFuZCBvbmJvYXJkaW5nIHdpemFyZCB1c2UpLiBObyBncmFkaWVudCBkaXNjLlxuXG4uc3Vic2NyaXB0aW9uLWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTgpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi13YXJuaW5nIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC13YXJuaW5nKTtcbn1cblxuLnN1YnNjcmlwdGlvbi1pY29uLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xufVxuXG4uc3Vic2NyaXB0aW9uLWljb24taW5mbyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWluZm8tbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG59XG5cbi5zdWJzY3JpcHRpb24taWNvbi1wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5zdWJzY3JpcHRpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1sZyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3dwLXNwYWNlLTEwKTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCRU5FRklUUyBTRUNUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy14cyk7XG5cbiAgICBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbjogMCAwIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG5cbiAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMi01KSAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENhbmNlbGxlZCBwYWdlOiBsb2NrZWQgZmVhdHVyZXMgYXJlIG11dGVkLCBub3QgYWxhcm1lZCBpbiByZWQuIExvc2luZyBhY2Nlc3Ncbi8vIHRvIGEgZmVhdHVyZSB5b3UgY2hvc2UgdG8gY2FuY2VsIGlzIGluZm9ybWF0aW9uLCBub3QgYW4gZXJyb3IuXG5cbi5zdWJzY3JpcHRpb24tY2FuY2VsbGVkLXBhZ2UgLnN1YnNjcmlwdGlvbi1iZW5lZml0cyBsaSBzdmcge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDVElPTlMgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG5cbiAgICAuYnRuLWxnIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LW1kKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tYmFzZSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCksIHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1naG9zdCB7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFURS1TUEVDSUZJQyBQQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiBtZWRhbGxpb24gKyBoZWFkaW5nICsgY29weS4gVGhlIHByZXZpb3VzIDRweFxuLy8gdG9wIGFjY2VudCBzdHJpcGVzIG9uIGAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lcmAgd2VyZSB0aGUgYWNjZW50LXN0cmlwZVxuLy8gYW50aS1wYXR0ZXJuICh0aGUgXCI+MXB4IGNvbG91cmVkIGJvcmRlclwiIHJ1bGUpIHJvdGF0ZWQgdG8gdGhlIHRvcCBlZGdlLCBhbmRcbi8vIHRoZSByZWQgZGFuZ2VyIGZyYW1pbmcgb24gdGhlIGNhbmNlbGxlZCBwYWdlIHNjb2xkZWQgYSB1c2VyIGZvciBhIGNob2ljZVxuLy8gdGhleSBtYWRlOyBib3RoIGFyZSBnb25lLlxuXG4uc3Vic2NyaXB0aW9uLXBhdXNlZC1wYWdlIHtcbiAgICAvLyBQYXVzZWQgYmVuZWZpdHMgYXJlIG5laXRoZXIgYWNoaWV2ZW1lbnRzIChncmVlbikgbm9yIGxvc3NlcyAocmVkKSAtIHRoZXlcbiAgICAvLyBhcmUgc2ltcGx5IG9uIGhvbGQuXG5cbiAgICAuc3Vic2NyaXB0aW9uLWJlbmVmaXRzIGxpIHN2ZyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxFUlQgQkFOTkVSIChUb3Agb2YgcGFnZSBpbmplY3Rpb24pXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hbGVydC1iYW5uZXIge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgLmQtZmxleCB7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFsZXJ0LWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgLmJ0bi1zbSB7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgIC8vIFdhcm5pbmcgYmFubmVyICh0cmlhbClcblxuICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC13YXJuaW5nLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3Atd2FybmluZy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgICAgICAuYnRuLXdhcm5pbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWludmVyc2UpO1xuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atd2FybmluZy1ob3Zlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBEYW5nZXIgYmFubmVyIChjYW5jZWxsZWQpXG5cbiAgICAmLmFsZXJ0LWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG5cbiAgICAgICAgLmJ0bi1kYW5nZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklDSU5HIFBBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnN1YnNjcmlwdGlvbi1wcmljaW5nLXBhZ2Uge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDExMDBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cbn1cblxuLnBsYW4tY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgLy8gSG92ZXIgbGlmdHMgYnkgc2hhZG93IG9ubHkgKG5vIHRyYW5zZm9ybSksIHBlciB0aGUgZGVzaWduIHN5c3RlbSdzIGNhcmRcbiAgICAvLyBydWxlcy5cblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAvLyBSZXNlcnZlIHRoZSBiYW5uZXIncyBoZWlnaHQgb24gZXZlcnkgcGFpZCBjYXJkIHNvIHRoZSBwcmljZSBiYXNlbGluZSBpc1xuICAgIC8vIHRoZSBzYW1lIHdoZXRoZXIgb3Igbm90IHRoZSBjYXJkIGNhcnJpZXMgYSBiYW5uZXIgKHRoZSBiYW5uZXIgaXRzZWxmIGlzXG4gICAgLy8gdGFrZW4gb3V0IG9mIGZsb3cgYmVsb3cpLlxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS05KTtcbiAgICB9XG59XG5cbi5wbGFuLWNhcmQtcmVjb21tZW5kZWQge1xuICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgIH1cbn1cblxuLy8gUmliYm9uIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBjYXJkLiBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgc28gaXQgbmV2ZXIgcHVzaGVzXG4vLyB0aGUgcHJpY2UgZG93biAodGhlIGNhcmQgYm9keSByZXNlcnZlcyBtYXRjaGluZyB0b3AgcGFkZGluZyBhYm92ZSksIGFuZCBpblxuLy8gVHJ1c3QgR3JlZW4gLSBub3QgdGhlIFRhYmxlci1ibHVlIGl0IHVzZWQgdG8gZmFsbCBiYWNrIHRvLlxuXG4ucGxhbi1jYXJkLWJhbm5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBpbnNldC1pbmxpbmU6IDA7XG4gICAgei1pbmRleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxufVxuXG4vLyBGcmVlIHBsYW46IHByZXNlbnRlZCBhcyBhIHNsaW0gc2Vjb25kYXJ5IGNhcmQgYmVsb3cgdGhlIG1haW4gZ3JpZC5cblxuLnBsYW4tY2FyZC1mcmVlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyOiAxcHggZGFzaGVkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLXN3cC10cmFuc2l0aW9uLWJhc2UpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfVxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnBsYW4tY2FyZC1mcmVlLWhlYWRlciB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4ucGxhbi1jYXJkLWZyZWUtY3RhIHtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLy8gSW5saW5lIGZlYXR1cmUgbGlzdCBmbG93cyBob3Jpem9udGFsbHkgYW5kIHdyYXBzOyBrZWVwcyB0aGUgZnJlZSBzdHJpcCBzbGltLlxuXG4ucGxhbi1jYXJkLWZlYXR1cmVzLWlubGluZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxufVxuXG4vLyBUaGUgZGlzcGxheSBwcmljZSByZW5kZXJzIHRocm91Z2ggdGhlIGAubW9uZXlgIGNvbXBvbmVudCAoYG1vbmV5LS10b3RhbGApLFxuLy8gd2hpY2ggaW5oZXJpdHMgaXRzIHNpemUgZnJvbSBoZXJlOyB0aGUgaW50ZXJ2YWwgc2l0cyBxdWlldGx5IGJlc2lkZSBpdC5cblxuLnBsYW4tY2FyZC1wcmljZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC00eGwpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi5wbGFuLWNhcmQtaW50ZXJ2YWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG59XG5cbi5wbGFuLWNhcmQtZmVhdHVyZXMge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xufVxuXG4vLyBBIGNvdXBvbiAvIHByb21vIGNhcmQgKHRyaWFsLWV4cGlyZWQgcGFnZSkuIFRva2VuaXNlZCBncmVlbi10aW50IHBhbmVsLFxuLy8gcmVwbGFjaW5nIHRoZSBvZmYtc3lzdGVtIFRhYmxlciBgYXp1cmVgIHV0aWxpdGllcy5cblxuLnN1YnNjcmlwdGlvbi1jb3Vwb24ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgIC8vIFRoZSBjb3Vwb24gY29kZSBpdHNlbGYsIGluIHNvbGlkIFRydXN0IEdyZWVuIHNvIGl0IHJlYWRzIGFzIHRoZSBvbmUgdGhpbmdcbiAgICAvLyB0byBjb3B5LiBXaXRob3V0IHRoaXMgYSBiYXJlIGAuYmFkZ2VgIGZhbGxzIGJhY2sgdG8gdGhlIHRoZW1lJ3MgYW1iZXIuXG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFdFTENPTUUgLyBBQ1RJVkFUSU9OIFBBR0UgKGNhcmQtcmVxdWlyZWQgb25ib2FyZGluZylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9uZSBwbGFuLCBvbmUgY2FsbCB0byBhY3Rpb24uIFRoZSBwYWdlIHJlYXNzdXJlcyByYXRoZXIgdGhhbiBzZWxsczogdGhlXG4vLyBwbGFuIGlzIGEgY2FsbSBzdW1tYXJ5LCBub3QgYSBwaWNrLW1lIGNhcmQsIGFuZCB0aGUgdGhyZWUgZ3VhcmFudGVlcyBiZWxvdyBpdFxuLy8gZXhpc3QgdG8gbWVsdCB0aGUgaGVzaXRhdGlvbiBvZiBlbnRlcmluZyBhIGNhcmQgYmVmb3JlIHRoZSB0cmlhbCBzdGFydHMuXG5cbi5zdWJzY3JpcHRpb24td2VsY29tZS1wYWdlIHtcblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICB9XG59XG5cbi53ZWxjb21lLXBsYW4ge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteHMpO1xuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgcGxhbidzIG93biBmZWF0dXJlIGxpc3QgaXMgcmV1c2VkIGZyb20gdGhlIHBpY2tlcjsgaGVyZSBpdCBzaXRzIGluc2lkZVxuICAgIC8vIGEgc3VtbWFyeSBjYXJkLCBzbyBkcm9wIHRoZSBwaWNrZXIncyBib3R0b20gbWFyZ2luLlxuXG4gICAgLnBsYW4tY2FyZC1mZWF0dXJlcyB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4ud2VsY29tZS1wbGFuLXByaWNpbmcge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi53ZWxjb21lLXBsYW4tcHJpY2Uge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtMnhsKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbi8vIFRocmVlIHF1aWV0IHJlYXNzdXJhbmNlczsgdGhlIEJvb3RzdHJhcCBncmlkIHN0YWNrcyB0aGVtIG9uIG1vYmlsZS5cblxuLndlbGNvbWUtcmVhc3N1cmUtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yLTUpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0wLTUpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVTUE9OU0lWRSBERVNJR05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhICh3aWR0aCA8PSA3NjcuOThweCkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1wYWdlIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLXBhZ2UtaGVhZGVyIHtcblxuICAgICAgICAuZC1mbGV4IHtcbiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLWdyb3VwIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24taWNvbiB7XG4gICAgICAgIHdpZHRoOiA0OHB4O1xuICAgICAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi10aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1zdWJ0aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIH1cblxuICAgIC5zdWJzY3JpcHRpb24tYmVuZWZpdHMge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1hY3Rpb25zIHtcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFsZXJ0LWJhbm5lciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tc20ge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRhYmxldCBhZGp1c3RtZW50c1xuQG1lZGlhICh3aWR0aCA+PSA3NjhweCkgYW5kICh3aWR0aCA8PSA5OTEuOThweCkge1xuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZWQgbW90aW9uOiBkcm9wIHRoZSBjb250YWluZXIgcmV2ZWFsIGFuZCB0aGUgaG92ZXIgc2hhZG93IHRyYW5zaXRpb25zLlxuLy8gVGhlcmUgaXMgbm8gbG9vcGluZy9wdWxzaW5nIGFuaW1hdGlvbiBsZWZ0IGluIHRoaXMgZmlsZSB0byBndWFyZC5cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAuc3Vic2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAucGxhbi1jYXJkLFxuICAgIC5wbGFuLWNhcmQtZnJlZSxcbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMgLmJ0bi1sZyB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQUklOVCBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5zdWJzY3JpcHRpb24tcGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLnN1YnNjcmlwdGlvbi1jb250YWluZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICB9XG5cbiAgICAuc3Vic2NyaXB0aW9uLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5hbGVydC1iYW5uZXIge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cbiIsIi8qKlxuICogT25ib2FyZGluZyBDaGVja2xpc3QgLSBEYXNoYm9hcmQgd2lkZ2V0XG4gKlxuICogVGhlIGZpcnN0IGNvbXBvbmVudCBhIG5ldyB1c2VyIG1lZXRzLiBQcmlvcml0aWVzLCBpbiBvcmRlcjpcbiAqICAgMS4gQ29udmV5IHN0YXRlICh0b2RvIC8gZG9uZSAvIGhvdmVyZWQgLyBmb2N1c2VkKS4gTmV2ZXIgZGVjb3JhdGlvbi5cbiAqICAgMi4gU3RheSBvbiB0aGUgU29saWRJbnZvaWNlIGRlc2lnbiBzeXN0ZW0gLSBgLS1zd3AtKmAgdG9rZW5zIG9ubHkuXG4gKiAgIDMuIFJlYWQgY29ycmVjdGx5IHdoZXRoZXIgYSByb3cgaXMgYW4gPGE+IChhY3Rpb25hYmxlKSBvciBhIDxzcGFuPiAoZG9uZSkuXG4gKlxuICogU3RydWN0dXJlIGNvbWVzIGZyb20gVGFibGVyIChgY2FyZGAsIGBjYXJkLXN0YW1wYCwgYGNhcmQtbGluay1wb3BgLFxuICogYG9mZmNhbnZhc2AsIGB2aXN1YWxseS1oaWRkZW5gKS4gVGhpcyBmaWxlIG9ubHkgYWRkcyB3aGF0IFRhYmxlciBkb2VzIG5vdFxuICogYWxyZWFkeSBwcm92aWRlIC0gaXQgZG9lcyBub3QgcmVzdGF0ZSBvciBmaWdodCBpdC5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVUNDRVNTIENBUkQgLSBhbGwgc3RlcHMgY29tcGxldGVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gTWF0Y2hlcyBgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1hY3RpdmVcIj5gLiBOb3QgaW50ZXJhY3RpdmUgKGl0cyBvbmx5IGNvbnRyb2xcbi8vIGlzIHRoZSBkaXNtaXNzIGJ1dHRvbiBpbnNpZGUpLCBzbyBpdCBnZXRzIG5vIGhvdmVyIHN0YXRlIC0gYSBsaWZ0IGhlcmUgd291bGRcbi8vIGJlIGEgZmFsc2UgYWZmb3JkYW5jZS4gQSBmbGF0IHN1Y2Nlc3MgdGludCBwbHVzIGEgZnVsbCAxcHggYm9yZGVyIGNhcnJpZXNcbi8vIHRoZSBzdGF0ZTsgdGhlIGNhcmQga2VlcHMgVGFibGVyJ3MgcmVzdGluZyBgc2hhZG93LXNtYC5cblxuLmNhcmQuY2FyZC1hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xufVxuXG4vLyBEZWNvcmF0aXZlIHdhdGVybWFyayBiZWhpbmQgdGhlIGNhcmQgdGl0bGUgKFRhYmxlciBgLmNhcmQtc3RhbXBgKS5cblxuLmNhcmQtc3RhbXAtaWNvbiB7XG4gICAgb3BhY2l0eTogMC4xNTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ0hFQ0tMSVNUIElURU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jaGVja2xpc3QtaXRlbXMtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTItNSk7XG59XG5cbi8vIFJlbmRlcnMgYXMgPGE+IHdoaWxlIGluY29tcGxldGUgYW5kIDxzcGFuPiBvbmNlIGNvbXBsZXRlLCBzbyBldmVyeVxuLy8gaW50ZXJhY3RpdmUgc3R5bGUgaXMgZ2F0ZWQgYmVoaW5kIGA6bm90KC5jb21wbGV0ZWQpYC5cblxuLmNoZWNrbGlzdC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRyYW5zaXRpb246XG4gICAgICAgIGNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1mYXN0KSB2YXIoLS1zd3AtZWFzZS1vdXQpLFxuICAgICAgICBib3JkZXItY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLWR1cmF0aW9uLWZhc3QpIHZhcigtLXN3cC1lYXNlLW91dCk7XG5cbiAgICAvLyBIb3ZlciBhbmQgZm9jdXMgcmVzb2x2ZSB0byB0aGUgc2FtZSBzdXJmYWNlIHNvIHBvaW50ZXIgYW5kIGtleWJvYXJkXG4gICAgLy8gdXNlcnMgYXJlIHNob3duIHRoZSBzYW1lIHRhcmdldDsgZm9jdXMgYWRkcyB0aGUgaGFsbyBiZWxvdy5cblxuICAgICY6bm90KC5jb21wbGV0ZWQpOmlzKDpob3ZlciwgOmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuXG4gICAgICAgIC5jaGVja2xpc3QtaXRlbS1hY3Rpb24ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvY3VzIEhhbG8uIGAtLXN3cC1yaW5nLXByaW1hcnlgIGlzIGEgMTUlLWFscGhhIGdyZWVuICh+MS4xOjEgb24gd2hpdGUpXG4gICAgLy8gYW5kIGNhbm5vdCBjYXJyeSBhIGZvY3VzIGluZGljYXRvciBvbiBpdHMgb3duLCBzbyB0aGUgYm9yZGVyIHNoaWZ0cyB0b1xuICAgIC8vIGZ1bGwgYC0tc3dwLXByaW1hcnlgIGFsb25nc2lkZSBpdCB0byBtZWV0IFdDQUcgMi4xIFNDIDIuNC4xMS5cblxuICAgICY6bm90KC5jb21wbGV0ZWQpOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAvLyBEb25lLiBTaWduYWxsZWQgYnkgdGludCArIHN0cmlrZXRocm91Z2ggKyB3ZWlnaHQgZHJvcCArIGRlLWVtcGhhc2lzLCBzb1xuICAgIC8vIGl0IHN1cnZpdmVzIHdpdGhvdXQgaHVlLiBUaGUgcHJvZ3JhbW1hdGljIHNpZ25hbCBpcyBBNSdzXG4gICAgLy8gdmlzdWFsbHktaGlkZGVuIHN0YXR1cyB0ZXh0LCBub3QgYW55dGhpbmcgaW4gaGVyZS5cblxuICAgICYuY29tcGxldGVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHRlcik7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MtbGlnaHQpO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgICAgICAgLml0ZW0tbmFtZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW5vcm1hbCk7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pdGVtLWljb24ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vdGhpbmcgbGVmdCB0byBuYXZpZ2F0ZSB0by5cblxuICAgICAgICAuY2hlY2tsaXN0LWl0ZW0tYWN0aW9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIENvbXBsZXRpb24gbWFya2VyLiBHcmVlbiBjaGVjayB3aGVuIGRvbmU7IGEgbmV1dHJhbCByaW5nIHdoZW4gbm90LlxuXG4uY2hlY2tsaXN0LWl0ZW0taWNvbiB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW06bm90KC5jb21wbGV0ZWQpIC5jaGVja2xpc3QtaXRlbS1pY29uIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNDAwKTtcbn1cblxuLmNoZWNrbGlzdC1pdGVtLWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4vLyBTY29wZWQgdG8gdGhlIHJvdzogYGl0ZW0taWNvbmAgLyBgaXRlbS1uYW1lYCBhcmUgdG9vIGdlbmVyaWMgdG8gb3duIGdsb2JhbGx5LlxuXG4uY2hlY2tsaXN0LWl0ZW0gLml0ZW0taWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG59XG5cbi5jaGVja2xpc3QtaXRlbSAuaXRlbS1uYW1lIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2hlY2tsaXN0LWl0ZW0tZGVzY3JpcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zd3AtbGVhZGluZy1ub3JtYWwpO1xufVxuXG4vLyBBbHdheXMgdmlzaWJsZSwgbm90IGhvdmVyLXJldmVhbGVkOiBob3ZlciBuZXZlciBmaXJlcyBvbiB0b3VjaCwgc28gYVxuLy8gaG92ZXItb25seSBhZmZvcmRhbmNlIGlzIGludmlzaWJsZSB0byBoYWxmIHRoZSB1c2VycyB3aG8gbmVlZCBpdC5cblxuLmNoZWNrbGlzdC1pdGVtLWFjdGlvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBPRkZDQU5WQVMgUEFORUxcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLm9uYm9hcmRpbmctb2ZmY2FudmFzIHtcbiAgICB3aWR0aDogNDIwcHg7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vLyBQcm9ncmVzcyBzdW1tYXJ5IGNhcmQgYXQgdGhlIHRvcCBvZiB0aGUgcGFuZWwuIFNjb3BlZCB0byB0aGlzIHdpZGdldCAtIHRoZVxuLy8gdW5zY29wZWQgYC5vZmZjYW52YXMtYm9keSAuY2FyZGAgaXQgcmVwbGFjZXMgd291bGQgcmVzdHlsZSBldmVyeSBjYXJkIGluXG4vLyBldmVyeSBvZmZjYW52YXMgaW4gdGhlIGFwcC5cblxuLm9uYm9hcmRpbmctb2ZmY2FudmFzIC5vZmZjYW52YXMtYm9keSAuY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG59XG5cbi5vbmJvYXJkaW5nLXByb2dyZXNzLWxhYmVsIHtcbiAgICBtaW4td2lkdGg6IDNyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDQ0VTU0lCSUxJVFlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gTm8gbW90aW9uIHN1cnZpdmVzIGluIHRoaXMgZmlsZSAtIG5vIHRyYW5zZm9ybXMsIG5vIGtleWZyYW1lcy4gV2hhdCBpcyBsZWZ0XG4vLyBpcyBhIDE1MG1zIGNvbG91ci9zaGFkb3cgY3Jvc3MtZmFkZSwgd2hpY2ggaXMgbm90IHZlc3RpYnVsYXIuIFRoaXMgYmxvY2sgaXNcbi8vIGRlZmVuc2l2ZSBvbmx5LCBhbmQgaXMgcG9pbnRlZCBhdCBhIHNlbGVjdG9yIHRoYXQgYWN0dWFsbHkgZXhpc3RzLlxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblxuICAgIC5jaGVja2xpc3QtaXRlbSB7XG4gICAgICAgIHRyYW5zaXRpb246IG5vbmU7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBPbmJvYXJkaW5nIFdpemFyZCAtIHRoZSBmaXJzdC1ydW4gZmxvdyAoL29uYm9hcmRpbmcpXG4gKlxuICogVGhpcyBpcyB0aGUgZmlyc3Qgc2NyZWVuIGV2ZXJ5IG5ldyB1c2VyIG1lZXRzOiBwb3N0LWluc3RhbGwgYW5kIHBvc3Qtc2lnbnVwLFxuICogYSB1c2VyIHdpdGggbm8gY29tcGFueSBpcyByZWRpcmVjdGVkIGhlcmUgdG8gY3JlYXRlIHRoZWlyIGNvbXBhbnksIGFuXG4gKiBvcHRpb25hbCBmaXJzdCBjbGllbnQsIGFuZCBhIGZpcnN0IGludm9pY2UuXG4gKlxuICogSXQgdXNlZCB0byBiZSBzdHlsZWQgd2l0aCBpbmxpbmUgPHN0eWxlPiBibG9ja3MgdGhhdCBjb250cmFkaWN0ZWQgdGhlIGRlc2lnblxuICogc3lzdGVtIHdob2xlc2FsZSAtIEJvb3RzdHJhcCBibHVlICgjMDY2ZmQxKSBpbnN0ZWFkIG9mIFRydXN0IEdyZWVuLCBncmFkaWVudHNcbiAqIG9uIHRoZSBjYW52YXMgLyBzdGVwIGljb24gLyBiYWRnZSwgYSAzcHggYGJvcmRlci1sZWZ0YCBzaWRlLXN0cmlwZSBvbiB0aGVcbiAqIGJlbmVmaXRzIGJveCAoYSBoYXJkIGJhbiksIGFuZCBhIGJvdW5jZS9lbGFzdGljIGNlbGVicmF0aW9uIHdpdGggYW4gaW5maW5pdGVcbiAqIHB1bHNlIGFuZCBubyByZWR1Y2VkLW1vdGlvbiBmYWxsYmFjay4gVGhpcyBmaWxlIHJlcGxhY2VzIGFsbCBvZiBpdCB3aXRoXG4gKiBgLS1zd3AtKmAgdG9rZW5zLCBmbGF0IHN1cmZhY2VzLCBhbmQgZWFzZS1vdXQgbW90aW9uLlxuICpcbiAqIEV2ZXJ5dGhpbmcgaXMgc2NvcGVkIHVuZGVyIGAub25ib2FyZGluZy1jb250YWluZXJgIGJlY2F1c2UgdGhlIGNsYXNzIG5hbWVzXG4gKiAoYHN0ZXAtaWNvbmAsIGBzdGVwLWJlbmVmaXRzYCwgYHdlbGNvbWUtYmFkZ2VgLCAuLi4pIGFyZSBnZW5lcmljIGFuZCB1c2VkXG4gKiBub3doZXJlIGVsc2UgLSBzY29waW5nIGtlZXBzIHRoZW0gZnJvbSBsZWFraW5nIGludG8gdGhlIHJlc3Qgb2YgdGhlIGFwcC5cbiAqXG4gKiBTdHJ1Y3R1cmUgKEJvb3RzdHJhcCBncmlkLCBgY2FyZGAsIGBidG5gLCBgZm9ybS1jb250cm9sYCwgYHByb2dyZXNzYCkgY29tZXNcbiAqIGZyb20gVGFibGVyOyB0aGlzIGZpbGUgb25seSBzdHlsZXMgdGhlIGN1c3RvbSB3aXphcmQgY2hyb21lLlxuICovXG5cbi5vbmJvYXJkaW5nLWNvbnRhaW5lciB7XG4gICAgLy8gUGFwZXItb24tZGVzayBjYW52YXM6IHRoZSBhcHAncyBvd24gZmxhdCBib2R5IGJhY2tncm91bmQuIFRoZSBwcmV2aW91c1xuICAgIC8vIGdyZXkgZGlhZ29uYWwgZ3JhZGllbnQgd2FzIGRlY29yYXRpb24gdGhlIGRlc2lnbiBzeXN0ZW0gZG9lcyBub3QgcGVybWl0LlxuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ib2R5LWJnKTtcblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFBST0dSRVNTIEhFQURFUlxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgLm9uYm9hcmRpbmctcHJvZ3Jlc3Mge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcbiAgICB9XG5cbiAgICAuc3RlcC1pbmRpY2F0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICB9XG5cbiAgICAvLyBVcGNvbWluZyBzdGVwIGF0IHJlc3Q6IG5ldXRyYWwgc2xhdGUuXG5cbiAgICAuc3RlcC1udW1iZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDJyZW07XG4gICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWdyYXktMTAwKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCksXG4gICAgICAgICAgICBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KSxcbiAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLWR1cmF0aW9uLXNsb3cpIHZhcigtLXN3cC1lYXNlLW91dCk7XG4gICAgfVxuXG4gICAgLy8gUmVhY2hlZCAodGhlIGN1cnJlbnQgc3RlcCBvciBhbiBlYXJsaWVyIG9uZSk6IGEgc29mdCBncmVlbiB0aW50LlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmFjdGl2ZSAuc3RlcC1udW1iZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgY3VycmVudCBzdGVwOiBmaWxsZWQgVHJ1c3QgR3JlZW4gd2l0aCB0aGUgc3RhbmRhcmQgZm9jdXMgaGFsbywgc28gdGhlXG4gICAgLy8gdXNlcidzIHBvc2l0aW9uIHJlYWRzIGF0IGEgZ2xhbmNlLlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmN1cnJlbnQgLnN0ZXAtbnVtYmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtaW52ZXJzZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgIC5zdGVwLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtZHVyYXRpb24tc2xvdykgdmFyKC0tc3dwLWVhc2Utb3V0KTtcbiAgICB9XG5cbiAgICAvLyBwcmltYXJ5LWRhcmsgKCMxZjZjMjkpIG9uIHRoZSB3aGl0ZSBoZWFkZXIgaG9sZHMgQUEgY29tZm9ydGFibHk7IHRoZSByYXdcbiAgICAvLyBwcmltYXJ5IHdvdWxkIG5vdCBmb3IgdGV4dCB0aGlzIHNtYWxsLlxuXG4gICAgLnN0ZXAtaW5kaWNhdG9yLmFjdGl2ZSAuc3RlcC1sYWJlbCxcbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICB9XG5cbiAgICAuc3RlcC1pbmRpY2F0b3IuY3VycmVudCAuc3RlcC1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgIG1hcmdpbjogMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpO1xuICAgIH1cblxuICAgIC5zdGVwLWNvbm5lY3Rvci5jb21wbGV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gU1RFUCBDQVJEXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAvLyBQYXBlciBvbiB0aGUgY2FudmFzOiBzdXJmYWNlLCBzb2Z0IHJlc3Rpbmcgc2hhZG93LCBnZW5lcm91cyByYWRpdXMuIE5vdCBhXG4gICAgLy8gaGVhdmllciBjdXN0b20gc2hhZG93IC0gdGhlIGRlc2lnbiBzeXN0ZW0ncyBgc2hhZG93LXNtYCBpcyB0aGUgY2FyZCByZXN0LlxuXG4gICAgLm9uYm9hcmRpbmctc3RlcC1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTEyKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIFNURVAgSUNPTiBNRURBTExJT05cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIEZsYXQgcHJpbWFyeSB0aW50IHdpdGggYSBUcnVzdCBHcmVlbiBnbHlwaCAtIHRoZSBzYW1lIHNvZnQtbWVkYWxsaW9uXG4gICAgLy8gbGFuZ3VhZ2UgdGhlIGRhc2hib2FyZCBlbXB0eSBzdGF0ZXMgdXNlLiBUaGUgcHJldmlvdXMgc2F0dXJhdGVkIGJsdWVcbiAgICAvLyBncmFkaWVudCBkaXNjIHdhcyB0aGUgQUktc2xvcCBoZXJvLWljb24gdGVsbC5cblxuICAgIC5zdGVwLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDRyZW07XG4gICAgICAgIGhlaWdodDogNHJlbTtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG8gdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gV0VMQ09NRSBTRUNUSU9OICsgQkFER0VcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC53ZWxjb21lLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAud2VsY29tZS1iYWRnZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQkVORUZJVFMgLyBcIldIWSBUSElTIE1BVFRFUlNcIiBCT1hcbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC8vIEEgZnVsbCAxcHggYm9yZGVyIHBsdXMgYW4gYW1iaWVudCBncmVlbiB3YXNoLiBOTyBzaWRlLXN0cmlwZTogYSBjb2xvdXJlZFxuICAgIC8vIGBib3JkZXItbGVmdGAgdGhpY2tlciB0aGFuIDFweCBpcyBhIGhhcmQgYmFuLCBhbmQgdGhlIGxlYWRpbmcgaWNvbiBpbnNpZGVcbiAgICAvLyBhbHJlYWR5IGNhcnJpZXMgdGhlIGFjY2VudC5cblxuICAgIC5zdGVwLWJlbmVmaXRzIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpICsgbGkge1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQ09NUExFVElPTiBTQ1JFRU5cbiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIC5jZWxlYnJhdGlvbi1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLy8gU3VjY2VzcyBtZWRhbGxpb246IHN1Y2Nlc3MtbGlnaHQgZGlzYywgQUEtc2FmZSBzdWNjZXNzLWRhcmsgY2hlY2suIEVudGVyc1xuICAgIC8vIG9uY2Ugd2l0aCBhIGdlbnRsZSBlYXNlLW91dCBzY2FsZSwgbmV2ZXIgYm91bmNlcywgbmV2ZXIgbG9vcHMuXG5cbiAgICAuc3VjY2Vzcy1jaGVja21hcmsge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICBoZWlnaHQ6IDZyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWRhcmspO1xuICAgICAgICBhbmltYXRpb246IG9uYm9hcmRpbmctY2VsZWJyYXRlIHZhcigtLXN3cC1kdXJhdGlvbi1zbG93KSB2YXIoLS1zd3AtZWFzZS1vdXQpIGJvdGg7XG4gICAgfVxuXG4gICAgLy8gQSBxdWlldCwgbmV1dHJhbCB0aXAgbm90ZSAtIGRpc3RpbmN0IGZyb20gdGhlIGdyZWVuIGJlbmVmaXRzIGJveCBhbmQgbm9cbiAgICAvLyBsb25nZXIgYSByYXcgQm9vdHN0cmFwIGBhbGVydC1pbmZvYCBibHVlLlxuXG4gICAgLm9uYm9hcmRpbmctdGlwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMC01KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gUkVTUE9OU0lWRVxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuXG4gICAgICAgIC5vbmJvYXJkaW5nLXN0ZXAtY2FyZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0ZXAtY29ubmVjdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgb25ib2FyZGluZy1jZWxlYnJhdGUge1xuXG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBQ0NFU1NJQklMSVRZXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFJlZHVjZWQgbW90aW9uIGlzIG5vdCBvcHRpb25hbC4gVGhlIHByb2dyZXNzLWluZGljYXRvciBjcm9zcy1mYWRlcyBhcmVcbi8vIG5vbi12ZXN0aWJ1bGFyLCBidXQgdGhlIGNlbGVicmF0aW9uIHNjYWxlIGlzIGEgdHJhbnNmb3JtLCBzbyBpdCBpcyBkaXNhYmxlZFxuLy8gb3V0cmlnaHQgYW5kIHRoZSBmaW5hbCBzdGF0ZSBzaG93cyBpbnN0YW50bHkuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXG4gICAgLm9uYm9hcmRpbmctY29udGFpbmVyIHtcblxuICAgICAgICAuc3RlcC1udW1iZXIsXG4gICAgICAgIC5zdGVwLWxhYmVsLFxuICAgICAgICAuc3RlcC1jb25uZWN0b3Ige1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zdWNjZXNzLWNoZWNrbWFyayB7XG4gICAgICAgICAgICBhbmltYXRpb246IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gTW9uZXkgRGlzcGxheVxuICpcbiAqIFRoZSBzaWduYXR1cmUgY29tcG9uZW50IChERVNJR04ubWQgc2VjdGlvbiA1KS4gRXZlcnkgY3VycmVuY3kgdmFsdWUgaW4gdGhlXG4gKiBhcHBsaWNhdGlvbiByZW5kZXJzIHRocm91Z2ggYC5tb25leWA7IGl0IGlzIHRoZSBzaW5nbGUgc291cmNlIG9mIHRydXRoIGZvclxuICogbW9uZXkgZGlzcGxheSwgYW5kIHJhdyBge3sgYW1vdW50IH19YCByZW5kZXJpbmcgaXMgcHJvaGliaXRlZC5cbiAqXG4gKiBDb250cmFjdDpcbiAqICAgPHNwYW4gY2xhc3M9XCJtb25leVwiPlxuICogICAgIDxzcGFuIGNsYXNzPVwibW9uZXktY3VycmVuY3lcIj5VU0Q8L3NwYW4+XG4gKiAgICAgPHN0cm9uZyBjbGFzcz1cIm1vbmV5LWFtb3VudFwiPjEsMjM0LjU2PC9zdHJvbmc+XG4gKiAgIDwvc3Bhbj5cbiAqXG4gKiBNb2RpZmllcnMgKG9uIHRoZSBgLm1vbmV5YCByb290LCBjb21iaW5hYmxlKTpcbiAqICAgLm1vbmV5LS1wYWlkICAgICAgQW1vdW50IGluIEFBLXNhZmUgc3VjY2Vzcy4gT05MWSB2YWxpZCBhbG9uZ3NpZGUgYW5cbiAqICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQgXCJQYWlkXCIgbGFiZWwgKHRoZSBNb25leS1Db2xvciBSdWxlKS5cbiAqICAgLm1vbmV5LS1vdmVyZHVlICAgQW1vdW50IGluIEFBLXNhZmUgZGFuZ2VyLiBTYW1lIGxhYmVsbGluZyBydWxlLlxuICogICAubW9uZXktLXRvdGFsICAgICBXZWlnaHQgNjAwLCBhbW91bnQgb25lIHNpemUgc3RlcCB1cC5cbiAqICAgKG5vbmUpICAgICAgICAgICAgTmV1dHJhbCAtIHRoZSBkZWZhdWx0IGFuZCB0aGUgY29tbW9uIGNhc2UuXG4gKlxuICogVGhlIGNvbXBvbmVudCBuZXZlciBzZXRzIGl0cyBvd24gZm9udC1zaXplLiBJdCBpbmhlcml0cyBmcm9tIGNvbnRleHQsIHNvIHRoZVxuICogc2FtZSBtYXJrdXAgaXMgY29ycmVjdCBpbmxpbmUgaW4gYSB0YWJsZSBjZWxsLCBpbiBhIGhlYWRpbmcsIGFuZCBhdFxuICogYC5zdGF0LXZhbHVlYCBzY2FsZSBpbiB0aGUgZGFzaGJvYXJkIGhlcm8gdGlsZXMuIE9ubHkgYC5tb25leS0tdG90YWxgIHN0ZXBzXG4gKiB0aGUgYW1vdW50LCBhbmQgaXQgc3RlcHMgcmVsYXRpdmVseSBzbyB0aGUgcmVzdWx0IGlzIHJpZ2h0IGF0IGV2ZXJ5IGJhc2UuXG4gKi9cblxuLm1vbmV5IHtcbiAgICAvLyBpbmxpbmUtZmxleCByYXRoZXIgdGhhbiBwbGFpbiBpbmxpbmUsIGZvciB0d28gcmVhc29uczpcbiAgICAvLyAgMS4gVGhlIGdhcCBiZXR3ZWVuIGN1cnJlbmN5IGFuZCBhbW91bnQgaXMgZGV0ZXJtaW5pc3RpYyB3aGV0aGVyIG9yIG5vdFxuICAgIC8vICAgICB0aGUgZW1pdHRlZCBtYXJrdXAgaGFwcGVucyB0byBjYXJyeSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIHNwYW5zXG4gICAgLy8gICAgIChmbGV4IGRyb3BzIHdoaXRlc3BhY2Utb25seSBhbm9ueW1vdXMgYm94ZXMpLlxuICAgIC8vICAyLiBgYWxpZ24taXRlbXM6IGJhc2VsaW5lYCBrZWVwcyBhIHNpemUtc3RlcHBlZCBgLm1vbmV5LS10b3RhbGAgYW1vdW50XG4gICAgLy8gICAgIHNoYXJpbmcgYSBiYXNlbGluZSB3aXRoIGl0cyBjdXJyZW5jeSwgaW5zdGVhZCBvZiBjZW50cmluZyBhZ2FpbnN0IGl0LlxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgIC8vIE1vbmV5IGNsYXJpdHk6IGEgY3VycmVuY3kgY29kZSBtdXN0IG5ldmVyIGJlIG9ycGhhbmVkIGZyb20gaXRzIG51bWJlci5cbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgLy8gVGhlIFRhYnVsYXIgRmlndXJlcyBSdWxlIC0gYW1vdW50cyBhbGlnbiBpbiBjbGVhbiB2ZXJ0aWNhbCBjb2x1bW5zLlxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vIEN1cnJlbmN5IGNvZGUgb3Igc3ltYm9sLiBEaW1tZWQgcmVsYXRpdmUgdG8gdGhlIGFtb3VudCwgYnV0IGl0IGlzIG1lYW5pbmdmdWxcbi8vIHRleHQgcmF0aGVyIHRoYW4gZGVjb3JhdGlvbiwgc28gaXQgaG9sZHMgQUEgb24gZXZlcnkgc3VyZmFjZSBpbiB0aGUgc3lzdGVtLlxuXG4ubW9uZXktY3VycmVuY3kge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktY3VycmVuY3kpO1xufVxuXG4vLyBUaGUgYW1vdW50LiBXZWlnaHQgaXMgbm9ybWFsaXNlZCBoZXJlIHNvIHRoYXQgdGhlIFVBIGRlZmF1bHQgb2YgNzAwIG9uXG4vLyBgPHN0cm9uZz5gIGRvZXMgbm90IHByZS1lbXB0IHRoZSBgLm1vbmV5LS10b3RhbGAgc3RlcCB1cCB0byA2MDAuXG5cbi5tb25leS1hbW91bnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtbW9uZXktbmV1dHJhbCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1PRElGSUVSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBQYWlkLiBDb2xvdXIgaXMgYW1wbGlmaWNhdGlvbiBoZXJlLCBuZXZlciB0aGUgY2FycmllciBvZiBtZWFuaW5nIC0gYSBncmVlblxuLy8gYW1vdW50IHdpdGhvdXQgYW4gYWNjb21wYW55aW5nIFwiUGFpZFwiIGxhYmVsIGlzIGEgYnVnLCBub3QgYSBzdHlsZSBjaG9pY2UuXG5cbi5tb25leS0tcGFpZCAubW9uZXktYW1vdW50IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLW1vbmV5LXBhaWQpO1xufVxuXG4vLyBPdmVyZHVlLiBTYW1lIHJ1bGU6IGFsd2F5cyByZW5kZXJlZCB3aXRoIGFuIGV4cGxpY2l0IFwiT3ZlcmR1ZVwiIGxhYmVsLlxuXG4ubW9uZXktLW92ZXJkdWUgLm1vbmV5LWFtb3VudCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1tb25leS1vdmVyZHVlKTtcbn1cblxuLy8gVG90YWwuIEhlYXZpZXIsIGFuZCBvbmUgc2l6ZSBzdGVwIHVwIHJlbGF0aXZlIHRvIHRoZSBpbmhlcml0ZWQgY29udGV4dC5cbi8vIFRoZSBjdXJyZW5jeSBrZWVwcyBpdHMgaW5oZXJpdGVkIHdlaWdodCBzbyB0aGUgZGltbWVkLXByZWZpeCByZWxhdGlvbnNoaXBcbi8vIHN1cnZpdmVzIHRoZSBzdGVwIHVwLlxuXG4ubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogY2FsYygxZW0gKiB2YXIoLS1zd3AtbW9uZXktdG90YWwtc2NhbGUpKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xufVxuXG4vLyBBdCBkaXNwbGF5IHNpemUgdGhlIGN1cnJlbmN5IGNvZGUgaXMgZGltbWVkIGJ5IHNpemUgYXMgd2VsbCBhcyBieSBjb2xvdXI6IGF0IGFcbi8vIHNoYXJlZCBzaXplIGl0IGNvbXBldGVzIHdpdGggdGhlIGFtb3VudCBmb3IgYXR0ZW50aW9uIGl0IGhhcyBub3QgZWFybmVkLCBhbmRcbi8vIFwiVVNEIDEyMCw4ODIuMTlcIiBzaG91bGQgcmVhZCBhcyBhIG51bWJlciBjYXJyeWluZyBhIHVuaXQgcmF0aGVyIHRoYW4gYXMgdHdvXG4vLyBlcXVhbCB3b3Jkcy4gU2NvcGVkIHRvIGAtLXRvdGFsYCBkZWxpYmVyYXRlbHkuIEF0IGJvZHkgc2l6ZSAoYSB0YWJsZSByb3csIGFuXG4vLyBhY3Rpdml0eSBmZWVkKSB0aGUgc2FtZSByZWR1Y3Rpb24gd291bGQgcHV0IHRoZSBjb2RlIG5lYXIgMTBweCwgd2hpY2ggaXMgdGhlXG4vLyBsZWdpYmlsaXR5IHByb2JsZW0gcmF0aGVyIHRoYW4gdGhlIGZpeCwgc28gdGhlIGNvZGUgc3RheXMgZnVsbCBzaXplIHRoZXJlLlxuXG4ubW9uZXktLXRvdGFsIC5tb25leS1jdXJyZW5jeSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtbW9uZXktY3VycmVuY3ktc2NhbGUpO1xufVxuIiwiLyoqXG4gKiBTb2xpZEludm9pY2UgRGVzaWduIFN5c3RlbSAtIExheW91dCBJbmRleFxuICpcbiAqIExheW91dCBwYXR0ZXJuIHN0eWxlcyB0aGF0IGV4dGVuZCBUYWJsZXIvQm9vdHN0cmFwLlxuICogT25seSBhZGQgbGF5b3V0IGZpbGVzIGZvciBwYXR0ZXJucyBub3QgY292ZXJlZCBieSB0aGUgZnJhbWV3b3Jrcy5cbiAqXG4gKiBOb3RlOiBNb3N0IGxheW91dCBzdHlsaW5nIGNvbWVzIGZyb20gVGFibGVyIChwYWdlLXdyYXBwZXIsIHBhZ2UtaGVhZGVyLCBldGMuKVxuICogVGhpcyBmaWxlIGltcG9ydHMgb25seSBjdXN0b20gZXh0ZW5zaW9ucyB3aGVuIG5lZWRlZC5cbiAqL1xuXG4vLyBWZXJ0aWNhbCBzaWRlYmFyIHJlY29sb3Ig4oCUIGNvbnZlcnRzIFRhYmxlcidzIGRhcmsgc2xhdGUgc2lkZWJhciBpbnRvXG4vLyB0aGUgcXVpZXQgbGlnaHQgcGFuZWwgcHJlc2NyaWJlZCBieSBERVNJR04ubWQgKGdyYXktMTAwIGJlaGluZCB0aGUgYm9keSkuXG5AaW1wb3J0ICduYXZiYXItdmVydGljYWwnO1xuIiwiLyoqXG4gKiBTb2xpZEludm9pY2Ug4oCUIFZlcnRpY2FsIE5hdmJhciAoU2lkZWJhcilcbiAqXG4gKiBUYWJsZXIgc2hpcHMgYC5uYXZiYXItdmVydGljYWwubmF2YmFyLWRhcmtgIGFzIGEgaGVhdnkgc2xhdGUgcGFuZWwgKGdyYXktODAwKVxuICogdGhhdCBQUk9EVUNULm1kIG5hbWVzIGFzIHRoZSBBZG1pbkxURSBhbnRpLXJlZmVyZW5jZSB0aGUgcmV3cml0ZSBpcyBlc2NhcGluZy5cbiAqIFRoaXMgZmlsZSByZWNvbG9ycyB0aGUgc2lkZWJhciBvbmUgc2hhZGUgbGlnaHRlciAoZ3JheS03MDApIHNvIGl0IHN0aWxsXG4gKiBjYXJyaWVzIHByZXNlbmNlLCBidXQgdXNlcyB0aW50ZWQgbmV1dHJhbHMgYW5kIGEgZ3JlZW4tdGludGVkIGFjdGl2ZSBzdGF0ZVxuICogdG8gZGlmZmVyZW50aWF0ZSBpdCBmcm9tIGdlbmVyaWMgVGFibGVyIGFkbWluIG91dHB1dC5cbiAqXG4gKiBTZWxlY3RvciBzcGVjaWZpY2l0eSB0YXJnZXRzIGAubmF2YmFyLXZlcnRpY2FsYCBzbyBUYWJsZXIncyBtb2JpbGUtY29sbGFwc2UsXG4gKiBkcmF3ZXIsIGFuZCBkcm9wZG93biBydWxlcyBjb250aW51ZSB0byBhcHBseS5cbiAqL1xuXG4ubmF2YmFyLm5hdmJhci12ZXJ0aWNhbCxcbi5uYXZiYXIubmF2YmFyLXZlcnRpY2FsLm5hdmJhci1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS03MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0zMDApO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLXN3cC1ncmF5LTgwMCk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC8vIEJyYW5kOiBsb2dvICsgcHJvZHVjdCBuYW1lIGF0IHRoZSB0b3Agb2YgdGhlIHNpZGViYXIuXG5cbiAgICAubmF2YmFyLWJyYW5kIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kLWF1dG9kYXJrIHtcbiAgICAgICAgZmlsdGVyOiBub25lO1xuICAgIH1cblxuICAgIC8vIE5hdiBsaW5rIGRlZmF1bHQgc3RhdGUuXG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgICAgIC5uYXYtbGluay1pY29uLFxuICAgICAgICAubmF2LWxpbmstdGl0bGUge1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIb3ZlcjogbGlmdCB0byBhIHNsaWdodGx5IGxpZ2h0ZXIgc2xhdGUsIGJyaWdodGVyIHRleHQuXG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS02MDApO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEtleWJvYXJkIGZvY3VzIGhhbG8sIHBlciBUaGUgRm9jdXMgSGFsbyBSdWxlLlxuXG4gICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWN0aXZlIHJvdXRlOiB0aW50ZWQgYmFja2dyb3VuZCBwdWxsZWQgZnJvbSBUcnVzdCBHcmVlbiBmYW1pbHkuXG4gICAgLy8gTG9va3MgbGlrZSBhIHNvZnQgXCJidXR0b25cIiBvbiB0aGUgZGFyayBzbGF0ZSB3aXRob3V0IGFueSBzaWRlIHN0cmlwZS5cblxuICAgIC8vIFRhYmxlciBwYWludHMgdGhlIGFjdGl2ZSBpdGVtIHRocm91Z2ggYC5uYXYtaXRlbS5hY3RpdmUgPiAubmF2LWxpbmtgLCB3aGljaCBvdXRyYW5rcyBhIGJhcmVcbiAgICAvLyBgLm5hdi1saW5rLmFjdGl2ZWAgYW5kIHdvdWxkIG90aGVyd2lzZSBsZWF2ZSB0aGUgZGFyayBncmVlbiB0ZXh0IHNpdHRpbmcgb24gVGFibGVyJ3Mgb3duXG4gICAgLy8gZmFpbnQgb3ZlcmxheSwgc28gdGhlIHBpbGwgbWF0Y2hlcyB0aGF0IHNoYXBlIHRvby5cblxuICAgIC5uYXYtbGluay5hY3RpdmUsXG4gICAgLm5hdmJhci1uYXYgLm5hdi1pdGVtLmFjdGl2ZSA+IC5uYXYtbGluay5hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcblxuICAgICAgICAubmF2LWxpbmstaWNvbixcbiAgICAgICAgLm5hdi1saW5rLXRpdGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBsYWJlbHMgKGlmIGFueSkgc2l0IHF1aWV0bHkuXG5cbiAgICAubmF2LXN1YnRpdGxlLFxuICAgIC5uYXYtaGVhZGVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1ncmF5LTQwMCk7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICB9XG5cbiAgICAvLyBEcm9wZG93biBjaGV2cm9ucyBtYXRjaCBzZWNvbmRhcnkgdGV4dC5cblxuICAgIC5uYXYtbGluay10b2dnbGUsXG4gICAgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWdyYXktNDAwKTtcbiAgICB9XG5cbiAgICAvLyBOZXN0ZWQgZHJvcGRvd24gbWVudXMgaW5zaWRlIHRoZSBzaWRlYmFyIGxpZnQgb250byBhIHBhcGVyIHN1cmZhY2Ugc29cbiAgICAvLyBzdWJtZW51IGNvbnRlbnQgcmVhZHMgbGlrZSBjb250ZW50LCBub3QgbmF2IGNocm9tZS5cblxuICAgIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1tZCk7XG5cbiAgICAgICAgLmRyb3Bkb3duLWl0ZW0ge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICAgICAgICAgLy8gVGFibGVyIGNvbG91cnMgYC5uYXYtbGluay1pY29uYCBmcm9tIGl0cyBvd24gdG9rZW4sIHdoaWNoIGRlZmF1bHRzIHRvIGEgNTAlIHRpbnRcbiAgICAgICAgICAgIC8vIG9mIHRoZSBzaWRlYmFyJ3Mgd2hpdGUgbmF2IGNvbG91ciDigJQgaW52aXNpYmxlIG9uIHRoaXMgcGFwZXIgc3VyZmFjZS4gRm9sbG93aW5nIHRoZVxuICAgICAgICAgICAgLy8gaXRlbSdzIG93biBjb2xvdXIga2VlcHMgdGhlIGljb24gbGVnaWJsZSBpbiBldmVyeSBzdGF0ZS5cbiAgICAgICAgICAgIC0tdGJsci1uYXYtbGluay1pY29uLWNvbG9yOiBjdXJyZW50Y29sb3I7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3Atc3VyZmFjZS1ob3Zlcik7XG4gICAgICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENvbGxhcHNlZCBleHBhbmQgdG9nZ2xlIChoYW1idXJnZXIgb24gbW9iaWxlKS5cblxuICAgIC5uYXZiYXItdG9nZ2xlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZ3JheS0yMDApO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ncmF5LTYwMCk7XG5cbiAgICAgICAgJjpmb2N1cy12aXNpYmxlIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gTW9iaWxlIGhvcml6b250YWwgbmF2YmFyIChyZW5kZXJlZCB3aGVuIHRoZSB2ZXJ0aWNhbCBkcmF3ZXIgY29sbGFwc2VzKS5cblxuLm5hdmJhci5uYXZiYXItdmVydGljYWwubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLWNvbGxhcHNlIHtcbiAgICBAbWVkaWEgKHdpZHRoIDwgOTkycHgpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNzAwKTtcbiAgICB9XG59XG5cbi8vIFF1b3RlL2F2b2lkOiB3aGVuIHRoZSBzeXN0ZW0gZW5hYmxlcyBkYXJrIG1vZGUgcHJlZmVyZW5jZSwgbGVhdmUgdGhlIGRhcmtcbi8vIHRoZW1lIHRvIFRhYmxlci4gTGlnaHQgb3ZlcnJpZGVzIHNjb3BlIG9ubHkgdG8gZGVmYXVsdCB0aGVtZS5cbkBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHtcblxuICAgIFtkYXRhLWJzLXRoZW1lPVwiZGFya1wiXSAubmF2YmFyLm5hdmJhci12ZXJ0aWNhbC5uYXZiYXItZGFyayB7XG4gICAgICAgIC8vIEludGVudGlvbmFsbHkgZW1wdHk6IGRlZmVyIHRvIFRhYmxlciBkYXJrIGRlZmF1bHRzIHVudGlsIFNvbGlkSW52b2ljZVxuICAgICAgICAvLyBzaGlwcyBhIGRvY3VtZW50ZWQgZGFyayB0aGVtZS5cbiAgICB9XG59XG4iLCIvKipcbiAqIFNvbGlkSW52b2ljZSBEZXNpZ24gU3lzdGVtIC0gRm9ybSBTdHlsZXNcbiAqXG4gKiBHZW5lcmljIGZvcm0gY29tcG9uZW50IHN0eWxlcyBmb3IgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi5cbiAqIFVzZXMgZGVzaWduIHN5c3RlbSB0b2tlbnMgZm9yIGNvbnNpc3RlbnQgc3R5bGluZy5cbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIENPTlRST0wgQkFTRSBTVFlMRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbCxcbi5mb3JtLXNlbGVjdCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLWlucHV0LXJhZGl1cyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtaW5wdXQtYm9yZGVyKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3AtaW5wdXQtcGFkZGluZy15KSB2YXIoLS1zd3AtaW5wdXQtcGFkZGluZy14KTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWlucHV0LWZvY3VzLWJvcmRlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1pbnB1dC1mb2N1cy1yaW5nKTtcbiAgICB9XG5cbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgfVxufVxuXG4vLyBUb20gU2VsZWN0IG1hcmtzIGEgY29udHJvbCB0aGF0IGhvbGRzIGEgc2VsZWN0aW9uIHdpdGggYC5mdWxsYCwgYW5kIFRhYmxlciB0aW50cyB0aG9zZSB3aXRoXG4vLyB0aGUgcGFnZSBiYWNrZ3JvdW5kIOKAlCB3aGljaCByZWFkcyBhcyBhIGRpc2FibGVkIGZpZWxkIG5leHQgdG8gdGhlIHdoaXRlIGlucHV0cyBiZXNpZGUgaXQuXG4vLyBBIHNlbGVjdCB0aGF0IGhhcyBhbiBhbnN3ZXIgaXMgbm90IGEgZGlmZmVyZW50IGtpbmQgb2YgY29udHJvbCB0byBvbmUgdGhhdCBkb2VzIG5vdC5cblxuLnRzLXdyYXBwZXIuZnVsbCAudHMtY29udHJvbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXN1cmZhY2UpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIExBQkVMU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgLy8gUmVxdWlyZWQgaW5kaWNhdG9yXG5cbiAgICAmLnJlcXVpcmVkOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcgKic7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gRklFTEQgV1JBUFBFUlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1maWVsZCB7XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3cgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmlucHV0LWdyb3VwLXRleHQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEhFTFAgVEVYVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1oZWxwLFxuLmZvcm0tdGV4dCxcbi5mb3JtLWhlbHAtdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc3dwLWxlYWRpbmctbm9ybWFsKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRPR0dMRSBTV0lUQ0ggKENoZWNrYm94IGFzIFN3aXRjaClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMy01KSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLWdyYXktNTApO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjMpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICB9XG59XG5cbi5mb3JtLXN3aXRjaC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5mb3JtLWNoZWNrLWlucHV0IHtcbiAgICAgICAgd2lkdGg6IDIuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTMwMCk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmNoZWNrZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtLWNoZWNrLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LW1lZGl1bSk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgICAgICAgZmxleDogMTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIElOUFVUIFdJVEggSUNPTiAoSW5wdXQgR3JvdXBzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW5wdXQtaWNvbi1ncm91cCB7XG5cbiAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1ncmF5LTUwKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1jb250cm9sIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuXG4gICAgICAgICAgICB+IC5pbnB1dC1ncm91cC10ZXh0LFxuICAgICAgICAgICAgKyAuaW5wdXQtZ3JvdXAtdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXaGVuIGljb24gaXMgb24gdGhlIGxlZnRcblxuICAgIC5pbnB1dC1ncm91cC10ZXh0OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuXG4gICAgICAgICsgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVkFMSURBVElPTiBCVVRUT04gSU4gSU5QVVQgR1JPVVBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmlucHV0LXZhbGlkYXRlLWdyb3VwIHtcblxuICAgIC5idG4tdmFsaWRhdGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gR1JPVVBTIChOZXN0ZWQvR3JvdXBlZCBGaWVsZHMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLWdyb3VwLWNhcmQge1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG5cbiAgICAuZm9ybS1ncm91cC1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWJvZHktY29sb3IpO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxuXG4gICAgLmZvcm0tZ3JvdXAtY29udGVudCB7XG5cbiAgICAgICAgLm1iLTM6bGFzdC1jaGlsZCxcbiAgICAgICAgLm1iLTQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERFJFU1MgV0lER0VUXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5hZGRyZXNzLXdpZGdldCB7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0pO1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZPUk0gVkFMSURBVElPTiBTVEFURVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLWludmFsaWQge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgcGFkZGluZy1yaWdodDogY2FsYygxLjVlbSArIDAuNzVyZW0pO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMTIgMTInIHdpZHRoPScxMicgaGVpZ2h0PScxMicgZmlsbD0nbm9uZScgc3Ryb2tlPSclMjNlZjQ0NDQnJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8lM2UlM2NwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nOC4yJyByPScuNicgZmlsbD0nJTIzZWY0NDQ0JyBzdHJva2U9J25vbmUnLyUzZSUzYy9zdmclM2VcIik7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCBjYWxjKDAuMzc1ZW0gKyAwLjE4NzVyZW0pIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNhbGMoMC43NWVtICsgMC4zNzVyZW0pIGNhbGMoMC43NWVtICsgMC4zNzVyZW0pO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4uZm9ybS1jb250cm9sLmlzLXZhbGlkLFxuLmZvcm0tc2VsZWN0LmlzLXZhbGlkIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcblxuICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYigxNiAxODUgMTI5IC8gMTUlKTtcbiAgICB9XG59XG5cbi5pbnZhbGlkLWZlZWRiYWNrIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEtNSk7XG59XG5cbi52YWxpZC1mZWVkYmFjayB7XG4gICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMS01KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklMRSBVUExPQUQgLyBEUk9QWk9ORSBTVFlMSU5HXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5maWxlLXVwbG9hZC1hcmVhIHtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmOmhvdmVyLFxuICAgICYuZHJhZ292ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnktbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLnVwbG9hZC1pY29uIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LWxpZ2h0KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC51cGxvYWQtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIH1cblxuICAgIC51cGxvYWQtaGludCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyBTeW1mb255IFVYIERyb3B6b25lIHN0eWxpbmdcblxuLmRyb3B6b25lIHtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWdyYXktMzAwKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuXG4gICAgJjpob3ZlcixcbiAgICAmLmRyb3B6b25lLWRyYWdvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VDVElPTiBUSVRMRVMgKEZvciBvcmdhbml6ZWQgZm9ybXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5mb3JtLXNlY3Rpb24tdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbWQpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC1ib2R5LWNvbG9yKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuXG4gICAgc3ZnLFxuICAgIGkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGT1JNIEFDVElPTlMgKENhcmQgZm9vdGVyIHdpdGggYnV0dG9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTdGFuZGFyZCBGb3JtIEFjdGlvbnMgUGF0dGVybjpcbiAqXG4gKiDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAqIOKUgiBbQ2FuY2VsIChnaG9zdCldICAgICAgICAgICAgICAgICAgICAgIFtTYXZlIChwcmltYXJ5ICsgaWNvbild4pSCXG4gKiDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJhcbiAqXG4gKiAtIENhbmNlbDogTGVmdCBzaWRlIE9SIGdob3N0IHN0eWxlXG4gKiAtIFNhdmU6IFJpZ2h0IHNpZGUsIHByaW1hcnkgc3R5bGUsIHdpdGggc2F2ZSBpY29uXG4gKi9cblxuLmZvcm0tYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpIHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuXG4gICAgLy8gV2hlbiB1c2VkIGluIGEgY2FyZCBmb290ZXJcblxuICAgIC5jYXJkLWZvb3RlciAmIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci10b3A6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gU3ByZWFkIGJ1dHRvbnMgKGNhbmNlbCBsZWZ0LCBzYXZlIHJpZ2h0KVxuXG4gICAgJi5mb3JtLWFjdGlvbnMtc3ByZWFkIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5MSU5FIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0taW5saW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhPUklaT05UQUwgRk9STVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZm9ybS1ob3Jpem9udGFsIHtcblxuICAgIC5mb3JtLWdyb3VwLFxuICAgIC5tYi0zLFxuICAgIC5tYi00IHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyMDBweCAxZnI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMi01KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG5cbiAgICAgICAgQG1lZGlhICh3aWR0aCA8PSA3NjhweCkge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01QQUNUIEZPUk1cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmZvcm0tY29tcGFjdCB7XG5cbiAgICAubWItMyxcbiAgICAubWItNCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgfVxuXG4gICAgLmZvcm0tbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0xPQkFMIEJVVFRPTiBFTkhBTkNFTUVOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gVGFibGVyJ3MgLmJ0biBhbHJlYWR5IHNldHMgZGlzcGxheTogaW5saW5lLWZsZXggYW5kIGFsaWduLWl0ZW1zOiBjZW50ZXIsXG4vLyBidXQgZG9lcyBub3Qgc2V0IGdhcC4gQWRkIGNvbnNpc3RlbnQgc3BhY2luZyBiZXR3ZWVuIGljb24gYW5kIHRleHQuXG5cbi5idG4ge1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBJQ09OIEJVVFRPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmJ0bi1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgIGhlaWdodDogMThweDtcbiAgICB9XG59XG5cbi5idG4tZ2hvc3QtZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWRhbmdlcik7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcik7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLWRhbmdlcik7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUQUIgTkFWSUdBVElPTiBJTiBDQVJEIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gUmVkdWNlIGZvbnQgc2l6ZSBmb3IgdGFicyBpbiBjYXJkIGhlYWRlcnNcblxuLmNhcmQtaGVhZGVyLXRhYnMgLm5hdi1saW5rIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIEFESlVTVE1FTlRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEJvb3RzdHJhcCA1IGRvZXMgbm90IGluY2x1ZGUgYSA1MDAtd2VpZ2h0IHV0aWxpdHk7IGFkZCBpdCBoZXJlIGFzIGEgc2hhcmVkIHV0aWxpdHkuXG5cbi5mdy1tZWRpdW0ge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDAgIWltcG9ydGFudDtcbn1cblxuQG1lZGlhICh3aWR0aCA8PSA1NzZweCkge1xuXG4gICAgLmZvcm0tc3dpdGNoLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIH1cblxuICAgIC5mb3JtLXN3aXRjaC13cmFwcGVyIHtcblxuICAgICAgICAuZm9ybS1jaGVjay1pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogMi4yNXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS4xMjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1ncm91cC1jYXJkIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5mb3JtLWFjdGlvbnMge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIi8qKlxuICogQ29tcGFueSBQYWdlcyBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIGNvbXBhbnkgc2VsZWN0aW9uIGFuZCBjcmVhdGlvbiBwYWdlc1xuICogQWxsIHN0eWxlcyBhcmUgc2NvcGVkIHRvIC5jb21wYW55LXNlbGVjdC1wYWdlIGFuZCAuY29tcGFueS1jcmVhdGUtcGFnZVxuICogdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgcGFnZXMuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIFN0eWxlcyAoYm90aCBzZWxlY3QgYW5kIGNyZWF0ZSBwYWdlcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktc2VsZWN0LXBhZ2UsXG4uY29tcGFueS1jcmVhdGUtcGFnZSB7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLy8gQXBwbGljYXRpb24gSGVhZGVyXG5cbiAgICAuY29tcGFueS1wYWdlLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlKTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LXhzKTtcbiAgICB9XG5cbiAgICAuY29tcGFueS1wYWdlLWxvZ28ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1wYWdlLWJyYW5kIHtcblxuICAgICAgICBoMSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUGFnZSBpbnRybyBzZWN0aW9uICh1c2VkIGJ5IGJvdGggc2VsZWN0IGFuZCBjcmVhdGUgcGFnZXMpXG5cbiAgICAuY29tcGFueS1wYWdlLWludHJvIHtcblxuICAgICAgICBoMiB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjc1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmF2YXRhci1tZCB7XG4gICAgICAgIHdpZHRoOiAyLjVyZW07XG4gICAgICAgIGhlaWdodDogMi41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci1sZyB7XG4gICAgICAgIHdpZHRoOiAzLjVyZW07XG4gICAgICAgIGhlaWdodDogMy41cmVtO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmF2YXRhci0yeGwge1xuICAgICAgICB3aWR0aDogNHJlbTtcbiAgICAgICAgaGVpZ2h0OiA0cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLmF2YXRhci14bCB7XG4gICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICBoZWlnaHQ6IDVyZW07XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYXZhdGFyLWluaXRpYWxzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICB9XG5cbiAgICAuZm9ybS1oaW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLy8gUmVzcG9uc2l2ZSBhZGp1c3RtZW50c1xuICAgIEBtZWRpYSAod2lkdGggPD0gNzY3Ljk4cHgpIHtcblxuICAgICAgICAuYXZhdGFyLWxnIHtcbiAgICAgICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAyNHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5hdmF0YXItMnhsIHtcbiAgICAgICAgICAgIHdpZHRoOiAzcmVtO1xuICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmgyLCBoMiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29tcGFueSBTZWxlY3Rpb24gUGFnZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29tcGFueS1zZWxlY3QtcGFnZSB7XG4gICAgLy8gTWFpbiBDYXJkIENvbnRhaW5lclxuXG4gICAgLmNhcmQuc2hhZG93LXNtIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZykgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgfVxuXG4gICAgLy8gQ29tcGFueSBDYXJkc1xuXG4gICAgLmNhcmQtY29tcGFueSB7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWFsbCk7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3cteGwpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG5cbiAgICAgICAgICAgIC5jb21wYW55LWFycm93IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaDMge1xuICAgICAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY29tcGFueS1hdmF0YXIge1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICAuYXZhdGFyIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIHdpdGggbG9nbyBpbWFnZVxuXG4gICAgICAgIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2YXRhciB3aXRoIGluaXRpYWxzIC0gZm9yY2Ugc29saWQgcHJpbWFyeSBiYWNrZ3JvdW5kXG5cbiAgICAgICAgLmF2YXRhci5iZy1wcmltYXJ5IHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZhdGFyIGluaXRpYWxzIHRleHQgLSBmb3JjZSB3aGl0ZSBjb2xvclxuXG4gICAgICAgIC5hdmF0YXItaW5pdGlhbHMsXG4gICAgICAgIC5hdmF0YXIuYmctcHJpbWFyeSBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1pbnZlcnNlKSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wYW55LWFycm93IHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1zd3AtZHVyYXRpb24tYmFzZSkgdmFyKC0tc3dwLWVhc2UtaW4tb3V0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm1pbi13LTAge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIENvbXBhbnkgQ2FyZFxuXG4gICAgLmNhcmQtY3JlYXRlLWNvbXBhbnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDIpIDEwMCUpO1xuICAgICAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIHRyYW5zaXRpb246IHZhcigtLXN3cC10cmFuc2l0aW9uLWFsbCk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tc3dwLXN1Y2Nlc3MtcmdiKSwgMC4wNCkgMTAwJSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudy1tZC1hdXRvIHtcbiAgICAgICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBAbWVkaWEgKHdpZHRoID49IDc2OHB4KSB7XG5cbiAgICAgICAgLnctbWQtYXV0byB7XG4gICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb21wYW55IENyZWF0aW9uIFBhZ2Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNvbXBhbnktY3JlYXRlLXBhZ2Uge1xuXG4gICAgLmZvcm0tc21vb3RoIHtcblxuICAgICAgICAuZm9ybS1jb250cm9sOmZvY3VzLFxuICAgICAgICAuZm9ybS1zZWxlY3Q6Zm9jdXMge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAwLjI1cmVtIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1sZyk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAuYWxlcnQge1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgJi5hbGVydC1pbmZvIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4wOCk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEodmFyKC0tc3dwLWluZm8tcmdiKSwgMC4yKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWxlcnQtd2FybmluZyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC13YXJuaW5nLXJnYiksIDAuMDgpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC13YXJuaW5nLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFsZXJ0LXN1Y2Nlc3Mge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA4KTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbiAgICB9XG59XG4iLCIvKipcbiAqIFNldHRpbmdzIFBhZ2UgU3R5bGVzXG4gKiBPbmx5IGN1c3RvbSBzdHlsZXMgdGhhdCBjYW4ndCBiZSBhY2hpZXZlZCB3aXRoIEJvb3RzdHJhcC9UYWJsZXIgdXRpbGl0aWVzXG4gKi9cblxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXR0aW5ncyBQYWdlIENvbnRhaW5lciAtIE1heC13aWR0aCBjZW50ZXJpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnNldHRpbmdzLXBhZ2Uge1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IDJyZW07XG59XG5cbi8vIE1vYmlsZTogaG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFic1xuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAuc2V0dGluZ3MtcGFnZSA+IC5uYXYtdW5kZXJsaW5lIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xcmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0xcmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG5cbiAgICAgICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5uYXYtaXRlbSB7XG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2V0dGluZ3MgQ2FyZCAtIHBhcGVyLW9uLWRlc2sgc3VyZmFjZSBwZXIgZGVzaWduIHN5c3RlbVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtY29udGVudC1jYXJkIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuXG4gICAgPiAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtdXAobWQpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS04KSB2YXIoLS1zd3Atc3BhY2UtOCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgPiAuY2FyZC1mb290ZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKG1kKSB7XG4gICAgICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCkgdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBibG9ja3MgaW5zaWRlIHRoZSBjYXJkIHVzZSBsaWdodGVyIGRpdmlkZXJzIHNvIHRoZSBwYWdlIHJlYWRzIGFzXG4gICAgLy8gYSBzaW5nbGUgcXVpZXQgc3VyZmFjZSwgbm90IGZpdmUgc3RhY2tlZCBjYXJkcy5cblxuICAgIC5jYXJkLWJvZHkgPiAuYm9yZGVyLWJvdHRvbSB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLXN3cC1ib3JkZXItbGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLy8gU2VjdGlvbiBoZWFkaW5nOiBtYXRjaCB0aGUgZGVzaWduIHN5c3RlbSB0aXRsZSBzY2FsZSBhbmQgbGV0IHRoZSBpY29uXG4gICAgLy8gYmUgYSBzbGF0ZSBhY2NlbnQgcmF0aGVyIHRoYW4gYSBmaWZ0aCBncmVlbiBlbGVtZW50IG9uIHRoZSBwYWdlLlxuXG4gICAgLmNhcmQtYm9keSBoMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtbGcpO1xuICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuXG4gICAgICAgID4gc3ZnIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXIgcGFyYWdyYXBocyBzaXQgdW5kZXIgaGVhZGluZ3M7IGNhcCB0aGVpciByZWFkaW5nIHdpZHRoLlxuXG4gICAgLmNhcmQtYm9keSBoMyArIHAudGV4dC1tdXRlZCB7XG4gICAgICAgIG1heC13aWR0aDogNjVjaDtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvZ28gVXBsb2FkIC0gQ3VzdG9tIGRyb3B6b25lIHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmxvZ28tdXBsb2FkLWNhcmQge1xuXG4gICAgLmxvZ28tcHJldmlldy1mcmFtZSB7XG4gICAgICAgIHdpZHRoOiA4MHB4O1xuICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmRyb3B6b25lIHtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkICNjYmQ1ZTE7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcblxuICAgICAgICAmOmhvdmVyLFxuICAgICAgICAmLmRyb3B6b25lLWRyYWdvdmVyIHtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGFuZ2VyIFpvbmUgLSBzZXJpb3VzLCBub3QgdGhlYXRyaWNhbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uc2V0dGluZ3MtZGFuZ2VyLXpvbmUgLmNhcmQge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHRlcikgIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLWRhbmdlci1saWdodCkgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS02KTtcblxuICAgICAgICAuY2FyZC10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSkgdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtYmFzZSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWxldGUgQ29tcGFueSBNb2RhbCAtIEVuaGFuY2VkIHN0eWxpbmdcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuI2RlbGV0ZUNvbXBhbnlNb2RhbCB7XG5cbiAgICAubW9kYWwtY29udGVudCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDI1JSk7XG4gICAgfVxuXG4gICAgLmZvbnQtbW9ub3NwYWNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjJmMjtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEN1c3RvbSBGaWVsZHMgLSBSZW9yZGVyYWJsZSBsaXN0XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGQtbGlzdCB7XG5cbiAgICAuY3VzdG9tLWZpZWxkLXJvdyB7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTIwbXMgZWFzZTtcblxuICAgICAgICAmOmhvdmVyIC5jdXN0b20tZmllbGQtaGFuZGxlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10YmxyLWJvZHktY29sb3IsICMxZTI5M2IpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zb3J0YWJsZS1naG9zdCB7XG4gICAgICAgICAgICBvcGFjaXR5OiAwLjQ7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiwgOTkgMTAyIDI0MSksIDAuMDYpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zb3J0YWJsZS1jaG9zZW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IsIDk5IDEwMiAyNDEpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jdXN0b20tZmllbGQtaGFuZGxlIHtcbiAgICAgICAgY3Vyc29yOiBncmFiO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tdGJsci1tdXRlZCwgIzk0YTNiOCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuXG4gICAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgICAgIGN1cnNvcjogZ3JhYmJpbmc7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFByaW50IFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgcHJpbnQge1xuXG4gICAgLnNldHRpbmdzLXBhZ2Uge1xuXG4gICAgICAgIC5uYXYtdW5kZXJsaW5lLFxuICAgICAgICAuc2V0dGluZ3MtZGFuZ2VyLXpvbmUsXG4gICAgICAgIC5jYXJkLWZvb3RlciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlc2lnbiB0ZW1wbGF0ZSBwaWNrZXIgKFNldHRpbmdzID4gRGVzaWduKVxuLy8gU2VsZi1jb250YWluZWQ6IGRvZXMgbm90IHJlbHkgb24gVGFibGVyJ3MgZm9ybS1pbWFnZWNoZWNrIGNvbXBvbmVudC4gVGhlXG4vLyByYWRpbyBpcyB2aXN1YWxseSBoaWRkZW4gYW5kIHRvZ2dsZWQgdGhyb3VnaCBpdHMgd3JhcHBpbmcgPGxhYmVsPjsgdGhlXG4vLyBzZWxlY3RlZCBzdGF0ZSBzaG93cyBhcyBhIHByaW1hcnkgYm9yZGVyIG9uIHRoZSBjYXJkIHBsdXMgYSBjaGVjayBiYWRnZS5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLnRlbXBsYXRlLXBpY2tlciB7XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLWNhcmQge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG4gICAgICAgICY6aGFzKC50ZW1wbGF0ZS1waWNrZXItaW5wdXQ6Y2hlY2tlZCkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS10YmxyLXByaW1hcnksICMyMDZiYzQpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEodmFyKC0tdGJsci1wcmltYXJ5LXJnYiwgMzIsIDEwNywgMTk2KSwgMC4yNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhhcygudGVtcGxhdGUtcGlja2VyLWlucHV0OmZvY3VzLXZpc2libGUpIHtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKHZhcigtLXRibHItcHJpbWFyeS1yZ2IsIDMyLCAxMDcsIDE5NiksIDAuNSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIC8vIFZpc3VhbGx5IGhpZGRlbiwgYnV0IHN0aWxsIGZvcm0tc3VibWl0dGFibGUgYW5kIGZvY3VzYWJsZTsgY2xpY2tzIG9uXG4gICAgLy8gdGhlIGxhYmVsICh0aHVtYm5haWwpIHRvZ2dsZSBpdCBuYXRpdmVseS5cblxuICAgIC50ZW1wbGF0ZS1waWNrZXItaW5wdXQge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgIGhlaWdodDogMXB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci10aHVtYiB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBhc3BlY3QtcmF0aW86IDQgLyAzO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10YmxyLWJnLXN1cmZhY2Utc2Vjb25kYXJ5LCAjZjFmNWY5KTtcblxuICAgICAgICBpZnJhbWUge1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHdpZHRoOiA0MDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiA0MDAlO1xuICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcblxuICAgICAgICAgICAgLy8gVGhlIGlmcmFtZSBtdXN0IG5ldmVyIHN3YWxsb3cgY2xpY2tzIG1lYW50IGZvciB0aGUgbGFiZWwuXG4gICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGJhZGdlIGluIHRoZSB0aHVtYm5haWwgY29ybmVyLCBvbmx5IHdoaWxlIHNlbGVjdGVkLlxuXG4gICAgLnRlbXBsYXRlLXBpY2tlci1jaGVjayB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwLjVyZW07XG4gICAgICAgIHJpZ2h0OiAwLjVyZW07XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB3aWR0aDogMS43NXJlbTtcbiAgICAgICAgaGVpZ2h0OiAxLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRibHItcHJpbWFyeSwgIzIwNmJjNCk7XG4gICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiKDE1IDIzIDQyIC8gMjUlKTtcbiAgICB9XG5cbiAgICAudGVtcGxhdGUtcGlja2VyLW9wdGlvbjpoYXMoLnRlbXBsYXRlLXBpY2tlci1pbnB1dDpjaGVja2VkKSAudGVtcGxhdGUtcGlja2VyLWNoZWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAmLnRlbXBsYXRlLXBpY2tlci1kaXNhYmxlZCB7XG5cbiAgICAgICAgLnRlbXBsYXRlLXBpY2tlci1vcHRpb24ge1xuICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC50ZW1wbGF0ZS1waWNrZXItdGh1bWIge1xuICAgICAgICAgICAgb3BhY2l0eTogMC42O1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLy8gQnJlYWtwb2ludCB2aWV3cG9ydCBzaXplcyBhbmQgbWVkaWEgcXVlcmllcy5cbi8vXG4vLyBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb20gc21hbGwgdG8gbGFyZ2U6XG4vL1xuLy8gICAgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweClcbi8vXG4vLyBUaGUgbWFwIGRlZmluZWQgaW4gdGhlIGAkZ3JpZC1icmVha3BvaW50c2AgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG5cbi8vIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20pXG4vLyAgICBtZFxuLy8gICAgPj4gYnJlYWtwb2ludC1uZXh0KHNtLCAoeHM6IDAsIHNtOiA1NzZweCwgbWQ6IDc2OHB4LCBsZzogOTkycHgsIHhsOiAxMjAwcHgsIHh4bDogMTQwMHB4KSlcbi8vICAgIG1kXG4vLyAgICA+PiBicmVha3BvaW50LW5leHQoc20sICRicmVha3BvaW50LW5hbWVzOiAoeHMgc20gbWQgbGcgeGwgeHhsKSlcbi8vICAgIG1kXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzLCAkYnJlYWtwb2ludC1uYW1lczogbWFwLWtleXMoJGJyZWFrcG9pbnRzKSkge1xuICAkbjogaW5kZXgoJGJyZWFrcG9pbnQtbmFtZXMsICRuYW1lKTtcbiAgQGlmIG5vdCAkbiB7XG4gICAgQGVycm9yIFwiYnJlYWtwb2ludCBgI3skbmFtZX1gIG5vdCBmb3VuZCBpbiBgI3skYnJlYWtwb2ludHN9YFwiO1xuICB9XG4gIEByZXR1cm4gaWYoJG4gPCBsZW5ndGgoJGJyZWFrcG9pbnQtbmFtZXMpLCBudGgoJGJyZWFrcG9pbnQtbmFtZXMsICRuICsgMSksIG51bGwpO1xufVxuXG4vLyBNaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGguIE51bGwgZm9yIHRoZSBzbWFsbGVzdCAoZmlyc3QpIGJyZWFrcG9pbnQuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1taW4oc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgNTc2cHhcbkBmdW5jdGlvbiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBtYXAtZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtaW4gIT0gMCwgJG1pbiwgbnVsbCk7XG59XG5cbi8vIE1heGltdW0gYnJlYWtwb2ludCB3aWR0aC5cbi8vIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZlxuLy8gYG1pbi1gIGFuZCBgbWF4LWAgcHJlZml4ZXMgYW5kIHZpZXdwb3J0cyB3aXRoIGZyYWN0aW9uYWwgd2lkdGhzLlxuLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heFxuLy8gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmsgYXJvdW5kIGEgY3VycmVudCByb3VuZGluZyBidWcgaW4gU2FmYXJpLlxuLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgyNjFcbi8vXG4vLyAgICA+PiBicmVha3BvaW50LW1heChtZCwgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICA3NjcuOThweFxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkbmFtZSk7XG4gIEByZXR1cm4gaWYoJG1heCBhbmQgJG1heCA+IDAsICRtYXggLSAuMDIsIG51bGwpO1xufVxuXG4vLyBSZXR1cm5zIGEgYmxhbmsgc3RyaW5nIGlmIHNtYWxsZXN0IGJyZWFrcG9pbnQsIG90aGVyd2lzZSByZXR1cm5zIHRoZSBuYW1lIHdpdGggYSBkYXNoIGluIGZyb250LlxuLy8gVXNlZnVsIGZvciBtYWtpbmcgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vL1xuLy8gICAgPj4gYnJlYWtwb2ludC1pbmZpeCh4cywgKHhzOiAwLCBzbTogNTc2cHgsIG1kOiA3NjhweCwgbGc6IDk5MnB4LCB4bDogMTIwMHB4LCB4eGw6IDE0MDBweCkpXG4vLyAgICBcIlwiICAoUmV0dXJucyBhIGJsYW5rIHN0cmluZylcbi8vICAgID4+IGJyZWFrcG9pbnQtaW5maXgoc20sICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCwgeHhsOiAxNDAwcHgpKVxuLy8gICAgXCItc21cIlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaW5maXgoJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgQHJldHVybiBpZihicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSA9PSBudWxsLCBcIlwiLCBcIi0jeyRuYW1lfVwiKTtcbn1cblxuLy8gTWVkaWEgb2YgYXQgbGVhc3QgdGhlIG1pbmltdW0gYnJlYWtwb2ludCB3aWR0aC4gTm8gcXVlcnkgZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LlxuLy8gTWFrZXMgdGhlIEBjb250ZW50IGFwcGx5IHRvIHRoZSBnaXZlbiBicmVha3BvaW50IGFuZCB3aWRlci5cbkBtaXhpbiBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46IGJyZWFrcG9pbnQtbWluKCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1pbiB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgb2YgYXQgbW9zdCB0aGUgbWF4aW11bSBicmVha3BvaW50IHdpZHRoLiBObyBxdWVyeSBmb3IgdGhlIGxhcmdlc3QgYnJlYWtwb2ludC5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBhbmQgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1kb3duKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCRuYW1lLCAkYnJlYWtwb2ludHMpO1xuICBAaWYgJG1heCB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gTWVkaWEgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocy5cbi8vIE1ha2VzIHRoZSBAY29udGVudCBhcHBseSBiZXR3ZWVuIHRoZSBtaW4gYW5kIG1heCBicmVha3BvaW50c1xuQG1peGluIG1lZGlhLWJyZWFrcG9pbnQtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cCgkbG93ZXIsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtaW4gPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKCR1cHBlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8gTWVkaWEgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzLlxuLy8gTm8gbWluaW11bSBmb3IgdGhlIHNtYWxsZXN0IGJyZWFrcG9pbnQsIGFuZCBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyBNYWtlcyB0aGUgQGNvbnRlbnQgYXBwbHkgb25seSB0byB0aGUgZ2l2ZW4gYnJlYWtwb2ludCwgbm90IHZpZXdwb3J0cyBhbnkgd2lkZXIgb3IgbmFycm93ZXIuXG5AbWl4aW4gbWVkaWEtYnJlYWtwb2ludC1vbmx5KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gICRtaW46ICBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG5leHQ6IGJyZWFrcG9pbnQtbmV4dCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogIGJyZWFrcG9pbnQtbWF4KCRuZXh0LCAkYnJlYWtwb2ludHMpO1xuXG4gIEBpZiAkbWluICE9IG51bGwgYW5kICRtYXggIT0gbnVsbCB7XG4gICAgQG1lZGlhIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1heCA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LXVwKCRuYW1lLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWluID09IG51bGwge1xuICAgIEBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bigkbmV4dCwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogU29saWRJbnZvaWNlIERhc2hib2FyZCBTdHlsZXNcbiAqXG4gKiBTdHlsZXMgZm9yIHRoZSByZWRlc2lnbmVkIGRhc2hib2FyZCBpbmNsdWRpbmcgaGVybyBzdGF0cyxcbiAqIGNoYXJ0cywgYXR0ZW50aW9uIHJlcXVpcmVkIHNlY3Rpb24sIHF1aWNrIGFjdGlvbnMsIGFuZCBhY3Rpdml0eSBmZWVkLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRVJPIFNUQVRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBGb3VyIHRpbGVzLCBidXQgZGVsaWJlcmF0ZWx5IG5vdCBmb3VyIGVxdWFsIHRpbGVzLiBUaGUgcm93IGlzIGxhaWQgb3V0IG9uIGFcbi8vIG5pbmUtdHJhY2sgZ3JpZDogb3JkaW5hcnkgdGlsZXMgc3BhbiB0d28gdHJhY2tzLCB0aGUgdXJnZW50IG9uZSBzcGFucyB0aHJlZS5cbi8vIFNwYW5zIGFyZSB1c2VkIGluc3RlYWQgb2YgcG9zaXRpb25hbCBjb2x1bW4gc2l6ZXMgc28gdGhlIGVtcGhhc2lzIGZvbGxvd3MgdGhlXG4vLyBgLS11cmdlbnRgIGNsYXNzIHJhdGhlciB0aGFuIHRoZSB0aWxlJ3MgcG9zaXRpb24gaW4gdGhlIG1hcmt1cC5cblxuLmRhc2hib2FyZC1oZXJvLXN0YXRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQG1lZGlhICh3aWR0aCA+PSA1NzdweCkge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDksIDFmcik7XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXNoYWRvdy1zbSk7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gTm8gaG92ZXIgdHJlYXRtZW50OiB0aGUgdGlsZSBpcyBhbiBpbmVydCBkaXYgd2l0aCBubyBsaW5rIGFuZCBubyBoYW5kbGVyLlxuICAgIC8vIE5vdGhpbmcgaGVyZSB0cmFuc2l0aW9ucywgc28gdGhlcmUgaXMgbm90aGluZyBmb3IgcmVkdWNlZC1tb3Rpb24gdG8gdW5kby5cblxuICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XG4gICAgfVxuXG4gICAgLy8gU3RhdGUgaXMgY2FycmllZCBieSB0aGUgaWNvbiB0aW50LCB0aGUgdmFsdWUgY29sb3VyIGFuZCB0aGUgc3VyZmFjZSB0aW50LlxuICAgIC8vIE5ldmVyIGEgc2lkZSBzdHJpcGUsIG5ldmVyIGEgZ2xvdy5cbiAgICAvLyBUaGUgdGludCBsaXZlcyBvbiAtLWRhbmdlciBhbG9uZSwgbmV2ZXIgb24gLS11cmdlbnQuIC0tdXJnZW50IGlzIGFwcGxpZWRcbiAgICAvLyB1bmNvbmRpdGlvbmFsbHkgdG8gaG9sZCB0aGUgZ3JpZCB0cmFjaywgc28gdGludGluZyBpdCB3b3VsZCBwYWludCBhIHJlZFxuICAgIC8vIGNhcmQgZm9yIGEgdXNlciB3aXRoIHplcm8gb3ZlcmR1ZSBpbnZvaWNlczogdGhlIHNhbWUgZGVmZWN0IGFzIHJlbmRlcmluZ1xuICAgIC8vIGEgJDAuMDAgdG90YWwgaW4gc3VjY2VzcyBncmVlbiwgbWlycm9yZWQuXG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC8vIFwiT3ZlcmR1ZVwiIGlzIHRoZSBvbmx5IGFjdGlvbmFibGUgbnVtYmVyIGluIHRoZSByb3csIHNvIGl0IG11c3Qgbm90IHJlYWQgYXNcbiAgICAvLyBpbnRlcmNoYW5nZWFibGUgd2l0aCB0aGUgdG90YWxzIGJlc2lkZSBpdDogaGFsZiBhZ2FpbiBhcyB3aWRlIHdoZXJlIHRoZXJlXG4gICAgLy8gaXMgcm9vbSBmb3IgYW4gYXN5bW1ldHJpYyByb3csIGFuZCBhIGZ1bGwgdHlwZSBzdGVwIGxhcmdlciBhdCBldmVyeSB3aWR0aC5cblxuICAgICYtLXVyZ2VudCB7XG4gICAgICAgIEBtZWRpYSAod2lkdGggPj0gMTIwMXB4KSB7XG4gICAgICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAzO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN0YXQtdmFsdWUge1xuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC0zeGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc3RhdC1jYXJkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5zdGF0LWljb24ge1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxufVxuXG4uc3RhdC1pbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG59XG5cbi5zdGF0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tc3dwLXRyYWNraW5nLXRpZ2h0KTtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG4gICAgLy8gR3JlZW4gbWVhbnMgXCJQYWlkXCIuIEEgbGlmZXRpbWUgcmV2ZW51ZSBhZ2dyZWdhdGUgaXMgbm90IGEgcGF5bWVudCBzdGF0ZSxcbiAgICAvLyBzbyB0aGVyZSBpcyBubyBgLS1zdWNjZXNzYCBoZXJlOyBwYWlkIHNlbWFudGljcyBsaXZlIGluIGAubW9uZXktLXBhaWRgLlxuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXItaG92ZXIpO1xuICAgIH1cblxuICAgIC8vIFRoZSB0aWxlIGFscmVhZHkgY2FycmllcyB0aGUgZW1waGFzaXM6IGAuc3RhdC12YWx1ZWAgaXMgdGhlIGxhcmdlc3QgdGV4dCBpblxuICAgIC8vIHRoZSBjYXJkLiBgLm1vbmV5LS10b3RhbGAgc3RlcHBpbmcgaXQgdXAgYW5vdGhlciAxMi41JSBvbiB0b3Agb2YgdGhhdCBpcyB3aGF0XG4gICAgLy8gcHVzaGVkIFwiVVNEIDEyMCw4ODIuMTlcIiBwYXN0IHRoZSBjYXJkIGVkZ2Ugb24gYSBzcGFuLTIgdGlsZS4gVGhlIG1vZGlmaWVyIGlzXG4gICAgLy8ga2VwdCBmb3IgaXRzIHdlaWdodCwgd2hpY2ggdGhlIHRpbGUgc3RpbGwgd2FudHM7IG9ubHkgdGhlIHNpemUgc3RlcCBpcyB1bmRvbmUuXG4gICAgLy8gYC5tb25leWAgaXMgYHdoaXRlLXNwYWNlOiBub3dyYXBgIGJ5IGRlc2lnbiAoYSBjdXJyZW5jeSBjb2RlIG11c3QgbmV2ZXIgYmVcbiAgICAvLyBvcnBoYW5lZCBmcm9tIGl0cyBudW1iZXIpLCBzbyBhbiBhbW91bnQgdGhhdCBkb2VzIG5vdCBmaXQgb3ZlcmZsb3dzIHJhdGhlclxuICAgIC8vIHRoYW4gd3JhcHBpbmcuIFdpZHRoIGhhcyB0byBiZSB3b24gYmFjayBoZXJlLCBub3QgYWJzb3JiZWQgYXQgcmVuZGVyIHRpbWUuXG5cbiAgICAubW9uZXktLXRvdGFsIC5tb25leS1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICB9XG59XG5cbi5zdGF0LXN1YnZhbHVlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFSVCBDT05UQUlORVJTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWNvbnRhaW5lciB7XG4gICAgbWluLWhlaWdodDogMjgwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZGFzaGJvYXJkLXJldmVudWUtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jb250YWluZXIge1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtY2hhcnQge1xuICAgIGhlaWdodDogMjgwcHggIWltcG9ydGFudDtcbn1cblxuLmRhc2hib2FyZC1kb251dC1jZW50ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG5cbiAgICAvLyBDaGFydC5qcyBwYWludHMgdGhlIGxlZ2VuZCBpbnNpZGUgdGhlIGNhbnZhcyBhbG9uZyBpdHMgYm90dG9tIGVkZ2UsIHNvIHRoZVxuICAgIC8vIHJpbmcncyBjZW50cmUgc2l0cyBhIGxpdHRsZSBhYm92ZSB0aGUgY29udGFpbmVyJ3MgbWlkcG9pbnQuIFRoaXMgbnVkZ2VcbiAgICAvLyBjb21wZW5zYXRlcy4gSXQgaXMgYSBmaXhlZCBkaXN0YW5jZSByYXRoZXIgdGhhbiBhIHBlcmNlbnRhZ2Ugb2YgdGhpc1xuICAgIC8vIGVsZW1lbnQncyBvd24gaGVpZ2h0LCBzbyBjaGFuZ2luZyB0aGUgdG90YWwncyB0eXBlIHNpemUgb3Igd3JhcHBpbmcgaXRzXG4gICAgLy8gbGFiZWwgY2FuIG5vIGxvbmdlciBkcmFnIHRoZSBudW1iZXIgb2ZmIHRoZSByaW5nJ3MgY2VudHJlLlxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIGNhbGMoLTUwJSAtIHZhcigtLXN3cC1zcGFjZS0xLTUpKSk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5kYXNoYm9hcmQtZG9udXQtdG90YWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgLy8gRGVtb3RlZCBmcm9tIDMycHg6IHRoZSBsZWFzdCBhY3Rpb25hYmxlIHdpZGdldCBvbiB0aGUgcGFnZSBzaG91bGQgbm90IG93blxuICAgIC8vIGl0cyBsYXJnZXN0IG51bWJlci4gVGhhdCBub3cgYmVsb25ncyB0byB0aGUgb3ZlcmR1ZSBjb3VudC5cbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LTJ4bCk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy10aWdodCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmRhc2hib2FyZC1kb251dC1sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14cyk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS1zd3AtdHJhY2tpbmctd2lkZXIpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LWljb24ge1xuICAgIC8vIFdhcyBgLS1zd3AtdGV4dC1saWdodGAgKDIuNTY6MSBvbiBzdXJmYWNlKTogdGVjaG5pY2FsbHkgZGVjb3JhdGlvbiwgYnV0XG4gICAgLy8gY2xvc2UgZW5vdWdoIHRvIGludmlzaWJsZSB0aGF0IGl0IHJlYWQgYXMgYSByZW5kZXJpbmcgZmF1bHQuIGAtLXRleHQtbXV0ZWRgXG4gICAgLy8gY2xlYXJzIDEuNC4xMSBmb3IgYSBtZWFuaW5nZnVsIGdyYXBoaWMgYW5kIHN0aWxsIHNpdHMgYSBzdGVwIGxpZ2h0ZXIgdGhhblxuICAgIC8vIHRoZSB0ZXh0IGJlbG93IGl0LCBzbyB0aGUgaWNvbiBzdXBwb3J0cyB0aGUgbWVzc2FnZSBpbnN0ZWFkIG9mIGxlYWRpbmcgaXQuXG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZW1wdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4vLyBBIGZhaWxlZCBxdWVyeSBpcyBub3QgYW4gZW1wdHkgYWNjb3VudCwgYW5kIG11c3QgbmV2ZXIgaW1wZXJzb25hdGUgb25lLiBUaGVcbi8vIGVtcHR5IHN0YXRlIGFib3ZlIGlzIGNhbG0gYW5kIGVuY291cmFnaW5nOyB0aGlzIG9uZSBuYW1lcyBhIHByb2JsZW0gYW5kIG9mZmVyc1xuLy8gYSB3YXkgb3V0IG9mIGl0LiBDb2xvdXIgYW1wbGlmaWVzIHRoZSBkaXN0aW5jdGlvbiwgaXQgbmV2ZXIgY2FycmllcyBpdCBhbG9uZTpcbi8vIHRoZSB0ZXh0IGxhYmVsIGRvZXMgdGhhdC5cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRhc2hib2FyZC1jaGFydC1lcnJvci1pY29uIHtcbiAgICAvLyBDb250YWluZWQgaW4gYSB0aW50ZWQgbWVkYWxsaW9uLCB1bmxpa2UgdGhlIGVtcHR5IHN0YXRlJ3MgYmFyZSBpY29uLiBUaGlzXG4gICAgLy8gaXMgdGhlIHNhbWUgXCJzdGF0ZSBtZWRhbGxpb25cIiBzaGFwZSBgLmF0dGVudGlvbi1lbXB0eS1pY29uYCBhbHJlYWR5IHVzZXMsXG4gICAgLy8gc28gdGhlIHR3byBzdGF0ZXMgYXJlIHRvbGQgYXBhcnQgYnkgZm9ybSBiZWZvcmUgY29sb3VyIGlzIHJlYWQgYXQgYWxsLlxuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1kYW5nZXItbGlnaHQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgc3ZnIHtcbiAgICAgICAgd2lkdGg6IDMycHg7XG4gICAgICAgIGhlaWdodDogMzJweDtcbiAgICB9XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGl0bGUge1xuICAgIC8vIEhlYXZpZXIgYW5kIGRhcmtlciB0aGFuIGAuZGFzaGJvYXJkLWNoYXJ0LWVtcHR5LXRleHRgOiBhIHN0YXRlbWVudCBvZiB3aGF0XG4gICAgLy8gd2VudCB3cm9uZywgbm90IGEgc2hydWcuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtMSk7XG59XG5cbi5kYXNoYm9hcmQtY2hhcnQtZXJyb3ItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgbWF4LXdpZHRoOiA0MmNoO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVRURU5USU9OIFJFUVVJUkVEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYXR0ZW50aW9uLWVtcHR5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtOCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uYXR0ZW50aW9uLWVtcHR5LWljb24ge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWZ1bGwpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmF0dGVudGlvbi1lbXB0eS10ZXh0IHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbn1cblxuLmF0dGVudGlvbi1zZWN0aW9uIHtcblxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhzKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXN3cC10cmFja2luZy13aWRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXdhcm5pbmcge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmF0dGVudGlvbi1iYWRnZSB7XG4gICAgLy8gV2FzIDExcHgsIG9mZi1yYW1wLiBCYWRnZSB0ZXh0IGlzIHRoZSBkb2N1bWVudGVkIExhYmVsIHN0ZXAgKDEycHgpLlxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQteHMpO1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuXG4gICAgJi0tZGFuZ2VyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtZGFuZ2VyKTtcbiAgICB9XG5cbiAgICAmLS13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXdhcm5pbmctbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmctaG92ZXIpO1xuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxuXG4gICAgJi0tcHJpbWFyeSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi5hdHRlbnRpb24taXRlbXMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmF0dGVudGlvbi1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KSxcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdXJmYWNlLWhvdmVyKTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmLS1kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0ZXIpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLWRhbmdlci1saWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICAgICAgYm94LXNoYWRvdzogdmFyKC0tc3dwLXJpbmctZGFuZ2VyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmF0dGVudGlvbi1pdGVtLW1haW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZmxleDogMTtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWlkIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tc3dwLWZvbnQtbW9ubyk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5hdHRlbnRpb24taXRlbS1jbGllbnQge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmF0dGVudGlvbi1pdGVtLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmF0dGVudGlvbi1pdGVtLWFtb3VudCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmF0dGVudGlvbi1pdGVtLWRhdGUge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVSUNLIEFDVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5xdWljay1hY3Rpb25zLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLnF1aWNrLWFjdGlvbi1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXN3cC10cmFuc2l0aW9uLWZhc3QpLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksXG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctbWQpO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cblxuICAgICYtLXByaW1hcnkge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tc2Vjb25kYXJ5IHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXNlY29uZGFyeS1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zZWNvbmRhcnktZGFyayk7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc2Vjb25kYXJ5LWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLWluZm8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1pbmZvLWhvdmVyKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1pbmZvLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYtLXN1Y2Nlc3Mge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodGVyKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1zdWNjZXNzLWhvdmVyKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cbiAgICAgICAgJixcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ucXVpY2stYWN0aW9uLWljb24ge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5xdWljay1hY3Rpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUNUSVZJVFkgVElNRUxJTkVcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblxuLmFjdGl2aXR5LXRpbWVsaW5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5hY3Rpdml0eS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktaWNvbiB7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IDJweDtcblxuICAgICYtLXBheW1lbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0taW52b2ljZSxcbiAgICAmLS1pbnZvaWNlX3NlbnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfYWNjZXB0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgfVxuXG4gICAgJi0tcXVvdGVfZGVjbGluZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZGFuZ2VyLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1kYW5nZXIpO1xuICAgIH1cblxuICAgICYtLXJlY3VycmluZ19nZW5lcmF0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtaW5mbyk7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktY29udGVudCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uYWN0aXZpdHktZGVzY3JpcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cblxuXG4uYWN0aXZpdHktdGV4dCB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICAvLyBXYXMgMTRweCwgb2ZmLXJhbXAuIEJvZHkgaXMgMTVweCwgYW5kIGl0IHBhaXJzIHdpdGggdGhlIDEzcHggbW9ubyBkb2MtbGlua1xuICAgIC8vIG5lc3RlZCBpbnNpZGUgaXQgZXhhY3RseSBhcyB0aGUgcmFtcCBpbnRlbmRzLiBJdCBhbHNvIGtlZXBzIHRoaXMgcm93IGEgc3RlcFxuICAgIC8vIGFib3ZlIGAuYWN0aXZpdHktZGV0YWlsc2AgYmVsb3csIHdoaWNoIHRoZSAxM3B4IHN0ZXAgd291bGQgaGF2ZSBmbGF0dGVuZWQuXG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbn1cblxuLmFjdGl2aXR5LWRvYy1saW5rIHtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtc2VtaWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1zd3AtZm9udC1tb25vKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLXNtKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWRhcmspO1xuICAgIH1cblxuICAgICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLmFjdGl2aXR5LWRldGFpbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG59XG5cbi5hY3Rpdml0eS1jbGllbnQtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXZpc2libGUge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3AtcmluZy1wcmltYXJ5KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICB9XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgfVxufVxuXG4uYWN0aXZpdHktc2VwYXJhdG9yIHtcbiAgICAvLyBUaGlzIGlzIHRleHQsIG5vdCBhIHJ1bGUgb3IgYSBncmFwaGljLiBgLS1zd3AtdGV4dC1saWdodGAgaXMgMi41NjoxIG9uIHRoZVxuICAgIC8vIGNhcmQgc3VyZmFjZSBhbmQgZmFpbHMgQUEgb3V0cmlnaHQuXG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbn1cblxuLmFjdGl2aXR5LWFtb3VudCB7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLXN3cC1mb250LXNlbWlib2xkKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbn1cblxuLmFjdGl2aXR5LXRpbWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG59XG5cbiIsIi8qKlxuICogQ2xpZW50IFBhZ2UgU3R5bGVzXG4gKlxuICogQ3VzdG9tIHN0eWxlcyBmb3IgdGhlIENsaWVudCB2aWV3IHBhZ2UuXG4gKiBGb2xsb3dzIHRoZSBkZXNpZ24gc3lzdGVtIHRva2VucyBhbmQgbW9kZXJuIFNhYVMgYWVzdGhldGljLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBIRVJPIFNFQ1RJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1oZXJvIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1zaGFkb3ctc20pO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS02KTtcbn1cblxuLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4uY2xpZW50LWhlcm8tbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jbGllbnQtaGVyby1tZXRhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVEFUIENBUkRTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtc3RhdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTIpO1xufVxuXG4uY2xpZW50LXN0YXQtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi8vIEluY29tZSByZWNlaXZlZCBpcyBhIHBvc2l0aXZlIHN0YXRlOyBzdWNjZXNzIGdyZWVuIGVhcm5zIGl0cyBwbGFjZS5cblxuLmNsaWVudC1zdGF0LXZhbHVlLS1zdWNjZXNzIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xufVxuXG4vLyBcIk91dHN0YW5kaW5nXCIgbWVhbnMgb3dlZCwgbm90IG92ZXJkdWUuIEFtYmVyLCBub3QgZGFuZ2VyIHJlZC5cbi8vIEtlcHQgLS1kYW5nZXIgYWxpYXMgc28gYW55IGxlZ2FjeSBjYWxsZXJzIHN0aWxsIHJlbmRlciBtZWFuaW5nZnVsbHkuXG5cbi5jbGllbnQtc3RhdC12YWx1ZS0td2FybmluZyxcbi5jbGllbnQtc3RhdC12YWx1ZS0tZGFuZ2VyIHtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXdhcm5pbmcpO1xufVxuXG4uY2xpZW50LXN0YXQtYmFkZ2VzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENMSUVOVCBDUkVESVQgU0VDVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNyZWRpdC1jYXJkIHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTUpO1xuICAgIH1cbn1cblxuLmNsaWVudC1jcmVkaXQtaWNvbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtaW5mby1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLWluZm8pO1xufVxuXG4uY2xpZW50LWNyZWRpdC1hbW91bnQge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jbGllbnQtY3JlZGl0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRBQlMgTkFWSUdBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LXRhYnMtY2FyZCB7XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAvKiAubmF2LXRhYnMge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgICAgIG1hcmdpbjogMCBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTYpKTtcbiAgICAgICAgcGFkZGluZzogMCB2YXIoLS1zd3Atc3BhY2UtNik7XG4gICAgfSAqL1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tc3dwLXRyYW5zaXRpb24tZmFzdCksIGJvcmRlci1jb2xvciB2YXIoLS1zd3AtdHJhbnNpdGlvbi1mYXN0KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiKDQ2IDE1MCA1OCAvIDMwJSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjJlbSAwLjVlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC50YWItY29udGVudCB7XG4gICAgICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRUNUSU9OIEhFQURFUlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1zZWN0aW9uLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG59XG5cbi5jbGllbnQtc2VjdGlvbi10aXRsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05UQUNUICYgQUREUkVTUyBDQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY2xpZW50LWNvbnRhY3QtY2FyZCxcbi5jbGllbnQtYWRkcmVzcy1jYXJkIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS1zd3AtdHJhbnNpdGlvbi1iYXNlKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zd3Atc2hhZG93LW1kKTtcbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtYXZhdGFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuLmNsaWVudC1jb250YWN0LW5hbWUge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWFyZ2luLXRvcDogMnB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZGV0YWlsLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG59XG5cbi5jbGllbnQtY29udGFjdC1kZXRhaWwtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcblxuICAgIGEge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSUNPTiBCVVRUT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5idG4taWNvbi1zbSB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmJ0bi1naG9zdC1zZWNvbmRhcnkge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXN3cC1ncmF5LTEwMCk7XG4gICAgfVxuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJveC1zaGFkb3c6IHZhcigtLXN3cC1yaW5nLXByaW1hcnkpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRk9STSBBQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtZm9ybS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBRERSRVNTIERJU1BMQVlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmNsaWVudC1hZGRyZXNzLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5jbGllbnQtYWRkcmVzcy1tYXAtbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFERElUSU9OQUwgQ09OVEFDVCBERVRBSUxTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jbGllbnQtY29udGFjdC1leHRyYSB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmNsaWVudC1jb250YWN0LWV4dHJhLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0xKTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtbGFiZWwge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgbWluLXdpZHRoOiA4MHB4O1xufVxuXG4uY2xpZW50LWNvbnRhY3QtZXh0cmEtdmFsdWUge1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ1VTVE9NIEZJRUxEUyBDQVJEXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5jdXN0b20tZmllbGRzLWNhcmQge1xuXG4gICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG59XG5cbi5jdXN0b20tZmllbGRzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbn1cblxuLmN1c3RvbS1maWVsZHMtaXRlbSB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgxNDBweCwgMzAlKSAxZnI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcblxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgfVxufVxuXG4uY3VzdG9tLWZpZWxkcy1sYWJlbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xLTUpO1xuICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LW11dGVkKTtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDA7XG59XG5cbi5jdXN0b20tZmllbGRzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB9XG59XG5cbkBtZWRpYSAod2lkdGggPD0gNTc1Ljk4cHgpIHtcblxuICAgIC5jdXN0b20tZmllbGRzLWl0ZW0ge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TSVZFIFNUWUxFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AbWVkaWEgKHdpZHRoIDw9IDk5MS45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmNsaWVudC1zdGF0LXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxufVxuXG5AbWVkaWEgKHdpZHRoIDw9IDc2Ny45OHB4KSB7XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmNsaWVudC1oZXJvLW1ldGEge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2xpZW50LXRhYnMtY2FyZCAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW46IDAgY2FsYygtMSAqIHZhcigtLXN3cC1zcGFjZS00KSk7XG4gICAgICAgIHBhZGRpbmc6IDAgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2xpZW50LXRhYnMtY2FyZCAubmF2LWl0ZW0ge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAuY2xpZW50LXNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUFJJTlQgU1RZTEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBtZWRpYSBwcmludCB7XG5cbiAgICAuY2xpZW50LWhlcm8gLmRyb3Bkb3duLFxuICAgIC5jbGllbnQtaGVybyAuYnRuLFxuICAgIC5jbGllbnQtc2VjdGlvbi1oZWFkZXIgLmJ0bixcbiAgICAuYnRuLWdob3N0LXNlY29uZGFyeSxcbiAgICAuYnRuLWdob3N0LWRhbmdlcixcbiAgICAuY2xpZW50LWZvcm0tYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2xpZW50LWhlcm8ge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjREREREREO1xuICAgIH1cbn1cbiIsIi8qKlxuICogSW52b2ljZSBWaWV3IFBhZ2VcbiAqXG4gKiBBbGwgc2hhcmVkIGRvY3VtZW50IHZpZXcgc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19kb2N1bWVudC12aWV3LnNjc3MuXG4gKiBJbnZvaWNlLXNwZWNpZmljIHJlY3VycmluZyBpbnZvaWNlIHN0eWxlcyBhcmUgYWxzbyBpbiB0aGF0IHNoYXJlZCBjb21wb25lbnQuXG4gKi9cblxuLy8gUmVjdXJyaW5nIGludm9pY2Ugc2lkZWJhcjogc2NoZWR1bGUgJiBnZW5lcmF0ZWQgaW52b2ljZXNcblxuLnJlY3VycmluZy1zY2hlZHVsZS1ncmlkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG59XG5cbi5zY2hlZHVsZS1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLnJlY3VycmluZy1zY2hlZHVsZS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zY2hlZHVsZS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgLy8gRGF0ZXMgYW5kIGNvdW50cyBsaW5lIHVwIGNsZWFubHkgZG93biB0aGUgc2NoZWR1bGUgc2lkZWJhclxuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG5cbi5vY2N1cnJlbmNlcy1saXN0IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG59XG5cbi5vY2N1cnJlbmNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtLCAwLjg3NXJlbSk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXNlY29uZGFyeSk7XG5cbiAgICBzdmcge1xuICAgICAgICBvcGFjaXR5OiAwLjY7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cbn1cblxuLm9jY3VycmVuY2UtZGF0ZSB7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xufVxuXG4uZ2VuZXJhdGVkLWludm9pY2VzLWxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3AtZ3JheS01MCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1zbSk7XG59XG5cbi5nZW5lcmF0ZWQtaW52b2ljZS1saW5rIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20sIDAuODc1cmVtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tc3dwLWZvbnQtbWVkaXVtLCA1MDApO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKTtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxufVxuXG4uZ2VuZXJhdGVkLWludm9pY2UtaWQge1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1zZW1pYm9sZCwgNjAwKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLW1ldGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbn1cblxuLmdlbmVyYXRlZC1pbnZvaWNlLWFtb3VudCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSwgMC44NzVyZW0pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1zd3AtZm9udC1tZWRpdW0sIDUwMCk7XG4gICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG59XG4iLCIvKipcbiAqIEV4dGVybmFsIEludm9pY2UgVmlld1xuICpcbiAqIEludm9pY2Utc3BlY2lmaWMgc3R5bGVzIGZvciB0aGUgcHVibGljLWZhY2luZyBpbnZvaWNlIHBhZ2UuXG4gKiBBbGwgc2hhcmVkIGV4dGVybmFsIGRvY3VtZW50IHN0eWxlcyBhcmUgaW4gY29tcG9uZW50cy9fZXh0ZXJuYWwtZG9jLXZpZXcuc2Nzcy5cbiAqL1xuXG4vLyBJbnZvaWNlLXNwZWNpZmljIGFjdGlvbiBidXR0b25cblxuLmJ0bi1pbnZvaWNlLWFjdGlvbiB7XG4gICAgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbi8vIFNjcmVlbiByZWFkZXIgb25seSB0ZXh0XG5cbi5zci1vbmx5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogLTFweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGNsaXAtcGF0aDogaW5zZXQoNTAlKTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGJvcmRlci13aWR0aDogMDtcbn1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5idG4taW52b2ljZS1hY3Rpb246aG92ZXIge1xuICAgICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cbiIsIi8qKlxuICogRXh0ZXJuYWwgUXVvdGUgVmlld1xuICpcbiAqIEFsbCBzaGFyZWQgZXh0ZXJuYWwgZG9jdW1lbnQgc3R5bGVzIChpbmNsdWRpbmcgcXVvdGUgc3R5bGVzKSBhcmUgaW5cbiAqIGNvbXBvbmVudHMvX2V4dGVybmFsLWRvYy12aWV3LnNjc3MuXG4gKlxuICogVGhlcmUgYXJlIGN1cnJlbnRseSBubyBxdW90ZS1zcGVjaWZpYyBzdHlsZXMgYmV5b25kIHdoYXQgaXMgc2hhcmVkLlxuICovXG4iLCIvKipcbiAqIFF1b3RlIFZpZXcgUGFnZSAtIFF1b3RlLVNwZWNpZmljIFN0eWxlc1xuICpcbiAqIFNoYXJlZCBkb2N1bWVudCBsYXlvdXQgaXMgaW4gY29tcG9uZW50cy9fZG9jdW1lbnQtdmlldy5zY3NzLlxuICogVGhpcyBmaWxlIGlzIGludGVudGlvbmFsbHkgbWluaW1hbCAtIGFsbCBzaGFyZWQgZG9jIHZpZXcgc3R5bGVzIGFyZSBpbiB0aGUgY29tcG9uZW50LlxuICovXG5cbi8vIE5vIHF1b3RlLXNwZWNpZmljIG92ZXJyaWRlcyBuZWVkZWQgYmV5b25kIHdoYXQgX2RvY3VtZW50LXZpZXcuc2NzcyBwcm92aWRlcy5cbiIsIi8qKlxuICogUGF5bWVudCBNYXJrZXRwbGFjZSBTdHlsZXNcbiAqIE9ubHkgcGF5bWVudC1zcGVjaWZpYyBzdHlsZXMuIFNoYXJlZCBtYXJrZXRwbGFjZSBzdHlsZXMgYXJlIGluIGNvbXBvbmVudHMvX21hcmtldHBsYWNlLnNjc3MuXG4gKi9cblxuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL2Z1bmN0aW9ucyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvdmFyaWFibGVzJztcbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9taXhpbnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXltZW50IE1hcmtldHBsYWNlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSB7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS04KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTW9iaWxlIFRhYnMgTmF2aWdhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSA+IC5uYXYtdGFicyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTMpIHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1zd3AtdHJhbnNpdGlvbi1jb2xvcnMpO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5iYWRnZS1zbSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4zNzVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHYXRld2F5IENhcmRzIEdyaWRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdhdGV3YXktZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcbn1cblxuLmdhdGV3YXktY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyA1JSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiKDAgMCAwIC8gOCUpLCAwIDAgMCAxcHggdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHZhcigtLXN3cC1wcmltYXJ5KSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb25maWd1cmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjA1KSAwJSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAyKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMyk7XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3Atc3VjY2Vzcy1saWdodCkgMCUsIHZhcigtLXN3cC1zdWNjZXNzKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDgpIDAlLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDQpIDEwMCUpO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3Atc3VjY2Vzcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLmlzLWN1c3RvbS1nYXRld2F5IHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjAxKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4zKTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAgICAgLy8gQWRkIGhvcml6b250YWwgZGl2aWRlciBhZnRlciBjdXN0b20gZ2F0ZXdheVxuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgYm90dG9tOiBjYWxjKC0xICogdmFyKC0tc3dwLXNwYWNlLTYpIC8gMik7XG4gICAgICAgICAgICBsZWZ0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgICAgICByaWdodDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsXG4gICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICAgICAgICAgICAgdmFyKC0tc3dwLWJvcmRlcikgMTUlLFxuICAgICAgICAgICAgICAgIHZhcigtLXN3cC1ib3JkZXIpIDg1JSxcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGluc2V0OiAtMnB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLWxnKTtcbiAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICB6LWluZGV4OiAtMTtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtcHJpbWFyeS1saWdodCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4yKSAxMDAlKTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wOCkgMCUsIHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wMikgMTAwJSk7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG5cbiAgICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMC4wODtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmdhdGV3YXktaWNvbiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnkpIDAlLCB2YXIoLS1zd3AtcHJpbWFyeS1kYXJrKSAxMDAlKTtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5nYXRld2F5LWNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1MnB4O1xuICAgICAgICBoZWlnaHQ6IDUycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWJhc2UpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC50ZXh0LW11dGVkIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMikgdmFyKC0tc3dwLXNwYWNlLTMpO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlLXNtIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4ycmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFjdGl2ZSBNZXRob2RzIFBhbmVsIC0gUmlnaHQgU2lkZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uYWN0aXZlLW1ldGhvZHMtcGFuZWwge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICA+IC5kLWZsZXggPiAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG59XG5cbi5hY3RpdmUtbWV0aG9kcy1saXN0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uYWN0aXZlLW1ldGhvZC1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAgICAgLnBheW1lbnQtbWV0aG9kLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpIDAlLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpIDEwMCUpO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4xNSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMDQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICB9XG5cbiAgICBoNiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4wNjI1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIH1cblxuICAgIC5wYXltZW50LW1ldGhvZC1pY29uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiA1NnB4O1xuICAgICAgICBoZWlnaHQ6IDU2cHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1ncmF5LTEwMCkgMCUsIHZhcigtLXN3cC1ncmF5LTIwMCkgMTAwJSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyA0JSk7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjY4NzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtZnVsbCk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICAgICAgJi5iZy1zdWNjZXNzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzKSAwJSwgdmFyKC0tc3dwLXN1Y2Nlc3MtaG92ZXIpIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMik7XG4gICAgICAgIH1cblxuICAgICAgICAmLmJnLXNlY29uZGFyeSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1zd3AtZ3JheS00MDApIDAlLCB2YXIoLS1zd3AtZ3JheS01MDApIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2IoMCAwIDAgLyAxMCUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0yKSB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1tZCk7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgfVxuXG4gICAgICAgICYuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICAgICAgICAgIGJvcmRlci13aWR0aDogMS41cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuXG4gICAgICAgICAgICBzdmcge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4O1xuICAgICAgICAgICAgICAgIGhlaWdodDogMThweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29uZmlndXJhdGlvbiBGb3JtIFN0eWxlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ucGF5bWVudC1tYXJrZXRwbGFjZSB7XG4gICAgLy8gRml4IGNsb3NlIGJ1dHRvbiBhbGlnbm1lbnQgaW4gY2FyZCBoZWFkZXJcblxuICAgIC5jYXJkLWhlYWRlciB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcblxuICAgICAgICAgICAgPiBkaXY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5idG4taWNvbiB7XG4gICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgc3BhY2luZyBiZXR3ZWVuIGZvcm0gc3dpdGNoIGZpZWxkcyAodGhlIGNvbnRhaW5lcnMgd2l0aCBiYWNrZ3JvdW5kcylcblxuICAgIGZvcm0ge1xuXG4gICAgICAgIC5mb3JtLXN3aXRjaC1maWVsZCArIC5mb3JtLXN3aXRjaC1maWVsZCB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgc3BhY2luZyBiZXR3ZWVuIHJlZ3VsYXIgZm9ybSBmaWVsZHNcblxuICAgICAgICAubWItMyArIC5tYi0zIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUGF5bWVudCBDb25maWd1cmF0aW9uIE1vZGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LW1vZGFsLWJhY2tkcm9wIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiKDAgMCAwIC8gNTAlKTtcbiAgICB6LWluZGV4OiAxMDQwO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG59XG5cbi5wYXltZW50LW1vZGFsIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTA1MDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2UtZmFkZS1pbiAwLjJzIGVhc2U7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbn1cblxuLnBheW1lbnQtbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLFxuICAgICAgICAgICAgICAgIDAgMTBweCAxMHB4IC01cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogOTIwcHg7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLnBheW1lbnQtbW9kYWwtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS02KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5wYXltZW50LW1vZGFsLXRpdGxlIHtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXhsKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1wcmltYXJ5KTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5wYXltZW50LW1vZGFsLWNsb3NlIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ucGF5bWVudC1tb2RhbC1ib2R5IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgLy8gUmVtb3ZlIGNhcmQgc3R5bGluZyBmcm9tIFBheW1lbnRTZXR0aW5ncyB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDAgMCAwO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIE1vYmlsZSBhZGFwdGF0aW9uc1xuQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC1kb3duKG1kKSB7XG5cbiAgICAucGF5bWVudC1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAucGF5bWVudC1tb2RhbC1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwdmg7XG4gICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbWFya2V0cGxhY2Utc2xpZGUtdXAtbW9iaWxlIHtcblxuICAgICAgICBmcm9tIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRvIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUHJldmVudCBib2R5IHNjcm9sbCB3aGVuIG1vZGFsIGlzIG9wZW5cblxuYm9keTpoYXMoLnBheW1lbnQtbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgUmVzcG9uc2l2ZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AaW5jbHVkZSBtZWRpYS1icmVha3BvaW50LWRvd24obWQpIHtcblxuICAgIC5tYXJrZXRwbGFjZS1wYW5lbCB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICB9XG5cbiAgICAuZ2F0ZXdheS1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLmFjdGl2ZS1tZXRob2QtY2FyZCB7XG5cbiAgICAgICAgLmQtZmxleCB7XG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgICAgICAuYnRuLWdyb3VwLFxuICAgICAgICAgICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIb3Jpem9udGFsIHNjcm9sbGluZyB0YWJzIG9uIG1vYmlsZVxuXG4gICAgLnBheW1lbnQtbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5wYXltZW50LW1hcmtldHBsYWNlIHtcblxuICAgICAgICAubmF2LXRhYnMsXG4gICAgICAgIC5tYXJrZXRwbGFjZS1wYW5lbCxcbiAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYWN0aXZlLW1ldGhvZC1jYXJkIHtcbiAgICAgICAgICAgIGJyZWFrLWluc2lkZTogYXZvaWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEdhdGV3YXkgR3JvdXBzIChjYXRlZ29yaXNlZCBtYXJrZXRwbGFjZSBzZWN0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmdhdGV3YXktZ3JvdXAge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXN3cC1zcGFjZS00KTtcblxuICAgIC5nYXRld2F5LWdyb3VwLWhlYWRlciB7XG5cbiAgICAgICAgaDYge1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEN1c3RvbSBcImNyZWF0ZSB5b3VyIG93blwiIGNhcmQgc2l0cyBpbnNpZGUgdGhlIG9mZmxpbmUgZ3JvdXAgbm93LCBzbyB0aGVcbiAgICAvLyBsZWdhY3kgZnVsbC13aWR0aCBkaXZpZGVyIGl0IHVzZWQgdG8gZHJhdyBpcyBubyBsb25nZXIgbmVlZGVkLlxuXG4gICAgLmlzLWN1c3RvbS1nYXRld2F5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTMpO1xuXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIExlZ2FjeSAvIGFkdmFuY2VkIHByb2Nlc3NvcnMgYXJlIGNvbGxhcHNlZCBhd2F5IGJ5IGRlZmF1bHQuXG5cbi5nYXRld2F5LWdyb3VwLS1tb3JlIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgID4gc3VtbWFyeSB7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICAmOmhvdmVyIGg2IHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFwiQWJvdXQgdGhpcyBnYXRld2F5XCIgZ3VpZGFuY2UgcGFuZWwgKGluIHRoZSBjb25maWcgbW9kYWwpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5wYXltZW50LWdhdGV3YXktYWJvdXQge1xuXG4gICAgLmFsZXJ0LXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTEpO1xuICAgIH1cblxuICAgIC5wYXltZW50LWdhdGV3YXktY29tcGFyZSB7XG5cbiAgICAgICAgc3VtbWFyeSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuXG4gICAgICAgICAgICAmOjotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiLyoqXG4gKiBOb3RpZmljYXRpb24gTWFya2V0cGxhY2UgU3R5bGVzXG4gKiBOb3RpZmljYXRpb24tc3BlY2lmaWMgc3R5bGVzLiBTaGFyZWQgbWFya2V0cGxhY2Ugc3R5bGVzIGFyZSBpbiBjb21wb25lbnRzL19tYXJrZXRwbGFjZS5zY3NzLlxuICovXG5cbkBpbXBvcnQgJ35ib290c3RyYXAvc2Nzcy9mdW5jdGlvbnMnO1xuQGltcG9ydCAnfmJvb3RzdHJhcC9zY3NzL3ZhcmlhYmxlcyc7XG5AaW1wb3J0ICd+Ym9vdHN0cmFwL3Njc3MvbWl4aW5zJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTm90aWZpY2F0aW9uIE1hcmtldHBsYWNlIENvbnRhaW5lclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4ubm90aWZpY2F0aW9uLW1hcmtldHBsYWNlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTgpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2JpbGUgVGFicyBOYXZpZ2F0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS0zKSB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICAgICAgdHJhbnNpdGlvbjogdmFyKC0tc3dwLXRyYW5zaXRpb24tY29sb3JzKTtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMyk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAuYmFkZ2Utc20ge1xuICAgICAgICAgICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMzc1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWFya2V0cGxhY2UgVGFicyAoU01TL0NoYXQpIC0gSW5zaWRlIFBhbmVsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5tYXJrZXRwbGFjZS10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdmFyKC0tc3dwLWJvcmRlcik7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5uYXYtaXRlbSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtMykgdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMik7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuXG4gICAgICAgIC5uYXYtbGluay1pY29uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3Zlcjpub3QoLmFjdGl2ZSkge1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5LWhvdmVyKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tc3dwLXByaW1hcnktcmdiKSwgMC4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludGVncmF0aW9uIFNlY3Rpb24gSGVhZGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uaW50ZWdyYXRpb24tc2VjdGlvbi1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LXNtKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXN3cC1zcGFjZS0yKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEludGVncmF0aW9uIENhcmRzIEdyaWRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLmludGVncmF0aW9uLWdyaWQge1xuICAgIC8vIENvbnRhaW5lciBmb3IgdGhlIGZ1bGwgaW50ZWdyYXRpb24gYXJlYSAobm8gZ3JpZCBoZXJlKVxufVxuXG4uaW50ZWdyYXRpb24tc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTYpO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5pbnRlZ3JhdGlvbi1jYXJkcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEtYnJlYWtwb2ludC11cChsZykge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgIH1cbn1cblxuLy8gSW50ZWdyYXRpb24gQ2FyZCAtIFZlcnRpY2FsIExheW91dFxuXG4uaW50ZWdyYXRpb24tY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3dwLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tc3dwLWJvcmRlci1saWdodCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogMCAxcHggM3B4IDAgcmdiKDAgMCAwIC8gNSUpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDE2cHggcmdiKDAgMCAwIC8gMTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXG4gICAgICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWljb24ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLXByaW1hcnktbGlnaHQpLCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMikpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMjUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb25maWd1cmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAzKSwgcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjAxKSk7XG4gICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSh2YXIoLS1zd3Atc3VjY2Vzcy1yZ2IpLCAwLjI1KTtcblxuICAgICAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1zdWNjZXNzLWxpZ2h0KSwgdmFyKC0tc3dwLXN1Y2Nlc3MpKTtcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDUpLCByZ2JhKHZhcigtLXN3cC1zdWNjZXNzLXJnYiksIDAuMDIpKTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tc3dwLXN1Y2Nlc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS01KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMyk7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tY2FyZC1pY29uIHtcbiAgICAgICAgd2lkdGg6IDY0cHg7XG4gICAgICAgIGhlaWdodDogNjRweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSwgdmFyKC0tc3dwLWdyYXktMjAwKSk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA2cHggcmdiKDAgMCAwIC8gNiUpO1xuXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgICAgIGhlaWdodDogMzJweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWNvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLXRpdGxlIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1iYXNlKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTIpO1xuICAgIH1cblxuICAgIC5pbnRlZ3JhdGlvbi1jYXJkLWRlc2NyaXB0aW9uIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC1zbSk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1tdXRlZCk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgICAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG4gICAgICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgLmludGVncmF0aW9uLWNhcmQtYWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bztcblxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc3dwLXRleHQtc20pO1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiB2YXIoLS1zd3Atc3BhY2UtMSk7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbmZpZ3VyZWQgSW50ZWdyYXRpb25zIFBhbmVsIC0gUmlnaHQgU2lkZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbnMtcGFuZWwge1xuXG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLXN3cC10ZXh0LWxnKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICA+IC5kLWZsZXggPiAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMzVyZW0gMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyLWxpZ2h0KTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYigwIDAgMCAvIDUlKTtcbiAgICB9XG59XG5cbi5jb25maWd1cmVkLWludGVncmF0aW9ucy1saXN0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogdmFyKC0tc3dwLXNwYWNlLTMpO1xufVxuXG4uY29uZmlndXJlZC1pbnRlZ3JhdGlvbi1jYXJkIHtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXItbGlnaHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXN3cC1yYWRpdXMtbGcpO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCAwIHJnYigwIDAgMCAvIDUlKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2IoMCAwIDAgLyA4JSksIDAgMCAwIDFweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMik7XG5cbiAgICAgICAgLmludGVncmF0aW9uLW1ldGhvZC1pY29uIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXN3cC1wcmltYXJ5LWxpZ2h0KSAwJSwgcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjE1KSAxMDAlKTtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKHZhcigtLXN3cC1wcmltYXJ5LXJnYiksIDAuMTUpO1xuICAgICAgICAgICAgY29sb3I6IHZhcigtLXN3cC1wcmltYXJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zd3AtcHJpbWFyeSk7XG4gICAgICAgICAgICBjb2xvcjogdmFyKC0tc3dwLXByaW1hcnkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSh2YXIoLS1zd3AtcHJpbWFyeS1yZ2IpLCAwLjA0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNSk7XG4gICAgfVxuXG4gICAgaDYge1xuICAgICAgICBmb250LXNpemU6IDEuMDYyNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLXN3cC10ZXh0LXByaW1hcnkpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICB9XG5cbiAgICAuaW50ZWdyYXRpb24tbWV0aG9kLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDU2cHg7XG4gICAgICAgIGhlaWdodDogNTZweDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tc3dwLWdyYXktMTAwKSAwJSwgdmFyKC0tc3dwLWdyYXktMjAwKSAxMDAlKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1sZyk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zd3AtdGV4dC1zZWNvbmRhcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYigwIDAgMCAvIDQlKTtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgd2lkdGg6IDI4cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmFkZ2Uge1xuICAgICAgICBmb250LXNpemU6IDAuNjg3NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4zcmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy1mdWxsKTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTIpIHZhcigtLXN3cC1zcGFjZS0zKTtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1zd3AtcmFkaXVzLW1kKTtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxLjVweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG5cbiAgICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb25maWd1cmF0aW9uIE1vZGFsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtYmFja2Ryb3Age1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMCAwIDAgLyA1MCUpO1xuICAgIHotaW5kZXg6IDEwNDA7XG4gICAgYW5pbWF0aW9uOiBtYXJrZXRwbGFjZS1mYWRlLWluIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHBhZGRpbmc6IHZhcigtLXN3cC1zcGFjZS00KTtcbiAgICBhbmltYXRpb246IG1hcmtldHBsYWNlLWZhZGUtaW4gMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG59XG5cbi5ub3RpZmljYXRpb24tbW9kYWwtY29udGFpbmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zd3Atc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3dwLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAxMCUpLFxuICAgICAgICAgICAgICAgIDAgMTBweCAxMHB4IC01cHggcmdiKDAgMCAwIC8gNCUpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLXN3cC1zcGFjZS04KSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFuaW1hdGlvbjogbWFya2V0cGxhY2Utc2xpZGUtdXAgMC4zcyBjdWJpYy1iZXppZXIoMC4xNiwgMSwgMC4zLCAxKTtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1zd3AtYm9yZGVyKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5vdGlmaWNhdGlvbi1tb2RhbC10aXRsZSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1zd3AtdGV4dC14bCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tc3dwLXRleHQtcHJpbWFyeSk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWNsb3NlIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xufVxuXG4ubm90aWZpY2F0aW9uLW1vZGFsLWJvZHkge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBwYWRkaW5nOiB2YXIoLS1zd3Atc3BhY2UtNik7XG5cbiAgICAvLyBSZW1vdmUgY2FyZCBzdHlsaW5nIGZyb20gTm90aWZpY2F0aW9uVHJhbnNwb3J0Q29uZmlndXJhdGlvbiB3aGVuIGluc2lkZSBtb2RhbFxuXG4gICAgPiBkaXYgPiAuY2FyZCB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICAgICAgLmNhcmQtaGVhZGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIEhpZGUgdGhlIGNhcmQgaGVhZGVyIHNpbmNlIG1vZGFsIGhhcyBpdHMgb3duXG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuY2FyZC1mb290ZXIge1xuICAgICAgICAgICAgcGFkZGluZzogdmFyKC0tc3dwLXNwYWNlLTYpIDAgMCAwO1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXN3cC1ib3JkZXIpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogdmFyKC0tc3dwLXNwYWNlLTYpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1vYmlsZSBSZXNwb25zaXZlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkBpbmNsdWRlIG1lZGlhLWJyZWFrcG9pbnQtZG93bihtZCkge1xuXG4gICAgLm1hcmtldHBsYWNlLXBhbmVsIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgbWF4LWhlaWdodDogbm9uZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgIH1cblxuICAgIC5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuXG4gICAgICAgIC5kLWZsZXgge1xuICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBnYXA6IHZhcigtLXN3cC1zcGFjZS0zKTtcblxuICAgICAgICAgICAgLmJ0bi1ncm91cCxcbiAgICAgICAgICAgIC5kLWZsZXguZ2FwLTIge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgICAgICAgICAgLmJ0biB7XG4gICAgICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSG9yaXpvbnRhbCBzY3JvbGxpbmcgdGFicyBvbiBtb2JpbGVcblxuICAgIC5ub3RpZmljYXRpb24tbWFya2V0cGxhY2UgPiAubmF2LXRhYnMge1xuICAgICAgICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogY2FsYyh2YXIoLS1zd3Atc3BhY2UtNCkgKiAtMSk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3dwLXNwYWNlLTQpO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zd3Atc3BhY2UtNCk7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgICAgIHNjcm9sbGJhci13aWR0aDogbm9uZTtcblxuICAgICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgLm5hdi1pdGVtIHtcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1tb2RhbCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICB9XG5cbiAgICAubm90aWZpY2F0aW9uLW1vZGFsLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LWhlaWdodDogOTB2aDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGFuaW1hdGlvbjogbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSAwLjNzIGN1YmljLWJlemllcigwLjE2LCAxLCAwLjMsIDEpO1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgbm90aWZpY2F0aW9uLXNsaWRlLXVwLW1vYmlsZSB7XG5cbiAgICAgICAgZnJvbSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gICAgICAgIH1cblxuICAgICAgICB0byB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFByZXZlbnQgYm9keSBzY3JvbGwgd2hlbiBtb2RhbCBpcyBvcGVuXG5cbmJvZHk6aGFzKC5ub3RpZmljYXRpb24tbW9kYWwpIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBTdHlsZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcblxuICAgIC5ub3RpZmljYXRpb24tbWFya2V0cGxhY2Uge1xuXG4gICAgICAgIC5uYXYtdGFicyxcbiAgICAgICAgLm1hcmtldHBsYWNlLXBhbmVsLFxuICAgICAgICAuYnRuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb25maWd1cmVkLWludGVncmF0aW9uLWNhcmQge1xuICAgICAgICAgICAgYnJlYWstaW5zaWRlOiBhdm9pZDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/