/* ========== Keyframe Animations ========== */
@keyframes spin {
    to { transform: rotate(360deg); }
}

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

@keyframes fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes slideInDown {
    from { opacity: 0; transform: translateY(-12px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes logoShimmer {
    0%, 100% { background-position: 0% 50%; }
    50%       { background-position: 100% 50%; }
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.6; }
}

@keyframes scaleIn {
    from { opacity: 0; transform: scale(0.92); }
    to   { opacity: 1; transform: scale(1); }
}

/* ========== Reset & Base ========== */
*, *::before, *::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --bg: #f5f4ff;
    --surface: #ffffff;
    --text: #1a1730;
    --text-secondary: #6b7280;
    --border: #e2e0f0;
    --primary: #6366f1;
    --primary-hover: #4f46e5;
    --radius: 12px;
    --radius-sm: 8px;
    --shadow: 0 2px 8px rgba(99,102,241,0.08);
    --shadow-lg: 0 8px 30px rgba(99,102,241,0.15);
    --transition: 0.2s ease;

    /* PDF tool colors */
    --color-merge: #e5322d;
    --color-split: #f59e0b;
    --color-compress: #10b981;
    --color-rotate: #8b5cf6;
    --color-pdf-to-jpg: #3b82f6;
    --color-jpg-to-pdf: #ec4899;
    --color-watermark-text: #06b6d4;
    --color-watermark-image: #14b8a6;
    --color-page-numbers: #6366f1;
    --color-protect: #ef4444;
    --color-unlock: #22c55e;
    --color-crop: #f97316;
    --color-sign: #8b5cf6;

    /* CSV tool colors */
    --color-csv-merge: #2563eb;
    --color-csv-split: #7c3aed;
    --color-csv-convert: #0891b2;
    --color-csv-filter: #059669;
    --color-csv-sort: #d97706;
    --color-csv-dedup: #dc2626;
    --color-csv-columns: #4f46e5;
    --color-csv-stats: #0d9488;
    --color-csv-preview: #6366f1;
    --color-csv-validate: #e11d48;
    --color-csv-replace: #9333ea;
    --color-csv-transpose: #0284c7;

    /* Image tool colors */
    --color-img-compress: #059669;
    --color-img-resize: #7c3aed;
    --color-img-crop: #f97316;
    --color-img-rotate: #8b5cf6;
    --color-img-flip: #06b6d4;
    --color-img-convert: #2563eb;
    --color-img-watermark-text: #0891b2;
    --color-img-watermark-image: #14b8a6;
    --color-img-adjust: #d97706;
    --color-img-blur: #6366f1;
    --color-img-sharpen: #e11d48;
    --color-img-filter: #9333ea;
    --color-img-rembg: #ef4444;
    --color-img-passport: #0d9488;

    /* Document tool colors */
    --color-doc-docx-to-pdf: #e5322d;
    --color-doc-docx-batch-pdf: #c42d28;
    --color-doc-pdf-to-text: #3b82f6;
    --color-doc-md-to-html: #10b981;
    --color-doc-md-to-pdf: #059669;
    --color-doc-diff: #f59e0b;
    --color-doc-word-count: #8b5cf6;
    --color-doc-txt-to-pdf: #ec4899;
    --color-doc-merge-text: #2563eb;
    --color-doc-find-replace: #9333ea;
    --color-doc-encoding: #0891b2;
    --color-doc-line-endings: #6366f1;
    --color-doc-html-to-pdf: #dc2626;

    /* Nepali tool colors */
    --color-nepali-date: #dc2626;
    --color-nepali-unicode: #7c3aed;

    /* Category colors */
    --cat-pdf: #e5322d;
    --cat-csv: #2563eb;
    --cat-image: #7c3aed;
    --cat-doc: #059669;
    --cat-nepali: #dc2626;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    background: var(--bg);
    color: var(--text);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    line-height: 1.6;
}

/* ========== Header ========== */
header {
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    padding: 0 24px;
    height: 60px;
    display: flex;
    align-items: center;
    gap: 20px;
    position: sticky;
    top: 0;
    z-index: 100;
    animation: slideInDown 0.4s ease both;
}

/* Breadcrumb takes available space, pushing lang switcher right */
#breadcrumb { flex: 1; }

/* ===== Language Switcher ===== */
.lang-switcher {
    position: relative;
    margin-left: auto;
    flex-shrink: 0;
}
.lang-toggle {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 6px 10px;
    background: transparent;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text);
    transition: border-color 0.2s, background 0.2s;
    white-space: nowrap;
}
.lang-toggle:hover {
    border-color: var(--primary);
    background: rgba(99,102,241,0.06);
    color: var(--primary);
}
.lang-current-flag { font-size: 1rem; line-height: 1; }
.lang-current-code { font-size: 0.75rem; letter-spacing: 0.04em; }
.lang-chevron { opacity: 0.5; transition: transform 0.2s; }
.lang-toggle[aria-expanded="true"] .lang-chevron { transform: rotate(180deg); }

.lang-dropdown {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 14px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.12);
    padding: 6px;
    min-width: 200px;
    max-height: 340px;
    overflow-y: auto;
    z-index: 200;
    animation: fadeInUp 0.15s ease both;
}
[dir="rtl"] .lang-dropdown { right: auto; left: 0; }

.lang-option {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 8px 10px;
    background: transparent;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s;
    color: var(--text);
}
.lang-option:hover { background: rgba(99,102,241,0.08); }
.lang-option.active {
    background: rgba(99,102,241,0.1);
    color: var(--primary);
    font-weight: 600;
}
.lang-flag    { font-size: 1.1rem; flex-shrink: 0; }
.lang-native  { font-size: 0.85rem; font-weight: 600; flex: 1; }
.lang-english { font-size: 0.75rem; color: var(--text-muted); }

/* ===== RTL overrides ===== */
[dir="rtl"] .lang-option { text-align: right; flex-direction: row-reverse; }
[dir="rtl"] .category-card-header { flex-direction: row-reverse; }
[dir="rtl"] .tool-card { text-align: right; }
[dir="rtl"] .breadcrumb { flex-direction: row-reverse; }
[dir="rtl"] header { flex-direction: row-reverse; }
[dir="rtl"] .lang-switcher { margin-left: 0; margin-right: auto; }
[dir="rtl"] .ndc-toolbar,
[dir="rtl"] .nuc-toolbar { flex-direction: row-reverse; }
[dir="rtl"] .rembg-workspace { direction: rtl; }
[dir="rtl"] .ppw-step2-layout { direction: rtl; }
[dir="rtl"] .options-form label { text-align: right; }
[dir="rtl"] .action-bar { flex-direction: row-reverse; }

.logo {
    font-size: 1.25rem;
    font-weight: 800;
    text-decoration: none;
    background: linear-gradient(135deg, #6366f1, #8b5cf6, #a855f7, #6366f1);
    background-size: 300% 300%;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: logoShimmer 4s ease infinite;
    letter-spacing: -0.02em;
}

.breadcrumb {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
}

.breadcrumb a {
    color: var(--text-secondary);
    text-decoration: none;
}

.breadcrumb a:hover { color: var(--primary); }

.breadcrumb .sep { color: var(--border); }

.breadcrumb span:not(.sep) {
    color: var(--text);
    font-weight: 500;
}

/* ========== Main ========== */
main {
    flex: 1;
    max-width: 1100px;
    width: 100%;
    margin: 0 auto;
    padding: 24px 16px;
}

.hidden { display: none !important; }

/* ========== Hero ========== */
.hero {
    text-align: center;
    padding: 48px 16px 32px;
    animation: fadeInUp 0.6s ease both;
}

.hero h1 {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 12px;
    color: var(--text);
}

.hero p {
    font-size: 1.1rem;
    color: var(--text-secondary);
    max-width: 560px;
    margin: 0 auto;
}

/* ========== Category Grid (Landing) ========== */
.category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    padding-bottom: 48px;
}

.category-card {
    background: var(--surface);
    border: 2px solid var(--border);
    border-radius: 16px;
    padding: 32px 28px;
    cursor: pointer;
    transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
    text-decoration: none;
    color: inherit;
    animation: fadeInUp 0.5s ease both;
}

.category-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg);
    border-color: var(--cat-color, var(--primary));
}

.category-card-header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 12px;
}

.category-card-icon {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    font-weight: 700;
    color: white;
}

.category-card-name {
    font-size: 1.25rem;
    font-weight: 700;
}

.category-card-count {
    font-size: 0.85rem;
    color: var(--text-secondary);
}

.category-card-desc {
    color: var(--text-secondary);
    font-size: 0.9rem;
    line-height: 1.5;
}

/* Stagger category cards */
.category-card:nth-child(1) { animation-delay: 0.05s; }
.category-card:nth-child(2) { animation-delay: 0.1s; }
.category-card:nth-child(3) { animation-delay: 0.15s; }
.category-card:nth-child(4) { animation-delay: 0.2s; }
.category-card:nth-child(5) { animation-delay: 0.25s; }

/* ========== Dashboard ========== */
.dashboard-header {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 24px 0 28px;
    animation: slideInDown 0.4s ease both;
}

.dashboard-icon {
    width: 64px;
    height: 64px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}

.dashboard-header h1 {
    font-size: 1.5rem;
    font-weight: 700;
}

.dashboard-header p {
    color: var(--text-secondary);
    font-size: 0.95rem;
}

/* ========== Tool Grid ========== */
.tool-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 16px;
    padding-bottom: 48px;
}

.tool-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 24px 20px;
    text-align: center;
    cursor: pointer;
    transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
    text-decoration: none;
    color: inherit;
    animation: fadeInUp 0.4s ease both;
}

.tool-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-lg);
    border-color: var(--tool-color, var(--primary));
}

.tool-card-icon {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 14px;
    font-size: 1.5rem;
    color: white;
    background: var(--tool-color, var(--primary));
}

.tool-card-name {
    font-weight: 600;
    font-size: 0.95rem;
    margin-bottom: 4px;
}

.tool-card-desc {
    font-size: 0.8rem;
    color: var(--text-secondary);
    line-height: 1.4;
}

/* ========== Tool View ========== */
.tool-header {
    text-align: center;
    padding: 32px 16px 24px;
    animation: fadeInUp 0.4s ease both;
}

.tool-icon-large {
    width: 64px;
    height: 64px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 16px;
    font-size: 1.75rem;
    color: white;
}

.tool-header h2 {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 8px;
}

.tool-header p {
    color: var(--text-secondary);
    max-width: 480px;
    margin: 0 auto;
}

.tool-workspace {
    max-width: 640px;
    margin: 0 auto;
}

/* ========== Upload Zone ========== */
.upload-zone {
    border: 2px dashed var(--border);
    border-radius: var(--radius);
    padding: 48px 24px;
    text-align: center;
    cursor: pointer;
    transition: border-color var(--transition), background var(--transition);
    background: var(--surface);
    animation: scaleIn 0.4s ease both;
}

.upload-zone:hover,
.upload-zone.dragover {
    border-color: var(--primary);
    background: #eef2ff;
}

.upload-icon {
    color: var(--text-secondary);
    margin-bottom: 12px;
}

.upload-text {
    font-weight: 600;
    margin-bottom: 4px;
}

.upload-subtext {
    color: var(--text-secondary);
    font-size: 0.85rem;
    margin-bottom: 12px;
}

/* ========== File List ========== */
.file-list {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 16px;
    margin-top: 16px;
}

.file-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 12px;
    background: var(--bg);
    border-radius: var(--radius-sm);
    margin-bottom: 8px;
}

.file-item:last-child { margin-bottom: 0; }

.file-item-info {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.file-item-icon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: var(--primary);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.75rem;
    font-weight: 700;
    flex-shrink: 0;
}

.file-item-name {
    font-size: 0.9rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.file-item-size {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.file-item-remove {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--text-secondary);
    padding: 4px;
    border-radius: 4px;
    transition: color var(--transition);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.file-item-remove:hover { color: var(--primary); }

.file-list-add {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 10px;
    padding: 8px 14px;
    font-size: 0.85rem;
    color: var(--primary);
    background: none;
    border: 1px dashed var(--primary);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background var(--transition);
}

.file-list-add:hover { background: #eef2ff; }

/* ========== CSV Preview Table ========== */
.csv-preview {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin-top: 16px;
    overflow: hidden;
}

.csv-preview-header {
    padding: 12px 16px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--text-secondary);
    border-bottom: 1px solid var(--border);
    background: var(--bg);
}

.csv-preview-scroll {
    overflow-x: auto;
    max-height: 320px;
    overflow-y: auto;
}

.csv-preview table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
    white-space: nowrap;
}

.csv-preview th {
    background: var(--bg);
    font-weight: 600;
    text-align: left;
    padding: 8px 12px;
    border-bottom: 2px solid var(--border);
    position: sticky;
    top: 0;
}

.csv-preview td {
    padding: 6px 12px;
    border-bottom: 1px solid var(--border);
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.csv-preview tr:hover td { background: #f0f4ff; }

/* ========== Options Form ========== */
.options-form {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px;
    margin-top: 16px;
}

.options-form h3 {
    font-size: 0.9rem;
    font-weight: 600;
    margin-bottom: 16px;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.form-group {
    margin-bottom: 16px;
}

.form-group:last-child { margin-bottom: 0; }

.form-group label {
    display: block;
    font-size: 0.85rem;
    font-weight: 500;
    margin-bottom: 6px;
}

.form-group input[type="text"],
.form-group input[type="password"],
.form-group input[type="number"],
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: 0.9rem;
    font-family: inherit;
    transition: border-color var(--transition);
    background: white;
}

.form-group textarea {
    min-height: 70px;
    resize: vertical;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
    outline: none;
    border-color: var(--primary);
}

.form-group input[type="range"] {
    width: 100%;
    accent-color: var(--primary);
}

.range-value {
    font-size: 0.8rem;
    color: var(--text-secondary);
    margin-top: 4px;
}

.form-group .hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-top: 4px;
}

/* ========== Buttons ========== */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 28px;
    border: none;
    border-radius: var(--radius-sm);
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    transition: background var(--transition), transform var(--transition);
}

.btn:active { transform: scale(0.98); }

.btn-primary {
    background: var(--primary);
    color: white;
    width: 100%;
    padding: 14px;
    font-size: 1rem;
}

.btn-primary:hover { background: var(--primary-hover); }
.btn-primary:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.btn-upload {
    background: var(--primary);
    color: white;
    padding: 10px 24px;
}

.btn-upload:hover { background: var(--primary-hover); }

.btn-download {
    background: #22c55e;
    color: white;
    padding: 14px 32px;
    font-size: 1rem;
}

.btn-download:hover { background: #16a34a; }

.btn-secondary {
    background: var(--bg);
    color: var(--text);
    border: 1px solid var(--border);
    padding: 10px 20px;
}

.btn-secondary:hover { background: var(--border); }

.btn-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    cursor: pointer;
    font-size: 1.2rem;
    color: var(--text);
    transition: background var(--transition);
}

.btn-icon:hover { background: var(--border); }
.btn-icon:disabled { opacity: 0.4; cursor: not-allowed; }

/* ========== Action Bar ========== */
.action-bar {
    margin-top: 20px;
}

/* ========== Progress ========== */
.progress-container {
    margin-top: 20px;
    text-align: center;
}

.progress-bar {
    width: 100%;
    height: 8px;
    background: var(--border);
    border-radius: 4px;
    overflow: hidden;
}

.progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary), #a855f7, var(--primary));
    background-size: 200% 100%;
    border-radius: 4px;
    width: 0%;
    transition: width 0.3s ease;
    animation: logoShimmer 1.5s ease infinite;
}

.progress-text {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: 10px;
}

/* ========== Spinner ========== */
.spinner {
    width: 18px;
    height: 18px;
    border: 2px solid rgba(255,255,255,0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
}

/* ========== Result ========== */
.result-area {
    margin-top: 20px;
    text-align: center;
    animation: scaleIn 0.35s ease both;
}

.result-success {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 40px 24px;
}

.result-success svg {
    color: #22c55e;
    margin-bottom: 12px;
}

.result-success p {
    font-weight: 600;
    margin-bottom: 20px;
}

.result-success .btn {
    margin: 0 6px 10px;
}

/* ========== JSON Result ========== */
.json-result {
    margin-top: 20px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
}

.json-result-header {
    padding: 12px 16px;
    font-size: 0.9rem;
    font-weight: 600;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.json-result-body {
    padding: 16px;
    overflow-x: auto;
}

.json-result table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.json-result th {
    background: var(--bg);
    font-weight: 600;
    text-align: left;
    padding: 8px 12px;
    border-bottom: 2px solid var(--border);
}

.json-result td {
    padding: 6px 12px;
    border-bottom: 1px solid var(--border);
}

.json-result .badge-valid {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    background: #dcfce7;
    color: #16a34a;
}

.json-result .badge-invalid {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    background: #fef2f2;
    color: #dc2626;
}

/* ========== Diff Result ========== */
.diff-line-addition td { background: #dcfce7; }
.diff-line-deletion td { background: #fef2f2; }
.diff-line-separator td { background: #f0f4ff; font-weight: 600; color: var(--text-secondary); }
.diff-line-header td { font-weight: 600; color: var(--text-secondary); }
.diff-line-num { color: var(--text-secondary); font-size: 0.75rem; min-width: 40px; text-align: right; }
.diff-content { font-family: monospace; white-space: pre-wrap; word-break: break-all; }

.word-count-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 16px;
    padding: 20px;
}

.word-count-stat {
    text-align: center;
    padding: 16px;
    background: var(--bg);
    border-radius: var(--radius-sm);
}

.word-count-stat .stat-value {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text);
}

.word-count-stat .stat-label {
    font-size: 0.8rem;
    color: var(--text-secondary);
    margin-top: 4px;
}

/* ========== Error ========== */
.error-area {
    margin-top: 20px;
    text-align: center;
    background: #fef2f2;
    border: 1px solid #fecaca;
    border-radius: var(--radius);
    padding: 24px;
}

.error-area p {
    color: #dc2626;
    font-weight: 500;
    margin-bottom: 16px;
}

/* ========== Crop Tool ========== */
.crop-container {
    margin-top: 16px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
}

.crop-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
    flex-wrap: wrap;
    gap: 10px;
}

.crop-page-nav {
    display: flex;
    align-items: center;
    gap: 8px;
}

.crop-page-nav span {
    font-size: 0.85rem;
    font-weight: 500;
    min-width: 90px;
    text-align: center;
}

.crop-mode-toggle {
    display: flex;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    overflow: hidden;
}

.crop-mode-btn {
    padding: 6px 14px;
    font-size: 0.8rem;
    font-weight: 500;
    border: none;
    background: var(--surface);
    cursor: pointer;
    transition: background var(--transition), color var(--transition);
    color: var(--text-secondary);
}

.crop-mode-btn + .crop-mode-btn {
    border-left: 1px solid var(--border);
}

.crop-mode-btn.active {
    background: var(--color-crop);
    color: white;
}

.crop-canvas-wrapper {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 20px;
    background: #e5e7eb;
    min-height: 200px;
}

.crop-canvas-wrapper canvas {
    display: block;
    max-width: 100%;
    cursor: crosshair;
    box-shadow: var(--shadow-lg);
}

.crop-hint {
    position: absolute;
    bottom: 30px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0,0,0,0.7);
    color: white;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 0.8rem;
    pointer-events: none;
    transition: opacity 0.3s ease;
}

.crop-hint.hidden { opacity: 0; }

.crop-info {
    padding: 10px 16px;
    font-size: 0.8rem;
    color: var(--text-secondary);
    border-top: 1px solid var(--border);
    text-align: center;
    min-height: 36px;
}

.crop-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 40px;
    color: var(--text-secondary);
}

.crop-loading .spinner {
    border-color: var(--border);
    border-top-color: var(--color-crop);
    width: 28px;
    height: 28px;
}

/* ========== Nepali Date Converter ========== */

.nepali-date-container {
    max-width: 620px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: fadeInUp 0.35s ease both;
}

/* Direction bar */
.ndc-toolbar { display: flex; justify-content: center; }

.ndc-direction {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--surface);
    border: 1.5px solid var(--border);
    border-radius: 999px;
    padding: 4px 6px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}

.ndc-dir-btn {
    padding: 9px 28px;
    font-size: 0.92rem;
    font-weight: 700;
    border-radius: 999px;
    border: none;
    cursor: pointer;
    background: none;
    color: var(--text-secondary);
    transition: background 0.2s, color 0.2s;
    white-space: nowrap;
    letter-spacing: 0.01em;
}
.ndc-dir-btn.active { background: var(--primary); color: #fff; }
.ndc-dir-btn:hover:not(.active) { background: rgba(99,102,241,0.08); color: var(--primary); }

.ndc-swap-btn {
    display: flex; align-items: center; justify-content: center;
    width: 36px; height: 36px;
    border-radius: 50%;
    border: 1.5px solid var(--border);
    background: var(--bg);
    cursor: pointer;
    color: var(--text-secondary);
    transition: color 0.15s, border-color 0.15s, background 0.15s, transform 0.25s;
    flex-shrink: 0;
}
.ndc-swap-btn:hover { color: var(--primary); border-color: var(--primary); background: rgba(99,102,241,0.06); transform: rotate(180deg); }

/* Date picker card */
.ndc-picker {
    background: var(--surface);
    border: 1.5px solid var(--border);
    border-radius: var(--radius);
    padding: 20px 24px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.05);
}

.ndc-picker-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.ndc-picker-label {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-secondary);
}

.ndc-today-btn {
    padding: 5px 14px;
    font-size: 0.78rem;
    font-weight: 600;
    border: 1.5px solid var(--primary);
    border-radius: 999px;
    background: rgba(99,102,241,0.06);
    color: var(--primary);
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.ndc-today-btn:hover { background: var(--primary); color: #fff; }

/* Native date input */
.ndc-date-input {
    width: 100%;
    padding: 13px 16px;
    font-size: 1.1rem;
    font-weight: 500;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    outline: none;
    background: var(--bg);
    color: var(--text);
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
    box-sizing: border-box;
    accent-color: var(--primary);
}
.ndc-date-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(99,102,241,0.12); }

/* BS selects row */
.ndc-bs-fields {
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 12px;
}

.ndc-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.ndc-field-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
}

.ndc-num-input, .ndc-select {
    padding: 11px 14px;
    font-size: 1rem;
    font-weight: 500;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    outline: none;
    background: var(--bg);
    color: var(--text);
    transition: border-color 0.2s, box-shadow 0.2s;
    width: 100%;
    box-sizing: border-box;
    accent-color: var(--primary);
}
.ndc-num-input:focus, .ndc-select:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(99,102,241,0.12); }
.ndc-select { cursor: pointer; }

/* Result cards */
.ndc-result-cards {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 12px;
    animation: fadeInUp 0.3s ease both;
}

.ndc-card {
    border-radius: var(--radius);
    padding: 24px 20px;
    text-align: center;
    border: 1.5px solid var(--border);
}

.ndc-card-input {
    background: var(--surface);
}

.ndc-card-output {
    background: rgba(99,102,241,0.06);
    border-color: rgba(99,102,241,0.3);
    box-shadow: 0 2px 12px rgba(99,102,241,0.1);
}

.ndc-card-badge {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--text-secondary);
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 999px;
    padding: 3px 10px;
    margin-bottom: 14px;
}

.ndc-card-output .ndc-card-badge {
    color: var(--primary);
    background: rgba(99,102,241,0.08);
    border-color: rgba(99,102,241,0.25);
}

.ndc-card-year {
    font-size: 2.6rem;
    font-weight: 800;
    color: var(--text);
    line-height: 1;
    margin-bottom: 6px;
    letter-spacing: -0.02em;
}

.ndc-card-output .ndc-card-year { color: var(--primary); }

.ndc-card-date {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 8px;
}

.ndc-card-np {
    font-size: 0.95rem;
    color: var(--text-secondary);
    line-height: 1.6;
}

.ndc-arrow-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-size: 1rem;
    flex-shrink: 0;
    box-shadow: 0 2px 8px rgba(99,102,241,0.3);
}

.ndc-loading {
    text-align: center;
    color: var(--text-secondary);
    font-size: 0.9rem;
    padding: 16px 0;
}

@media (max-width: 580px) {
    .ndc-dir-btn { padding: 8px 16px; font-size: 0.82rem; }
    .ndc-bs-fields { grid-template-columns: 1fr 1fr; }
    .ndc-field-month { grid-column: 1 / -1; }
    .ndc-result-cards { grid-template-columns: 1fr; }
    .ndc-arrow-icon { transform: rotate(90deg); margin: 0 auto; }
    .ndc-card-year { font-size: 2rem; }
}

/* ========== Nepali Unicode Live Translator ========== */

.nepali-unicode-container {
    animation: fadeInUp 0.35s ease both;
}

.nuc-toolbar {
    display: flex;
    justify-content: center;
    margin-bottom: 18px;
}

.nuc-direction {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--surface);
    border: 1.5px solid var(--border);
    border-radius: 999px;
    padding: 4px 6px;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06);
}

.nuc-dir-btn {
    padding: 8px 22px;
    font-size: 0.88rem;
    font-weight: 600;
    border-radius: 999px;
    border: none;
    cursor: pointer;
    background: none;
    color: var(--text-secondary);
    transition: background 0.2s, color 0.2s;
    white-space: nowrap;
}
.nuc-dir-btn.active { background: var(--primary); color: #fff; }
.nuc-dir-btn:hover:not(.active) { background: rgba(99,102,241,0.08); color: var(--primary); }

.nuc-swap-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1.5px solid var(--border);
    background: var(--bg);
    cursor: pointer;
    color: var(--text-secondary);
    transition: color 0.15s, border-color 0.15s, background 0.15s, transform 0.2s;
    flex-shrink: 0;
}
.nuc-swap-btn:hover { color: var(--primary); border-color: var(--primary); background: rgba(99,102,241,0.06); transform: rotate(180deg); }

.nuc-panels {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.nuc-panel {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.nuc-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 4px;
}

.nuc-label {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-secondary);
}

.nuc-count, .nuc-status {
    font-size: 0.75rem;
    color: var(--text-secondary);
}

.nuc-textarea {
    flex: 1;
    min-height: 300px;
    padding: 18px;
    font-size: 1.2rem;
    line-height: 1.85;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    resize: vertical;
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
    font-family: inherit;
    background: var(--surface);
    color: var(--text);
    box-sizing: border-box;
    width: 100%;
}
.nuc-textarea:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.12);
}
.nuc-textarea::placeholder { color: #bbb; }

.nuc-output {
    background: #f0fdf4;
    border-color: #bbf7d0;
    color: #14532d;
    cursor: default;
    font-size: 1.3rem;
}
.nuc-output[data-lang="roman"] { font-size: 1.2rem; }

.nuc-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.nuc-btn {
    padding: 6px 16px;
    font-size: 0.8rem;
    font-weight: 500;
    border: 1.5px solid var(--border);
    border-radius: 6px;
    background: var(--bg);
    color: var(--text-secondary);
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.nuc-btn:hover { color: var(--text); border-color: #aaa; }
.nuc-copy-btn.copied { color: #14532d; border-color: #86efac; background: #f0fdf4; }

@media (max-width: 640px) {
    .nuc-panels { grid-template-columns: 1fr; }
    .nuc-textarea { min-height: 200px; }
    .nuc-dir-btn { padding: 7px 14px; font-size: 0.8rem; }
}

/* ========== Remove Background Tool ========== */

.rembg-container {
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: fadeInUp 0.3s ease both;
}

.rembg-workspace {
    display: grid;
    grid-template-columns: 1fr 280px;
    gap: 16px;
    align-items: start;
}

/* Drop / preview zone */
.rembg-drop-zone {
    position: relative;
    border: 2px dashed var(--border);
    border-radius: 16px;
    background: var(--surface);
    cursor: pointer;
    min-height: 380px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    transition: border-color 0.2s, background 0.2s;
}
.rembg-drop-zone:hover,
.rembg-drop-zone.drag-over {
    border-color: var(--primary);
    background: rgba(99,102,241,0.04);
}

.rembg-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    color: var(--text-muted);
    text-align: center;
    padding: 40px;
    pointer-events: none;
}
.rembg-placeholder svg { opacity: 0.35; }
.rembg-placeholder p {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text);
    margin: 0;
}
.rembg-placeholder span { font-size: 0.8rem; }

.rembg-preview {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px;
    width: 100%;
}
.rembg-preview img {
    max-width: 100%;
    max-height: 320px;
    object-fit: contain;
    border-radius: 10px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
}
.rembg-preview-meta {
    font-size: 0.78rem;
    color: var(--text-muted);
}
.rembg-change-btn {
    background: transparent;
    border: 1px solid var(--border);
    color: var(--text-muted);
    padding: 5px 14px;
    border-radius: 20px;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
}
.rembg-change-btn:hover { border-color: var(--primary); color: var(--primary); }

/* Settings panel */
.rembg-settings-panel {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 18px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}
.rembg-settings-title {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--text-muted);
    margin: 0;
}
.rembg-setting { display: flex; flex-direction: column; gap: 7px; }
.rembg-setting-label {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--text);
}
.rembg-select {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    color: var(--text);
    font-size: 0.83rem;
    cursor: pointer;
}
.rembg-bgcolor-row {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.rembg-bg-opt {
    padding: 4px 12px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    background: var(--bg);
    font-size: 0.78rem;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text);
}
.rembg-bg-opt.active {
    border-color: var(--primary);
    color: var(--primary);
    background: rgba(99,102,241,0.08);
    font-weight: 600;
}
.rembg-color-swatch {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    background: var(--bg);
    font-size: 0.78rem;
    cursor: pointer;
    color: var(--text);
    transition: border-color 0.15s;
}
.rembg-color-swatch:hover { border-color: var(--primary); }
.rembg-color-swatch input[type="color"] {
    width: 16px;
    height: 16px;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
}
.rembg-toggle-row {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    cursor: pointer;
}
.rembg-checkbox { flex-shrink: 0; margin-top: 2px; accent-color: var(--primary); }
.rembg-toggle-label { font-size: 0.83rem; color: var(--text); }
.rembg-toggle-hint { font-size: 0.75rem; color: var(--text-muted); display: block; }

.rembg-submit-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 12px;
    background: var(--primary);
    color: #fff;
    border: none;
    border-radius: 10px;
    font-size: 0.9rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s, opacity 0.2s;
    margin-top: auto;
}
.rembg-submit-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.rembg-submit-btn:not(:disabled):hover { background: #4f46e5; }
.rembg-submit-btn.processing { opacity: 0.75; cursor: wait; }

/* Comparison area */
.rembg-compare {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 20px 24px;
    animation: fadeInUp 0.3s ease both;
}
.rembg-compare-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 18px;
    flex-wrap: wrap;
    gap: 10px;
}
.rembg-compare-title {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--text-muted);
}
.rembg-download-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 20px;
    background: linear-gradient(135deg, var(--primary) 0%, #4f46e5 100%);
    color: #fff;
    border: none;
    border-radius: 30px;
    font-size: 0.85rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 3px 12px rgba(99,102,241,0.3);
    transition: transform 0.15s, box-shadow 0.15s;
}
.rembg-download-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 18px rgba(99,102,241,0.4);
}
.rembg-compare-panels {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
}
.rembg-compare-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}
.rembg-compare-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-muted);
}
.rembg-thumb-wrap {
    width: 260px;
    height: 260px;
    border-radius: 12px;
    border: 1px solid var(--border);
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg);
}
.rembg-checkerboard {
    background-image: repeating-conic-gradient(#d1d5db 0% 25%, #ffffff 0% 50%);
    background-size: 18px 18px;
}
.rembg-thumb {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}
.rembg-compare-arrow {
    color: var(--text-muted);
    flex-shrink: 0;
}
.rembg-result-card .rembg-thumb-wrap {
    box-shadow: 0 4px 16px rgba(99,102,241,0.15);
    border-color: rgba(99,102,241,0.25);
}

@media (max-width: 680px) {
    .rembg-workspace { grid-template-columns: 1fr; }
    .rembg-drop-zone { min-height: 260px; }
    .rembg-thumb-wrap { width: 200px; height: 200px; }
}

/* ========== Passport Photo Tool ========== */
.passport-container {
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: fadeInUp 0.3s ease both;
}

/* ── Shared PP utility classes (used across wizard steps) ── */
.pp-drop-zone {
    position: relative;
    border: 2px dashed var(--border);
    border-radius: 16px;
    background: var(--surface);
    cursor: pointer;
    min-height: 280px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    transition: border-color 0.2s, background 0.2s;
}
.pp-drop-zone:hover,
.pp-drop-zone.drag-over {
    border-color: var(--primary);
    background: rgba(99,102,241,0.04);
}
.pp-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    color: var(--text-muted);
    text-align: center;
    padding: 40px;
    pointer-events: none;
}
.pp-placeholder svg { opacity: 0.35; }
.pp-placeholder p {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text);
    margin: 0;
}
.pp-placeholder span { font-size: 0.8rem; }
.pp-preview {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px;
    width: 100%;
}
.pp-preview img {
    max-width: 100%;
    max-height: 280px;
    object-fit: contain;
    border-radius: 10px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
}
.pp-preview-meta {
    font-size: 0.78rem;
    color: var(--text-muted);
}
.pp-change-btn {
    background: transparent;
    border: 1px solid var(--border);
    color: var(--text-muted);
    padding: 5px 14px;
    border-radius: 20px;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
}
.pp-change-btn:hover { border-color: var(--primary); color: var(--primary); }

.pp-settings-panel {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 16px;
    padding: 18px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.pp-setting { display: flex; flex-direction: column; gap: 7px; }
.pp-setting-label {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--text);
}
.pp-select {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    color: var(--text);
    font-size: 0.83rem;
    cursor: pointer;
}
.pp-bgcolor-row,
.pp-frame-colors {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}
.pp-bg-opt,
.pp-frame-opt {
    padding: 4px 10px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    background: var(--bg);
    font-size: 0.75rem;
    cursor: pointer;
    transition: all 0.15s;
    color: var(--text);
}
.pp-bg-opt.active,
.pp-frame-opt.active {
    border-color: var(--primary);
    color: var(--primary);
    background: rgba(99,102,241,0.08);
    font-weight: 600;
}
.pp-color-swatch {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border: 1.5px solid var(--border);
    border-radius: 20px;
    background: var(--bg);
    font-size: 0.75rem;
    cursor: pointer;
    color: var(--text);
    transition: border-color 0.15s;
}
.pp-color-swatch:hover { border-color: var(--primary); }
.pp-color-swatch input[type="color"] {
    width: 16px;
    height: 16px;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
}
.pp-download-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 20px;
    background: linear-gradient(135deg, var(--primary) 0%, #4f46e5 100%);
    color: #fff;
    border: none;
    border-radius: 30px;
    font-size: 0.85rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 3px 12px rgba(99,102,241,0.3);
    transition: transform 0.15s, box-shadow 0.15s;
}
.pp-download-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 18px rgba(99,102,241,0.4);
}
.pp-copy-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 20px;
    background: var(--surface);
    color: var(--text);
    border: 1.5px solid var(--border);
    border-radius: 30px;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
}
.pp-copy-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}

/* ── Wizard Stepper ── */
.ppw-stepper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 8px 0 16px;
}
.ppw-stepper-step {
    display: flex;
    align-items: center;
    gap: 8px;
    opacity: 0.45;
    transition: opacity 0.2s;
}
.ppw-stepper-step.active,
.ppw-stepper-step.completed { opacity: 1; }
.ppw-step-num {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 700;
    border: 2px solid var(--border);
    color: var(--text-muted);
    background: var(--bg);
    transition: all 0.2s;
    flex-shrink: 0;
}
.ppw-stepper-step.active .ppw-step-num {
    border-color: var(--primary);
    background: var(--primary);
    color: #fff;
}
.ppw-stepper-step.completed .ppw-step-num {
    border-color: #16a34a;
    background: #16a34a;
    color: #fff;
}
.ppw-step-label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text);
    white-space: nowrap;
}
.ppw-stepper-line {
    flex: 1;
    height: 2px;
    background: var(--border);
    margin: 0 10px;
    min-width: 20px;
    max-width: 60px;
}

/* ── Wizard Steps ── */
.ppw-step {
    animation: fadeInUp 0.25s ease both;
}

/* ── Step 1: Editor ── */
.ppw-editor {
    margin-top: 12px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 14px;
    overflow: hidden;
}
.ppw-editor-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-bottom: 1px solid var(--border);
    background: var(--bg);
    gap: 8px;
    flex-wrap: wrap;
}
.ppw-editor-tools {
    display: flex;
    gap: 4px;
}
.ppw-editor-tool-btn {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 5px 10px;
    border: 1.5px solid transparent;
    border-radius: 8px;
    background: none;
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    color: var(--text-muted);
    transition: all 0.15s;
}
.ppw-editor-tool-btn.active {
    border-color: var(--primary);
    color: var(--primary);
    background: rgba(99,102,241,0.08);
}
.ppw-editor-actions {
    display: flex;
    gap: 6px;
}
.ppw-editor-action-btn {
    padding: 5px 12px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    font-size: 0.78rem;
    cursor: pointer;
    color: var(--text);
    transition: all 0.15s;
}
.ppw-editor-apply-btn {
    background: var(--primary);
    color: #fff;
    border-color: var(--primary);
}
.ppw-editor-tool-options {
    padding: 0 12px;
    min-height: 0;
}
.ppw-editor-tool-options:not(:empty) {
    padding: 8px 12px;
    border-bottom: 1px solid var(--border);
}
.ppw-editor-canvas-wrap {
    padding: 8px;
    display: flex;
    justify-content: center;
    background: var(--bg);
}
.ppw-editor-canvas-wrap canvas {
    max-width: 100%;
    border-radius: 6px;
    cursor: crosshair;
}
.ppw-editor-info {
    padding: 4px 12px 6px;
    font-size: 0.72rem;
    color: var(--text-muted);
    text-align: center;
}

/* ── Step 1: Checkbox ── */
.ppw-checkbox-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 0 0;
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--text);
    cursor: pointer;
}
.ppw-checkbox-row input[type="checkbox"] {
    width: 17px;
    height: 17px;
    accent-color: var(--primary);
}

/* ── Step 2: Layout ── */
.ppw-step2-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 16px;
    align-items: start;
}
.ppw-preview-area {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.ppw-preview-area canvas {
    width: 100%;
    max-height: 420px;
    object-fit: contain;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: var(--bg);
}
.ppw-spinner-overlay {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 40px;
    color: var(--text-muted);
    font-size: 0.88rem;
    font-weight: 500;
}
.ppw-spinner-overlay .spinner {
    width: 32px;
    height: 32px;
}
.ppw-preview-area .ppw-spinner-overlay {
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,0.85);
    border-radius: 12px;
    z-index: 5;
}

/* ── Touch-up toolbar ── */
.ppw-touchup-toolbar {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 0;
    flex-wrap: wrap;
}
.ppw-touchup-btn {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border: 1.5px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    font-size: 0.75rem;
    cursor: pointer;
    color: var(--text-muted);
    transition: all 0.15s;
}
.ppw-touchup-btn.active {
    border-color: var(--primary);
    color: var(--primary);
    background: rgba(99,102,241,0.08);
}
.ppw-touchup-options {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.78rem;
    color: var(--text-muted);
}
.ppw-touchup-options input[type="range"] {
    width: 80px;
}

/* ── Step 2: Size label & custom inputs ── */
.ppw-size-label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--primary);
    padding: 4px 0;
}
.ppw-custom-size-inputs {
    display: flex;
    align-items: center;
    gap: 8px;
}
.ppw-custom-size-inputs label {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 0.75rem;
    color: var(--text-muted);
}
.ppw-num-input {
    width: 70px;
    padding: 6px 8px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    color: var(--text);
    font-size: 0.83rem;
}

/* ── Step 2: Range slider row ── */
.ppw-range-row {
    display: flex;
    align-items: center;
    gap: 10px;
}
.ppw-range {
    flex: 1;
    accent-color: var(--primary);
}
.ppw-range-row span {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-muted);
    min-width: 40px;
}

/* ── Step 3: Radio cards ── */
.ppw-radio-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.ppw-radio {
    cursor: pointer;
}
.ppw-radio input[type="radio"] {
    display: none;
}
.ppw-radio-card {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 14px 18px;
    border: 2px solid var(--border);
    border-radius: 12px;
    background: var(--surface);
    transition: all 0.15s;
}
.ppw-radio-card strong {
    font-size: 0.9rem;
    color: var(--text);
}
.ppw-radio-card span {
    font-size: 0.78rem;
    color: var(--text-muted);
}
.ppw-radio input:checked + .ppw-radio-card {
    border-color: var(--primary);
    background: rgba(99,102,241,0.05);
}
.ppw-sheet-options {
    display: flex;
    flex-direction: column;
    gap: 14px;
    margin-top: 16px;
    padding: 16px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 12px;
}

/* ── Step 4: Results ── */
.ppw-results-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.ppw-result-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 14px;
}
.ppw-result-label {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
}
.ppw-result-img-wrap {
    width: 100%;
    max-height: 300px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border-radius: 10px;
    border: 1px solid var(--border);
    background: var(--bg);
}
.ppw-result-img-wrap img {
    max-width: 100%;
    max-height: 300px;
    object-fit: contain;
}
.ppw-result-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    margin-top: 18px;
    flex-wrap: wrap;
}
.ppw-start-over-btn {
    padding: 9px 20px;
    border: 1.5px solid var(--border);
    border-radius: 30px;
    background: var(--surface);
    color: var(--text);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.2s, color 0.2s;
}
.ppw-start-over-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}

/* ── Wizard Navigation ── */
.ppw-nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 12px;
}
.ppw-nav-btn {
    padding: 10px 28px;
    border: none;
    border-radius: 10px;
    font-size: 0.9rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.2s, opacity 0.2s;
}
.ppw-back-btn {
    background: var(--surface);
    color: var(--text);
    border: 1.5px solid var(--border);
}
.ppw-back-btn:hover { border-color: var(--primary); color: var(--primary); }
.ppw-next-btn {
    background: var(--primary);
    color: #fff;
    margin-left: auto;
}
.ppw-next-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.ppw-next-btn:not(:disabled):hover { background: #4f46e5; }

@media (max-width: 640px) {
    .ppw-step-label { display: none; }
    .ppw-step2-layout { grid-template-columns: 1fr; }
    .ppw-results-grid { grid-template-columns: 1fr; }
    .pp-drop-zone { min-height: 220px; }
}

/* ========== Nepali Tool Results ========== */
.nepali-result-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    padding: 24px;
}

.nepali-result-card {
    padding: 24px;
    border-radius: var(--radius-sm);
    text-align: center;
}

.nepali-result-card.input-card {
    background: var(--bg);
}

.nepali-result-card.result-card {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
}

.nepali-result-label {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--text-secondary);
    margin-bottom: 8px;
}

.nepali-result-value {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.nepali-result-detail {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: 4px;
}

.nepali-unicode-result {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    padding: 24px;
}

.unicode-input-box,
.unicode-output-box {
    padding: 20px;
    border-radius: var(--radius-sm);
}

.unicode-input-box {
    background: var(--bg);
}

.unicode-output-box {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
}

.unicode-text {
    font-size: 1.1rem;
    line-height: 1.8;
    word-break: break-word;
    white-space: pre-wrap;
    min-height: 60px;
}

.unicode-output {
    font-size: 1.3rem;
    font-weight: 500;
}

@media (max-width: 640px) {
    .nepali-result-grid,
    .nepali-unicode-result {
        grid-template-columns: 1fr;
    }
}

/* ========== All Tools Map ========== */
.all-tools-map {
    border-top: 1px solid var(--border);
    margin-top: 32px;
    padding-top: 40px;
    padding-bottom: 48px;
}

.tools-map-header {
    text-align: center;
    margin-bottom: 36px;
}

.tools-map-header h2 {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 8px;
}

.tools-map-header p {
    color: var(--text-secondary);
    font-size: 0.95rem;
}

.tools-map-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 32px;
}

.tools-map-column h3 {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--border);
}

.tools-map-column ul {
    list-style: none;
}

.tools-map-column li {
    margin-bottom: 2px;
}

.tools-map-column li a {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    border-radius: var(--radius-sm);
    text-decoration: none;
    color: var(--text);
    font-size: 0.85rem;
    font-weight: 500;
    transition: background var(--transition);
}

.tools-map-column li a:hover {
    background: var(--bg);
}

.tools-map-icon {
    width: 28px;
    height: 28px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    font-weight: 700;
    color: white;
    flex-shrink: 0;
}

@media (max-width: 640px) {
    .tools-map-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 24px;
    }
}

@media (max-width: 380px) {
    .tools-map-grid {
        grid-template-columns: 1fr;
    }
}

/* ========== Footer ========== */
footer {
    text-align: center;
    padding: 24px;
    color: var(--text-secondary);
    font-size: 0.85rem;
    border-top: 1px solid var(--border);
    margin-top: auto;
}

.footer-love {
    margin-top: 6px;
    font-size: 0.8rem;
    color: var(--text-secondary);
    animation: fadeIn 1.2s ease both;
}

/* ========== Sign Tool ========== */

/* ===== Sign Tool ===== */

.tool-workspace.sign-mode { max-width: 1100px; }

.sign-container {
    margin-top: 16px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    overflow: hidden;
    animation: fadeInUp 0.4s ease both;
}

/* Two-column layout */
.sign-panels {
    display: grid;
    grid-template-columns: 360px 1fr;
    min-height: 700px;
}

/* ---- Left panel ---- */
.sign-draw-panel {
    border-right: 1px solid var(--border);
    display: flex;
    flex-direction: column;
    background: var(--surface);
}

/* Tab bar */
.sign-tab-bar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border-bottom: 1px solid var(--border);
    background: var(--bg);
    flex-shrink: 0;
}

.sign-tab {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 13px 6px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-secondary);
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
}
.sign-tab:hover { color: var(--primary); background: rgba(99,102,241,0.04); }
.sign-tab.active { color: var(--primary); border-bottom-color: var(--primary); background: rgba(99,102,241,0.06); }

/* Panes */
.sign-tab-pane {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
    min-height: 0;
}

/* ---- Draw pane ---- */
.sign-canvas-wrap {
    position: relative;
    border: 2px dashed var(--border);
    border-radius: var(--radius-sm);
    overflow: hidden;
    background: #fff;
    cursor: crosshair;
    transition: border-color var(--transition), box-shadow var(--transition);
    flex: 1;
    min-height: 200px;
}
.sign-canvas-wrap:hover, .sign-canvas-wrap.active {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.12);
}
.sign-canvas-wrap canvas {
    display: block;
    touch-action: none;
    /* width/height set in JS to exactly match wrapper dimensions (HiDPI-aware) */
}
.sign-canvas-placeholder {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    font-family: 'Dancing Script', cursive;
    color: #bbb;
    pointer-events: none;
    transition: opacity 0.2s;
}
.sign-baseline {
    position: absolute;
    bottom: 28%;
    left: 8%;
    right: 8%;
    height: 1px;
    background: rgba(99,102,241,0.3);
    pointer-events: none;
}

/* Draw toolbar */
.sign-draw-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-shrink: 0;
}
.sign-pen-options {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.sign-sep {
    width: 1px;
    height: 18px;
    background: var(--border);
}
.sign-draw-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}
.sign-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--text-secondary);
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    cursor: pointer;
    transition: color 0.15s, background 0.15s, border-color 0.15s;
}
.sign-action-btn:hover { color: var(--text); border-color: #aaa; }

/* Color swatches */
.sign-color-btn {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: 3px solid #fff;
    box-shadow: 0 0 0 2px var(--border);
    cursor: pointer;
    transition: transform 0.15s, box-shadow 0.15s;
    flex-shrink: 0;
}
.sign-color-btn.selected { box-shadow: 0 0 0 3px var(--primary); transform: scale(1.18); }
.sign-color-btn:hover:not(.selected) { transform: scale(1.1); }

.sign-thickness {
    width: 80px;
    accent-color: var(--primary);
    cursor: pointer;
}

/* ---- Type pane ---- */
.sign-type-input {
    width: 100%;
    padding: 11px 14px;
    font-size: 1rem;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
    box-sizing: border-box;
}
.sign-type-input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.12);
}

.sign-font-list {
    display: flex;
    flex-direction: column;
    gap: 7px;
    flex: 1;
    overflow-y: auto;
    min-height: 0;
}
.sign-font-option {
    display: flex;
    align-items: center;
    padding: 9px 12px;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    overflow: hidden;
    gap: 10px;
}
.sign-font-option:hover { border-color: var(--primary); background: rgba(99,102,241,0.04); }
.sign-font-option.selected { border-color: var(--primary); background: rgba(99,102,241,0.08); }
.sign-font-option .font-preview {
    font-size: 1.55rem;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.2;
}
.sign-font-option .font-check {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid var(--border);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, border-color 0.15s;
    font-size: 10px;
    color: transparent;
}
.sign-font-option.selected .font-check {
    background: var(--primary);
    border-color: var(--primary);
    color: #fff;
    font-weight: 700;
}

/* ---- Upload pane ---- */
.sign-upload-zone {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 2px dashed var(--border);
    border-radius: var(--radius-sm);
    background: var(--bg);
    cursor: pointer;
    transition: border-color 0.2s, background 0.2s;
    padding: 28px 16px;
    text-align: center;
    color: var(--text-secondary);
    min-height: 180px;
}
.sign-upload-zone:hover, .sign-upload-zone.dragover {
    border-color: var(--primary);
    background: rgba(99,102,241,0.04);
    color: var(--primary);
}
.sign-upload-zone p { font-size: 0.9rem; font-weight: 500; margin: 0; }
.sign-upload-zone span { font-size: 0.78rem; opacity: 0.7; }

.sign-upload-preview {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
}
.sign-upload-preview img {
    max-width: 100%;
    max-height: 160px;
    object-fit: contain;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: #fff;
    padding: 8px;
}

/* Panel footer */
.sign-panel-footer {
    padding: 12px 16px;
    border-top: 1px solid var(--border);
    background: var(--bg);
    flex-shrink: 0;
}
.sign-apply-all {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
    cursor: pointer;
    user-select: none;
}
.sign-apply-all input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--primary);
    cursor: pointer;
}

/* ---- Right panel ---- */
.sign-place-panel {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: #eeeef6;
}
.sign-place-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    flex-shrink: 0;
}
.sign-place-hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
}
.sign-page-nav {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
}
.sign-page-nav span {
    min-width: 80px;
    text-align: center;
    font-weight: 600;
}

/* Large PDF preview */
.sign-preview-wrap {
    position: relative;
    flex: 1;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    background: #c8c8d8;
    border-radius: var(--radius-sm);
    overflow: hidden;
    min-height: 520px;
    box-shadow: inset 0 2px 8px rgba(0,0,0,0.08);
}
.sign-preview-wrap canvas {
    display: block;
    width: 100%;
    height: auto;
    box-shadow: 0 4px 20px rgba(0,0,0,0.18);
}

/* Draggable overlay */
.sign-sig-overlay {
    position: absolute;
    cursor: move;
    border: 2px dashed rgba(99,102,241,0.85);
    border-radius: 4px;
    user-select: none;
    touch-action: none;
    box-shadow: 0 2px 10px rgba(0,0,0,0.15);
    background: rgba(255,255,255,0.04);
}
.sign-sig-overlay img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    pointer-events: none;
    border-radius: 2px;
}
.sign-sig-overlay .resize-handle {
    position: absolute;
    bottom: -7px;
    right: -7px;
    width: 16px;
    height: 16px;
    background: var(--primary);
    border: 2px solid #fff;
    border-radius: 4px;
    cursor: se-resize;
    z-index: 2;
    box-shadow: 0 1px 4px rgba(0,0,0,0.2);
}

/* Mobile */
@media (max-width: 760px) {
    .sign-panels { grid-template-columns: 1fr; min-height: unset; }
    .sign-draw-panel { border-right: none; border-bottom: 1px solid var(--border); }
    .sign-preview-wrap { min-height: 340px; }
    .tool-workspace.sign-mode { max-width: 100%; }
}

/* ========== Live Option Estimate Bar ========== */
.option-estimate {
    min-height: 0;
}
.option-estimate:empty {
    display: none;
}
.est-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 14px;
    background: linear-gradient(135deg, #f0f0ff 0%, #f5f4ff 100%);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    margin-top: 12px;
    font-size: 0.82rem;
    color: var(--text);
    animation: fadeIn 0.2s ease;
}
.est-primary {
    display: flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.est-primary strong {
    color: var(--primary);
}
.est-secondary {
    font-size: 0.75rem;
    color: var(--text-secondary);
    white-space: nowrap;
    flex-shrink: 0;
}
.est-highlight {
    font-weight: 700;
    color: #16a34a;
    white-space: nowrap;
    flex-shrink: 0;
    padding: 2px 8px;
    background: rgba(22,163,74,0.08);
    border-radius: 12px;
    font-size: 0.78rem;
}

/* ========== Image Thumbnails in File List ========== */
.file-item-thumb {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.file-thumb-img {
    width: 44px;
    height: 44px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--bg);
}
.file-item-dimensions {
    font-size: 0.65rem;
    color: var(--text-secondary);
    white-space: nowrap;
}

/* ========== PDF Hero File Card ========== */
.file-list-hero {
    text-align: center;
    padding: 32px 20px;
}
.file-list-hero .file-item {
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 24px;
    background: var(--bg);
    border-radius: var(--radius);
}
.file-list-hero .file-item-info {
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
.file-list-hero .file-item-icon {
    width: 56px;
    height: 56px;
    font-size: 1.1rem;
    border-radius: 14px;
}
.file-list-hero .file-item-name {
    font-size: 1rem;
    font-weight: 600;
    text-align: center;
    white-space: normal;
}
.file-list-hero .file-item-size {
    font-size: 0.85rem;
}
.file-list-hero .file-item-remove {
    position: absolute;
    top: 12px;
    right: 12px;
}
.file-list-hero .file-item {
    position: relative;
}

/* ========== Image Result Comparison ========== */
.img-compare {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 20px;
    margin-top: 16px;
    animation: scaleIn 0.4s ease both;
}
.img-compare-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
    flex-wrap: wrap;
    gap: 10px;
}
.img-compare-title {
    font-weight: 700;
    font-size: 1rem;
}
.img-compare-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.img-compare-panels {
    display: flex;
    align-items: center;
    gap: 12px;
    justify-content: center;
}
.img-compare-card {
    flex: 1;
    text-align: center;
    min-width: 0;
}
.img-compare-label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 8px;
}
.img-compare-thumb-wrap {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
}
.img-compare-thumb {
    max-width: 100%;
    max-height: 200px;
    object-fit: contain;
    border-radius: 4px;
}
.img-compare-meta {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-top: 6px;
}
.img-compare-arrow {
    flex-shrink: 0;
    color: var(--text-secondary);
    opacity: 0.5;
}
.img-compare-result-card .img-compare-thumb-wrap {
    border-color: var(--primary);
    background: repeating-conic-gradient(#e5e5e5 0% 25%, #fff 0% 50%) 50% / 16px 16px;
}

/* ========== Result Stats ========== */
.result-stats {
    font-size: 0.85rem;
    color: var(--text-secondary);
    margin-top: 8px;
}
.result-stats-highlight {
    font-weight: 700;
    color: #16a34a;
}

/* ========== Image Editor ========== */
.img-editor {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin-top: 16px;
    overflow: hidden;
    animation: scaleIn 0.3s ease both;
}
.img-editor-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    gap: 8px;
    flex-wrap: wrap;
}
.img-editor-tools {
    display: flex;
    gap: 4px;
}
.img-editor-tool-btn {
    width: 36px;
    height: 36px;
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text);
    transition: all 0.15s;
}
.img-editor-tool-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}
.img-editor-tool-btn.active {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
}
.img-editor-actions {
    display: flex;
    gap: 6px;
}
.img-editor-action-btn {
    padding: 6px 12px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    background: var(--surface);
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--text);
    transition: all 0.15s;
}
.img-editor-action-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}
.img-editor-apply-btn {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
}
.img-editor-apply-btn:hover {
    background: var(--primary-hover);
}
.img-editor-tool-options {
    padding: 0;
    min-height: 0;
}
.img-editor-opt-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: var(--bg);
    border-bottom: 1px solid var(--border);
    flex-wrap: wrap;
}
.img-editor-opt-btn {
    padding: 4px 10px;
    border: 1px solid var(--border);
    border-radius: 6px;
    background: var(--surface);
    cursor: pointer;
    font-size: 0.75rem;
    font-weight: 500;
    transition: all 0.15s;
}
.img-editor-opt-btn:hover {
    border-color: var(--primary);
    color: var(--primary);
}
.img-editor-opt-btn.active {
    background: var(--primary);
    border-color: var(--primary);
    color: white;
}
.img-editor-opt-label {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    color: var(--text-secondary);
}
.img-editor-opt-hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
    font-style: italic;
}
.img-editor-opt-presets {
    display: flex;
    gap: 4px;
}
.img-editor-slider {
    width: 80px;
    accent-color: var(--primary);
}
.img-editor-canvas-wrap {
    padding: 12px;
    display: flex;
    justify-content: center;
    background: var(--bg);
    min-height: 200px;
}
.img-editor-canvas-wrap canvas {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    cursor: default;
}
.img-editor-info {
    padding: 6px 12px;
    font-size: 0.72rem;
    color: var(--text-secondary);
    text-align: center;
    border-top: 1px solid var(--border);
}

/* ========== Watermark Tool ========== */
.wm-section-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 10px;
}
.wm-upload-zone {
    min-height: 140px;
}
.wm-options {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.wm-opt-row {
    display: flex;
    align-items: center;
    gap: 10px;
}
.wm-opt-label {
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--text-secondary);
    min-width: 56px;
}
.wm-opt-value {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--text-primary);
    min-width: 36px;
    text-align: right;
}

/* Text Watermark overlay */
.wmt-text-input {
    width: 100%;
    padding: 10px 12px;
    font-size: 0.9rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg-primary);
    color: var(--text-primary);
    margin-bottom: 4px;
}
.wmt-text-input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}
.wmt-color-btns {
    display: flex;
    gap: 6px;
}
.wmt-text-overlay {
    position: absolute;
    cursor: grab;
    pointer-events: auto;
    white-space: nowrap;
    font-family: Helvetica, Arial, sans-serif;
    font-weight: 700;
    letter-spacing: 0.04em;
    user-select: none;
    -webkit-user-select: none;
    z-index: 3;
    text-shadow: 0 1px 3px rgba(0,0,0,0.08);
}
.wmt-text-overlay:active { cursor: grabbing; }

/* Compare mode widens workspace */
.tool-workspace.compare-mode {
    max-width: 800px;
}

/* ========== Responsive ========== */
@media (max-width: 640px) {
    .hero h1 { font-size: 1.5rem; }
    .category-grid { grid-template-columns: 1fr; }
    .tool-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 10px;
    }
    .tool-card { padding: 18px 14px; }
    .tool-card-icon { width: 44px; height: 44px; font-size: 1.2rem; }
    .upload-zone { padding: 32px 16px; }
    .dashboard-header { flex-direction: column; text-align: center; }

    /* Image editor responsive */
    .img-editor-toolbar { flex-direction: column; align-items: stretch; }
    .img-editor-tools { justify-content: center; }
    .img-editor-actions { justify-content: center; }
    .img-editor-opt-row { flex-direction: column; align-items: flex-start; }

    /* Image comparison responsive */
    .img-compare-panels { flex-direction: column; }
    .img-compare-arrow { transform: rotate(90deg); }
    .img-compare-header { flex-direction: column; align-items: flex-start; }
}

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

/* ========== API Nav Link ========== */
.nav-api-link {
    margin-left: auto;
    flex-shrink: 0;
    font-size: 0.82rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--primary);
    background: rgba(99,102,241,0.08);
    padding: 5px 12px;
    border-radius: 6px;
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}
.nav-api-link:hover { background: var(--primary); color: #fff; }

/* When breadcrumb is visible it already takes flex:1, so API link doesn't need margin-left:auto */
#breadcrumb:not(.hidden) ~ .nav-api-link { margin-left: 0; }

/* ========== API Docs View ========== */
.api-docs-header {
    text-align: center;
    padding: 40px 20px 24px;
}
.api-docs-header h1 {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}
.api-docs-header p {
    color: var(--text-secondary);
    font-size: 0.95rem;
    margin-bottom: 14px;
}
.api-docs-links {
    display: flex;
    gap: 12px;
    justify-content: center;
}
.api-docs-links a {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--primary);
    border: 1px solid var(--primary);
    border-radius: 6px;
    padding: 5px 14px;
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}
.api-docs-links a:hover { background: var(--primary); color: #fff; }

/* Search */
.api-docs-search {
    max-width: 600px;
    margin: 0 auto 28px;
    padding: 0 20px;
}
.api-docs-search input {
    width: 100%;
    padding: 10px 16px;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    font-size: 0.92rem;
    background: var(--surface);
    color: var(--text);
    outline: none;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.api-docs-search input:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.12);
}

/* Content container */
.api-docs-content {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 20px 60px;
}

/* Category sections */
.api-cat-section { margin-bottom: 32px; }
.api-cat-section.hidden { display: none; }
.api-cat-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--border);
}
.api-cat-icon {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.75rem;
    color: #fff;
    flex-shrink: 0;
}
.api-cat-header h2 {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--text);
}
.api-cat-header span {
    font-size: 0.8rem;
    color: var(--text-secondary);
}

/* Endpoint cards */
.api-endpoint-card {
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    margin-bottom: 8px;
    background: var(--surface);
    overflow: hidden;
    transition: box-shadow var(--transition);
}
.api-endpoint-card.hidden { display: none; }
.api-endpoint-card:hover { box-shadow: var(--shadow); }
.api-endpoint-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    cursor: pointer;
    user-select: none;
}
.api-endpoint-header:hover { background: rgba(99,102,241,0.03); }
.api-method-badge {
    font-size: 0.7rem;
    font-weight: 700;
    color: #fff;
    background: #10b981;
    padding: 2px 8px;
    border-radius: 4px;
    flex-shrink: 0;
    letter-spacing: 0.03em;
}
.api-endpoint-path {
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 0.85rem;
    color: var(--text);
    font-weight: 500;
}
.api-endpoint-name {
    margin-left: auto;
    font-size: 0.82rem;
    color: var(--text-secondary);
    flex-shrink: 0;
}
.api-endpoint-chevron {
    flex-shrink: 0;
    transition: transform 0.2s;
    color: var(--text-secondary);
}
.api-endpoint-card.open .api-endpoint-chevron { transform: rotate(180deg); }

/* Endpoint body (hidden by default) */
.api-endpoint-body {
    display: none;
    padding: 0 16px 16px;
    border-top: 1px solid var(--border);
}
.api-endpoint-card.open .api-endpoint-body { display: block; }
.api-endpoint-desc {
    font-size: 0.88rem;
    color: var(--text-secondary);
    margin: 12px 0;
}

/* Params table */
.api-params-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
    margin-bottom: 14px;
}
.api-params-table th {
    text-align: left;
    padding: 6px 10px;
    background: rgba(99,102,241,0.05);
    color: var(--text-secondary);
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.api-params-table td {
    padding: 6px 10px;
    border-top: 1px solid var(--border);
    vertical-align: top;
}
.api-params-table code {
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 0.8rem;
    background: rgba(99,102,241,0.06);
    padding: 1px 5px;
    border-radius: 3px;
}
.api-param-required {
    color: #ef4444;
    font-weight: 600;
    font-size: 0.75rem;
}
.api-param-optional {
    color: var(--text-secondary);
    font-size: 0.75rem;
}
.api-response-badge {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 4px;
    margin-bottom: 12px;
}
.api-response-badge.file { background: rgba(59,130,246,0.1); color: #3b82f6; }
.api-response-badge.json { background: rgba(16,185,129,0.1); color: #10b981; }

/* Try It Out */
.api-tryit-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--primary);
    background: none;
    border: 1px solid var(--primary);
    border-radius: 6px;
    padding: 5px 14px;
    cursor: pointer;
    transition: background var(--transition), color var(--transition);
}
.api-tryit-toggle:hover { background: var(--primary); color: #fff; }
.api-tryit-area {
    display: none;
    margin-top: 14px;
    padding: 16px;
    background: var(--bg);
    border-radius: var(--radius-sm);
    border: 1px solid var(--border);
}
.api-tryit-area.open { display: block; }
.api-tryit-area .form-group {
    margin-bottom: 12px;
}
.api-tryit-area .form-group label {
    display: block;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--text);
    margin-bottom: 4px;
}
.api-tryit-area .form-group input[type="text"],
.api-tryit-area .form-group input[type="number"],
.api-tryit-area .form-group input[type="password"],
.api-tryit-area .form-group textarea,
.api-tryit-area .form-group select {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid var(--border);
    border-radius: 6px;
    font-size: 0.85rem;
    background: var(--surface);
    color: var(--text);
}
.api-tryit-area .form-group input[type="file"] {
    font-size: 0.85rem;
}
.api-tryit-area .form-group .hint {
    font-size: 0.75rem;
    color: var(--text-secondary);
    margin-top: 3px;
}
.api-tryit-execute {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    color: #fff;
    background: var(--primary);
    border: none;
    border-radius: 6px;
    padding: 8px 20px;
    cursor: pointer;
    transition: background var(--transition);
}
.api-tryit-execute:hover { background: var(--primary-hover); }
.api-tryit-execute:disabled { opacity: 0.5; cursor: not-allowed; }
.api-tryit-execute .spinner {
    width: 14px;
    height: 14px;
    border-width: 2px;
}

/* Response display */
.api-response {
    margin-top: 14px;
}
.api-response-status {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    font-weight: 600;
    margin-bottom: 8px;
}
.api-response-status .status-code {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.78rem;
}
.api-response-status .status-code.ok { background: rgba(16,185,129,0.12); color: #059669; }
.api-response-status .status-code.err { background: rgba(239,68,68,0.12); color: #dc2626; }
.api-response-timing {
    font-size: 0.78rem;
    color: var(--text-secondary);
}
.api-response-body {
    background: #1e1e2e;
    color: #cdd6f4;
    border-radius: var(--radius-sm);
    padding: 14px;
    overflow-x: auto;
    font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 0.8rem;
    line-height: 1.5;
    max-height: 400px;
    overflow-y: auto;
    white-space: pre-wrap;
    word-break: break-word;
}
.api-response-download {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--primary);
    background: none;
    border: 1px solid var(--primary);
    border-radius: 6px;
    padding: 6px 14px;
    cursor: pointer;
    text-decoration: none;
    transition: background var(--transition), color var(--transition);
}
.api-response-download:hover { background: var(--primary); color: #fff; }

/* Mobile */
@media (max-width: 640px) {
    .api-docs-header h1 { font-size: 1.4rem; }
    .api-endpoint-header { flex-wrap: wrap; gap: 6px; padding: 10px 12px; }
    .api-endpoint-name { margin-left: 0; width: 100%; }
    .api-endpoint-body { padding: 0 12px 12px; }
    .api-params-table { font-size: 0.75rem; }
    .api-params-table th, .api-params-table td { padding: 4px 6px; }
    .api-tryit-area { padding: 12px; }
    .nav-api-link { padding: 4px 8px; font-size: 0.75rem; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09IEtleWZyYW1lIEFuaW1hdGlvbnMgPT09PT09PT09PSAqL1xuQGtleWZyYW1lcyBzcGluIHtcbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuQGtleWZyYW1lcyBmYWRlSW5VcCB7XG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KTsgfVxuICAgIHRvICAgeyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH1cbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuICAgIGZyb20geyBvcGFjaXR5OiAwOyB9XG4gICAgdG8gICB7IG9wYWNpdHk6IDE7IH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZUluRG93biB7XG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTJweCk7IH1cbiAgICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9XG59XG5cbkBrZXlmcmFtZXMgbG9nb1NoaW1tZXIge1xuICAgIDAlLCAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9XG4gICAgNTAlICAgICAgIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSA1MCU7IH1cbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAxOyB9XG4gICAgNTAlICAgICAgIHsgb3BhY2l0eTogMC42OyB9XG59XG5cbkBrZXlmcmFtZXMgc2NhbGVJbiB7XG4gICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogc2NhbGUoMC45Mik7IH1cbiAgICB0byAgIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxufVxuXG4vKiA9PT09PT09PT09IFJlc2V0ICYgQmFzZSA9PT09PT09PT09ICovXG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG46cm9vdCB7XG4gICAgLS1iZzogI2Y1ZjRmZjtcbiAgICAtLXN1cmZhY2U6ICNmZmZmZmY7XG4gICAgLS10ZXh0OiAjMWExNzMwO1xuICAgIC0tdGV4dC1zZWNvbmRhcnk6ICM2YjcyODA7XG4gICAgLS1ib3JkZXI6ICNlMmUwZjA7XG4gICAgLS1wcmltYXJ5OiAjNjM2NmYxO1xuICAgIC0tcHJpbWFyeS1ob3ZlcjogIzRmNDZlNTtcbiAgICAtLXJhZGl1czogMTJweDtcbiAgICAtLXJhZGl1cy1zbTogOHB4O1xuICAgIC0tc2hhZG93OiAwIDJweCA4cHggcmdiYSg5OSwxMDIsMjQxLDAuMDgpO1xuICAgIC0tc2hhZG93LWxnOiAwIDhweCAzMHB4IHJnYmEoOTksMTAyLDI0MSwwLjE1KTtcbiAgICAtLXRyYW5zaXRpb246IDAuMnMgZWFzZTtcblxuICAgIC8qIFBERiB0b29sIGNvbG9ycyAqL1xuICAgIC0tY29sb3ItbWVyZ2U6ICNlNTMyMmQ7XG4gICAgLS1jb2xvci1zcGxpdDogI2Y1OWUwYjtcbiAgICAtLWNvbG9yLWNvbXByZXNzOiAjMTBiOTgxO1xuICAgIC0tY29sb3Itcm90YXRlOiAjOGI1Y2Y2O1xuICAgIC0tY29sb3ItcGRmLXRvLWpwZzogIzNiODJmNjtcbiAgICAtLWNvbG9yLWpwZy10by1wZGY6ICNlYzQ4OTk7XG4gICAgLS1jb2xvci13YXRlcm1hcmstdGV4dDogIzA2YjZkNDtcbiAgICAtLWNvbG9yLXdhdGVybWFyay1pbWFnZTogIzE0YjhhNjtcbiAgICAtLWNvbG9yLXBhZ2UtbnVtYmVyczogIzYzNjZmMTtcbiAgICAtLWNvbG9yLXByb3RlY3Q6ICNlZjQ0NDQ7XG4gICAgLS1jb2xvci11bmxvY2s6ICMyMmM1NWU7XG4gICAgLS1jb2xvci1jcm9wOiAjZjk3MzE2O1xuICAgIC0tY29sb3Itc2lnbjogIzhiNWNmNjtcblxuICAgIC8qIENTViB0b29sIGNvbG9ycyAqL1xuICAgIC0tY29sb3ItY3N2LW1lcmdlOiAjMjU2M2ViO1xuICAgIC0tY29sb3ItY3N2LXNwbGl0OiAjN2MzYWVkO1xuICAgIC0tY29sb3ItY3N2LWNvbnZlcnQ6ICMwODkxYjI7XG4gICAgLS1jb2xvci1jc3YtZmlsdGVyOiAjMDU5NjY5O1xuICAgIC0tY29sb3ItY3N2LXNvcnQ6ICNkOTc3MDY7XG4gICAgLS1jb2xvci1jc3YtZGVkdXA6ICNkYzI2MjY7XG4gICAgLS1jb2xvci1jc3YtY29sdW1uczogIzRmNDZlNTtcbiAgICAtLWNvbG9yLWNzdi1zdGF0czogIzBkOTQ4ODtcbiAgICAtLWNvbG9yLWNzdi1wcmV2aWV3OiAjNjM2NmYxO1xuICAgIC0tY29sb3ItY3N2LXZhbGlkYXRlOiAjZTExZDQ4O1xuICAgIC0tY29sb3ItY3N2LXJlcGxhY2U6ICM5MzMzZWE7XG4gICAgLS1jb2xvci1jc3YtdHJhbnNwb3NlOiAjMDI4NGM3O1xuXG4gICAgLyogSW1hZ2UgdG9vbCBjb2xvcnMgKi9cbiAgICAtLWNvbG9yLWltZy1jb21wcmVzczogIzA1OTY2OTtcbiAgICAtLWNvbG9yLWltZy1yZXNpemU6ICM3YzNhZWQ7XG4gICAgLS1jb2xvci1pbWctY3JvcDogI2Y5NzMxNjtcbiAgICAtLWNvbG9yLWltZy1yb3RhdGU6ICM4YjVjZjY7XG4gICAgLS1jb2xvci1pbWctZmxpcDogIzA2YjZkNDtcbiAgICAtLWNvbG9yLWltZy1jb252ZXJ0OiAjMjU2M2ViO1xuICAgIC0tY29sb3ItaW1nLXdhdGVybWFyay10ZXh0OiAjMDg5MWIyO1xuICAgIC0tY29sb3ItaW1nLXdhdGVybWFyay1pbWFnZTogIzE0YjhhNjtcbiAgICAtLWNvbG9yLWltZy1hZGp1c3Q6ICNkOTc3MDY7XG4gICAgLS1jb2xvci1pbWctYmx1cjogIzYzNjZmMTtcbiAgICAtLWNvbG9yLWltZy1zaGFycGVuOiAjZTExZDQ4O1xuICAgIC0tY29sb3ItaW1nLWZpbHRlcjogIzkzMzNlYTtcbiAgICAtLWNvbG9yLWltZy1yZW1iZzogI2VmNDQ0NDtcbiAgICAtLWNvbG9yLWltZy1wYXNzcG9ydDogIzBkOTQ4ODtcblxuICAgIC8qIERvY3VtZW50IHRvb2wgY29sb3JzICovXG4gICAgLS1jb2xvci1kb2MtZG9jeC10by1wZGY6ICNlNTMyMmQ7XG4gICAgLS1jb2xvci1kb2MtZG9jeC1iYXRjaC1wZGY6ICNjNDJkMjg7XG4gICAgLS1jb2xvci1kb2MtcGRmLXRvLXRleHQ6ICMzYjgyZjY7XG4gICAgLS1jb2xvci1kb2MtbWQtdG8taHRtbDogIzEwYjk4MTtcbiAgICAtLWNvbG9yLWRvYy1tZC10by1wZGY6ICMwNTk2Njk7XG4gICAgLS1jb2xvci1kb2MtZGlmZjogI2Y1OWUwYjtcbiAgICAtLWNvbG9yLWRvYy13b3JkLWNvdW50OiAjOGI1Y2Y2O1xuICAgIC0tY29sb3ItZG9jLXR4dC10by1wZGY6ICNlYzQ4OTk7XG4gICAgLS1jb2xvci1kb2MtbWVyZ2UtdGV4dDogIzI1NjNlYjtcbiAgICAtLWNvbG9yLWRvYy1maW5kLXJlcGxhY2U6ICM5MzMzZWE7XG4gICAgLS1jb2xvci1kb2MtZW5jb2Rpbmc6ICMwODkxYjI7XG4gICAgLS1jb2xvci1kb2MtbGluZS1lbmRpbmdzOiAjNjM2NmYxO1xuICAgIC0tY29sb3ItZG9jLWh0bWwtdG8tcGRmOiAjZGMyNjI2O1xuXG4gICAgLyogTmVwYWxpIHRvb2wgY29sb3JzICovXG4gICAgLS1jb2xvci1uZXBhbGktZGF0ZTogI2RjMjYyNjtcbiAgICAtLWNvbG9yLW5lcGFsaS11bmljb2RlOiAjN2MzYWVkO1xuXG4gICAgLyogQ2F0ZWdvcnkgY29sb3JzICovXG4gICAgLS1jYXQtcGRmOiAjZTUzMjJkO1xuICAgIC0tY2F0LWNzdjogIzI1NjNlYjtcbiAgICAtLWNhdC1pbWFnZTogIzdjM2FlZDtcbiAgICAtLWNhdC1kb2M6ICMwNTk2Njk7XG4gICAgLS1jYXQtbmVwYWxpOiAjZGMyNjI2O1xufVxuXG5ib2R5IHtcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5cbi8qID09PT09PT09PT0gSGVhZGVyID09PT09PT09PT0gKi9cbmhlYWRlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgcGFkZGluZzogMCAyNHB4O1xuICAgIGhlaWdodDogNjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAyMHB4O1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiAwO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBhbmltYXRpb246IHNsaWRlSW5Eb3duIDAuNHMgZWFzZSBib3RoO1xufVxuXG4vKiBCcmVhZGNydW1iIHRha2VzIGF2YWlsYWJsZSBzcGFjZSwgcHVzaGluZyBsYW5nIHN3aXRjaGVyIHJpZ2h0ICovXG4jYnJlYWRjcnVtYiB7IGZsZXg6IDE7IH1cblxuLyogPT09PT0gTGFuZ3VhZ2UgU3dpdGNoZXIgPT09PT0gKi9cbi5sYW5nLXN3aXRjaGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG4ubGFuZy10b2dnbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDVweDtcbiAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJhY2tncm91bmQgMC4ycztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLmxhbmctdG9nZ2xlOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA2KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG4ubGFuZy1jdXJyZW50LWZsYWcgeyBmb250LXNpemU6IDFyZW07IGxpbmUtaGVpZ2h0OiAxOyB9XG4ubGFuZy1jdXJyZW50LWNvZGUgeyBmb250LXNpemU6IDAuNzVyZW07IGxldHRlci1zcGFjaW5nOiAwLjA0ZW07IH1cbi5sYW5nLWNoZXZyb24geyBvcGFjaXR5OiAwLjU7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzOyB9XG4ubGFuZy10b2dnbGVbYXJpYS1leHBhbmRlZD1cInRydWVcIl0gLmxhbmctY2hldnJvbiB7IHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cblxuLmxhbmctZHJvcGRvd24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IGNhbGMoMTAwJSArIDhweCk7XG4gICAgcmlnaHQ6IDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgwLDAsMCwwLjEyKTtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBtYXgtaGVpZ2h0OiAzNDBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuMTVzIGVhc2UgYm90aDtcbn1cbltkaXI9XCJydGxcIl0gLmxhbmctZHJvcGRvd24geyByaWdodDogYXV0bzsgbGVmdDogMDsgfVxuXG4ubGFuZy1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDEwcHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbn1cbi5sYW5nLW9wdGlvbjpob3ZlciB7IGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA4KTsgfVxuLmxhbmctb3B0aW9uLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMSk7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ubGFuZy1mbGFnICAgIHsgZm9udC1zaXplOiAxLjFyZW07IGZsZXgtc2hyaW5rOiAwOyB9XG4ubGFuZy1uYXRpdmUgIHsgZm9udC1zaXplOiAwLjg1cmVtOyBmb250LXdlaWdodDogNjAwOyBmbGV4OiAxOyB9XG4ubGFuZy1lbmdsaXNoIHsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7IH1cblxuLyogPT09PT0gUlRMIG92ZXJyaWRlcyA9PT09PSAqL1xuW2Rpcj1cInJ0bFwiXSAubGFuZy1vcHRpb24geyB0ZXh0LWFsaWduOiByaWdodDsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XG5bZGlyPVwicnRsXCJdIC5jYXRlZ29yeS1jYXJkLWhlYWRlciB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxuW2Rpcj1cInJ0bFwiXSAudG9vbC1jYXJkIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbltkaXI9XCJydGxcIl0gLmJyZWFkY3J1bWIgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cbltkaXI9XCJydGxcIl0gaGVhZGVyIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9XG5bZGlyPVwicnRsXCJdIC5sYW5nLXN3aXRjaGVyIHsgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuW2Rpcj1cInJ0bFwiXSAubmRjLXRvb2xiYXIsXG5bZGlyPVwicnRsXCJdIC5udWMtdG9vbGJhciB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfVxuW2Rpcj1cInJ0bFwiXSAucmVtYmctd29ya3NwYWNlIHsgZGlyZWN0aW9uOiBydGw7IH1cbltkaXI9XCJydGxcIl0gLnBwdy1zdGVwMi1sYXlvdXQgeyBkaXJlY3Rpb246IHJ0bDsgfVxuW2Rpcj1cInJ0bFwiXSAub3B0aW9ucy1mb3JtIGxhYmVsIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH1cbltkaXI9XCJydGxcIl0gLmFjdGlvbi1iYXIgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7IH1cblxuLmxvZ28ge1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNjM2NmYxLCAjOGI1Y2Y2LCAjYTg1NWY3LCAjNjM2NmYxKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDMwMCUgMzAwJTtcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xuICAgIGFuaW1hdGlvbjogbG9nb1NoaW1tZXIgNHMgZWFzZSBpbmZpbml0ZTtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbn1cblxuLmJyZWFkY3J1bWIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG59XG5cbi5icmVhZGNydW1iIGEge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG4uYnJlYWRjcnVtYiBhOmhvdmVyIHsgY29sb3I6IHZhcigtLXByaW1hcnkpOyB9XG5cbi5icmVhZGNydW1iIC5zZXAgeyBjb2xvcjogdmFyKC0tYm9yZGVyKTsgfVxuXG4uYnJlYWRjcnVtYiBzcGFuOm5vdCguc2VwKSB7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qID09PT09PT09PT0gTWFpbiA9PT09PT09PT09ICovXG5tYWluIHtcbiAgICBmbGV4OiAxO1xuICAgIG1heC13aWR0aDogMTEwMHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBhZGRpbmc6IDI0cHggMTZweDtcbn1cblxuLmhpZGRlbiB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKiA9PT09PT09PT09IEhlcm8gPT09PT09PT09PSAqL1xuLmhlcm8ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0OHB4IDE2cHggMzJweDtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuNnMgZWFzZSBib3RoO1xufVxuXG4uaGVybyBoMSB7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG59XG5cbi5oZXJvIHAge1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWF4LXdpZHRoOiA1NjBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLyogPT09PT09PT09PSBDYXRlZ29yeSBHcmlkIChMYW5kaW5nKSA9PT09PT09PT09ICovXG4uY2F0ZWdvcnktZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSk7XG4gICAgZ2FwOiAyMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA0OHB4O1xufVxuXG4uY2F0ZWdvcnktY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIHBhZGRpbmc6IDMycHggMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24pLCBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC41cyBlYXNlIGJvdGg7XG59XG5cbi5jYXRlZ29yeS1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNhdC1jb2xvciwgdmFyKC0tcHJpbWFyeSkpO1xufVxuXG4uY2F0ZWdvcnktY2FyZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLmNhdGVnb3J5LWNhcmQtaWNvbiB7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS40cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uY2F0ZWdvcnktY2FyZC1uYW1lIHtcbiAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLmNhdGVnb3J5LWNhcmQtY291bnQge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uY2F0ZWdvcnktY2FyZC1kZXNjIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qIFN0YWdnZXIgY2F0ZWdvcnkgY2FyZHMgKi9cbi5jYXRlZ29yeS1jYXJkOm50aC1jaGlsZCgxKSB7IGFuaW1hdGlvbi1kZWxheTogMC4wNXM7IH1cbi5jYXRlZ29yeS1jYXJkOm50aC1jaGlsZCgyKSB7IGFuaW1hdGlvbi1kZWxheTogMC4xczsgfVxuLmNhdGVnb3J5LWNhcmQ6bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjE1czsgfVxuLmNhdGVnb3J5LWNhcmQ6bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyB9XG4uY2F0ZWdvcnktY2FyZDpudGgtY2hpbGQoNSkgeyBhbmltYXRpb24tZGVsYXk6IDAuMjVzOyB9XG5cbi8qID09PT09PT09PT0gRGFzaGJvYXJkID09PT09PT09PT0gKi9cbi5kYXNoYm9hcmQtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAyMHB4O1xuICAgIHBhZGRpbmc6IDI0cHggMCAyOHB4O1xuICAgIGFuaW1hdGlvbjogc2xpZGVJbkRvd24gMC40cyBlYXNlIGJvdGg7XG59XG5cbi5kYXNoYm9hcmQtaWNvbiB7XG4gICAgd2lkdGg6IDY0cHg7XG4gICAgaGVpZ2h0OiA2NHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZGFzaGJvYXJkLWhlYWRlciBoMSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLmRhc2hib2FyZC1oZWFkZXIgcCB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG59XG5cbi8qID09PT09PT09PT0gVG9vbCBHcmlkID09PT09PT09PT0gKi9cbi50b29sLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjAwcHgsIDFmcikpO1xuICAgIGdhcDogMTZweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNDhweDtcbn1cblxuLnRvb2wtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS10cmFuc2l0aW9uKSwgYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24pO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuNHMgZWFzZSBib3RoO1xufVxuXG4udG9vbC1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXRvb2wtY29sb3IsIHZhcigtLXByaW1hcnkpKTtcbn1cblxuLnRvb2wtY2FyZC1pY29uIHtcbiAgICB3aWR0aDogNTZweDtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luOiAwIGF1dG8gMTRweDtcbiAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tdG9vbC1jb2xvciwgdmFyKC0tcHJpbWFyeSkpO1xufVxuXG4udG9vbC1jYXJkLW5hbWUge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbn1cblxuLnRvb2wtY2FyZC1kZXNjIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi8qID09PT09PT09PT0gVG9vbCBWaWV3ID09PT09PT09PT0gKi9cbi50b29sLWhlYWRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDMycHggMTZweCAyNHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC40cyBlYXNlIGJvdGg7XG59XG5cbi50b29sLWljb24tbGFyZ2Uge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW46IDAgYXV0byAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi50b29sLWhlYWRlciBoMiB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbi50b29sLWhlYWRlciBwIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1heC13aWR0aDogNDgwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbi50b29sLXdvcmtzcGFjZSB7XG4gICAgbWF4LXdpZHRoOiA2NDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLyogPT09PT09PT09PSBVcGxvYWQgWm9uZSA9PT09PT09PT09ICovXG4udXBsb2FkLXpvbmUge1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gICAgcGFkZGluZzogNDhweCAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24pLCBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGFuaW1hdGlvbjogc2NhbGVJbiAwLjRzIGVhc2UgYm90aDtcbn1cblxuLnVwbG9hZC16b25lOmhvdmVyLFxuLnVwbG9hZC16b25lLmRyYWdvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6ICNlZWYyZmY7XG59XG5cbi51cGxvYWQtaWNvbiB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xufVxuXG4udXBsb2FkLXRleHQge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4O1xufVxuXG4udXBsb2FkLXN1YnRleHQge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbi8qID09PT09PT09PT0gRmlsZSBMaXN0ID09PT09PT09PT0gKi9cbi5maWxlLWxpc3Qge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG59XG5cbi5maWxlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLmZpbGUtaXRlbTpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uZmlsZS1pdGVtLWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZmlsZS1pdGVtLWljb24ge1xuICAgIHdpZHRoOiAzNnB4O1xuICAgIGhlaWdodDogMzZweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmZpbGUtaXRlbS1uYW1lIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmZpbGUtaXRlbS1zaXplIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cblxuLmZpbGUtaXRlbS1yZW1vdmUge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5maWxlLWl0ZW0tcmVtb3ZlOmhvdmVyIHsgY29sb3I6IHZhcigtLXByaW1hcnkpOyB9XG5cbi5maWxlLWxpc3QtYWRkIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgcGFkZGluZzogOHB4IDE0cHg7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24pO1xufVxuXG4uZmlsZS1saXN0LWFkZDpob3ZlciB7IGJhY2tncm91bmQ6ICNlZWYyZmY7IH1cblxuLyogPT09PT09PT09PSBDU1YgUHJldmlldyBUYWJsZSA9PT09PT09PT09ICovXG4uY3N2LXByZXZpZXcge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5jc3YtcHJldmlldy1oZWFkZXIge1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbn1cblxuLmNzdi1wcmV2aWV3LXNjcm9sbCB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiAzMjBweDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uY3N2LXByZXZpZXcgdGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmNzdi1wcmV2aWV3IHRoIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiAwO1xufVxuXG4uY3N2LXByZXZpZXcgdGQge1xuICAgIHBhZGRpbmc6IDZweCAxMnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLmNzdi1wcmV2aWV3IHRyOmhvdmVyIHRkIHsgYmFja2dyb3VuZDogI2YwZjRmZjsgfVxuXG4vKiA9PT09PT09PT09IE9wdGlvbnMgRm9ybSA9PT09PT09PT09ICovXG4ub3B0aW9ucy1mb3JtIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xufVxuXG4ub3B0aW9ucy1mb3JtIGgzIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG59XG5cbi5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG4uZm9ybS1ncm91cDpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG4uZm9ybS1ncm91cCBsYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogNnB4O1xufVxuXG4uZm9ybS1ncm91cCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5mb3JtLWdyb3VwIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbi5mb3JtLWdyb3VwIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4uZm9ybS1ncm91cCBzZWxlY3QsXG4uZm9ybS1ncm91cCB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG59XG5cbi5mb3JtLWdyb3VwIHRleHRhcmVhIHtcbiAgICBtaW4taGVpZ2h0OiA3MHB4O1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbi5mb3JtLWdyb3VwIGlucHV0OmZvY3VzLFxuLmZvcm0tZ3JvdXAgc2VsZWN0OmZvY3VzLFxuLmZvcm0tZ3JvdXAgdGV4dGFyZWE6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cblxuLmZvcm0tZ3JvdXAgaW5wdXRbdHlwZT1cInJhbmdlXCJdIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBhY2NlbnQtY29sb3I6IHZhcigtLXByaW1hcnkpO1xufVxuXG4ucmFuZ2UtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4uZm9ybS1ncm91cCAuaGludCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4vKiA9PT09PT09PT09IEJ1dHRvbnMgPT09PT09PT09PSAqL1xuLmJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiAxMnB4IDI4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbiksIHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uKTtcbn1cblxuLmJ0bjphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpOyB9XG5cbi5idG4tcHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4uYnRuLXByaW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWhvdmVyKTsgfVxuLmJ0bi1wcmltYXJ5OmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmJ0bi11cGxvYWQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XG59XG5cbi5idG4tdXBsb2FkOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS1ob3Zlcik7IH1cblxuLmJ0bi1kb3dubG9hZCB7XG4gICAgYmFja2dyb3VuZDogIzIyYzU1ZTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogMTRweCAzMnB4O1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbn1cblxuLmJ0bi1kb3dubG9hZDpob3ZlciB7IGJhY2tncm91bmQ6ICMxNmEzNGE7IH1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG59XG5cbi5idG4tc2Vjb25kYXJ5OmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyKTsgfVxuXG4uYnRuLWljb24ge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uKTtcbn1cblxuLmJ0bi1pY29uOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyKTsgfVxuLmJ0bi1pY29uOmRpc2FibGVkIHsgb3BhY2l0eTogMC40OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XG5cbi8qID09PT09PT09PT0gQWN0aW9uIEJhciA9PT09PT09PT09ICovXG4uYWN0aW9uLWJhciB7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4ucHJvZ3Jlc3MtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnByb2dyZXNzLWJhciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnByb2dyZXNzLWZpbGwge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLXByaW1hcnkpLCAjYTg1NWY3LCB2YXIoLS1wcmltYXJ5KSk7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHdpZHRoOiAwJTtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjNzIGVhc2U7XG4gICAgYW5pbWF0aW9uOiBsb2dvU2hpbW1lciAxLjVzIGVhc2UgaW5maW5pdGU7XG59XG5cbi5wcm9ncmVzcy10ZXh0IHtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuXG4vKiA9PT09PT09PT09IFNwaW5uZXIgPT09PT09PT09PSAqL1xuLnNwaW5uZXIge1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGFuaW1hdGlvbjogc3BpbiAwLjZzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuLyogPT09PT09PT09PSBSZXN1bHQgPT09PT09PT09PSAqL1xuLnJlc3VsdC1hcmVhIHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IHNjYWxlSW4gMC4zNXMgZWFzZSBib3RoO1xufVxuXG4ucmVzdWx0LXN1Y2Nlc3Mge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBwYWRkaW5nOiA0MHB4IDI0cHg7XG59XG5cbi5yZXN1bHQtc3VjY2VzcyBzdmcge1xuICAgIGNvbG9yOiAjMjJjNTVlO1xuICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbi5yZXN1bHQtc3VjY2VzcyBwIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5yZXN1bHQtc3VjY2VzcyAuYnRuIHtcbiAgICBtYXJnaW46IDAgNnB4IDEwcHg7XG59XG5cbi8qID09PT09PT09PT0gSlNPTiBSZXN1bHQgPT09PT09PT09PSAqL1xuLmpzb24tcmVzdWx0IHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uanNvbi1yZXN1bHQtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmpzb24tcmVzdWx0LWJvZHkge1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbn1cblxuLmpzb24tcmVzdWx0IHRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xufVxuXG4uanNvbi1yZXN1bHQgdGgge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi5qc29uLXJlc3VsdCB0ZCB7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi5qc29uLXJlc3VsdCAuYmFkZ2UtdmFsaWQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAycHggMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJhY2tncm91bmQ6ICNkY2ZjZTc7XG4gICAgY29sb3I6ICMxNmEzNGE7XG59XG5cbi5qc29uLXJlc3VsdCAuYmFkZ2UtaW52YWxpZCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDJweCAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYmFja2dyb3VuZDogI2ZlZjJmMjtcbiAgICBjb2xvcjogI2RjMjYyNjtcbn1cblxuLyogPT09PT09PT09PSBEaWZmIFJlc3VsdCA9PT09PT09PT09ICovXG4uZGlmZi1saW5lLWFkZGl0aW9uIHRkIHsgYmFja2dyb3VuZDogI2RjZmNlNzsgfVxuLmRpZmYtbGluZS1kZWxldGlvbiB0ZCB7IGJhY2tncm91bmQ6ICNmZWYyZjI7IH1cbi5kaWZmLWxpbmUtc2VwYXJhdG9yIHRkIHsgYmFja2dyb3VuZDogI2YwZjRmZjsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTsgfVxuLmRpZmYtbGluZS1oZWFkZXIgdGQgeyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpOyB9XG4uZGlmZi1saW5lLW51bSB7IGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7IGZvbnQtc2l6ZTogMC43NXJlbTsgbWluLXdpZHRoOiA0MHB4OyB0ZXh0LWFsaWduOiByaWdodDsgfVxuLmRpZmYtY29udGVudCB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgd29yZC1icmVhazogYnJlYWstYWxsOyB9XG5cbi53b3JkLWNvdW50LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMTgwcHgsIDFmcikpO1xuICAgIGdhcDogMTZweDtcbiAgICBwYWRkaW5nOiAyMHB4O1xufVxuXG4ud29yZC1jb3VudC1zdGF0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLndvcmQtY291bnQtc3RhdCAuc3RhdC12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG59XG5cbi53b3JkLWNvdW50LXN0YXQgLnN0YXQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4vKiA9PT09PT09PT09IEVycm9yID09PT09PT09PT0gKi9cbi5lcnJvci1hcmVhIHtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjZmVmMmYyO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNmZWNhY2E7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBwYWRkaW5nOiAyNHB4O1xufVxuXG4uZXJyb3ItYXJlYSBwIHtcbiAgICBjb2xvcjogI2RjMjYyNjtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG5cbi8qID09PT09PT09PT0gQ3JvcCBUb29sID09PT09PT09PT0gKi9cbi5jcm9wLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmNyb3AtdG9vbGJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDEwcHg7XG59XG5cbi5jcm9wLXBhZ2UtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5jcm9wLXBhZ2UtbmF2IHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIG1pbi13aWR0aDogOTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5jcm9wLW1vZGUtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uY3JvcC1tb2RlLWJ0biB7XG4gICAgcGFkZGluZzogNnB4IDE0cHg7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbiksIGNvbG9yIHZhcigtLXRyYW5zaXRpb24pO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5jcm9wLW1vZGUtYnRuICsgLmNyb3AtbW9kZS1idG4ge1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbn1cblxuLmNyb3AtbW9kZS1idG4uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1jcm9wKTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5jcm9wLWNhbnZhcy13cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2dyb3VuZDogI2U1ZTdlYjtcbiAgICBtaW4taGVpZ2h0OiAyMDBweDtcbn1cblxuLmNyb3AtY2FudmFzLXdyYXBwZXIgY2FudmFzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBjcm9zc2hhaXI7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWxnKTtcbn1cblxuLmNyb3AtaGludCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMzBweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC43KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcGFkZGluZzogOHB4IDE2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuLmNyb3AtaGludC5oaWRkZW4geyBvcGFjaXR5OiAwOyB9XG5cbi5jcm9wLWluZm8ge1xuICAgIHBhZGRpbmc6IDEwcHggMTZweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtaW4taGVpZ2h0OiAzNnB4O1xufVxuXG4uY3JvcC1sb2FkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogNDBweDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4uY3JvcC1sb2FkaW5nIC5zcGlubmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItY3JvcCk7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xufVxuXG4vKiA9PT09PT09PT09IE5lcGFsaSBEYXRlIENvbnZlcnRlciA9PT09PT09PT09ICovXG5cbi5uZXBhbGktZGF0ZS1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogNjIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMjBweDtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuMzVzIGVhc2UgYm90aDtcbn1cblxuLyogRGlyZWN0aW9uIGJhciAqL1xuLm5kYy10b29sYmFyIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH1cblxuLm5kYy1kaXJlY3Rpb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgIHBhZGRpbmc6IDRweCA2cHg7XG4gICAgYm94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwwLDAsMC4wNik7XG59XG5cbi5uZGMtZGlyLWJ0biB7XG4gICAgcGFkZGluZzogOXB4IDI4cHg7XG4gICAgZm9udC1zaXplOiAwLjkycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzLCBjb2xvciAwLjJzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTtcbn1cbi5uZGMtZGlyLWJ0bi5hY3RpdmUgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTsgY29sb3I6ICNmZmY7IH1cbi5uZGMtZGlyLWJ0bjpob3Zlcjpub3QoLmFjdGl2ZSkgeyBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wOCk7IGNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgfVxuXG4ubmRjLXN3YXAtYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDsgaGVpZ2h0OiAzNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXMsIGJhY2tncm91bmQgMC4xNXMsIHRyYW5zZm9ybSAwLjI1cztcbiAgICBmbGV4LXNocmluazogMDtcbn1cbi5uZGMtc3dhcC1idG46aG92ZXIgeyBjb2xvcjogdmFyKC0tcHJpbWFyeSk7IGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7IGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA2KTsgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuXG4vKiBEYXRlIHBpY2tlciBjYXJkICovXG4ubmRjLXBpY2tlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gICAgcGFkZGluZzogMjBweCAyNHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDE0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsMCwwLDAuMDUpO1xufVxuXG4ubmRjLXBpY2tlci1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiAxMHB4O1xufVxuXG4ubmRjLXBpY2tlci1sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogN3B4O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5uZGMtdG9kYXktYnRuIHtcbiAgICBwYWRkaW5nOiA1cHggMTRweDtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA2KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGNvbG9yIDAuMTVzO1xufVxuLm5kYy10b2RheS1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTsgY29sb3I6ICNmZmY7IH1cblxuLyogTmF0aXZlIGRhdGUgaW5wdXQgKi9cbi5uZGMtZGF0ZS1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTNweCAxNnB4O1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycywgYm94LXNoYWRvdyAwLjJzO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cbi5uZGMtZGF0ZS1pbnB1dDpmb2N1cyB7IGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7IGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LDEwMiwyNDEsMC4xMik7IH1cblxuLyogQlMgc2VsZWN0cyByb3cgKi9cbi5uZGMtYnMtZmllbGRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDJmciAxZnI7XG4gICAgZ2FwOiAxMnB4O1xufVxuXG4ubmRjLWZpZWxkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA2cHg7XG59XG5cbi5uZGMtZmllbGQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4ubmRjLW51bS1pbnB1dCwgLm5kYy1zZWxlY3Qge1xuICAgIHBhZGRpbmc6IDExcHggMTRweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGFjY2VudC1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG4ubmRjLW51bS1pbnB1dDpmb2N1cywgLm5kYy1zZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpOyBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5OSwxMDIsMjQxLDAuMTIpOyB9XG4ubmRjLXNlbGVjdCB7IGN1cnNvcjogcG9pbnRlcjsgfVxuXG4vKiBSZXN1bHQgY2FyZHMgKi9cbi5uZGMtcmVzdWx0LWNhcmRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gMWZyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC4zcyBlYXNlIGJvdGg7XG59XG5cbi5uZGMtY2FyZCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBwYWRkaW5nOiAyNHB4IDIwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbn1cblxuLm5kYy1jYXJkLWlucHV0IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbn1cblxuLm5kYy1jYXJkLW91dHB1dCB7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDYpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSg5OSwxMDIsMjQxLDAuMyk7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDk5LDEwMiwyNDEsMC4xKTtcbn1cblxuLm5kYy1jYXJkLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAwLjY4cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTRweDtcbn1cblxuLm5kYy1jYXJkLW91dHB1dCAubmRjLWNhcmQtYmFkZ2Uge1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wOCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDk5LDEwMiwyNDEsMC4yNSk7XG59XG5cbi5uZGMtY2FyZC15ZWFyIHtcbiAgICBmb250LXNpemU6IDIuNnJlbTtcbiAgICBmb250LXdlaWdodDogODAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG59XG5cbi5uZGMtY2FyZC1vdXRwdXQgLm5kYy1jYXJkLXllYXIgeyBjb2xvcjogdmFyKC0tcHJpbWFyeSk7IH1cblxuLm5kYy1jYXJkLWRhdGUge1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm5kYy1jYXJkLW5wIHtcbiAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4ubmRjLWFycm93LWljb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg5OSwxMDIsMjQxLDAuMyk7XG59XG5cbi5uZGMtbG9hZGluZyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgcGFkZGluZzogMTZweCAwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTgwcHgpIHtcbiAgICAubmRjLWRpci1idG4geyBwYWRkaW5nOiA4cHggMTZweDsgZm9udC1zaXplOiAwLjgycmVtOyB9XG4gICAgLm5kYy1icy1maWVsZHMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IH1cbiAgICAubmRjLWZpZWxkLW1vbnRoIHsgZ3JpZC1jb2x1bW46IDEgLyAtMTsgfVxuICAgIC5uZGMtcmVzdWx0LWNhcmRzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgICAubmRjLWFycm93LWljb24geyB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IG1hcmdpbjogMCBhdXRvOyB9XG4gICAgLm5kYy1jYXJkLXllYXIgeyBmb250LXNpemU6IDJyZW07IH1cbn1cblxuLyogPT09PT09PT09PSBOZXBhbGkgVW5pY29kZSBMaXZlIFRyYW5zbGF0b3IgPT09PT09PT09PSAqL1xuXG4ubmVwYWxpLXVuaWNvZGUtY29udGFpbmVyIHtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuMzVzIGVhc2UgYm90aDtcbn1cblxuLm51Yy10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG59XG5cbi5udWMtZGlyZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsMCwwLDAuMDYpO1xufVxuXG4ubnVjLWRpci1idG4ge1xuICAgIHBhZGRpbmc6IDhweCAyMnB4O1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycywgY29sb3IgMC4ycztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLm51Yy1kaXItYnRuLmFjdGl2ZSB7IGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpOyBjb2xvcjogI2ZmZjsgfVxuLm51Yy1kaXItYnRuOmhvdmVyOm5vdCguYWN0aXZlKSB7IGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA4KTsgY29sb3I6IHZhcigtLXByaW1hcnkpOyB9XG5cbi5udWMtc3dhcC1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1cywgYmFja2dyb3VuZCAwLjE1cywgdHJhbnNmb3JtIDAuMnM7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG4ubnVjLXN3YXAtYnRuOmhvdmVyIHsgY29sb3I6IHZhcigtLXByaW1hcnkpOyBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpOyBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wNik7IHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH1cblxuLm51Yy1wYW5lbHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogMTZweDtcbn1cblxuLm51Yy1wYW5lbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogOHB4O1xufVxuXG4ubnVjLXBhbmVsLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA0cHg7XG59XG5cbi5udWMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4ubnVjLWNvdW50LCAubnVjLXN0YXR1cyB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG59XG5cbi5udWMtdGV4dGFyZWEge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLWhlaWdodDogMzAwcHg7XG4gICAgcGFkZGluZzogMThweDtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBsaW5lLWhlaWdodDogMS44NTtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJveC1zaGFkb3cgMC4ycztcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogMTAwJTtcbn1cbi5udWMtdGV4dGFyZWE6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoOTksMTAyLDI0MSwwLjEyKTtcbn1cbi5udWMtdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHsgY29sb3I6ICNiYmI7IH1cblxuLm51Yy1vdXRwdXQge1xuICAgIGJhY2tncm91bmQ6ICNmMGZkZjQ7XG4gICAgYm9yZGVyLWNvbG9yOiAjYmJmN2QwO1xuICAgIGNvbG9yOiAjMTQ1MzJkO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbn1cbi5udWMtb3V0cHV0W2RhdGEtbGFuZz1cInJvbWFuXCJdIHsgZm9udC1zaXplOiAxLjJyZW07IH1cblxuLm51Yy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5udWMtYnRuIHtcbiAgICBwYWRkaW5nOiA2cHggMTZweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXMsIGJhY2tncm91bmQgMC4xNXM7XG59XG4ubnVjLWJ0bjpob3ZlciB7IGNvbG9yOiB2YXIoLS10ZXh0KTsgYm9yZGVyLWNvbG9yOiAjYWFhOyB9XG4ubnVjLWNvcHktYnRuLmNvcGllZCB7IGNvbG9yOiAjMTQ1MzJkOyBib3JkZXItY29sb3I6ICM4NmVmYWM7IGJhY2tncm91bmQ6ICNmMGZkZjQ7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLm51Yy1wYW5lbHMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfVxuICAgIC5udWMtdGV4dGFyZWEgeyBtaW4taGVpZ2h0OiAyMDBweDsgfVxuICAgIC5udWMtZGlyLWJ0biB7IHBhZGRpbmc6IDdweCAxNHB4OyBmb250LXNpemU6IDAuOHJlbTsgfVxufVxuXG4vKiA9PT09PT09PT09IFJlbW92ZSBCYWNrZ3JvdW5kIFRvb2wgPT09PT09PT09PSAqL1xuXG4ucmVtYmctY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAyMHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC4zcyBlYXNlIGJvdGg7XG59XG5cbi5yZW1iZy13b3Jrc3BhY2Uge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMjgwcHg7XG4gICAgZ2FwOiAxNnB4O1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbn1cblxuLyogRHJvcCAvIHByZXZpZXcgem9uZSAqL1xuLnJlbWJnLWRyb3Atem9uZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1pbi1oZWlnaHQ6IDM4MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBiYWNrZ3JvdW5kIDAuMnM7XG59XG4ucmVtYmctZHJvcC16b25lOmhvdmVyLFxuLnJlbWJnLWRyb3Atem9uZS5kcmFnLW92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDQpO1xufVxuXG4ucmVtYmctcGxhY2Vob2xkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDQwcHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ucmVtYmctcGxhY2Vob2xkZXIgc3ZnIHsgb3BhY2l0eTogMC4zNTsgfVxuLnJlbWJnLXBsYWNlaG9sZGVyIHAge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBtYXJnaW46IDA7XG59XG4ucmVtYmctcGxhY2Vob2xkZXIgc3BhbiB7IGZvbnQtc2l6ZTogMC44cmVtOyB9XG5cbi5yZW1iZy1wcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cbi5yZW1iZy1wcmV2aWV3IGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIG1heC1oZWlnaHQ6IDMyMHB4O1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xMik7XG59XG4ucmVtYmctcHJldmlldy1tZXRhIHtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xufVxuLnJlbWJnLWNoYW5nZS1idG4ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIHBhZGRpbmc6IDVweCAxNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycywgY29sb3IgMC4ycztcbn1cbi5yZW1iZy1jaGFuZ2UtYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgY29sb3I6IHZhcigtLXByaW1hcnkpOyB9XG5cbi8qIFNldHRpbmdzIHBhbmVsICovXG4ucmVtYmctc2V0dGluZ3MtcGFuZWwge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBwYWRkaW5nOiAxOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDE4cHg7XG59XG4ucmVtYmctc2V0dGluZ3MtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgbWFyZ2luOiAwO1xufVxuLnJlbWJnLXNldHRpbmcgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDdweDsgfVxuLnJlbWJnLXNldHRpbmctbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC44M3JlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbn1cbi5yZW1iZy1zZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDhweCAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgZm9udC1zaXplOiAwLjgzcmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5yZW1iZy1iZ2NvbG9yLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA2cHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5yZW1iZy1iZy1vcHQge1xuICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cztcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG59XG4ucmVtYmctYmctb3B0LmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDgpO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG4ucmVtYmctY29sb3Itc3dhdGNoIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA1cHg7XG4gICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cztcbn1cbi5yZW1iZy1jb2xvci1zd2F0Y2g6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpOyB9XG4ucmVtYmctY29sb3Itc3dhdGNoIGlucHV0W3R5cGU9XCJjb2xvclwiXSB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnJlbWJnLXRvZ2dsZS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiA5cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnJlbWJnLWNoZWNrYm94IHsgZmxleC1zaHJpbms6IDA7IG1hcmdpbi10b3A6IDJweDsgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgfVxuLnJlbWJnLXRvZ2dsZS1sYWJlbCB7IGZvbnQtc2l6ZTogMC44M3JlbTsgY29sb3I6IHZhcigtLXRleHQpOyB9XG4ucmVtYmctdG9nZ2xlLWhpbnQgeyBmb250LXNpemU6IDAuNzVyZW07IGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsgZGlzcGxheTogYmxvY2s7IH1cblxuLnJlbWJnLXN1Ym1pdC1idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycywgb3BhY2l0eSAwLjJzO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG59XG4ucmVtYmctc3VibWl0LWJ0bjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNDU7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH1cbi5yZW1iZy1zdWJtaXQtYnRuOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHsgYmFja2dyb3VuZDogIzRmNDZlNTsgfVxuLnJlbWJnLXN1Ym1pdC1idG4ucHJvY2Vzc2luZyB7IG9wYWNpdHk6IDAuNzU7IGN1cnNvcjogd2FpdDsgfVxuXG4vKiBDb21wYXJpc29uIGFyZWEgKi9cbi5yZW1iZy1jb21wYXJlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgcGFkZGluZzogMjBweCAyNHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC4zcyBlYXNlIGJvdGg7XG59XG4ucmVtYmctY29tcGFyZS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogMThweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAxMHB4O1xufVxuLnJlbWJnLWNvbXBhcmUtdGl0bGUge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG4ucmVtYmctZG93bmxvYWQtYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogN3B4O1xuICAgIHBhZGRpbmc6IDlweCAyMHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXByaW1hcnkpIDAlLCAjNGY0NmU1IDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDNweCAxMnB4IHJnYmEoOTksMTAyLDI0MSwwLjMpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cywgYm94LXNoYWRvdyAwLjE1cztcbn1cbi5yZW1iZy1kb3dubG9hZC1idG46aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiAwIDVweCAxOHB4IHJnYmEoOTksMTAyLDI0MSwwLjQpO1xufVxuLnJlbWJnLWNvbXBhcmUtcGFuZWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxNnB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5yZW1iZy1jb21wYXJlLWNhcmQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuLnJlbWJnLWNvbXBhcmUtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG4ucmVtYmctdGh1bWItd3JhcCB7XG4gICAgd2lkdGg6IDI2MHB4O1xuICAgIGhlaWdodDogMjYwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbn1cbi5yZW1iZy1jaGVja2VyYm9hcmQge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgjZDFkNWRiIDAlIDI1JSwgI2ZmZmZmZiAwJSA1MCUpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMThweCAxOHB4O1xufVxuLnJlbWJnLXRodW1iIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xufVxuLnJlbWJnLWNvbXBhcmUtYXJyb3cge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cbi5yZW1iZy1yZXN1bHQtY2FyZCAucmVtYmctdGh1bWItd3JhcCB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDk5LDEwMiwyNDEsMC4xNSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDk5LDEwMiwyNDEsMC4yNSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkge1xuICAgIC5yZW1iZy13b3Jrc3BhY2UgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfVxuICAgIC5yZW1iZy1kcm9wLXpvbmUgeyBtaW4taGVpZ2h0OiAyNjBweDsgfVxuICAgIC5yZW1iZy10aHVtYi13cmFwIHsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyB9XG59XG5cbi8qID09PT09PT09PT0gUGFzc3BvcnQgUGhvdG8gVG9vbCA9PT09PT09PT09ICovXG4ucGFzc3BvcnQtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAyMHB4O1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC4zcyBlYXNlIGJvdGg7XG59XG5cbi8qIOKUgOKUgCBTaGFyZWQgUFAgdXRpbGl0eSBjbGFzc2VzICh1c2VkIGFjcm9zcyB3aXphcmQgc3RlcHMpIOKUgOKUgCAqL1xuLnBwLWRyb3Atem9uZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMnB4IGRhc2hlZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1pbi1oZWlnaHQ6IDI4MHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBiYWNrZ3JvdW5kIDAuMnM7XG59XG4ucHAtZHJvcC16b25lOmhvdmVyLFxuLnBwLWRyb3Atem9uZS5kcmFnLW92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDQpO1xufVxuLnBwLXBsYWNlaG9sZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0MHB4O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLnBwLXBsYWNlaG9sZGVyIHN2ZyB7IG9wYWNpdHk6IDAuMzU7IH1cbi5wcC1wbGFjZWhvbGRlciBwIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgbWFyZ2luOiAwO1xufVxuLnBwLXBsYWNlaG9sZGVyIHNwYW4geyBmb250LXNpemU6IDAuOHJlbTsgfVxuLnBwLXByZXZpZXcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIHdpZHRoOiAxMDAlO1xufVxuLnBwLXByZXZpZXcgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMjgwcHg7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDIwcHggcmdiYSgwLDAsMCwwLjEyKTtcbn1cbi5wcC1wcmV2aWV3LW1ldGEge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG59XG4ucHAtY2hhbmdlLWJ0biB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgcGFkZGluZzogNXB4IDE0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBjb2xvciAwLjJzO1xufVxuLnBwLWNoYW5nZS1idG46aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpOyBjb2xvcjogdmFyKC0tcHJpbWFyeSk7IH1cblxuLnBwLXNldHRpbmdzLXBhbmVsIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgcGFkZGluZzogMThweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxNnB4O1xufVxuLnBwLXNldHRpbmcgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDdweDsgfVxuLnBwLXNldHRpbmctbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC44M3JlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbn1cbi5wcC1zZWxlY3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDhweCAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgZm9udC1zaXplOiAwLjgzcmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wcC1iZ2NvbG9yLXJvdyxcbi5wcC1mcmFtZS1jb2xvcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogNnB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4ucHAtYmctb3B0LFxuLnBwLWZyYW1lLW9wdCB7XG4gICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbn1cbi5wcC1iZy1vcHQuYWN0aXZlLFxuLnBwLWZyYW1lLW9wdC5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA4KTtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuLnBwLWNvbG9yLXN3YXRjaCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNXB4O1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXM7XG59XG4ucHAtY29sb3Itc3dhdGNoOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgfVxuLnBwLWNvbG9yLXN3YXRjaCBpbnB1dFt0eXBlPVwiY29sb3JcIl0ge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wcC1kb3dubG9hZC1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA3cHg7XG4gICAgcGFkZGluZzogOXB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tcHJpbWFyeSkgMCUsICM0ZjQ2ZTUgMTAwJSk7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgM3B4IDEycHggcmdiYSg5OSwxMDIsMjQxLDAuMyk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzLCBib3gtc2hhZG93IDAuMTVzO1xufVxuLnBwLWRvd25sb2FkLWJ0bjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNXB4IDE4cHggcmdiYSg5OSwxMDIsMjQxLDAuNCk7XG59XG4ucHAtY29weS1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA3cHg7XG4gICAgcGFkZGluZzogOXB4IDIwcHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycywgY29sb3IgMC4ycztcbn1cbi5wcC1jb3B5LWJ0bjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG5cbi8qIOKUgOKUgCBXaXphcmQgU3RlcHBlciDilIDilIAgKi9cbi5wcHctc3RlcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogMDtcbiAgICBwYWRkaW5nOiA4cHggMCAxNnB4O1xufVxuLnBwdy1zdGVwcGVyLXN0ZXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBvcGFjaXR5OiAwLjQ1O1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycztcbn1cbi5wcHctc3RlcHBlci1zdGVwLmFjdGl2ZSxcbi5wcHctc3RlcHBlci1zdGVwLmNvbXBsZXRlZCB7IG9wYWNpdHk6IDE7IH1cbi5wcHctc3RlcC1udW0ge1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICBmbGV4LXNocmluazogMDtcbn1cbi5wcHctc3RlcHBlci1zdGVwLmFjdGl2ZSAucHB3LXN0ZXAtbnVtIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmO1xufVxuLnBwdy1zdGVwcGVyLXN0ZXAuY29tcGxldGVkIC5wcHctc3RlcC1udW0ge1xuICAgIGJvcmRlci1jb2xvcjogIzE2YTM0YTtcbiAgICBiYWNrZ3JvdW5kOiAjMTZhMzRhO1xuICAgIGNvbG9yOiAjZmZmO1xufVxuLnBwdy1zdGVwLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuLnBwdy1zdGVwcGVyLWxpbmUge1xuICAgIGZsZXg6IDE7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYm9yZGVyKTtcbiAgICBtYXJnaW46IDAgMTBweDtcbiAgICBtaW4td2lkdGg6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiA2MHB4O1xufVxuXG4vKiDilIDilIAgV2l6YXJkIFN0ZXBzIOKUgOKUgCAqL1xuLnBwdy1zdGVwIHtcbiAgICBhbmltYXRpb246IGZhZGVJblVwIDAuMjVzIGVhc2UgYm90aDtcbn1cblxuLyog4pSA4pSAIFN0ZXAgMTogRWRpdG9yIOKUgOKUgCAqL1xuLnBwdy1lZGl0b3Ige1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG4ucHB3LWVkaXRvci10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBnYXA6IDhweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4ucHB3LWVkaXRvci10b29scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbn1cbi5wcHctZWRpdG9yLXRvb2wtYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA1cHg7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cztcbn1cbi5wcHctZWRpdG9yLXRvb2wtYnRuLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDgpO1xufVxuLnBwdy1lZGl0b3ItYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDZweDtcbn1cbi5wcHctZWRpdG9yLWFjdGlvbi1idG4ge1xuICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG59XG4ucHB3LWVkaXRvci1hcHBseS1idG4ge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG4ucHB3LWVkaXRvci10b29sLW9wdGlvbnMge1xuICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgICBtaW4taGVpZ2h0OiAwO1xufVxuLnBwdy1lZGl0b3ItdG9vbC1vcHRpb25zOm5vdCg6ZW1wdHkpIHtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5wcHctZWRpdG9yLWNhbnZhcy13cmFwIHtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG59XG4ucHB3LWVkaXRvci1jYW52YXMtd3JhcCBjYW52YXMge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgY3Vyc29yOiBjcm9zc2hhaXI7XG59XG4ucHB3LWVkaXRvci1pbmZvIHtcbiAgICBwYWRkaW5nOiA0cHggMTJweCA2cHg7XG4gICAgZm9udC1zaXplOiAwLjcycmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIOKUgOKUgCBTdGVwIDE6IENoZWNrYm94IOKUgOKUgCAqL1xuLnBwdy1jaGVja2JveC1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiAxMHB4IDAgMDtcbiAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuLnBwdy1jaGVja2JveC1yb3cgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICB3aWR0aDogMTdweDtcbiAgICBoZWlnaHQ6IDE3cHg7XG4gICAgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cblxuLyog4pSA4pSAIFN0ZXAgMjogTGF5b3V0IOKUgOKUgCAqL1xuLnBwdy1zdGVwMi1sYXlvdXQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMzAwcHg7XG4gICAgZ2FwOiAxNnB4O1xuICAgIGFsaWduLWl0ZW1zOiBzdGFydDtcbn1cbi5wcHctcHJldmlldy1hcmVhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogOHB4O1xufVxuLnBwdy1wcmV2aWV3LWFyZWEgY2FudmFzIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiA0MjBweDtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG59XG4ucHB3LXNwaW5uZXItb3ZlcmxheSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDQwcHg7XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuLnBwdy1zcGlubmVyLW92ZXJsYXkgLnNwaW5uZXIge1xuICAgIHdpZHRoOiAzMnB4O1xuICAgIGhlaWdodDogMzJweDtcbn1cbi5wcHctcHJldmlldy1hcmVhIC5wcHctc3Bpbm5lci1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjg1KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHotaW5kZXg6IDU7XG59XG5cbi8qIOKUgOKUgCBUb3VjaC11cCB0b29sYmFyIOKUgOKUgCAqL1xuLnBwdy10b3VjaHVwLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBwYWRkaW5nOiA0cHggMDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4ucHB3LXRvdWNodXAtYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA0cHg7XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xufVxuLnBwdy10b3VjaHVwLWJ0bi5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA4KTtcbn1cbi5wcHctdG91Y2h1cC1vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbn1cbi5wcHctdG91Y2h1cC1vcHRpb25zIGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7XG4gICAgd2lkdGg6IDgwcHg7XG59XG5cbi8qIOKUgOKUgCBTdGVwIDI6IFNpemUgbGFiZWwgJiBjdXN0b20gaW5wdXRzIOKUgOKUgCAqL1xuLnBwdy1zaXplLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgcGFkZGluZzogNHB4IDA7XG59XG4ucHB3LWN1c3RvbS1zaXplLWlucHV0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xufVxuLnBwdy1jdXN0b20tc2l6ZS1pbnB1dHMgbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDNweDtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpO1xufVxuLnBwdy1udW0taW5wdXQge1xuICAgIHdpZHRoOiA3MHB4O1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBmb250LXNpemU6IDAuODNyZW07XG59XG5cbi8qIOKUgOKUgCBTdGVwIDI6IFJhbmdlIHNsaWRlciByb3cg4pSA4pSAICovXG4ucHB3LXJhbmdlLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbn1cbi5wcHctcmFuZ2Uge1xuICAgIGZsZXg6IDE7XG4gICAgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cbi5wcHctcmFuZ2Utcm93IHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbiAgICBtaW4td2lkdGg6IDQwcHg7XG59XG5cbi8qIOKUgOKUgCBTdGVwIDM6IFJhZGlvIGNhcmRzIOKUgOKUgCAqL1xuLnBwdy1yYWRpby1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTBweDtcbn1cbi5wcHctcmFkaW8ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5wcHctcmFkaW8gaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuLnBwdy1yYWRpby1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycHg7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG59XG4ucHB3LXJhZGlvLWNhcmQgc3Ryb25nIHtcbiAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG59XG4ucHB3LXJhZGlvLWNhcmQgc3BhbiB7XG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbn1cbi5wcHctcmFkaW8gaW5wdXQ6Y2hlY2tlZCArIC5wcHctcmFkaW8tY2FyZCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wNSk7XG59XG4ucHB3LXNoZWV0LW9wdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDE0cHg7XG4gICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cblxuLyog4pSA4pSAIFN0ZXAgNDogUmVzdWx0cyDilIDilIAgKi9cbi5wcHctcmVzdWx0cy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IDE2cHg7XG59XG4ucHB3LXJlc3VsdC1jYXJkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG59XG4ucHB3LXJlc3VsdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTtcbn1cbi5wcHctcmVzdWx0LWltZy13cmFwIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAzMDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xufVxuLnBwdy1yZXN1bHQtaW1nLXdyYXAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbn1cbi5wcHctcmVzdWx0LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogMThweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4ucHB3LXN0YXJ0LW92ZXItYnRuIHtcbiAgICBwYWRkaW5nOiA5cHggMjBweDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMzBweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzLCBjb2xvciAwLjJzO1xufVxuLnBwdy1zdGFydC1vdmVyLWJ0bjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG5cbi8qIOKUgOKUgCBXaXphcmQgTmF2aWdhdGlvbiDilIDilIAgKi9cbi5wcHctbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmctdG9wOiAxMnB4O1xufVxuLnBwdy1uYXYtYnRuIHtcbiAgICBwYWRkaW5nOiAxMHB4IDI4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzLCBvcGFjaXR5IDAuMnM7XG59XG4ucHB3LWJhY2stYnRuIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xufVxuLnBwdy1iYWNrLWJ0bjpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7IGNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgfVxuLnBwdy1uZXh0LWJ0biB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG4ucHB3LW5leHQtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogMC40NTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuLnBwdy1uZXh0LWJ0bjpub3QoOmRpc2FibGVkKTpob3ZlciB7IGJhY2tncm91bmQ6ICM0ZjQ2ZTU7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLnBwdy1zdGVwLWxhYmVsIHsgZGlzcGxheTogbm9uZTsgfVxuICAgIC5wcHctc3RlcDItbGF5b3V0IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgICAucHB3LXJlc3VsdHMtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9XG4gICAgLnBwLWRyb3Atem9uZSB7IG1pbi1oZWlnaHQ6IDIyMHB4OyB9XG59XG5cbi8qID09PT09PT09PT0gTmVwYWxpIFRvb2wgUmVzdWx0cyA9PT09PT09PT09ICovXG4ubmVwYWxpLXJlc3VsdC1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IDE2cHg7XG4gICAgcGFkZGluZzogMjRweDtcbn1cblxuLm5lcGFsaS1yZXN1bHQtY2FyZCB7XG4gICAgcGFkZGluZzogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm5lcGFsaS1yZXN1bHQtY2FyZC5pbnB1dC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG59XG5cbi5uZXBhbGktcmVzdWx0LWNhcmQucmVzdWx0LWNhcmQge1xuICAgIGJhY2tncm91bmQ6ICNmMGZkZjQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2JiZjdkMDtcbn1cblxuLm5lcGFsaS1yZXN1bHQtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLm5lcGFsaS1yZXN1bHQtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG5cbi5uZXBhbGktcmVzdWx0LWRldGFpbCB7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xufVxuXG4ubmVwYWxpLXVuaWNvZGUtcmVzdWx0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IDE2cHg7XG4gICAgcGFkZGluZzogMjRweDtcbn1cblxuLnVuaWNvZGUtaW5wdXQtYm94LFxuLnVuaWNvZGUtb3V0cHV0LWJveCB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xufVxuXG4udW5pY29kZS1pbnB1dC1ib3gge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbn1cblxuLnVuaWNvZGUtb3V0cHV0LWJveCB7XG4gICAgYmFja2dyb3VuZDogI2YwZmRmNDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYmJmN2QwO1xufVxuXG4udW5pY29kZS10ZXh0IHtcbiAgICBmb250LXNpemU6IDEuMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS44O1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG59XG5cbi51bmljb2RlLW91dHB1dCB7XG4gICAgZm9udC1zaXplOiAxLjNyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLm5lcGFsaS1yZXN1bHQtZ3JpZCxcbiAgICAubmVwYWxpLXVuaWNvZGUtcmVzdWx0IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09IEFsbCBUb29scyBNYXAgPT09PT09PT09PSAqL1xuLmFsbC10b29scy1tYXAge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIG1hcmdpbi10b3A6IDMycHg7XG4gICAgcGFkZGluZy10b3A6IDQwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDQ4cHg7XG59XG5cbi50b29scy1tYXAtaGVhZGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMzZweDtcbn1cblxuLnRvb2xzLW1hcC1oZWFkZXIgaDIge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4udG9vbHMtbWFwLWhlYWRlciBwIHtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbn1cblxuLnRvb2xzLW1hcC1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIyMHB4LCAxZnIpKTtcbiAgICBnYXA6IDMycHg7XG59XG5cbi50b29scy1tYXAtY29sdW1uIGgzIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi50b29scy1tYXAtY29sdW1uIHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4udG9vbHMtbWFwLWNvbHVtbiBsaSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMnB4O1xufVxuXG4udG9vbHMtbWFwLWNvbHVtbiBsaSBhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbik7XG59XG5cbi50b29scy1tYXAtY29sdW1uIGxpIGE6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbn1cblxuLnRvb2xzLW1hcC1pY29uIHtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDAuNjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAgIC50b29scy1tYXAtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgICAgIGdhcDogMjRweDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAzODBweCkge1xuICAgIC50b29scy1tYXAtZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PSBGb290ZXIgPT09PT09PT09PSAqL1xuZm9vdGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjRweDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xufVxuXG4uZm9vdGVyLWxvdmUge1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGFuaW1hdGlvbjogZmFkZUluIDEuMnMgZWFzZSBib3RoO1xufVxuXG4vKiA9PT09PT09PT09IFNpZ24gVG9vbCA9PT09PT09PT09ICovXG5cbi8qID09PT09IFNpZ24gVG9vbCA9PT09PSAqL1xuXG4udG9vbC13b3Jrc3BhY2Uuc2lnbi1tb2RlIHsgbWF4LXdpZHRoOiAxMTAwcHg7IH1cblxuLnNpZ24tY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMC40cyBlYXNlIGJvdGg7XG59XG5cbi8qIFR3by1jb2x1bW4gbGF5b3V0ICovXG4uc2lnbi1wYW5lbHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAzNjBweCAxZnI7XG4gICAgbWluLWhlaWdodDogNzAwcHg7XG59XG5cbi8qIC0tLS0gTGVmdCBwYW5lbCAtLS0tICovXG4uc2lnbi1kcmF3LXBhbmVsIHtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbn1cblxuLyogVGFiIGJhciAqL1xuLnNpZ24tdGFiLWJhciB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNpZ24tdGFiIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgcGFkZGluZzogMTNweCA2cHg7XG4gICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzLCBib3JkZXItY29sb3IgMC4xNXMsIGJhY2tncm91bmQgMC4xNXM7XG59XG4uc2lnbi10YWI6aG92ZXIgeyBjb2xvcjogdmFyKC0tcHJpbWFyeSk7IGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA0KTsgfVxuLnNpZ24tdGFiLmFjdGl2ZSB7IGNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tcHJpbWFyeSk7IGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA2KTsgfVxuXG4vKiBQYW5lcyAqL1xuLnNpZ24tdGFiLXBhbmUge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTJweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIG1pbi1oZWlnaHQ6IDA7XG59XG5cbi8qIC0tLS0gRHJhdyBwYW5lIC0tLS0gKi9cbi5zaWduLWNhbnZhcy13cmFwIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgY3Vyc29yOiBjcm9zc2hhaXI7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24pO1xuICAgIGZsZXg6IDE7XG4gICAgbWluLWhlaWdodDogMjAwcHg7XG59XG4uc2lnbi1jYW52YXMtd3JhcDpob3ZlciwgLnNpZ24tY2FudmFzLXdyYXAuYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LDEwMiwyNDEsMC4xMik7XG59XG4uc2lnbi1jYW52YXMtd3JhcCBjYW52YXMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRvdWNoLWFjdGlvbjogbm9uZTtcbiAgICAvKiB3aWR0aC9oZWlnaHQgc2V0IGluIEpTIHRvIGV4YWN0bHkgbWF0Y2ggd3JhcHBlciBkaW1lbnNpb25zIChIaURQSS1hd2FyZSkgKi9cbn1cbi5zaWduLWNhbnZhcy1wbGFjZWhvbGRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEuM3JlbTtcbiAgICBmb250LWZhbWlseTogJ0RhbmNpbmcgU2NyaXB0JywgY3Vyc2l2ZTtcbiAgICBjb2xvcjogI2JiYjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7XG59XG4uc2lnbi1iYXNlbGluZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMjglO1xuICAgIGxlZnQ6IDglO1xuICAgIHJpZ2h0OiA4JTtcbiAgICBoZWlnaHQ6IDFweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4zKTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLyogRHJhdyB0b29sYmFyICovXG4uc2lnbi1kcmF3LXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiAxMHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuLnNpZ24tcGVuLW9wdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uc2lnbi1zZXAge1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlcik7XG59XG4uc2lnbi1kcmF3LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbn1cbi5zaWduLWFjdGlvbi1idG4ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA1cHg7XG4gICAgcGFkZGluZzogNXB4IDEycHg7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMsIGJhY2tncm91bmQgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1cztcbn1cbi5zaWduLWFjdGlvbi1idG46aG92ZXIgeyBjb2xvcjogdmFyKC0tdGV4dCk7IGJvcmRlci1jb2xvcjogI2FhYTsgfVxuXG4vKiBDb2xvciBzd2F0Y2hlcyAqL1xuLnNpZ24tY29sb3ItYnRuIHtcbiAgICB3aWR0aDogMjZweDtcbiAgICBoZWlnaHQ6IDI2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJvcmRlcjogM3B4IHNvbGlkICNmZmY7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWJvcmRlcik7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cywgYm94LXNoYWRvdyAwLjE1cztcbiAgICBmbGV4LXNocmluazogMDtcbn1cbi5zaWduLWNvbG9yLWJ0bi5zZWxlY3RlZCB7IGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1wcmltYXJ5KTsgdHJhbnNmb3JtOiBzY2FsZSgxLjE4KTsgfVxuLnNpZ24tY29sb3ItYnRuOmhvdmVyOm5vdCguc2VsZWN0ZWQpIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9XG5cbi5zaWduLXRoaWNrbmVzcyB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIC0tLS0gVHlwZSBwYW5lIC0tLS0gKi9cbi5zaWduLXR5cGUtaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDExcHggMTRweDtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycywgYm94LXNoYWRvdyAwLjJzO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4uc2lnbi10eXBlLWlucHV0OmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LDEwMiwyNDEsMC4xMik7XG59XG5cbi5zaWduLWZvbnQtbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogN3B4O1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBtaW4taGVpZ2h0OiAwO1xufVxuLnNpZ24tZm9udC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA5cHggMTJweDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzLCBiYWNrZ3JvdW5kIDAuMTVzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZ2FwOiAxMHB4O1xufVxuLnNpZ24tZm9udC1vcHRpb246aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpOyBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wNCk7IH1cbi5zaWduLWZvbnQtb3B0aW9uLnNlbGVjdGVkIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTsgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDgpOyB9XG4uc2lnbi1mb250LW9wdGlvbiAuZm9udC1wcmV2aWV3IHtcbiAgICBmb250LXNpemU6IDEuNTVyZW07XG4gICAgZmxleDogMTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cbi5zaWduLWZvbnQtb3B0aW9uIC5mb250LWNoZWNrIHtcbiAgICB3aWR0aDogMThweDtcbiAgICBoZWlnaHQ6IDE4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMsIGJvcmRlci1jb2xvciAwLjE1cztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLnNpZ24tZm9udC1vcHRpb24uc2VsZWN0ZWQgLmZvbnQtY2hlY2sge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpO1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLyogLS0tLSBVcGxvYWQgcGFuZSAtLS0tICovXG4uc2lnbi11cGxvYWQtem9uZSB7XG4gICAgZmxleDogMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMnMsIGJhY2tncm91bmQgMC4ycztcbiAgICBwYWRkaW5nOiAyOHB4IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWluLWhlaWdodDogMTgwcHg7XG59XG4uc2lnbi11cGxvYWQtem9uZTpob3ZlciwgLnNpZ24tdXBsb2FkLXpvbmUuZHJhZ292ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDQpO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cbi5zaWduLXVwbG9hZC16b25lIHAgeyBmb250LXNpemU6IDAuOXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgbWFyZ2luOiAwOyB9XG4uc2lnbi11cGxvYWQtem9uZSBzcGFuIHsgZm9udC1zaXplOiAwLjc4cmVtOyBvcGFjaXR5OiAwLjc7IH1cblxuLnNpZ24tdXBsb2FkLXByZXZpZXcge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDhweCAwO1xufVxuLnNpZ24tdXBsb2FkLXByZXZpZXcgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMTYwcHg7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICAgIHBhZGRpbmc6IDhweDtcbn1cblxuLyogUGFuZWwgZm9vdGVyICovXG4uc2lnbi1wYW5lbC1mb290ZXIge1xuICAgIHBhZGRpbmc6IDEycHggMTZweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG4uc2lnbi1hcHBseS1hbGwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuLnNpZ24tYXBwbHktYWxsIGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGFjY2VudC1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiAtLS0tIFJpZ2h0IHBhbmVsIC0tLS0gKi9cbi5zaWduLXBsYWNlLXBhbmVsIHtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEycHg7XG4gICAgYmFja2dyb3VuZDogI2VlZWVmNjtcbn1cbi5zaWduLXBsYWNlLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAxMHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuLnNpZ24tcGxhY2UtaGludCB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG59XG4uc2lnbi1wYWdlLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cbi5zaWduLXBhZ2UtbmF2IHNwYW4ge1xuICAgIG1pbi13aWR0aDogODBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLyogTGFyZ2UgUERGIHByZXZpZXcgKi9cbi5zaWduLXByZXZpZXctd3JhcCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiAjYzhjOGQ4O1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtaW4taGVpZ2h0OiA1MjBweDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDJweCA4cHggcmdiYSgwLDAsMCwwLjA4KTtcbn1cbi5zaWduLXByZXZpZXctd3JhcCBjYW52YXMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3gtc2hhZG93OiAwIDRweCAyMHB4IHJnYmEoMCwwLDAsMC4xOCk7XG59XG5cbi8qIERyYWdnYWJsZSBvdmVybGF5ICovXG4uc2lnbi1zaWctb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGN1cnNvcjogbW92ZTtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgcmdiYSg5OSwxMDIsMjQxLDAuODUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsMCwwLDAuMTUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNCk7XG59XG4uc2lnbi1zaWctb3ZlcmxheSBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cbi5zaWduLXNpZy1vdmVybGF5IC5yZXNpemUtaGFuZGxlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtN3B4O1xuICAgIHJpZ2h0OiAtN3B4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjZmZmO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjdXJzb3I6IHNlLXJlc2l6ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsMCwwLDAuMik7XG59XG5cbi8qIE1vYmlsZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7XG4gICAgLnNpZ24tcGFuZWxzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IG1pbi1oZWlnaHQ6IHVuc2V0OyB9XG4gICAgLnNpZ24tZHJhdy1wYW5lbCB7IGJvcmRlci1yaWdodDogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IH1cbiAgICAuc2lnbi1wcmV2aWV3LXdyYXAgeyBtaW4taGVpZ2h0OiAzNDBweDsgfVxuICAgIC50b29sLXdvcmtzcGFjZS5zaWduLW1vZGUgeyBtYXgtd2lkdGg6IDEwMCU7IH1cbn1cblxuLyogPT09PT09PT09PSBMaXZlIE9wdGlvbiBFc3RpbWF0ZSBCYXIgPT09PT09PT09PSAqL1xuLm9wdGlvbi1lc3RpbWF0ZSB7XG4gICAgbWluLWhlaWdodDogMDtcbn1cbi5vcHRpb24tZXN0aW1hdGU6ZW1wdHkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG4uZXN0LWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IDEwcHg7XG4gICAgcGFkZGluZzogMTBweCAxNHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGYwZmYgMCUsICNmNWY0ZmYgMTAwJSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBhbmltYXRpb246IGZhZGVJbiAwLjJzIGVhc2U7XG59XG4uZXN0LXByaW1hcnkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG4uZXN0LXByaW1hcnkgc3Ryb25nIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG4uZXN0LXNlY29uZGFyeSB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cbi5lc3QtaGlnaGxpZ2h0IHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjMTZhMzRhO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyLDE2Myw3NCwwLjA4KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbn1cblxuLyogPT09PT09PT09PSBJbWFnZSBUaHVtYm5haWxzIGluIEZpbGUgTGlzdCA9PT09PT09PT09ICovXG4uZmlsZS1pdGVtLXRodW1iIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG4uZmlsZS10aHVtYi1pbWcge1xuICAgIHdpZHRoOiA0NHB4O1xuICAgIGhlaWdodDogNDRweDtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG59XG4uZmlsZS1pdGVtLWRpbWVuc2lvbnMge1xuICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi8qID09PT09PT09PT0gUERGIEhlcm8gRmlsZSBDYXJkID09PT09PT09PT0gKi9cbi5maWxlLWxpc3QtaGVybyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDMycHggMjBweDtcbn1cbi5maWxlLWxpc3QtaGVybyAuZmlsZS1pdGVtIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDI0cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG59XG4uZmlsZS1saXN0LWhlcm8gLmZpbGUtaXRlbS1pbmZvIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xufVxuLmZpbGUtbGlzdC1oZXJvIC5maWxlLWl0ZW0taWNvbiB7XG4gICAgd2lkdGg6IDU2cHg7XG4gICAgaGVpZ2h0OiA1NnB4O1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG59XG4uZmlsZS1saXN0LWhlcm8gLmZpbGUtaXRlbS1uYW1lIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cbi5maWxlLWxpc3QtaGVybyAuZmlsZS1pdGVtLXNpemUge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cbi5maWxlLWxpc3QtaGVybyAuZmlsZS1pdGVtLXJlbW92ZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTJweDtcbiAgICByaWdodDogMTJweDtcbn1cbi5maWxlLWxpc3QtaGVybyAuZmlsZS1pdGVtIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qID09PT09PT09PT0gSW1hZ2UgUmVzdWx0IENvbXBhcmlzb24gPT09PT09PT09PSAqL1xuLmltZy1jb21wYXJlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICAgIGFuaW1hdGlvbjogc2NhbGVJbiAwLjRzIGVhc2UgYm90aDtcbn1cbi5pbWctY29tcGFyZS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAxMHB4O1xufVxuLmltZy1jb21wYXJlLXRpdGxlIHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbn1cbi5pbWctY29tcGFyZS1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogOHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cbi5pbWctY29tcGFyZS1wYW5lbHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uaW1nLWNvbXBhcmUtY2FyZCB7XG4gICAgZmxleDogMTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuLmltZy1jb21wYXJlLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG4uaW1nLWNvbXBhcmUtdGh1bWItd3JhcCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBwYWRkaW5nOiA4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDEyMHB4O1xufVxuLmltZy1jb21wYXJlLXRodW1iIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWF4LWhlaWdodDogMjAwcHg7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG59XG4uaW1nLWNvbXBhcmUtbWV0YSB7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xufVxuLmltZy1jb21wYXJlLWFycm93IHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG9wYWNpdHk6IDAuNTtcbn1cbi5pbWctY29tcGFyZS1yZXN1bHQtY2FyZCAuaW1nLWNvbXBhcmUtdGh1bWItd3JhcCB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiByZXBlYXRpbmctY29uaWMtZ3JhZGllbnQoI2U1ZTVlNSAwJSAyNSUsICNmZmYgMCUgNTAlKSA1MCUgLyAxNnB4IDE2cHg7XG59XG5cbi8qID09PT09PT09PT0gUmVzdWx0IFN0YXRzID09PT09PT09PT0gKi9cbi5yZXN1bHQtc3RhdHMge1xuICAgIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi10b3A6IDhweDtcbn1cbi5yZXN1bHQtc3RhdHMtaGlnaGxpZ2h0IHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjMTZhMzRhO1xufVxuXG4vKiA9PT09PT09PT09IEltYWdlIEVkaXRvciA9PT09PT09PT09ICovXG4uaW1nLWVkaXRvciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMpO1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBhbmltYXRpb246IHNjYWxlSW4gMC4zcyBlYXNlIGJvdGg7XG59XG4uaW1nLWVkaXRvci10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBnYXA6IDhweDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uaW1nLWVkaXRvci10b29scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbn1cbi5pbWctZWRpdG9yLXRvb2wtYnRuIHtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tdGV4dCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xufVxuLmltZy1lZGl0b3ItdG9vbC1idG46aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLXByaW1hcnkpO1xufVxuLmltZy1lZGl0b3ItdG9vbC1idG4uYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cbi5pbWctZWRpdG9yLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA2cHg7XG59XG4uaW1nLWVkaXRvci1hY3Rpb24tYnRuIHtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXM7XG59XG4uaW1nLWVkaXRvci1hY3Rpb24tYnRuOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cbi5pbWctZWRpdG9yLWFwcGx5LWJ0biB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4uaW1nLWVkaXRvci1hcHBseS1idG46aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktaG92ZXIpO1xufVxuLmltZy1lZGl0b3ItdG9vbC1vcHRpb25zIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1pbi1oZWlnaHQ6IDA7XG59XG4uaW1nLWVkaXRvci1vcHQtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG4uaW1nLWVkaXRvci1vcHQtYnRuIHtcbiAgICBwYWRkaW5nOiA0cHggMTBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMTVzO1xufVxuLmltZy1lZGl0b3Itb3B0LWJ0bjpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG59XG4uaW1nLWVkaXRvci1vcHQtYnRuLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG4uaW1nLWVkaXRvci1vcHQtbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cbi5pbWctZWRpdG9yLW9wdC1oaW50IHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG4uaW1nLWVkaXRvci1vcHQtcHJlc2V0cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbn1cbi5pbWctZWRpdG9yLXNsaWRlciB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgYWNjZW50LWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbn1cbi5pbWctZWRpdG9yLWNhbnZhcy13cmFwIHtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYmcpO1xuICAgIG1pbi1oZWlnaHQ6IDIwMHB4O1xufVxuLmltZy1lZGl0b3ItY2FudmFzLXdyYXAgY2FudmFzIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLDAsMCwwLjA4KTtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG59XG4uaW1nLWVkaXRvci1pbmZvIHtcbiAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICBmb250LXNpemU6IDAuNzJyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG59XG5cbi8qID09PT09PT09PT0gV2F0ZXJtYXJrIFRvb2wgPT09PT09PT09PSAqL1xuLndtLXNlY3Rpb24tbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG4ud20tdXBsb2FkLXpvbmUge1xuICAgIG1pbi1oZWlnaHQ6IDE0MHB4O1xufVxuLndtLW9wdGlvbnMge1xuICAgIG1hcmdpbi10b3A6IDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTBweDtcbn1cbi53bS1vcHQtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xufVxuLndtLW9wdC1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBtaW4td2lkdGg6IDU2cHg7XG59XG4ud20tb3B0LXZhbHVlIHtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1wcmltYXJ5KTtcbiAgICBtaW4td2lkdGg6IDM2cHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5cbi8qIFRleHQgV2F0ZXJtYXJrIG92ZXJsYXkgKi9cbi53bXQtdGV4dC1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnkpO1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbn1cbi53bXQtdGV4dC1pbnB1dDpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWFjY2VudCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoOTksIDEwMiwgMjQxLCAwLjE1KTtcbn1cbi53bXQtY29sb3ItYnRucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDZweDtcbn1cbi53bXQtdGV4dC1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY3Vyc29yOiBncmFiO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgei1pbmRleDogMztcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsMC4wOCk7XG59XG4ud210LXRleHQtb3ZlcmxheTphY3RpdmUgeyBjdXJzb3I6IGdyYWJiaW5nOyB9XG5cbi8qIENvbXBhcmUgbW9kZSB3aWRlbnMgd29ya3NwYWNlICovXG4udG9vbC13b3Jrc3BhY2UuY29tcGFyZS1tb2RlIHtcbiAgICBtYXgtd2lkdGg6IDgwMHB4O1xufVxuXG4vKiA9PT09PT09PT09IFJlc3BvbnNpdmUgPT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgLmhlcm8gaDEgeyBmb250LXNpemU6IDEuNXJlbTsgfVxuICAgIC5jYXRlZ29yeS1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgICAudG9vbC1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgIH1cbiAgICAudG9vbC1jYXJkIHsgcGFkZGluZzogMThweCAxNHB4OyB9XG4gICAgLnRvb2wtY2FyZC1pY29uIHsgd2lkdGg6IDQ0cHg7IGhlaWdodDogNDRweDsgZm9udC1zaXplOiAxLjJyZW07IH1cbiAgICAudXBsb2FkLXpvbmUgeyBwYWRkaW5nOiAzMnB4IDE2cHg7IH1cbiAgICAuZGFzaGJvYXJkLWhlYWRlciB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4gICAgLyogSW1hZ2UgZWRpdG9yIHJlc3BvbnNpdmUgKi9cbiAgICAuaW1nLWVkaXRvci10b29sYmFyIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH1cbiAgICAuaW1nLWVkaXRvci10b29scyB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLmltZy1lZGl0b3ItYWN0aW9ucyB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9XG4gICAgLmltZy1lZGl0b3Itb3B0LXJvdyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9XG5cbiAgICAvKiBJbWFnZSBjb21wYXJpc29uIHJlc3BvbnNpdmUgKi9cbiAgICAuaW1nLWNvbXBhcmUtcGFuZWxzIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuICAgIC5pbWctY29tcGFyZS1hcnJvdyB7IHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfVxuICAgIC5pbWctY29tcGFyZS1oZWFkZXIgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMzgwcHgpIHtcbiAgICAudG9vbC1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbn1cblxuLyogPT09PT09PT09PSBBUEkgTmF2IExpbmsgPT09PT09PT09PSAqL1xuLm5hdi1hcGktbGluayB7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDgpO1xuICAgIHBhZGRpbmc6IDVweCAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7XG59XG4ubmF2LWFwaS1saW5rOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeSk7IGNvbG9yOiAjZmZmOyB9XG5cbi8qIFdoZW4gYnJlYWRjcnVtYiBpcyB2aXNpYmxlIGl0IGFscmVhZHkgdGFrZXMgZmxleDoxLCBzbyBBUEkgbGluayBkb2Vzbid0IG5lZWQgbWFyZ2luLWxlZnQ6YXV0byAqL1xuI2JyZWFkY3J1bWI6bm90KC5oaWRkZW4pIH4gLm5hdi1hcGktbGluayB7IG1hcmdpbi1sZWZ0OiAwOyB9XG5cbi8qID09PT09PT09PT0gQVBJIERvY3MgVmlldyA9PT09PT09PT09ICovXG4uYXBpLWRvY3MtaGVhZGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNDBweCAyMHB4IDI0cHg7XG59XG4uYXBpLWRvY3MtaGVhZGVyIGgxIHtcbiAgICBmb250LXNpemU6IDEuOHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG59XG4uYXBpLWRvY3MtaGVhZGVyIHAge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDE0cHg7XG59XG4uYXBpLWRvY3MtbGlua3Mge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxMnB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuLmFwaS1kb2NzLWxpbmtzIGEge1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgcGFkZGluZzogNXB4IDE0cHg7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbiksIGNvbG9yIHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmFwaS1kb2NzLWxpbmtzIGE6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTsgY29sb3I6ICNmZmY7IH1cblxuLyogU2VhcmNoICovXG4uYXBpLWRvY3Mtc2VhcmNoIHtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIG1hcmdpbjogMCBhdXRvIDI4cHg7XG4gICAgcGFkZGluZzogMCAyMHB4O1xufVxuLmFwaS1kb2NzLXNlYXJjaCBpbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBmb250LXNpemU6IDAuOTJyZW07XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIHZhcigtLXRyYW5zaXRpb24pLCBib3gtc2hhZG93IHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmFwaS1kb2NzLXNlYXJjaCBpbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5OSwxMDIsMjQxLDAuMTIpO1xufVxuXG4vKiBDb250ZW50IGNvbnRhaW5lciAqL1xuLmFwaS1kb2NzLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCAyMHB4IDYwcHg7XG59XG5cbi8qIENhdGVnb3J5IHNlY3Rpb25zICovXG4uYXBpLWNhdC1zZWN0aW9uIHsgbWFyZ2luLWJvdHRvbTogMzJweDsgfVxuLmFwaS1jYXQtc2VjdGlvbi5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4uYXBpLWNhdC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTRweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogOHB4O1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xufVxuLmFwaS1jYXQtaWNvbiB7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgaGVpZ2h0OiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgY29sb3I6ICNmZmY7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG4uYXBpLWNhdC1oZWFkZXIgaDIge1xuICAgIGZvbnQtc2l6ZTogMS4xNXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbn1cbi5hcGktY2F0LWhlYWRlciBzcGFuIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuXG4vKiBFbmRwb2ludCBjYXJkcyAqL1xuLmFwaS1lbmRwb2ludC1jYXJkIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyB2YXIoLS10cmFuc2l0aW9uKTtcbn1cbi5hcGktZW5kcG9pbnQtY2FyZC5oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9XG4uYXBpLWVuZHBvaW50LWNhcmQ6aG92ZXIgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cpOyB9XG4uYXBpLWVuZHBvaW50LWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmFwaS1lbmRwb2ludC1oZWFkZXI6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDk5LDEwMiwyNDEsMC4wMyk7IH1cbi5hcGktbWV0aG9kLWJhZGdlIHtcbiAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIGJhY2tncm91bmQ6ICMxMGI5ODE7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcbn1cbi5hcGktZW5kcG9pbnQtcGF0aCB7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBNb25vJywgJ0ZpcmEgQ29kZScsICdDb25zb2xhcycsIG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG4uYXBpLWVuZHBvaW50LW5hbWUge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuLmFwaS1lbmRwb2ludC1jaGV2cm9uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycztcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xufVxuLmFwaS1lbmRwb2ludC1jYXJkLm9wZW4gLmFwaS1lbmRwb2ludC1jaGV2cm9uIHsgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfVxuXG4vKiBFbmRwb2ludCBib2R5IChoaWRkZW4gYnkgZGVmYXVsdCkgKi9cbi5hcGktZW5kcG9pbnQtYm9keSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwYWRkaW5nOiAwIDE2cHggMTZweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTtcbn1cbi5hcGktZW5kcG9pbnQtY2FyZC5vcGVuIC5hcGktZW5kcG9pbnQtYm9keSB7IGRpc3BsYXk6IGJsb2NrOyB9XG4uYXBpLWVuZHBvaW50LWRlc2Mge1xuICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbjogMTJweCAwO1xufVxuXG4vKiBQYXJhbXMgdGFibGUgKi9cbi5hcGktcGFyYW1zLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxNHB4O1xufVxuLmFwaS1wYXJhbXMtdGFibGUgdGgge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcGFkZGluZzogNnB4IDEwcHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSg5OSwxMDIsMjQxLDAuMDUpO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNlY29uZGFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xufVxuLmFwaS1wYXJhbXMtdGFibGUgdGQge1xuICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4uYXBpLXBhcmFtcy10YWJsZSBjb2RlIHtcbiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnRmlyYSBDb2RlJywgJ0NvbnNvbGFzJywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoOTksMTAyLDI0MSwwLjA2KTtcbiAgICBwYWRkaW5nOiAxcHggNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbn1cbi5hcGktcGFyYW0tcmVxdWlyZWQge1xuICAgIGNvbG9yOiAjZWY0NDQ0O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuLmFwaS1wYXJhbS1vcHRpb25hbCB7XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG59XG4uYXBpLXJlc3BvbnNlLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi5hcGktcmVzcG9uc2UtYmFkZ2UuZmlsZSB7IGJhY2tncm91bmQ6IHJnYmEoNTksMTMwLDI0NiwwLjEpOyBjb2xvcjogIzNiODJmNjsgfVxuLmFwaS1yZXNwb25zZS1iYWRnZS5qc29uIHsgYmFja2dyb3VuZDogcmdiYSgxNiwxODUsMTI5LDAuMSk7IGNvbG9yOiAjMTBiOTgxOyB9XG5cbi8qIFRyeSBJdCBPdXQgKi9cbi5hcGktdHJ5aXQtdG9nZ2xlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiA1cHggMTRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS10cmFuc2l0aW9uKSwgY29sb3IgdmFyKC0tdHJhbnNpdGlvbik7XG59XG4uYXBpLXRyeWl0LXRvZ2dsZTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpOyBjb2xvcjogI2ZmZjsgfVxuLmFwaS10cnlpdC1hcmVhIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbi10b3A6IDE0cHg7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xufVxuLmFwaS10cnlpdC1hcmVhLm9wZW4geyBkaXNwbGF5OiBibG9jazsgfVxuLmFwaS10cnlpdC1hcmVhIC5mb3JtLWdyb3VwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xufVxuLmFwaS10cnlpdC1hcmVhIC5mb3JtLWdyb3VwIGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0KTtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG4uYXBpLXRyeWl0LWFyZWEgLmZvcm0tZ3JvdXAgaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uYXBpLXRyeWl0LWFyZWEgLmZvcm0tZ3JvdXAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSxcbi5hcGktdHJ5aXQtYXJlYSAuZm9ybS1ncm91cCBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4uYXBpLXRyeWl0LWFyZWEgLmZvcm0tZ3JvdXAgdGV4dGFyZWEsXG4uYXBpLXRyeWl0LWFyZWEgLmZvcm0tZ3JvdXAgc2VsZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZSk7XG4gICAgY29sb3I6IHZhcigtLXRleHQpO1xufVxuLmFwaS10cnlpdC1hcmVhIC5mb3JtLWdyb3VwIGlucHV0W3R5cGU9XCJmaWxlXCJdIHtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG59XG4uYXBpLXRyeWl0LWFyZWEgLmZvcm0tZ3JvdXAgLmhpbnQge1xuICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tdGV4dC1zZWNvbmRhcnkpO1xuICAgIG1hcmdpbi10b3A6IDNweDtcbn1cbi5hcGktdHJ5aXQtZXhlY3V0ZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIHBhZGRpbmc6IDhweCAyMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmFwaS10cnlpdC1leGVjdXRlOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS1ob3Zlcik7IH1cbi5hcGktdHJ5aXQtZXhlY3V0ZTpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgfVxuLmFwaS10cnlpdC1leGVjdXRlIC5zcGlubmVyIHtcbiAgICB3aWR0aDogMTRweDtcbiAgICBoZWlnaHQ6IDE0cHg7XG4gICAgYm9yZGVyLXdpZHRoOiAycHg7XG59XG5cbi8qIFJlc3BvbnNlIGRpc3BsYXkgKi9cbi5hcGktcmVzcG9uc2Uge1xuICAgIG1hcmdpbi10b3A6IDE0cHg7XG59XG4uYXBpLXJlc3BvbnNlLXN0YXR1cyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG4uYXBpLXJlc3BvbnNlLXN0YXR1cyAuc3RhdHVzLWNvZGUge1xuICAgIHBhZGRpbmc6IDJweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbn1cbi5hcGktcmVzcG9uc2Utc3RhdHVzIC5zdGF0dXMtY29kZS5vayB7IGJhY2tncm91bmQ6IHJnYmEoMTYsMTg1LDEyOSwwLjEyKTsgY29sb3I6ICMwNTk2Njk7IH1cbi5hcGktcmVzcG9uc2Utc3RhdHVzIC5zdGF0dXMtY29kZS5lcnIgeyBiYWNrZ3JvdW5kOiByZ2JhKDIzOSw2OCw2OCwwLjEyKTsgY29sb3I6ICNkYzI2MjY7IH1cbi5hcGktcmVzcG9uc2UtdGltaW5nIHtcbiAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgY29sb3I6IHZhcigtLXRleHQtc2Vjb25kYXJ5KTtcbn1cbi5hcGktcmVzcG9uc2UtYm9keSB7XG4gICAgYmFja2dyb3VuZDogIzFlMWUyZTtcbiAgICBjb2xvcjogI2NkZDZmNDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBmb250LWZhbWlseTogJ1NGIE1vbm8nLCAnRmlyYSBDb2RlJywgJ0NvbnNvbGFzJywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5hcGktcmVzcG9uc2UtZG93bmxvYWQge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA2cHg7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiB2YXIoLS1wcmltYXJ5KTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiA2cHggMTRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tdHJhbnNpdGlvbiksIGNvbG9yIHZhcigtLXRyYW5zaXRpb24pO1xufVxuLmFwaS1yZXNwb25zZS1kb3dubG9hZDpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnkpOyBjb2xvcjogI2ZmZjsgfVxuXG4vKiBNb2JpbGUgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA2NDBweCkge1xuICAgIC5hcGktZG9jcy1oZWFkZXIgaDEgeyBmb250LXNpemU6IDEuNHJlbTsgfVxuICAgIC5hcGktZW5kcG9pbnQtaGVhZGVyIHsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDZweDsgcGFkZGluZzogMTBweCAxMnB4OyB9XG4gICAgLmFwaS1lbmRwb2ludC1uYW1lIHsgbWFyZ2luLWxlZnQ6IDA7IHdpZHRoOiAxMDAlOyB9XG4gICAgLmFwaS1lbmRwb2ludC1ib2R5IHsgcGFkZGluZzogMCAxMnB4IDEycHg7IH1cbiAgICAuYXBpLXBhcmFtcy10YWJsZSB7IGZvbnQtc2l6ZTogMC43NXJlbTsgfVxuICAgIC5hcGktcGFyYW1zLXRhYmxlIHRoLCAuYXBpLXBhcmFtcy10YWJsZSB0ZCB7IHBhZGRpbmc6IDRweCA2cHg7IH1cbiAgICAuYXBpLXRyeWl0LWFyZWEgeyBwYWRkaW5nOiAxMnB4OyB9XG4gICAgLm5hdi1hcGktbGluayB7IHBhZGRpbmc6IDRweCA4cHg7IGZvbnQtc2l6ZTogMC43NXJlbTsgfVxufVxuIl19 */