/* SurpriseCalendar Calendar Configurator Styles */

/* ============================================
   CUSTOM FONTS
   ============================================ */

@font-face {
    font-family: 'Poppins';
    src: url('/static/fonts/Poppins-Bold.ttf') format('truetype');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Poppins';
    src: url('/static/fonts/Poppins-Regular.ttf') format('truetype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Nunito';
    src: url('/static/fonts/Nunito-Bold.ttf') format('truetype');
    font-weight: 700;
    font-display: swap;
}

@font-face {
    font-family: 'Montserrat';
    src: url('/static/fonts/Montserrat-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: swap;
}

@font-face {
    font-family: 'Playfair Display';
    src: url('/static/fonts/PlayfairDisplay-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: swap;
}

@font-face {
    font-family: 'Pacifico';
    src: url('/static/fonts/Pacifico-Regular.ttf') format('truetype');
    font-weight: 400;
    font-display: swap;
}

@font-face {
    font-family: 'Permanent Marker';
    src: url('/static/fonts/PermanentMarker-Regular.woff2') format('woff2');
    font-weight: 400;
    font-display: swap;
}

@font-face {
    font-family: 'Lobster';
    src: url('/static/fonts/Lobster-Regular.ttf') format('truetype');
    font-weight: 400;
    font-display: swap;
}

@font-face {
    font-family: 'Oswald';
    src: url('/static/fonts/Oswald-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: swap;
}

@font-face {
    font-family: 'Dancing Script';
    src: url('/static/fonts/DancingScript-Bold.woff2') format('woff2');
    font-weight: 700;
    font-display: swap;
}

@font-face {
    font-family: 'Bebas Neue';
    src: url('/static/fonts/BebasNeue-Regular.ttf') format('truetype');
    font-weight: 400;
    font-display: swap;
}

/* ============================================
   MODE SELECTOR
   ============================================ */

.mode-selector-section {
    padding: var(--space-4) 0;
}

.mode-selector {
    display: flex;
    gap: var(--space-3);
    justify-content: center;
    flex-wrap: nowrap;
}

.mode-option {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    background: var(--color-bg-white);
    border: 2px solid var(--color-border);
    border-radius: var(--radius-lg);
    cursor: pointer;
    transition: all var(--transition-base);
    white-space: nowrap;
}

.mode-option input[type="radio"] {
    display: none;
}

.mode-option:hover {
    border-color: var(--color-primary);
}

.mode-option.active {
    border-color: var(--color-primary);
    background: rgba(102, 126, 234, 0.1);
    box-shadow: var(--shadow-md);
}

.mode-icon-svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    color: var(--color-primary);
}

.mode-label {
    font-weight: 600;
    font-size: var(--font-size-sm);
    color: var(--color-text);
}

/* Product Description Container */
.product-description-container {
    margin-top: var(--space-6);
    margin-bottom: var(--space-6);
    padding: var(--space-8);
    background: linear-gradient(135deg, #2d3748 0%, #1a202c 100%);
    border-radius: var(--radius-xl);
    border: 1px solid rgba(212, 168, 83, 0.3);
    font-size: var(--font-size-base);
    line-height: 1.8;
    color: rgba(255, 255, 255, 0.9);
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.2);
}

.product-description-container p {
    margin: 0 0 var(--space-4) 0;
}

.product-description-container p:first-child {
    font-size: var(--font-size-lg);
    font-weight: 600;
    color: white;
}

.product-description-container p:last-child {
    margin-bottom: 0;
    font-weight: 600;
    color: var(--color-primary);
}

.product-description-container ol,
.product-description-container ul {
    margin: var(--space-4) 0;
    padding-left: 0;
    list-style: none;
}

.product-description-container li {
    margin-bottom: var(--space-3);
    padding-left: var(--space-6);
    position: relative;
}

.product-description-container li::before {
    content: '✓';
    position: absolute;
    left: 0;
    color: var(--color-primary);
    font-weight: bold;
}

.product-description-container strong {
    color: var(--color-primary);
    font-weight: 700;
}

/* Legacy mode-btn support */
.mode-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-4) var(--space-6);
    background: var(--color-bg-white);
    border: 2px solid var(--color-border);
    border-radius: var(--radius-xl);
    cursor: pointer;
    transition: all var(--transition-base);
    min-width: 160px;
}

.mode-btn:hover {
    border-color: var(--color-primary);
}

.mode-btn.active {
    border-color: var(--color-primary);
    background: rgba(102, 126, 234, 0.1);
}

.configurator-mode {
    display: none;
}

.configurator-mode.active {
    display: block;
}

/* ============================================
   CALENDAR CONTAINER
   Physical: 34.5cm × 24cm
   ============================================ */

.gbc-layout-container {
    max-width: 900px;
    margin: 0 auto;
}

.gbc-calendar-hero-section {
    margin-bottom: var(--space-6);
}

.gbc-calendar-header {
    text-align: center;
    margin-bottom: var(--space-4);
}

.gbc-calendar-instruction {
    color: var(--color-text-muted);
    font-size: var(--font-size-lg);
}

.gbc-calendar-title-button-wrapper {
    text-align: center;
    margin-bottom: var(--space-4);
}

.gbc-add-title-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    background: var(--color-bg-white);
    border: 2px dashed var(--color-border);
    border-radius: var(--radius-lg);
    cursor: pointer;
    font-size: var(--font-size-base);
    transition: all var(--transition-fast);
}

.gbc-add-title-btn:hover {
    border-color: var(--color-primary);
    background: rgba(102, 126, 234, 0.05);
}

/* Calendar Grid - Matches print layout: 30cm x 22cm */
#gbc-calendar-container.gbc-multi-image-layout {
    position: relative;
    display: flex;
    gap: 5.33%;  /* 1.6cm / 30cm = 5.33% */
    padding: 5.33%;  /* Uniform padding matching print gaps */
    background-color: #ffffff;
    border: 1px solid var(--color-border);
    border-radius: 0;
    box-shadow: var(--shadow-lg);
    aspect-ratio: 30 / 22;  /* Match print canvas */
    box-sizing: border-box;
}

/* Layout Columns */
.gbc-layout-column {
    display: flex;
    flex-direction: column;
    gap: 2%;
    height: 100%;
    flex-shrink: 0;
}

.gbc-left-col { flex-grow: 4; flex-basis: 0; }
.gbc-center-col { flex-grow: 10; flex-basis: 0; }
.gbc-right-col-1 { flex-grow: 4; flex-basis: 0; }
.gbc-right-col-2 { flex-grow: 4; flex-basis: 0; }

/* Door Styles */
.gbc-calendar-door {
    position: relative;
    background-color: #f0f0f0;
    border: 2px dashed #d0d0d0;
    border-radius: 0;
    overflow: hidden;
    transition: all 0.2s ease-in-out;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    flex-basis: 0;  /* Required for flex-grow proportions to work */
    min-height: 0;  /* Allow shrinking */
    cursor: pointer;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
    touch-action: manipulation;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
}

/* Door Height Proportions */
.gbc-left-col .gbc-calendar-door:nth-child(1),
.gbc-right-col-1 .gbc-calendar-door:nth-child(1),
.gbc-right-col-2 .gbc-calendar-door:nth-child(1) {
    flex-grow: 6.8;
}

.gbc-left-col .gbc-calendar-door:nth-child(2),
.gbc-right-col-1 .gbc-calendar-door:nth-child(2),
.gbc-right-col-2 .gbc-calendar-door:nth-child(2) {
    flex-grow: 10.8;
}

/* Center column door heights - match print cm values */
.gbc-center-col .gbc-calendar-door:nth-child(1) { flex-grow: 2.6; } /* Door 3 */
.gbc-center-col .gbc-calendar-door:nth-child(2) { flex-grow: 6.7; } /* Door 4 */
.gbc-center-col .gbc-calendar-door:nth-child(3) { flex-grow: 2.6; } /* Door 5 */
.gbc-center-col .gbc-calendar-door:nth-child(4) { flex-grow: 2.6; } /* Door 6 */

.gbc-calendar-door:hover {
    border-color: var(--color-primary);
    transform: scale(1.03);
}

.gbc-calendar-door.has-image {
    border-style: solid;
    border-color: var(--color-primary);
}

/* Door Placeholder */
.gbc-image-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    text-align: center;
    color: #aaa;
    pointer-events: none;
}

.gbc-door-number {
    font-size: 1.5em;
    font-weight: bold;
    color: #ccc;
}

.gbc-door-prompt {
    font-size: 0.75em;
    display: none;
}

@media (min-width: 768px) {
    .gbc-door-prompt {
        display: block;
    }
}

/* Door Image Viewport */
.gbc-door-image {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    cursor: grab;
    touch-action: none;
}

.gbc-door-image:active {
    cursor: grabbing;
}

/* Actual image inside viewport (for pan/zoom) */
.gbc-door-image-inner {
    position: absolute;
    /* Width/height set by transform scale - don't set here */
    transform-origin: 0 0;
    max-width: none;
    max-height: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    pointer-events: none;
}

/* Drop zone active state */
.gbc-calendar-door.drop-active {
    border-color: var(--color-primary) !important;
    border-style: dashed !important;
    background-color: rgba(102, 126, 234, 0.15);
    transform: scale(1.05);
}

/* Preview item being dragged */
.gbc-preview-item {
    aspect-ratio: 1;
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    background-size: cover;
    background-position: center;
    cursor: grab;
    transition: transform 0.2s, border-color 0.2s;
    touch-action: none;
}

.gbc-preview-item:hover {
    border-color: var(--color-primary);
}

.gbc-preview-item:active {
    cursor: grabbing;
}

/* Remove Button */
.gbc-remove-image-btn {
    position: absolute;
    top: 4px;
    left: 4px;
    width: 28px;
    height: 28px;
    background-color: rgba(220, 53, 69, 0.9);
    color: #fff;
    border: 2px solid rgba(255, 255, 255, 0.9);
    border-radius: 50%;
    cursor: pointer;
    font-size: 16px;
    /* Use flexbox for Safari-compatible centering */
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10;
    transition: all 0.2s;
}

.gbc-remove-image-btn:hover {
    background-color: rgba(200, 35, 51, 1);
    transform: scale(1.1);
}

/* Door Zoom Controls */
.gbc-door-controls {
    position: absolute;
    bottom: 4px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 4px;
    z-index: 15;
    background: rgba(0, 0, 0, 0.6);
    border-radius: var(--radius-md);
    padding: 4px;
}

.gbc-door-controls button {
    width: 28px;
    height: 28px;
    border: none;
    background: rgba(255, 255, 255, 0.9);
    color: #333;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 16px;
    font-weight: bold;
    line-height: 28px;
    text-align: center;
    transition: all 0.2s;
}

.gbc-door-controls button:hover {
    background: white;
    transform: scale(1.1);
}

.gbc-door-controls button:active {
    transform: scale(0.95);
}

/* Door Text Overlay */
.gbc-door-text-overlay {
    position: absolute;
    inset: 0;
    pointer-events: none; /* Overlay is pass-through */
    z-index: 20;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding-bottom: 40px;
}

.gbc-door-text {
    position: absolute;
    left: 50%;
    top: 85%;
    transform: translate(-50%, -50%);
    padding: 4px 10px;
    background: rgba(0, 0, 0, 0.7);
    color: white;
    border-radius: var(--radius-sm);
    font-size: 0.9em;
    word-wrap: break-word;
    max-width: 90%;
    text-align: center;
    cursor: grab;
    pointer-events: auto; /* Text IS interactive */
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    touch-action: none;
    z-index: 25;
}

/* Customize Text Button */
.gbc-customize-text-btn {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 28px;
    height: 28px;
    background: rgba(102, 126, 234, 0.9);
    color: white;
    border: 2px solid rgba(255, 255, 255, 0.9);
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 12px;
    font-weight: bold;
    z-index: 10;
    transition: all 0.2s;
}

.gbc-customize-text-btn:hover {
    background: rgba(102, 126, 234, 1);
    transform: scale(1.1);
}

/* Title Overlay */
.gbc-title-overlay {
    position: absolute;
    top: 10%;
    left: 50%;
    transform: translateX(-50%);
    padding: 0;
    background: transparent;
    cursor: move;
    z-index: 20;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-1);
}

/* Buttons container - above the text */
.gbc-title-overlay .gbc-title-buttons {
    display: flex;
    gap: var(--space-1);
    opacity: 0;
    transition: opacity 0.2s ease;
}

.gbc-title-overlay:hover .gbc-title-buttons {
    opacity: 1;
}

.gbc-title-text-container {
    /* Container for text with shape - sizing handled by text-shape classes */
    min-height: 1em;
}

.gbc-title-text {
    font-size: 1.5rem;
    font-weight: bold;
    white-space: nowrap;
}

.gbc-title-edit-btn,
.gbc-title-remove-btn {
    background: rgba(0, 0, 0, 0.6);
    border: none;
    cursor: pointer;
    padding: 4px 8px;
    font-size: 0.85rem;
    color: white;
    border-radius: var(--radius-sm);
    opacity: 0.9;
}

.gbc-title-edit-btn:hover,
.gbc-title-remove-btn:hover {
    opacity: 1;
    background: rgba(0, 0, 0, 0.8);
}

/* ============================================
   COLLAPSIBLE PANELS
   ============================================ */

.gbc-collapsible-section {
    margin-bottom: var(--space-4);
    background: var(--color-bg-white);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.gbc-collapsible-toggle {
    width: 100%;
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-4);
    background: none;
    border: none;
    cursor: pointer;
    font-size: var(--font-size-base);
    font-weight: 500;
    text-align: left;
    transition: background var(--transition-fast);
}

.gbc-collapsible-toggle:hover {
    background: var(--color-bg);
}

.gbc-toggle-icon {
    font-size: 1.25rem;
}

.gbc-toggle-text {
    flex: 1;
}

.gbc-toggle-arrow {
    transition: transform var(--transition-base);
}

.gbc-collapsible-toggle[aria-expanded="true"] .gbc-toggle-arrow {
    transform: rotate(180deg);
}

.gbc-collapsible-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height var(--transition-base);
}

.gbc-collapsible-content[aria-hidden="false"] {
    max-height: 500px;
    padding: var(--space-4);
    padding-top: 0;
}

/* Image Previews Grid */
.gbc-image-previews-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
    gap: var(--space-2);
    min-height: 40px;
}

/* Combined images grid container for unified stock + user images */
.gbc-combined-images-grid {
    display: contents; /* Makes children flow into parent grid */
}

/* On larger screens, use 3-column section layout */
@media (min-width: 768px) {
    .gbc-collapsible-content[aria-hidden="false"] {
        max-height: 600px;
    }
    
    .gbc-image-previews-container {
        grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
        gap: var(--space-3);
    }
}

.gbc-preview-item {
    aspect-ratio: 1;
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    background-size: cover;
    background-position: center;
    cursor: pointer;
    transition: all 0.2s;
}

.gbc-preview-item:hover {
    border-color: var(--color-primary);
    transform: scale(1.05);
}

/* Loading state while scanning images */
.gbc-preview-item.gbc-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--color-bg);
    border: 2px dashed var(--color-primary);
    color: var(--color-text-muted);
    font-size: var(--font-size-xs);
    gap: var(--space-1);
}

.gbc-spinner {
    width: 24px;
    height: 24px;
    border: 3px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Large spinner for modal upload loading */
.gbc-spinner-large {
    width: 48px;
    height: 48px;
    border: 4px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin 1s linear infinite;
}

.gbc-upload-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-3);
    padding: var(--space-6);
    text-align: center;
}

.gbc-loading-text {
    font-weight: 600;
    color: var(--color-primary);
    font-size: var(--font-size-base);
}

.gbc-loading-subtext {
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.upload-btn {
    padding: 0;
    border-radius: var(--radius-md);
    font-size: 28px;
    font-weight: bold;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    aspect-ratio: 1;
    /* Size handled by grid */
}

/* ============================================
   MODALS
   ============================================ */

.gbc-modal {
    position: fixed;
    z-index: 1000;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
}

.gbc-modal-content {
    background: var(--color-bg-white);
    border-radius: var(--radius-xl);
    max-width: 500px;
    width: 90%;
    max-height: 80vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: var(--shadow-xl);
}

.gbc-modal-header {
    padding: var(--space-4);
    border-bottom: 1px solid var(--color-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--gradient-primary);
    color: white;
}

.gbc-modal-header h3 {
    margin: 0;
    font-size: var(--font-size-lg);
}

.gbc-modal-close {
    font-size: 1.5rem;
    cursor: pointer;
    opacity: 0.8;
    line-height: 1;
}

.gbc-modal-close:hover {
    opacity: 1;
}

.gbc-modal-tabs {
    display: flex;
    border-bottom: 1px solid var(--color-border);
}

.gbc-tab-btn {
    flex: 1;
    padding: var(--space-3);
    border: none;
    background: transparent;
    cursor: pointer;
    font-weight: 500;
    transition: all 0.2s;
}

.gbc-tab-btn:hover {
    background: var(--color-bg);
}

.gbc-tab-btn.active {
    background: var(--color-bg-white);
    border-bottom: 3px solid var(--color-primary);
    color: var(--color-primary);
}

.gbc-modal-body {
    padding: var(--space-4);
    overflow-y: auto;
    flex: 1;
}

.gbc-tab-content {
    display: none;
}

.gbc-tab-content.active {
    display: block;
}

.gbc-modal-image-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
    gap: var(--space-2);
}

.gbc-modal-image-item {
    aspect-ratio: 1;
    background-size: cover;
    background-position: center;
    border-radius: var(--radius-md);
    cursor: pointer;
    border: 3px solid transparent;
    transition: all 0.2s;
}

.gbc-modal-image-item:hover {
    border-color: var(--color-primary);
    transform: scale(1.05);
}

.gbc-modal-upload-area {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--space-8);
    border: 2px dashed var(--color-primary);
    border-radius: var(--radius-lg);
    cursor: pointer;
    margin-bottom: var(--space-4);
    background: rgba(102, 126, 234, 0.05);
    transition: all 0.2s;
}

.gbc-modal-upload-area:hover {
    background: rgba(102, 126, 234, 0.1);
}

.upload-icon {
    font-size: 2.5rem;
    margin-bottom: var(--space-2);
}

/* Title Customization Modal */
.gbc-text-customization-content {
    max-width: 400px;
}

.gbc-text-modal-body .form-group {
    margin-bottom: var(--space-4);
}

.gbc-text-modal-body label {
    display: block;
    margin-bottom: var(--space-2);
    font-weight: 500;
}

.gbc-font-select option {
    padding: var(--space-2);
}

.gbc-title-preview {
    margin-top: var(--space-4);
    padding-top: var(--space-4);
    border-top: 1px solid var(--color-border);
}

#gbc-title-preview-box {
    padding: var(--space-4);
    background: var(--color-bg);
    border-radius: var(--radius-md);
    text-align: center;
    min-height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
}

#gbc-title-preview-text {
    font-size: 32px;
    font-family: 'Poppins', sans-serif;
    color: #FFFFFF;
    text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}

/* Form divider for sections */
.form-group-divider {
    display: flex;
    align-items: center;
    margin: var(--space-4) 0;
    gap: var(--space-3);
}

.form-group-divider::before,
.form-group-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--color-border);
}

.form-group-divider span {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Background options - hidden by default */
.gbc-bg-options {
    display: none;
}

.gbc-bg-options.visible {
    display: block;
}

/* Configurator Actions */
.configurator-actions {
    display: flex;
    gap: var(--space-4);
    justify-content: center;
    margin-top: var(--space-6);
    padding: var(--space-6);
    background: var(--color-bg-white);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-sm);
}

.configurator-actions .btn {
    min-width: 150px;
}

/* Loading and Coming Soon */
.loading-text,
.coming-soon {
    text-align: center;
    color: var(--color-text-muted);
    padding: var(--space-8);
}

/* ============================================
   COMPACT HERO (Homepage)
   ============================================ */

.hero-compact {
    background: var(--gradient-gold);
    color: white;
    padding: var(--space-4) 0;
    text-align: center;
}

.hero-compact h1 {
    font-size: var(--font-size-2xl);
    margin-bottom: var(--space-2);
}

.hero-compact p {
    font-size: var(--font-size-base);
    opacity: 0.9;
    margin: 0;
}

/* ============================================
   FULL WIDTH BUTTON
   ============================================ */

.btn-full {
    width: 100%;
}

.btn-block {
    display: block;
    width: 100%;
}

/* ============================================
   MOBILE RESPONSIVE
   Mobile-First Approach
   ============================================ */

/* Base mobile styles */
.configurator-section {
    padding: var(--space-2);
}

.gbc-layout-container {
    padding: 0 var(--space-2);
}

/* Small mobile devices */
@media (max-width: 480px) {
    .hero-compact h1 {
        font-size: var(--font-size-xl);
    }
    
    .hero-compact p {
        font-size: var(--font-size-sm);
    }
    
    .gbc-door-number {
        font-size: 1em;
    }
    
    .gbc-add-title-btn {
        font-size: var(--font-size-sm);
        padding: var(--space-2);
    }
    
    .gbc-collapsible-toggle {
        padding: var(--space-3);
    }
    
    .gbc-toggle-text {
        font-size: var(--font-size-sm);
    }
    
    .upload-btn {
        width: 100%;
        padding: var(--space-3) var(--space-4);
    }
    
    .configurator-actions {
        padding: var(--space-4);
        margin-top: var(--space-4);
    }
    
    .gbc-remove-image-btn {
        width: 24px;
        height: 24px;
        font-size: 14px;
        top: 2px;
        left: 2px;
    }
    
    /* Modal full screen on mobile */
    .gbc-modal-content {
        width: 100%;
        height: 100%;
        max-height: 100%;
        border-radius: 0;
    }
    
    .gbc-modal-image-grid {
        grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
    }
    
    .gbc-modal-upload-area {
        padding: var(--space-4);
    }
    
    .upload-icon {
        font-size: 2rem;
    }
}

/* Tablets and larger phones */
@media (min-width: 481px) and (max-width: 768px) {
    .hero-compact h1 {
        font-size: var(--font-size-2xl);
    }
    
    .gbc-door-prompt {
        display: block;
        font-size: 0.65em;
    }
    
    .configurator-section {
        padding: var(--space-4);
    }
}

/* Desktop and larger tablets */
@media (min-width: 769px) {
    .hero-compact {
        padding: var(--space-6) 0;
    }
    
    .hero-compact h1 {
        font-size: var(--font-size-3xl);
    }
    
    .hero-compact p {
        font-size: var(--font-size-lg);
    }
    
    .configurator-section {
        padding: var(--space-6);
    }
    
    .configurator-actions .btn {
        min-width: 200px;
    }
    
    .configurator-actions {
        flex-direction: row;
    }
    
    .btn-full {
        width: auto;
        min-width: 300px;
    }
}

/* Collapsible section expanded state */
.gbc-collapsible-content[aria-hidden="false"] {
    max-height: 600px;
    padding: var(--space-4);
    padding-top: var(--space-2);
    overflow: visible;
}

/* Touch-friendly adjustments */
@media (hover: none) and (pointer: coarse) {
    .gbc-calendar-door:hover {
        transform: none;
    }
    
    .gbc-preview-item:hover {
        transform: none;
    }
    
    .gbc-calendar-door:active {
        transform: scale(0.98);
        border-color: var(--color-primary);
    }
    
    .gbc-preview-item:active {
        transform: scale(0.95);
        border-color: var(--color-primary);
    }
}

/* Body scroll lock when modal open */
body.modal-open {
    overflow: hidden;
    position: fixed;
    width: 100%;
}

/* Fix iOS safe area */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
    .configurator-actions {
        padding-bottom: calc(var(--space-6) + env(safe-area-inset-bottom));
    }
}

/* ============================================
   SINGLE-IMAGE CONFIGURATOR
   Same layout as multi-image (30cm x 22cm)
   ============================================ */

/* Single Image Calendar Container - Matches multi-image dimensions */
#gbc-single-calendar-container.gbc-single-image-layout {
    position: relative;
    display: block;  /* Changed to block for proper aspect-ratio */
    width: 100%;
    background-color: #ffffff;
    border: 1px solid var(--color-border);
    border-radius: 0;
    box-shadow: var(--shadow-lg);
    aspect-ratio: 30 / 22;  /* Match print canvas - same as multi-image */
    box-sizing: border-box;
    overflow: hidden;
}

/* Background Image Layer - Full container, behind doors */
.gbc-single-background-layer {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    overflow: hidden;
    cursor: grab;
    touch-action: none;
}

.gbc-single-background-layer:active {
    cursor: grabbing;
}

.gbc-single-background-image {
    position: absolute;
    top: 0;
    left: 0;
    transform-origin: 0 0;
    max-width: none;
    max-height: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
    pointer-events: none;
}

/* Upload Placeholder */
.gbc-single-upload-placeholder {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #aaa;
    text-align: center;
    pointer-events: none;
    z-index: 2;
}

.gbc-single-upload-placeholder .placeholder-icon {
    font-size: 3rem;
    margin-bottom: var(--space-2);
}

.gbc-single-upload-placeholder .placeholder-text {
    font-size: var(--font-size-lg);
    font-weight: 500;
}

/* Door Overlay - Sits on top with transparent cutouts */
.gbc-single-door-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: flex;
    gap: 5.33%;
    padding: 5.33%;
    z-index: 5;
    pointer-events: none;
    box-sizing: border-box;
}

/* Columns inside single-door-overlay - ensure proper flex column layout */
.gbc-single-door-overlay .gbc-layout-column {
    display: flex;
    flex-direction: column;
    gap: 2%;
    height: 100%;
    flex-shrink: 0;
}

.gbc-single-door-overlay .gbc-left-col { flex-grow: 4; flex-basis: 0; }
.gbc-single-door-overlay .gbc-center-col { flex-grow: 10; flex-basis: 0; }
.gbc-single-door-overlay .gbc-right-col-1 { flex-grow: 4; flex-basis: 0; }
.gbc-single-door-overlay .gbc-right-col-2 { flex-grow: 4; flex-basis: 0; }

/* Static Doors - Transparent with visible outlines only */
.gbc-static-door {
    position: relative;
    background-color: transparent;  /* Transparent to show background image */
    border: 3px solid rgba(255, 255, 255, 0.8);  /* White outline for visibility */
    border-radius: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: 100%;
    box-shadow: 
        0 0 0 1px rgba(0, 0, 0, 0.3),  /* Dark outline for contrast */
        inset 0 0 0 1px rgba(0, 0, 0, 0.1);  /* Inner shadow for depth */
    transition: all 0.2s ease;
}

/* Door number - semi-transparent background for readability */
.gbc-static-door .gbc-door-number {
    font-size: 1.5em;
    font-weight: bold;
    color: rgba(255, 255, 255, 0.9);
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7);
    background: rgba(0, 0, 0, 0.4);
    padding: 4px 12px;
    border-radius: var(--radius-sm);
    /* Use flexbox for Safari-compatible centering */
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Door Height Proportions - Same as multi-image */
.gbc-single-door-overlay .gbc-left-col .gbc-static-door:nth-child(1),
.gbc-single-door-overlay .gbc-right-col-1 .gbc-static-door:nth-child(1),
.gbc-single-door-overlay .gbc-right-col-2 .gbc-static-door:nth-child(1) {
    flex-grow: 6.8;
}

.gbc-single-door-overlay .gbc-left-col .gbc-static-door:nth-child(2),
.gbc-single-door-overlay .gbc-right-col-1 .gbc-static-door:nth-child(2),
.gbc-single-door-overlay .gbc-right-col-2 .gbc-static-door:nth-child(2) {
    flex-grow: 10.8;
}

.gbc-single-door-overlay .gbc-center-col .gbc-static-door:nth-child(1) { flex-grow: 2.6; }
.gbc-single-door-overlay .gbc-center-col .gbc-static-door:nth-child(2) { flex-grow: 6.7; }
.gbc-single-door-overlay .gbc-center-col .gbc-static-door:nth-child(3) { flex-grow: 2.6; }
.gbc-single-door-overlay .gbc-center-col .gbc-static-door:nth-child(4) { flex-grow: 2.6; }

/* Single-Image Toolbar Row */
.gbc-single-toolbar {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--space-3);
    margin-bottom: var(--space-4);
    flex-wrap: wrap;
}

/* Zoom Controls - Now in toolbar */
.gbc-single-zoom-controls {
    display: flex;
    gap: 4px;
    background: rgba(0, 0, 0, 0.1);
    border-radius: var(--radius-md);
    padding: 4px;
}

/* Remove Image Button - Toolbar version */
.gbc-remove-image-toolbar-btn {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-3);
    background: rgba(220, 53, 69, 0.1);
    color: #dc3545;
    border: 1px solid rgba(220, 53, 69, 0.3);
    border-radius: var(--radius-md);
    cursor: pointer;
    font-size: var(--font-size-sm);
    transition: all 0.2s;
}

.gbc-remove-image-toolbar-btn:hover {
    background: #dc3545;
    color: white;
    border-color: #dc3545;
}

.gbc-zoom-btn {
    width: 36px;
    height: 36px;
    border: none;
    background: rgba(255, 255, 255, 0.9);
    color: #333;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font-size: 18px;
    font-weight: bold;
    line-height: 36px;
    text-align: center;
    transition: all 0.2s;
}

.gbc-zoom-btn:hover {
    background: white;
    transform: scale(1.1);
}

.gbc-zoom-btn:active {
    transform: scale(0.95);
}

/* Drag Hint (for single image) */
.gbc-drag-hint {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: rgba(0, 0, 0, 0.7);
    color: white;
    padding: var(--space-4) var(--space-6);
    border-radius: var(--radius-lg);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    z-index: 20;
    pointer-events: none;
    animation: pulseHint 2s ease-in-out infinite;
}

.gbc-drag-hint .drag-icon {
    font-size: 2rem;
}

@keyframes pulseHint {
    0%, 100% { opacity: 0.9; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 1; transform: translate(-50%, -50%) scale(1.05); }
}

/* Mobile responsive for single image */
@media (max-width: 480px) {
    .gbc-static-door .gbc-door-number {
        width: 20px;
        height: 20px;
        font-size: 0.75em;
        top: 4px;
    }
    
    .gbc-single-zoom-controls {
        bottom: 8px;
        padding: 4px;
        gap: 4px;
    }
    
    .gbc-zoom-btn {
        width: 30px;
        height: 30px;
        font-size: 16px;
        line-height: 30px;
    }
}

/* ============================================
   PREVIEW MODAL
   ============================================ */

.gbc-preview-modal-content {
    max-width: 700px;
    width: 95%;
}

.gbc-preview-modal-body {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
    padding: var(--space-6);
}

.gbc-preview-canvas-container {
    background: #f8f9fa;
    border-radius: var(--radius-lg);
    padding: var(--space-4);
    text-align: center;
}

.gbc-preview-canvas-container canvas {
    max-width: 100%;
    height: auto;
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    border: 2px solid var(--color-primary);
}

.gbc-preview-hint {
    margin-top: var(--space-3);
    font-size: var(--font-size-sm);
    color: var(--color-text-muted);
}

.gbc-preview-summary {
    background: var(--color-bg);
    border-radius: var(--radius-md);
    padding: var(--space-4);
}

.gbc-preview-summary h4 {
    margin-bottom: var(--space-3);
    font-size: var(--font-size-base);
    color: var(--color-text);
}

.gbc-preview-summary ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.gbc-preview-summary li {
    display: flex;
    justify-content: space-between;
    padding: var(--space-2) 0;
    border-bottom: 1px solid var(--color-border);
    font-size: var(--font-size-sm);
}

.gbc-preview-summary li:last-child {
    border-bottom: none;
}

.gbc-preview-summary .label {
    font-weight: 600;
    color: var(--color-text-muted);
}

.gbc-preview-actions {
    display: flex;
    gap: var(--space-4);
    justify-content: space-between;
}

.gbc-preview-actions .btn {
    flex: 1;
}

@media (max-width: 600px) {
    .gbc-preview-actions {
        flex-direction: column;
    }
    
    .gbc-preview-actions .btn {
        width: 100%;
    }
}

/* Preview Clone Styling */
.gbc-preview-wrapper {
    max-height: 350px;
    overflow: hidden;
    background: #fff;
}

.gbc-preview-clone {
    transform-origin: top left;
    pointer-events: none;
}

.gbc-preview-clone .gbc-door-controls,
.gbc-preview-clone .gbc-remove-image-btn,
.gbc-preview-clone .gbc-customize-text-btn,
.gbc-preview-clone .gbc-remove-image-toolbar-btn,
.gbc-preview-clone .gbc-add-title-btn {
    display: none !important;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jc3MvY29uZmlndXJhdG9yLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrREFBa0Q7O0FBRWxEOztpREFFaUQ7O0FBRWpEO0lBQ0ksc0JBQXNCO0lBQ3RCLDZEQUE2RDtJQUM3RCxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLHNCQUFzQjtJQUN0QixnRUFBZ0U7SUFDaEUsZ0JBQWdCO0lBQ2hCLGtCQUFrQjtJQUNsQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSxxQkFBcUI7SUFDckIsNERBQTREO0lBQzVELGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSx5QkFBeUI7SUFDekIsK0RBQStEO0lBQy9ELGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSwrQkFBK0I7SUFDL0Isb0VBQW9FO0lBQ3BFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSx1QkFBdUI7SUFDdkIsaUVBQWlFO0lBQ2pFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSwrQkFBK0I7SUFDL0IsdUVBQXVFO0lBQ3ZFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSxzQkFBc0I7SUFDdEIsZ0VBQWdFO0lBQ2hFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSxxQkFBcUI7SUFDckIsMkRBQTJEO0lBQzNELGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSw2QkFBNkI7SUFDN0Isa0VBQWtFO0lBQ2xFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSx5QkFBeUI7SUFDekIsa0VBQWtFO0lBQ2xFLGdCQUFnQjtJQUNoQixrQkFBa0I7QUFDdEI7O0FBRUE7O2lEQUVpRDs7QUFFakQ7SUFDSSx5QkFBeUI7QUFDN0I7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixpQkFBaUI7QUFDckI7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsc0NBQXNDO0lBQ3RDLGlDQUFpQztJQUNqQyxxQ0FBcUM7SUFDckMsK0JBQStCO0lBQy9CLGVBQWU7SUFDZixzQ0FBc0M7SUFDdEMsbUJBQW1CO0FBQ3ZCOztBQUVBO0lBQ0ksYUFBYTtBQUNqQjs7QUFFQTtJQUNJLGtDQUFrQztBQUN0Qzs7QUFFQTtJQUNJLGtDQUFrQztJQUNsQyxvQ0FBb0M7SUFDcEMsNEJBQTRCO0FBQ2hDOztBQUVBO0lBQ0ksV0FBVztJQUNYLFlBQVk7SUFDWixjQUFjO0lBQ2QsMkJBQTJCO0FBQy9COztBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLDhCQUE4QjtJQUM5Qix3QkFBd0I7QUFDNUI7O0FBRUEsa0NBQWtDO0FBQ2xDO0lBQ0ksMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3Qix1QkFBdUI7SUFDdkIsNkRBQTZEO0lBQzdELCtCQUErQjtJQUMvQix5Q0FBeUM7SUFDekMsZ0NBQWdDO0lBQ2hDLGdCQUFnQjtJQUNoQiwrQkFBK0I7SUFDL0IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIseUNBQXlDO0FBQzdDOztBQUVBO0lBQ0ksNEJBQTRCO0FBQ2hDOztBQUVBO0lBQ0ksOEJBQThCO0lBQzlCLGdCQUFnQjtJQUNoQixZQUFZO0FBQ2hCOztBQUVBO0lBQ0ksZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQiwyQkFBMkI7QUFDL0I7O0FBRUE7O0lBRUksd0JBQXdCO0lBQ3hCLGVBQWU7SUFDZixnQkFBZ0I7QUFDcEI7O0FBRUE7SUFDSSw2QkFBNkI7SUFDN0IsNEJBQTRCO0lBQzVCLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsT0FBTztJQUNQLDJCQUEyQjtJQUMzQixpQkFBaUI7QUFDckI7O0FBRUE7SUFDSSwyQkFBMkI7SUFDM0IsZ0JBQWdCO0FBQ3BCOztBQUVBLDRCQUE0QjtBQUM1QjtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQ0FBc0M7SUFDdEMsaUNBQWlDO0lBQ2pDLHFDQUFxQztJQUNyQywrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLHNDQUFzQztJQUN0QyxnQkFBZ0I7QUFDcEI7O0FBRUE7SUFDSSxrQ0FBa0M7QUFDdEM7O0FBRUE7SUFDSSxrQ0FBa0M7SUFDbEMsb0NBQW9DO0FBQ3hDOztBQUVBO0lBQ0ksYUFBYTtBQUNqQjs7QUFFQTtJQUNJLGNBQWM7QUFDbEI7O0FBRUE7OztpREFHaUQ7O0FBRWpEO0lBQ0ksZ0JBQWdCO0lBQ2hCLGNBQWM7QUFDbEI7O0FBRUE7SUFDSSw2QkFBNkI7QUFDakM7O0FBRUE7SUFDSSxrQkFBa0I7SUFDbEIsNkJBQTZCO0FBQ2pDOztBQUVBO0lBQ0ksOEJBQThCO0lBQzlCLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLGtCQUFrQjtJQUNsQiw2QkFBNkI7QUFDakM7O0FBRUE7SUFDSSxvQkFBb0I7SUFDcEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixzQ0FBc0M7SUFDdEMsaUNBQWlDO0lBQ2pDLHNDQUFzQztJQUN0QywrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLGdDQUFnQztJQUNoQyxzQ0FBc0M7QUFDMUM7O0FBRUE7SUFDSSxrQ0FBa0M7SUFDbEMscUNBQXFDO0FBQ3pDOztBQUVBLHNEQUFzRDtBQUN0RDtJQUNJLGtCQUFrQjtJQUNsQixhQUFhO0lBQ2IsVUFBVSxHQUFHLHlCQUF5QjtJQUN0QyxjQUFjLEdBQUcsd0NBQXdDO0lBQ3pELHlCQUF5QjtJQUN6QixxQ0FBcUM7SUFDckMsZ0JBQWdCO0lBQ2hCLDRCQUE0QjtJQUM1QixxQkFBcUIsR0FBRyx1QkFBdUI7SUFDL0Msc0JBQXNCO0FBQzFCOztBQUVBLG1CQUFtQjtBQUNuQjtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsT0FBTztJQUNQLFlBQVk7SUFDWixjQUFjO0FBQ2xCOztBQUVBLGdCQUFnQixZQUFZLEVBQUUsYUFBYSxFQUFFO0FBQzdDLGtCQUFrQixhQUFhLEVBQUUsYUFBYSxFQUFFO0FBQ2hELG1CQUFtQixZQUFZLEVBQUUsYUFBYSxFQUFFO0FBQ2hELG1CQUFtQixZQUFZLEVBQUUsYUFBYSxFQUFFOztBQUVoRCxnQkFBZ0I7QUFDaEI7SUFDSSxrQkFBa0I7SUFDbEIseUJBQXlCO0lBQ3pCLDBCQUEwQjtJQUMxQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGdDQUFnQztJQUNoQyxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsYUFBYSxHQUFHLCtDQUErQztJQUMvRCxhQUFhLEdBQUcsb0JBQW9CO0lBQ3BDLGVBQWU7SUFDZiwrQ0FBK0M7SUFDL0MsMEJBQTBCO0lBQzFCLHlCQUFpQjtPQUFqQixzQkFBaUI7WUFBakIsaUJBQWlCO0FBQ3JCOztBQUVBLDRCQUE0QjtBQUM1Qjs7O0lBR0ksY0FBYztBQUNsQjs7QUFFQTs7O0lBR0ksZUFBZTtBQUNuQjs7QUFFQSx1REFBdUQ7QUFDdkQsa0RBQWtELGNBQWMsRUFBRSxFQUFFLFdBQVc7QUFDL0Usa0RBQWtELGNBQWMsRUFBRSxFQUFFLFdBQVc7QUFDL0Usa0RBQWtELGNBQWMsRUFBRSxFQUFFLFdBQVc7QUFDL0Usa0RBQWtELGNBQWMsRUFBRSxFQUFFLFdBQVc7O0FBRS9FO0lBQ0ksa0NBQWtDO0lBQ2xDLHNCQUFzQjtBQUMxQjs7QUFFQTtJQUNJLG1CQUFtQjtJQUNuQixrQ0FBa0M7QUFDdEM7O0FBRUEscUJBQXFCO0FBQ3JCO0lBQ0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsV0FBVztJQUNYLG9CQUFvQjtBQUN4Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsV0FBVztBQUNmOztBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLGFBQWE7QUFDakI7O0FBRUE7SUFDSTtRQUNJLGNBQWM7SUFDbEI7QUFDSjs7QUFFQSx3QkFBd0I7QUFDeEI7SUFDSSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxXQUFXO0lBQ1gsWUFBWTtJQUNaLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksZ0JBQWdCO0FBQ3BCOztBQUVBLGdEQUFnRDtBQUNoRDtJQUNJLGtCQUFrQjtJQUNsQix5REFBeUQ7SUFDekQscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIseUJBQWlCO09BQWpCLHNCQUFpQjtZQUFqQixpQkFBaUI7SUFDakIsb0JBQW9CO0FBQ3hCOztBQUVBLDJCQUEyQjtBQUMzQjtJQUNJLDZDQUE2QztJQUM3QywrQkFBK0I7SUFDL0IsMkNBQTJDO0lBQzNDLHNCQUFzQjtBQUMxQjs7QUFFQSwrQkFBK0I7QUFDL0I7SUFDSSxlQUFlO0lBQ2YscUNBQXFDO0lBQ3JDLCtCQUErQjtJQUMvQixzQkFBc0I7SUFDdEIsMkJBQTJCO0lBQzNCLFlBQVk7SUFDWiw2Q0FBNkM7SUFDN0Msa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksa0NBQWtDO0FBQ3RDOztBQUVBO0lBQ0ksZ0JBQWdCO0FBQ3BCOztBQUVBLGtCQUFrQjtBQUNsQjtJQUNJLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULFdBQVc7SUFDWCxZQUFZO0lBQ1osd0NBQXdDO0lBQ3hDLFdBQVc7SUFDWCwwQ0FBMEM7SUFDMUMsa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixlQUFlO0lBQ2YsZ0RBQWdEO0lBQ2hELGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSxzQ0FBc0M7SUFDdEMscUJBQXFCO0FBQ3pCOztBQUVBLHVCQUF1QjtBQUN2QjtJQUNJLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsU0FBUztJQUNULDJCQUEyQjtJQUMzQixhQUFhO0lBQ2IsUUFBUTtJQUNSLFdBQVc7SUFDWCw4QkFBOEI7SUFDOUIsK0JBQStCO0lBQy9CLFlBQVk7QUFDaEI7O0FBRUE7SUFDSSxXQUFXO0lBQ1gsWUFBWTtJQUNaLFlBQVk7SUFDWixvQ0FBb0M7SUFDcEMsV0FBVztJQUNYLCtCQUErQjtJQUMvQixlQUFlO0lBQ2YsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtBQUN4Qjs7QUFFQTtJQUNJLGlCQUFpQjtJQUNqQixxQkFBcUI7QUFDekI7O0FBRUE7SUFDSSxzQkFBc0I7QUFDMUI7O0FBRUEsc0JBQXNCO0FBQ3RCO0lBQ0ksa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixvQkFBb0IsRUFBRSw0QkFBNEI7SUFDbEQsV0FBVztJQUNYLGFBQWE7SUFDYixxQkFBcUI7SUFDckIsdUJBQXVCO0lBQ3ZCLG9CQUFvQjtBQUN4Qjs7QUFFQTtJQUNJLGtCQUFrQjtJQUNsQixTQUFTO0lBQ1QsUUFBUTtJQUNSLGdDQUFnQztJQUNoQyxpQkFBaUI7SUFDakIsOEJBQThCO0lBQzlCLFlBQVk7SUFDWiwrQkFBK0I7SUFDL0IsZ0JBQWdCO0lBQ2hCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLFlBQVk7SUFDWixvQkFBb0IsRUFBRSx3QkFBd0I7SUFDOUMseUJBQWlCO09BQWpCLHNCQUFpQjtZQUFqQixpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLFdBQVc7QUFDZjs7QUFFQSwwQkFBMEI7QUFDMUI7SUFDSSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsWUFBWTtJQUNaLG9DQUFvQztJQUNwQyxZQUFZO0lBQ1osMENBQTBDO0lBQzFDLCtCQUErQjtJQUMvQixlQUFlO0lBQ2YsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixXQUFXO0lBQ1gsb0JBQW9CO0FBQ3hCOztBQUVBO0lBQ0ksa0NBQWtDO0lBQ2xDLHFCQUFxQjtBQUN6Qjs7QUFFQSxrQkFBa0I7QUFDbEI7SUFDSSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLFNBQVM7SUFDVCwyQkFBMkI7SUFDM0IsVUFBVTtJQUNWLHVCQUF1QjtJQUN2QixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtBQUN2Qjs7QUFFQSx1Q0FBdUM7QUFDdkM7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLFVBQVU7SUFDViw2QkFBNkI7QUFDakM7O0FBRUE7SUFDSSxVQUFVO0FBQ2Q7O0FBRUE7SUFDSSx5RUFBeUU7SUFDekUsZUFBZTtBQUNuQjs7QUFFQTtJQUNJLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsbUJBQW1CO0FBQ3ZCOztBQUVBOztJQUVJLDhCQUE4QjtJQUM5QixZQUFZO0lBQ1osZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixrQkFBa0I7SUFDbEIsWUFBWTtJQUNaLCtCQUErQjtJQUMvQixZQUFZO0FBQ2hCOztBQUVBOztJQUVJLFVBQVU7SUFDViw4QkFBOEI7QUFDbEM7O0FBRUE7O2lEQUVpRDs7QUFFakQ7SUFDSSw2QkFBNkI7SUFDN0IsaUNBQWlDO0lBQ2pDLCtCQUErQjtJQUMvQiw0QkFBNEI7SUFDNUIsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksV0FBVztJQUNYLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLGVBQWU7SUFDZixnQ0FBZ0M7SUFDaEMsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQiw2Q0FBNkM7QUFDakQ7O0FBRUE7SUFDSSwyQkFBMkI7QUFDL0I7O0FBRUE7SUFDSSxrQkFBa0I7QUFDdEI7O0FBRUE7SUFDSSxPQUFPO0FBQ1g7O0FBRUE7SUFDSSw0Q0FBNEM7QUFDaEQ7O0FBRUE7SUFDSSx5QkFBeUI7QUFDN0I7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsZ0JBQWdCO0lBQ2hCLDZDQUE2QztBQUNqRDs7QUFFQTtJQUNJLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsY0FBYztBQUNsQjs7QUFFQSx3QkFBd0I7QUFDeEI7SUFDSSxhQUFhO0lBQ2IsMkRBQTJEO0lBQzNELG1CQUFtQjtJQUNuQixnQkFBZ0I7QUFDcEI7O0FBRUEsbUVBQW1FO0FBQ25FO0lBQ0ksaUJBQWlCLEVBQUUseUNBQXlDO0FBQ2hFOztBQUVBLG1EQUFtRDtBQUNuRDtJQUNJO1FBQ0ksaUJBQWlCO0lBQ3JCOztJQUVBO1FBQ0ksMkRBQTJEO1FBQzNELG1CQUFtQjtJQUN2QjtBQUNKOztBQUVBO0lBQ0ksZUFBZTtJQUNmLHFDQUFxQztJQUNyQywrQkFBK0I7SUFDL0Isc0JBQXNCO0lBQ3RCLDJCQUEyQjtJQUMzQixlQUFlO0lBQ2Ysb0JBQW9CO0FBQ3hCOztBQUVBO0lBQ0ksa0NBQWtDO0lBQ2xDLHNCQUFzQjtBQUMxQjs7QUFFQSx3Q0FBd0M7QUFDeEM7SUFDSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsMkJBQTJCO0lBQzNCLHVDQUF1QztJQUN2Qyw4QkFBOEI7SUFDOUIsOEJBQThCO0lBQzlCLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1oscUNBQXFDO0lBQ3JDLHNDQUFzQztJQUN0QyxrQkFBa0I7SUFDbEIsa0NBQWtDO0FBQ3RDOztBQUVBO0lBQ0ksS0FBSyx5QkFBeUIsRUFBRTtBQUNwQzs7QUFFQSwyQ0FBMkM7QUFDM0M7SUFDSSxXQUFXO0lBQ1gsWUFBWTtJQUNaLHFDQUFxQztJQUNyQyxzQ0FBc0M7SUFDdEMsa0JBQWtCO0lBQ2xCLGtDQUFrQztBQUN0Qzs7QUFFQTtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGtCQUFrQjtBQUN0Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQiwyQkFBMkI7SUFDM0IsZ0NBQWdDO0FBQ3BDOztBQUVBO0lBQ0ksOEJBQThCO0lBQzlCLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLFVBQVU7SUFDViwrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsZUFBZTtJQUNmLHlCQUF5QjtBQUM3Qjs7QUFFQTs7aURBRWlEOztBQUVqRDtJQUNJLGVBQWU7SUFDZixhQUFhO0lBQ2IsT0FBTztJQUNQLE1BQU07SUFDTixXQUFXO0lBQ1gsWUFBWTtJQUNaLG9DQUFvQztJQUNwQyxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUMzQjs7QUFFQTtJQUNJLGlDQUFpQztJQUNqQywrQkFBK0I7SUFDL0IsZ0JBQWdCO0lBQ2hCLFVBQVU7SUFDVixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsNEJBQTRCO0FBQ2hDOztBQUVBO0lBQ0ksdUJBQXVCO0lBQ3ZCLDRDQUE0QztJQUM1QyxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixtQ0FBbUM7SUFDbkMsWUFBWTtBQUNoQjs7QUFFQTtJQUNJLFNBQVM7SUFDVCw4QkFBOEI7QUFDbEM7O0FBRUE7SUFDSSxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLFlBQVk7SUFDWixjQUFjO0FBQ2xCOztBQUVBO0lBQ0ksVUFBVTtBQUNkOztBQUVBO0lBQ0ksYUFBYTtJQUNiLDRDQUE0QztBQUNoRDs7QUFFQTtJQUNJLE9BQU87SUFDUCx1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLHVCQUF1QjtJQUN2QixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtBQUN4Qjs7QUFFQTtJQUNJLDJCQUEyQjtBQUMvQjs7QUFFQTtJQUNJLGlDQUFpQztJQUNqQyw2Q0FBNkM7SUFDN0MsMkJBQTJCO0FBQy9COztBQUVBO0lBQ0ksdUJBQXVCO0lBQ3ZCLGdCQUFnQjtJQUNoQixPQUFPO0FBQ1g7O0FBRUE7SUFDSSxhQUFhO0FBQ2pCOztBQUVBO0lBQ0ksY0FBYztBQUNsQjs7QUFFQTtJQUNJLGFBQWE7SUFDYiwyREFBMkQ7SUFDM0QsbUJBQW1CO0FBQ3ZCOztBQUVBO0lBQ0ksZUFBZTtJQUNmLHNCQUFzQjtJQUN0QiwyQkFBMkI7SUFDM0IsK0JBQStCO0lBQy9CLGVBQWU7SUFDZiw2QkFBNkI7SUFDN0Isb0JBQW9CO0FBQ3hCOztBQUVBO0lBQ0ksa0NBQWtDO0lBQ2xDLHNCQUFzQjtBQUMxQjs7QUFFQTtJQUNJLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2Qix1QkFBdUI7SUFDdkIsdUNBQXVDO0lBQ3ZDLCtCQUErQjtJQUMvQixlQUFlO0lBQ2YsNkJBQTZCO0lBQzdCLHFDQUFxQztJQUNyQyxvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSxvQ0FBb0M7QUFDeEM7O0FBRUE7SUFDSSxpQkFBaUI7SUFDakIsNkJBQTZCO0FBQ2pDOztBQUVBLDhCQUE4QjtBQUM5QjtJQUNJLGdCQUFnQjtBQUNwQjs7QUFFQTtJQUNJLDZCQUE2QjtBQUNqQzs7QUFFQTtJQUNJLGNBQWM7SUFDZCw2QkFBNkI7SUFDN0IsZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksMEJBQTBCO0lBQzFCLDJCQUEyQjtJQUMzQix5Q0FBeUM7QUFDN0M7O0FBRUE7SUFDSSx1QkFBdUI7SUFDdkIsMkJBQTJCO0lBQzNCLCtCQUErQjtJQUMvQixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksZUFBZTtJQUNmLGtDQUFrQztJQUNsQyxjQUFjO0lBQ2Qsd0NBQXdDO0FBQzVDOztBQUVBLDhCQUE4QjtBQUM5QjtJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsd0JBQXdCO0lBQ3hCLG1CQUFtQjtBQUN2Qjs7QUFFQTs7SUFFSSxXQUFXO0lBQ1gsT0FBTztJQUNQLFdBQVc7SUFDWCwrQkFBK0I7QUFDbkM7O0FBRUE7SUFDSSw4QkFBOEI7SUFDOUIsZ0JBQWdCO0lBQ2hCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsc0JBQXNCO0FBQzFCOztBQUVBLDJDQUEyQztBQUMzQztJQUNJLGFBQWE7QUFDakI7O0FBRUE7SUFDSSxjQUFjO0FBQ2xCOztBQUVBLHlCQUF5QjtBQUN6QjtJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIsaUNBQWlDO0lBQ2pDLCtCQUErQjtJQUMvQiw0QkFBNEI7QUFDaEM7O0FBRUE7SUFDSSxnQkFBZ0I7QUFDcEI7O0FBRUEsNEJBQTRCO0FBQzVCOztJQUVJLGtCQUFrQjtJQUNsQiw4QkFBOEI7SUFDOUIsdUJBQXVCO0FBQzNCOztBQUVBOztpREFFaUQ7O0FBRWpEO0lBQ0ksZ0NBQWdDO0lBQ2hDLFlBQVk7SUFDWix5QkFBeUI7SUFDekIsa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksK0JBQStCO0lBQy9CLDZCQUE2QjtBQUNqQzs7QUFFQTtJQUNJLGdDQUFnQztJQUNoQyxZQUFZO0lBQ1osU0FBUztBQUNiOztBQUVBOztpREFFaUQ7O0FBRWpEO0lBQ0ksV0FBVztBQUNmOztBQUVBO0lBQ0ksY0FBYztJQUNkLFdBQVc7QUFDZjs7QUFFQTs7O2lEQUdpRDs7QUFFakQsdUJBQXVCO0FBQ3ZCO0lBQ0ksdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0kseUJBQXlCO0FBQzdCOztBQUVBLHlCQUF5QjtBQUN6QjtJQUNJO1FBQ0ksOEJBQThCO0lBQ2xDOztJQUVBO1FBQ0ksOEJBQThCO0lBQ2xDOztJQUVBO1FBQ0ksY0FBYztJQUNsQjs7SUFFQTtRQUNJLDhCQUE4QjtRQUM5Qix1QkFBdUI7SUFDM0I7O0lBRUE7UUFDSSx1QkFBdUI7SUFDM0I7O0lBRUE7UUFDSSw4QkFBOEI7SUFDbEM7O0lBRUE7UUFDSSxXQUFXO1FBQ1gsc0NBQXNDO0lBQzFDOztJQUVBO1FBQ0ksdUJBQXVCO1FBQ3ZCLDBCQUEwQjtJQUM5Qjs7SUFFQTtRQUNJLFdBQVc7UUFDWCxZQUFZO1FBQ1osZUFBZTtRQUNmLFFBQVE7UUFDUixTQUFTO0lBQ2I7O0lBRUEsZ0NBQWdDO0lBQ2hDO1FBQ0ksV0FBVztRQUNYLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsZ0JBQWdCO0lBQ3BCOztJQUVBO1FBQ0ksMkRBQTJEO0lBQy9EOztJQUVBO1FBQ0ksdUJBQXVCO0lBQzNCOztJQUVBO1FBQ0ksZUFBZTtJQUNuQjtBQUNKOztBQUVBLDhCQUE4QjtBQUM5QjtJQUNJO1FBQ0ksK0JBQStCO0lBQ25DOztJQUVBO1FBQ0ksY0FBYztRQUNkLGlCQUFpQjtJQUNyQjs7SUFFQTtRQUNJLHVCQUF1QjtJQUMzQjtBQUNKOztBQUVBLCtCQUErQjtBQUMvQjtJQUNJO1FBQ0kseUJBQXlCO0lBQzdCOztJQUVBO1FBQ0ksK0JBQStCO0lBQ25DOztJQUVBO1FBQ0ksOEJBQThCO0lBQ2xDOztJQUVBO1FBQ0ksdUJBQXVCO0lBQzNCOztJQUVBO1FBQ0ksZ0JBQWdCO0lBQ3BCOztJQUVBO1FBQ0ksbUJBQW1CO0lBQ3ZCOztJQUVBO1FBQ0ksV0FBVztRQUNYLGdCQUFnQjtJQUNwQjtBQUNKOztBQUVBLHVDQUF1QztBQUN2QztJQUNJLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsMkJBQTJCO0lBQzNCLGlCQUFpQjtBQUNyQjs7QUFFQSwrQkFBK0I7QUFDL0I7SUFDSTtRQUNJLGVBQWU7SUFDbkI7O0lBRUE7UUFDSSxlQUFlO0lBQ25COztJQUVBO1FBQ0ksc0JBQXNCO1FBQ3RCLGtDQUFrQztJQUN0Qzs7SUFFQTtRQUNJLHNCQUFzQjtRQUN0QixrQ0FBa0M7SUFDdEM7QUFDSjs7QUFFQSxxQ0FBcUM7QUFDckM7SUFDSSxnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLFdBQVc7QUFDZjs7QUFFQSxzQkFBc0I7QUFDdEI7SUFDSTtRQUNJLGtFQUFrRTtJQUN0RTtBQUNKOztBQUVBOzs7aURBR2lEOztBQUVqRCxxRUFBcUU7QUFDckU7SUFDSSxrQkFBa0I7SUFDbEIsY0FBYyxHQUFHLDZDQUE2QztJQUM5RCxXQUFXO0lBQ1gseUJBQXlCO0lBQ3pCLHFDQUFxQztJQUNyQyxnQkFBZ0I7SUFDaEIsNEJBQTRCO0lBQzVCLHFCQUFxQixHQUFHLDZDQUE2QztJQUNyRSxzQkFBc0I7SUFDdEIsZ0JBQWdCO0FBQ3BCOztBQUVBLDBEQUEwRDtBQUMxRDtJQUNJLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFdBQVc7SUFDWCxZQUFZO0lBQ1osVUFBVTtJQUNWLGdCQUFnQjtJQUNoQixZQUFZO0lBQ1osa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksZ0JBQWdCO0FBQ3BCOztBQUVBO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AscUJBQXFCO0lBQ3JCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIseUJBQWlCO09BQWpCLHNCQUFpQjtZQUFqQixpQkFBaUI7SUFDakIsb0JBQW9CO0FBQ3hCOztBQUVBLHVCQUF1QjtBQUN2QjtJQUNJLGtCQUFrQjtJQUNsQixRQUFRO0lBQ1IsU0FBUztJQUNULGdDQUFnQztJQUNoQyxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsV0FBVztJQUNYLGtCQUFrQjtJQUNsQixvQkFBb0I7SUFDcEIsVUFBVTtBQUNkOztBQUVBO0lBQ0ksZUFBZTtJQUNmLDZCQUE2QjtBQUNqQzs7QUFFQTtJQUNJLDhCQUE4QjtJQUM5QixnQkFBZ0I7QUFDcEI7O0FBRUEsd0RBQXdEO0FBQ3hEO0lBQ0ksa0JBQWtCO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AsV0FBVztJQUNYLFlBQVk7SUFDWixhQUFhO0lBQ2IsVUFBVTtJQUNWLGNBQWM7SUFDZCxVQUFVO0lBQ1Ysb0JBQW9CO0lBQ3BCLHNCQUFzQjtBQUMxQjs7QUFFQSwwRUFBMEU7QUFDMUU7SUFDSSxhQUFhO0lBQ2Isc0JBQXNCO0lBQ3RCLE9BQU87SUFDUCxZQUFZO0lBQ1osY0FBYztBQUNsQjs7QUFFQSx5Q0FBeUMsWUFBWSxFQUFFLGFBQWEsRUFBRTtBQUN0RSwyQ0FBMkMsYUFBYSxFQUFFLGFBQWEsRUFBRTtBQUN6RSw0Q0FBNEMsWUFBWSxFQUFFLGFBQWEsRUFBRTtBQUN6RSw0Q0FBNEMsWUFBWSxFQUFFLGFBQWEsRUFBRTs7QUFFekUsMERBQTBEO0FBQzFEO0lBQ0ksa0JBQWtCO0lBQ2xCLDZCQUE2QixHQUFHLHlDQUF5QztJQUN6RSwwQ0FBMEMsR0FBRyxpQ0FBaUM7SUFDOUUsZ0JBQWdCO0lBQ2hCLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1g7OzBDQUVzQyxHQUFHLDJCQUEyQjtJQUNwRSx5QkFBeUI7QUFDN0I7O0FBRUEsOERBQThEO0FBQzlEO0lBQ0ksZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQiwrQkFBK0I7SUFDL0IseUNBQXlDO0lBQ3pDLDhCQUE4QjtJQUM5QixpQkFBaUI7SUFDakIsK0JBQStCO0lBQy9CLGdEQUFnRDtJQUNoRCxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUMzQjs7QUFFQSxrREFBa0Q7QUFDbEQ7OztJQUdJLGNBQWM7QUFDbEI7O0FBRUE7OztJQUdJLGVBQWU7QUFDbkI7O0FBRUEseUVBQXlFLGNBQWMsRUFBRTtBQUN6Rix5RUFBeUUsY0FBYyxFQUFFO0FBQ3pGLHlFQUF5RSxjQUFjLEVBQUU7QUFDekYseUVBQXlFLGNBQWMsRUFBRTs7QUFFekYsNkJBQTZCO0FBQzdCO0lBQ0ksYUFBYTtJQUNiLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLDZCQUE2QjtJQUM3QixlQUFlO0FBQ25COztBQUVBLG1DQUFtQztBQUNuQztJQUNJLGFBQWE7SUFDYixRQUFRO0lBQ1IsOEJBQThCO0lBQzlCLCtCQUErQjtJQUMvQixZQUFZO0FBQ2hCOztBQUVBLDBDQUEwQztBQUMxQztJQUNJLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHNDQUFzQztJQUN0QyxrQ0FBa0M7SUFDbEMsY0FBYztJQUNkLHdDQUF3QztJQUN4QywrQkFBK0I7SUFDL0IsZUFBZTtJQUNmLDhCQUE4QjtJQUM5QixvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSxtQkFBbUI7SUFDbkIsWUFBWTtJQUNaLHFCQUFxQjtBQUN6Qjs7QUFFQTtJQUNJLFdBQVc7SUFDWCxZQUFZO0lBQ1osWUFBWTtJQUNaLG9DQUFvQztJQUNwQyxXQUFXO0lBQ1gsK0JBQStCO0lBQy9CLGVBQWU7SUFDZixlQUFlO0lBQ2YsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsb0JBQW9CO0FBQ3hCOztBQUVBO0lBQ0ksaUJBQWlCO0lBQ2pCLHFCQUFxQjtBQUN6Qjs7QUFFQTtJQUNJLHNCQUFzQjtBQUMxQjs7QUFFQSxpQ0FBaUM7QUFDakM7SUFDSSxrQkFBa0I7SUFDbEIsUUFBUTtJQUNSLFNBQVM7SUFDVCxnQ0FBZ0M7SUFDaEMsOEJBQThCO0lBQzlCLFlBQVk7SUFDWixzQ0FBc0M7SUFDdEMsK0JBQStCO0lBQy9CLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLDRDQUE0QztBQUNoRDs7QUFFQTtJQUNJLGVBQWU7QUFDbkI7O0FBRUE7SUFDSSxXQUFXLFlBQVksRUFBRSx5Q0FBeUMsRUFBRTtJQUNwRSxNQUFNLFVBQVUsRUFBRSw0Q0FBNEMsRUFBRTtBQUNwRTs7QUFFQSx1Q0FBdUM7QUFDdkM7SUFDSTtRQUNJLFdBQVc7UUFDWCxZQUFZO1FBQ1osaUJBQWlCO1FBQ2pCLFFBQVE7SUFDWjs7SUFFQTtRQUNJLFdBQVc7UUFDWCxZQUFZO1FBQ1osUUFBUTtJQUNaOztJQUVBO1FBQ0ksV0FBVztRQUNYLFlBQVk7UUFDWixlQUFlO1FBQ2YsaUJBQWlCO0lBQ3JCO0FBQ0o7O0FBRUE7O2lEQUVpRDs7QUFFakQ7SUFDSSxnQkFBZ0I7SUFDaEIsVUFBVTtBQUNkOztBQUVBO0lBQ0ksYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixtQkFBbUI7SUFDbkIsdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksbUJBQW1CO0lBQ25CLCtCQUErQjtJQUMvQix1QkFBdUI7SUFDdkIsa0JBQWtCO0FBQ3RCOztBQUVBO0lBQ0ksZUFBZTtJQUNmLFlBQVk7SUFDWiwrQkFBK0I7SUFDL0IsNEJBQTRCO0lBQzVCLHNDQUFzQztBQUMxQzs7QUFFQTtJQUNJLDBCQUEwQjtJQUMxQiw4QkFBOEI7SUFDOUIsOEJBQThCO0FBQ2xDOztBQUVBO0lBQ0ksMkJBQTJCO0lBQzNCLCtCQUErQjtJQUMvQix1QkFBdUI7QUFDM0I7O0FBRUE7SUFDSSw2QkFBNkI7SUFDN0IsZ0NBQWdDO0lBQ2hDLHdCQUF3QjtBQUM1Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQixTQUFTO0lBQ1QsVUFBVTtBQUNkOztBQUVBO0lBQ0ksYUFBYTtJQUNiLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsNENBQTRDO0lBQzVDLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLG1CQUFtQjtBQUN2Qjs7QUFFQTtJQUNJLGdCQUFnQjtJQUNoQiw4QkFBOEI7QUFDbEM7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLDhCQUE4QjtBQUNsQzs7QUFFQTtJQUNJLE9BQU87QUFDWDs7QUFFQTtJQUNJO1FBQ0ksc0JBQXNCO0lBQzFCOztJQUVBO1FBQ0ksV0FBVztJQUNmO0FBQ0o7O0FBRUEsMEJBQTBCO0FBQzFCO0lBQ0ksaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixnQkFBZ0I7QUFDcEI7O0FBRUE7SUFDSSwwQkFBMEI7SUFDMUIsb0JBQW9CO0FBQ3hCOztBQUVBOzs7OztJQUtJLHdCQUF3QjtBQUM1QiIsImZpbGUiOiJjb25maWd1cmF0b3IuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU3VycHJpc2VDYWxlbmRhciBDYWxlbmRhciBDb25maWd1cmF0b3IgU3R5bGVzICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDVVNUT00gRk9OVFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7XG4gICAgc3JjOiB1cmwoJy9zdGF0aWMvZm9udHMvUG9wcGlucy1Cb2xkLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnUG9wcGlucyc7XG4gICAgc3JjOiB1cmwoJy9zdGF0aWMvZm9udHMvUG9wcGlucy1SZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnTnVuaXRvJztcbiAgICBzcmM6IHVybCgnL3N0YXRpYy9mb250cy9OdW5pdG8tQm9sZC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCc7XG4gICAgc3JjOiB1cmwoJy9zdGF0aWMvZm9udHMvTW9udHNlcnJhdC1Cb2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknO1xuICAgIHNyYzogdXJsKCcvc3RhdGljL2ZvbnRzL1BsYXlmYWlyRGlzcGxheS1Cb2xkLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ1BhY2lmaWNvJztcbiAgICBzcmM6IHVybCgnL3N0YXRpYy9mb250cy9QYWNpZmljby1SZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdQZXJtYW5lbnQgTWFya2VyJztcbiAgICBzcmM6IHVybCgnL3N0YXRpYy9mb250cy9QZXJtYW5lbnRNYXJrZXItUmVndWxhci53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdMb2JzdGVyJztcbiAgICBzcmM6IHVybCgnL3N0YXRpYy9mb250cy9Mb2JzdGVyLVJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1kaXNwbGF5OiBzd2FwO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ09zd2FsZCc7XG4gICAgc3JjOiB1cmwoJy9zdGF0aWMvZm9udHMvT3N3YWxkLUJvbGQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnRGFuY2luZyBTY3JpcHQnO1xuICAgIHNyYzogdXJsKCcvc3RhdGljL2ZvbnRzL0RhbmNpbmdTY3JpcHQtQm9sZC53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGZvbnQtZGlzcGxheTogc3dhcDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdCZWJhcyBOZXVlJztcbiAgICBzcmM6IHVybCgnL3N0YXRpYy9mb250cy9CZWJhc05ldWUtUmVndWxhci50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LWRpc3BsYXk6IHN3YXA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNT0RFIFNFTEVDVE9SXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ubW9kZS1zZWxlY3Rvci1zZWN0aW9uIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xufVxuXG4ubW9kZS1zZWxlY3RvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTMpO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xufVxuXG4ubW9kZS1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgdmFyKC0tc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIHZhcigtLXRyYW5zaXRpb24tYmFzZSk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLm1vZGUtb3B0aW9uIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1vZGUtb3B0aW9uOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4ubW9kZS1vcHRpb24uYWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4ubW9kZS1pY29uLXN2ZyB7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLm1vZGUtbGFiZWwge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcbn1cblxuLyogUHJvZHVjdCBEZXNjcmlwdGlvbiBDb250YWluZXIgKi9cbi5wcm9kdWN0LWRlc2NyaXB0aW9uLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtOCk7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzJkMzc0OCAwJSwgIzFhMjAyYyAxMDAlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNjgsIDgzLCAwLjMpO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBtYXgtd2lkdGg6IDkwMHB4O1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICBib3gtc2hhZG93OiAwIDhweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLnByb2R1Y3QtZGVzY3JpcHRpb24tY29udGFpbmVyIHAge1xuICAgIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLTQpIDA7XG59XG5cbi5wcm9kdWN0LWRlc2NyaXB0aW9uLWNvbnRhaW5lciBwOmZpcnN0LWNoaWxkIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5wcm9kdWN0LWRlc2NyaXB0aW9uLWNvbnRhaW5lciBwOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5wcm9kdWN0LWRlc2NyaXB0aW9uLWNvbnRhaW5lciBvbCxcbi5wcm9kdWN0LWRlc2NyaXB0aW9uLWNvbnRhaW5lciB1bCB7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4ucHJvZHVjdC1kZXNjcmlwdGlvbi1jb250YWluZXIgbGkge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTMpO1xuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UtNik7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucHJvZHVjdC1kZXNjcmlwdGlvbi1jb250YWluZXIgbGk6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ+Kckyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ucHJvZHVjdC1kZXNjcmlwdGlvbi1jb250YWluZXIgc3Ryb25nIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLyogTGVnYWN5IG1vZGUtYnRuIHN1cHBvcnQgKi9cbi5tb2RlLWJ0biB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSB2YXIoLS1zcGFjZS02KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZy13aGl0ZSk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1iYXNlKTtcbiAgICBtaW4td2lkdGg6IDE2MHB4O1xufVxuXG4ubW9kZS1idG46aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5tb2RlLWJ0bi5hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xufVxuXG4uY29uZmlndXJhdG9yLW1vZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5jb25maWd1cmF0b3ItbW9kZS5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ0FMRU5EQVIgQ09OVEFJTkVSXG4gICBQaHlzaWNhbDogMzQuNWNtIMOXIDI0Y21cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5nYmMtbGF5b3V0LWNvbnRhaW5lciB7XG4gICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmdiYy1jYWxlbmRhci1oZXJvLXNlY3Rpb24ge1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTYpO1xufVxuXG4uZ2JjLWNhbGVuZGFyLWhlYWRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTQpO1xufVxuXG4uZ2JjLWNhbGVuZGFyLWluc3RydWN0aW9uIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xufVxuXG4uZ2JjLWNhbGVuZGFyLXRpdGxlLWJ1dHRvbi13cmFwcGVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5nYmMtYWRkLXRpdGxlLWJ0biB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTIpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpIHZhcigtLXNwYWNlLTQpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgdmFyKC0tdHJhbnNpdGlvbi1mYXN0KTtcbn1cblxuLmdiYy1hZGQtdGl0bGUtYnRuOmhvdmVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XG59XG5cbi8qIENhbGVuZGFyIEdyaWQgLSBNYXRjaGVzIHByaW50IGxheW91dDogMzBjbSB4IDIyY20gKi9cbiNnYmMtY2FsZW5kYXItY29udGFpbmVyLmdiYy1tdWx0aS1pbWFnZS1sYXlvdXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNS4zMyU7ICAvKiAxLjZjbSAvIDMwY20gPSA1LjMzJSAqL1xuICAgIHBhZGRpbmc6IDUuMzMlOyAgLyogVW5pZm9ybSBwYWRkaW5nIG1hdGNoaW5nIHByaW50IGdhcHMgKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIGFzcGVjdC1yYXRpbzogMzAgLyAyMjsgIC8qIE1hdGNoIHByaW50IGNhbnZhcyAqL1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8qIExheW91dCBDb2x1bW5zICovXG4uZ2JjLWxheW91dC1jb2x1bW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDIlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmdiYy1sZWZ0LWNvbCB7IGZsZXgtZ3JvdzogNDsgZmxleC1iYXNpczogMDsgfVxuLmdiYy1jZW50ZXItY29sIHsgZmxleC1ncm93OiAxMDsgZmxleC1iYXNpczogMDsgfVxuLmdiYy1yaWdodC1jb2wtMSB7IGZsZXgtZ3JvdzogNDsgZmxleC1iYXNpczogMDsgfVxuLmdiYy1yaWdodC1jb2wtMiB7IGZsZXgtZ3JvdzogNDsgZmxleC1iYXNpczogMDsgfVxuXG4vKiBEb29yIFN0eWxlcyAqL1xuLmdiYy1jYWxlbmRhci1kb29yIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgI2QwZDBkMDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXgtYmFzaXM6IDA7ICAvKiBSZXF1aXJlZCBmb3IgZmxleC1ncm93IHByb3BvcnRpb25zIHRvIHdvcmsgKi9cbiAgICBtaW4taGVpZ2h0OiAwOyAgLyogQWxsb3cgc2hyaW5raW5nICovXG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vKiBEb29yIEhlaWdodCBQcm9wb3J0aW9ucyAqL1xuLmdiYy1sZWZ0LWNvbCAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDEpLFxuLmdiYy1yaWdodC1jb2wtMSAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDEpLFxuLmdiYy1yaWdodC1jb2wtMiAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDEpIHtcbiAgICBmbGV4LWdyb3c6IDYuODtcbn1cblxuLmdiYy1sZWZ0LWNvbCAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDIpLFxuLmdiYy1yaWdodC1jb2wtMSAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDIpLFxuLmdiYy1yaWdodC1jb2wtMiAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDIpIHtcbiAgICBmbGV4LWdyb3c6IDEwLjg7XG59XG5cbi8qIENlbnRlciBjb2x1bW4gZG9vciBoZWlnaHRzIC0gbWF0Y2ggcHJpbnQgY20gdmFsdWVzICovXG4uZ2JjLWNlbnRlci1jb2wgLmdiYy1jYWxlbmRhci1kb29yOm50aC1jaGlsZCgxKSB7IGZsZXgtZ3JvdzogMi42OyB9IC8qIERvb3IgMyAqL1xuLmdiYy1jZW50ZXItY29sIC5nYmMtY2FsZW5kYXItZG9vcjpudGgtY2hpbGQoMikgeyBmbGV4LWdyb3c6IDYuNzsgfSAvKiBEb29yIDQgKi9cbi5nYmMtY2VudGVyLWNvbCAuZ2JjLWNhbGVuZGFyLWRvb3I6bnRoLWNoaWxkKDMpIHsgZmxleC1ncm93OiAyLjY7IH0gLyogRG9vciA1ICovXG4uZ2JjLWNlbnRlci1jb2wgLmdiYy1jYWxlbmRhci1kb29yOm50aC1jaGlsZCg0KSB7IGZsZXgtZ3JvdzogMi42OyB9IC8qIERvb3IgNiAqL1xuXG4uZ2JjLWNhbGVuZGFyLWRvb3I6aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAzKTtcbn1cblxuLmdiYy1jYWxlbmRhci1kb29yLmhhcy1pbWFnZSB7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4vKiBEb29yIFBsYWNlaG9sZGVyICovXG4uZ2JjLWltYWdlLXBsYWNlaG9sZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiAjYWFhO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZ2JjLWRvb3ItbnVtYmVyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiAjY2NjO1xufVxuXG4uZ2JjLWRvb3ItcHJvbXB0IHtcbiAgICBmb250LXNpemU6IDAuNzVlbTtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgICAuZ2JjLWRvb3ItcHJvbXB0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vKiBEb29yIEltYWdlIFZpZXdwb3J0ICovXG4uZ2JjLWRvb3ItaW1hZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IGdyYWI7XG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4uZ2JjLWRvb3ItaW1hZ2U6YWN0aXZlIHtcbiAgICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG4vKiBBY3R1YWwgaW1hZ2UgaW5zaWRlIHZpZXdwb3J0IChmb3IgcGFuL3pvb20pICovXG4uZ2JjLWRvb3ItaW1hZ2UtaW5uZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAvKiBXaWR0aC9oZWlnaHQgc2V0IGJ5IHRyYW5zZm9ybSBzY2FsZSAtIGRvbid0IHNldCBoZXJlICovXG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vKiBEcm9wIHpvbmUgYWN0aXZlIHN0YXRlICovXG4uZ2JjLWNhbGVuZGFyLWRvb3IuZHJvcC1hY3RpdmUge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICBib3JkZXItc3R5bGU6IGRhc2hlZCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLyogUHJldmlldyBpdGVtIGJlaW5nIGRyYWdnZWQgKi9cbi5nYmMtcHJldmlldy1pdGVtIHtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGN1cnNvcjogZ3JhYjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycywgYm9yZGVyLWNvbG9yIDAuMnM7XG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xufVxuXG4uZ2JjLXByZXZpZXctaXRlbTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbn1cblxuLmdiYy1wcmV2aWV3LWl0ZW06YWN0aXZlIHtcbiAgICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG4vKiBSZW1vdmUgQnV0dG9uICovXG4uZ2JjLXJlbW92ZS1pbWFnZS1idG4ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDRweDtcbiAgICBsZWZ0OiA0cHg7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjIwLCA1MywgNjksIDAuOSk7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIC8qIFVzZSBmbGV4Ym94IGZvciBTYWZhcmktY29tcGF0aWJsZSBjZW50ZXJpbmcgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgei1pbmRleDogMTA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5nYmMtcmVtb3ZlLWltYWdlLWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMDAsIDM1LCA1MSwgMSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBEb29yIFpvb20gQ29udHJvbHMgKi9cbi5nYmMtZG9vci1jb250cm9scyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogNHB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICB6LWluZGV4OiAxNTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiA0cHg7XG59XG5cbi5nYmMtZG9vci1jb250cm9scyBidXR0b24ge1xuICAgIHdpZHRoOiAyOHB4O1xuICAgIGhlaWdodDogMjhweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMjhweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5nYmMtZG9vci1jb250cm9scyBidXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLmdiYy1kb29yLWNvbnRyb2xzIGJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG59XG5cbi8qIERvb3IgVGV4dCBPdmVybGF5ICovXG4uZ2JjLWRvb3ItdGV4dC1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IC8qIE92ZXJsYXkgaXMgcGFzcy10aHJvdWdoICovXG4gICAgei1pbmRleDogMjA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG59XG5cbi5nYmMtZG9vci10ZXh0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogODUlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHBhZGRpbmc6IDRweCAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBncmFiO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOyAvKiBUZXh0IElTIGludGVyYWN0aXZlICovXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xuICAgIHotaW5kZXg6IDI1O1xufVxuXG4vKiBDdXN0b21pemUgVGV4dCBCdXR0b24gKi9cbi5nYmMtY3VzdG9taXplLXRleHQtYnRuIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA0cHg7XG4gICAgcmlnaHQ6IDRweDtcbiAgICB3aWR0aDogMjhweDtcbiAgICBoZWlnaHQ6IDI4cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uZ2JjLWN1c3RvbWl6ZS10ZXh0LWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAxKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIFRpdGxlIE92ZXJsYXkgKi9cbi5nYmMtdGl0bGUtb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgcGFkZGluZzogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6IG1vdmU7XG4gICAgei1pbmRleDogMjA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLyogQnV0dG9ucyBjb250YWluZXIgLSBhYm92ZSB0aGUgdGV4dCAqL1xuLmdiYy10aXRsZS1vdmVybGF5IC5nYmMtdGl0bGUtYnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IHZhcigtLXNwYWNlLTEpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2U7XG59XG5cbi5nYmMtdGl0bGUtb3ZlcmxheTpob3ZlciAuZ2JjLXRpdGxlLWJ1dHRvbnMge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5nYmMtdGl0bGUtdGV4dC1jb250YWluZXIge1xuICAgIC8qIENvbnRhaW5lciBmb3IgdGV4dCB3aXRoIHNoYXBlIC0gc2l6aW5nIGhhbmRsZWQgYnkgdGV4dC1zaGFwZSBjbGFzc2VzICovXG4gICAgbWluLWhlaWdodDogMWVtO1xufVxuXG4uZ2JjLXRpdGxlLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5nYmMtdGl0bGUtZWRpdC1idG4sXG4uZ2JjLXRpdGxlLXJlbW92ZS1idG4ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHBhZGRpbmc6IDRweCA4cHg7XG4gICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIG9wYWNpdHk6IDAuOTtcbn1cblxuLmdiYy10aXRsZS1lZGl0LWJ0bjpob3Zlcixcbi5nYmMtdGl0bGUtcmVtb3ZlLWJ0bjpob3ZlciB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT0xMQVBTSUJMRSBQQU5FTFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5nYmMtY29sbGFwc2libGUtc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZ2JjLWNvbGxhcHNpYmxlLXRvZ2dsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLXRyYW5zaXRpb24tZmFzdCk7XG59XG5cbi5nYmMtY29sbGFwc2libGUtdG9nZ2xlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi5nYmMtdG9nZ2xlLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbn1cblxuLmdiYy10b2dnbGUtdGV4dCB7XG4gICAgZmxleDogMTtcbn1cblxuLmdiYy10b2dnbGUtYXJyb3cge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZ2JjLWNvbGxhcHNpYmxlLXRvZ2dsZVthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXSAuZ2JjLXRvZ2dsZS1hcnJvdyB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLmdiYy1jb2xsYXBzaWJsZS1jb250ZW50IHtcbiAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCB2YXIoLS10cmFuc2l0aW9uLWJhc2UpO1xufVxuXG4uZ2JjLWNvbGxhcHNpYmxlLWNvbnRlbnRbYXJpYS1oaWRkZW49XCJmYWxzZVwiXSB7XG4gICAgbWF4LWhlaWdodDogNTAwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IDA7XG59XG5cbi8qIEltYWdlIFByZXZpZXdzIEdyaWQgKi9cbi5nYmMtaW1hZ2UtcHJldmlld3MtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDYwcHgsIDFmcikpO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMik7XG4gICAgbWluLWhlaWdodDogNDBweDtcbn1cblxuLyogQ29tYmluZWQgaW1hZ2VzIGdyaWQgY29udGFpbmVyIGZvciB1bmlmaWVkIHN0b2NrICsgdXNlciBpbWFnZXMgKi9cbi5nYmMtY29tYmluZWQtaW1hZ2VzLWdyaWQge1xuICAgIGRpc3BsYXk6IGNvbnRlbnRzOyAvKiBNYWtlcyBjaGlsZHJlbiBmbG93IGludG8gcGFyZW50IGdyaWQgKi9cbn1cblxuLyogT24gbGFyZ2VyIHNjcmVlbnMsIHVzZSAzLWNvbHVtbiBzZWN0aW9uIGxheW91dCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgLmdiYy1jb2xsYXBzaWJsZS1jb250ZW50W2FyaWEtaGlkZGVuPVwiZmFsc2VcIl0ge1xuICAgICAgICBtYXgtaGVpZ2h0OiA2MDBweDtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1pbWFnZS1wcmV2aWV3cy1jb250YWluZXIge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCg4MHB4LCAxZnIpKTtcbiAgICAgICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgICB9XG59XG5cbi5nYmMtcHJldmlldy1pdGVtIHtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLmdiYy1wcmV2aWV3LWl0ZW06aG92ZXIge1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLyogTG9hZGluZyBzdGF0ZSB3aGlsZSBzY2FubmluZyBpbWFnZXMgKi9cbi5nYmMtcHJldmlldy1pdGVtLmdiYy1sb2FkaW5nIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHZhcigtLWNvbG9yLXByaW1hcnkpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14cyk7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbn1cblxuLmdiYy1zcGlubmVyIHtcbiAgICB3aWR0aDogMjRweDtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBzcGluIHtcbiAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH1cbn1cblxuLyogTGFyZ2Ugc3Bpbm5lciBmb3IgbW9kYWwgdXBsb2FkIGxvYWRpbmcgKi9cbi5nYmMtc3Bpbm5lci1sYXJnZSB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlcjogNHB4IHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbi5nYmMtdXBsb2FkLWxvYWRpbmcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uZ2JjLWxvYWRpbmctdGV4dCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG59XG5cbi5nYmMtbG9hZGluZy1zdWJ0ZXh0IHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4udXBsb2FkLWJ0biB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgIC8qIFNpemUgaGFuZGxlZCBieSBncmlkICovXG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNT0RBTFNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5nYmMtbW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZ2JjLW1vZGFsLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMteGwpO1xuICAgIG1heC13aWR0aDogNTAwcHg7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy14bCk7XG59XG5cbi5nYmMtbW9kYWwtaGVhZGVyIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmdiYy1tb2RhbC1oZWFkZXIgaDMge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XG59XG5cbi5nYmMtbW9kYWwtY2xvc2Uge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvcGFjaXR5OiAwLjg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi5nYmMtbW9kYWwtY2xvc2U6aG92ZXIge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5nYmMtbW9kYWwtdGFicyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cblxuLmdiYy10YWItYnRuIHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTMpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLmdiYy10YWItYnRuOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG59XG5cbi5nYmMtdGFiLWJ0bi5hY3RpdmUge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXdoaXRlKTtcbiAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnkpO1xufVxuXG4uZ2JjLW1vZGFsLWJvZHkge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgZmxleDogMTtcbn1cblxuLmdiYy10YWItY29udGVudCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmdiYy10YWItY29udGVudC5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZ2JjLW1vZGFsLWltYWdlLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoODBweCwgMWZyKSk7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmdiYy1tb2RhbC1pbWFnZS1pdGVtIHtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG59XG5cbi5nYmMtbW9kYWwtaW1hZ2UtaXRlbTpob3ZlciB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4uZ2JjLW1vZGFsLXVwbG9hZC1hcmVhIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS04KTtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbn1cblxuLmdiYy1tb2RhbC11cGxvYWQtYXJlYTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjEpO1xufVxuXG4udXBsb2FkLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLXNwYWNlLTIpO1xufVxuXG4vKiBUaXRsZSBDdXN0b21pemF0aW9uIE1vZGFsICovXG4uZ2JjLXRleHQtY3VzdG9taXphdGlvbi1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDQwMHB4O1xufVxuXG4uZ2JjLXRleHQtbW9kYWwtYm9keSAuZm9ybS1ncm91cCB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5nYmMtdGV4dC1tb2RhbC1ib2R5IGxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uZ2JjLWZvbnQtc2VsZWN0IG9wdGlvbiB7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5nYmMtdGl0bGUtcHJldmlldyB7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTQpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIpO1xufVxuXG4jZ2JjLXRpdGxlLXByZXZpZXctYm94IHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogNjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbiNnYmMtdGl0bGUtcHJldmlldy10ZXh0IHtcbiAgICBmb250LXNpemU6IDMycHg7XG4gICAgZm9udC1mYW1pbHk6ICdQb3BwaW5zJywgc2Fucy1zZXJpZjtcbiAgICBjb2xvcjogI0ZGRkZGRjtcbiAgICB0ZXh0LXNoYWRvdzogMnB4IDJweCA0cHggcmdiYSgwLDAsMCwwLjMpO1xufVxuXG4vKiBGb3JtIGRpdmlkZXIgZm9yIHNlY3Rpb25zICovXG4uZm9ybS1ncm91cC1kaXZpZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiB2YXIoLS1zcGFjZS00KSAwO1xuICAgIGdhcDogdmFyKC0tc3BhY2UtMyk7XG59XG5cbi5mb3JtLWdyb3VwLWRpdmlkZXI6OmJlZm9yZSxcbi5mb3JtLWdyb3VwLWRpdmlkZXI6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBmbGV4OiAxO1xuICAgIGhlaWdodDogMXB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5mb3JtLWdyb3VwLWRpdmlkZXIgc3BhbiB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLyogQmFja2dyb3VuZCBvcHRpb25zIC0gaGlkZGVuIGJ5IGRlZmF1bHQgKi9cbi5nYmMtYmctb3B0aW9ucyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmdiYy1iZy1vcHRpb25zLnZpc2libGUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBDb25maWd1cmF0b3IgQWN0aW9ucyAqL1xuLmNvbmZpZ3VyYXRvci1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2UtNik7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctd2hpdGUpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy14bCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmNvbmZpZ3VyYXRvci1hY3Rpb25zIC5idG4ge1xuICAgIG1pbi13aWR0aDogMTUwcHg7XG59XG5cbi8qIExvYWRpbmcgYW5kIENvbWluZyBTb29uICovXG4ubG9hZGluZy10ZXh0LFxuLmNvbWluZy1zb29uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09NUEFDVCBIRVJPIChIb21lcGFnZSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5oZXJvLWNvbXBhY3Qge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWdyYWRpZW50LWdvbGQpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KSAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmhlcm8tY29tcGFjdCBoMSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtMnhsKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0yKTtcbn1cblxuLmhlcm8tY29tcGFjdCBwIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBvcGFjaXR5OiAwLjk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRlVMTCBXSURUSCBCVVRUT05cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5idG4tZnVsbCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5idG4tYmxvY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTU9CSUxFIFJFU1BPTlNJVkVcbiAgIE1vYmlsZS1GaXJzdCBBcHByb2FjaFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQmFzZSBtb2JpbGUgc3R5bGVzICovXG4uY29uZmlndXJhdG9yLXNlY3Rpb24ge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTIpO1xufVxuXG4uZ2JjLWxheW91dC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgdmFyKC0tc3BhY2UtMik7XG59XG5cbi8qIFNtYWxsIG1vYmlsZSBkZXZpY2VzICovXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAuaGVyby1jb21wYWN0IGgxIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteGwpO1xuICAgIH1cbiAgICBcbiAgICAuaGVyby1jb21wYWN0IHAge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgfVxuICAgIFxuICAgIC5nYmMtZG9vci1udW1iZXIge1xuICAgICAgICBmb250LXNpemU6IDFlbTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1hZGQtdGl0bGUtYnRuIHtcbiAgICAgICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0yKTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1jb2xsYXBzaWJsZS10b2dnbGUge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0zKTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy10b2dnbGUtdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICB9XG4gICAgXG4gICAgLnVwbG9hZC1idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMykgdmFyKC0tc3BhY2UtNCk7XG4gICAgfVxuICAgIFxuICAgIC5jb25maWd1cmF0b3ItYWN0aW9ucyB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgICAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS00KTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1yZW1vdmUtaW1hZ2UtYnRuIHtcbiAgICAgICAgd2lkdGg6IDI0cHg7XG4gICAgICAgIGhlaWdodDogMjRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICB0b3A6IDJweDtcbiAgICAgICAgbGVmdDogMnB4O1xuICAgIH1cbiAgICBcbiAgICAvKiBNb2RhbCBmdWxsIHNjcmVlbiBvbiBtb2JpbGUgKi9cbiAgICAuZ2JjLW1vZGFsLWNvbnRlbnQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbiAgICBcbiAgICAuZ2JjLW1vZGFsLWltYWdlLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCg2MHB4LCAxZnIpKTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1tb2RhbC11cGxvYWQtYXJlYSB7XG4gICAgICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpO1xuICAgIH1cbiAgICBcbiAgICAudXBsb2FkLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgfVxufVxuXG4vKiBUYWJsZXRzIGFuZCBsYXJnZXIgcGhvbmVzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAgIC5oZXJvLWNvbXBhY3QgaDEge1xuICAgICAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS0yeGwpO1xuICAgIH1cbiAgICBcbiAgICAuZ2JjLWRvb3ItcHJvbXB0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NWVtO1xuICAgIH1cbiAgICBcbiAgICAuY29uZmlndXJhdG9yLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgICB9XG59XG5cbi8qIERlc2t0b3AgYW5kIGxhcmdlciB0YWJsZXRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICAuaGVyby1jb21wYWN0IHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNikgMDtcbiAgICB9XG4gICAgXG4gICAgLmhlcm8tY29tcGFjdCBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLTN4bCk7XG4gICAgfVxuICAgIFxuICAgIC5oZXJvLWNvbXBhY3QgcCB7XG4gICAgICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWxnKTtcbiAgICB9XG4gICAgXG4gICAgLmNvbmZpZ3VyYXRvci1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNik7XG4gICAgfVxuICAgIFxuICAgIC5jb25maWd1cmF0b3ItYWN0aW9ucyAuYnRuIHtcbiAgICAgICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICB9XG4gICAgXG4gICAgLmNvbmZpZ3VyYXRvci1hY3Rpb25zIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG4gICAgXG4gICAgLmJ0bi1mdWxsIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1pbi13aWR0aDogMzAwcHg7XG4gICAgfVxufVxuXG4vKiBDb2xsYXBzaWJsZSBzZWN0aW9uIGV4cGFuZGVkIHN0YXRlICovXG4uZ2JjLWNvbGxhcHNpYmxlLWNvbnRlbnRbYXJpYS1oaWRkZW49XCJmYWxzZVwiXSB7XG4gICAgbWF4LWhlaWdodDogNjAwcHg7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG4gICAgcGFkZGluZy10b3A6IHZhcigtLXNwYWNlLTIpO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4vKiBUb3VjaC1mcmllbmRseSBhZGp1c3RtZW50cyAqL1xuQG1lZGlhIChob3Zlcjogbm9uZSkgYW5kIChwb2ludGVyOiBjb2Fyc2UpIHtcbiAgICAuZ2JjLWNhbGVuZGFyLWRvb3I6aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgfVxuICAgIFxuICAgIC5nYmMtcHJldmlldy1pdGVtOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lO1xuICAgIH1cbiAgICBcbiAgICAuZ2JjLWNhbGVuZGFyLWRvb3I6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICB9XG4gICAgXG4gICAgLmdiYy1wcmV2aWV3LWl0ZW06YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICB9XG59XG5cbi8qIEJvZHkgc2Nyb2xsIGxvY2sgd2hlbiBtb2RhbCBvcGVuICovXG5ib2R5Lm1vZGFsLW9wZW4ge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBGaXggaU9TIHNhZmUgYXJlYSAqL1xuQHN1cHBvcnRzIChwYWRkaW5nLWJvdHRvbTogZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKSB7XG4gICAgLmNvbmZpZ3VyYXRvci1hY3Rpb25zIHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGModmFyKC0tc3BhY2UtNikgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFNJTkdMRS1JTUFHRSBDT05GSUdVUkFUT1JcbiAgIFNhbWUgbGF5b3V0IGFzIG11bHRpLWltYWdlICgzMGNtIHggMjJjbSlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFNpbmdsZSBJbWFnZSBDYWxlbmRhciBDb250YWluZXIgLSBNYXRjaGVzIG11bHRpLWltYWdlIGRpbWVuc2lvbnMgKi9cbiNnYmMtc2luZ2xlLWNhbGVuZGFyLWNvbnRhaW5lci5nYmMtc2luZ2xlLWltYWdlLWxheW91dCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrOyAgLyogQ2hhbmdlZCB0byBibG9jayBmb3IgcHJvcGVyIGFzcGVjdC1yYXRpbyAqL1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gICAgYXNwZWN0LXJhdGlvOiAzMCAvIDIyOyAgLyogTWF0Y2ggcHJpbnQgY2FudmFzIC0gc2FtZSBhcyBtdWx0aS1pbWFnZSAqL1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLyogQmFja2dyb3VuZCBJbWFnZSBMYXllciAtIEZ1bGwgY29udGFpbmVyLCBiZWhpbmQgZG9vcnMgKi9cbi5nYmMtc2luZ2xlLWJhY2tncm91bmQtbGF5ZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGN1cnNvcjogZ3JhYjtcbiAgICB0b3VjaC1hY3Rpb246IG5vbmU7XG59XG5cbi5nYmMtc2luZ2xlLWJhY2tncm91bmQtbGF5ZXI6YWN0aXZlIHtcbiAgICBjdXJzb3I6IGdyYWJiaW5nO1xufVxuXG4uZ2JjLXNpbmdsZS1iYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICAgIG1heC13aWR0aDogbm9uZTtcbiAgICBtYXgtaGVpZ2h0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4vKiBVcGxvYWQgUGxhY2Vob2xkZXIgKi9cbi5nYmMtc2luZ2xlLXVwbG9hZC1wbGFjZWhvbGRlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBjb2xvcjogI2FhYTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogMjtcbn1cblxuLmdiYy1zaW5nbGUtdXBsb2FkLXBsYWNlaG9sZGVyIC5wbGFjZWhvbGRlci1pY29uIHtcbiAgICBmb250LXNpemU6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtMik7XG59XG5cbi5nYmMtc2luZ2xlLXVwbG9hZC1wbGFjZWhvbGRlciAucGxhY2Vob2xkZXItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi8qIERvb3IgT3ZlcmxheSAtIFNpdHMgb24gdG9wIHdpdGggdHJhbnNwYXJlbnQgY3V0b3V0cyAqL1xuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA1LjMzJTtcbiAgICBwYWRkaW5nOiA1LjMzJTtcbiAgICB6LWluZGV4OiA1O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8qIENvbHVtbnMgaW5zaWRlIHNpbmdsZS1kb29yLW92ZXJsYXkgLSBlbnN1cmUgcHJvcGVyIGZsZXggY29sdW1uIGxheW91dCAqL1xuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IC5nYmMtbGF5b3V0LWNvbHVtbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMiU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1sZWZ0LWNvbCB7IGZsZXgtZ3JvdzogNDsgZmxleC1iYXNpczogMDsgfVxuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IC5nYmMtY2VudGVyLWNvbCB7IGZsZXgtZ3JvdzogMTA7IGZsZXgtYmFzaXM6IDA7IH1cbi5nYmMtc2luZ2xlLWRvb3Itb3ZlcmxheSAuZ2JjLXJpZ2h0LWNvbC0xIHsgZmxleC1ncm93OiA0OyBmbGV4LWJhc2lzOiAwOyB9XG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1yaWdodC1jb2wtMiB7IGZsZXgtZ3JvdzogNDsgZmxleC1iYXNpczogMDsgfVxuXG4vKiBTdGF0aWMgRG9vcnMgLSBUcmFuc3BhcmVudCB3aXRoIHZpc2libGUgb3V0bGluZXMgb25seSAqL1xuLmdiYy1zdGF0aWMtZG9vciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAgLyogVHJhbnNwYXJlbnQgdG8gc2hvdyBiYWNrZ3JvdW5kIGltYWdlICovXG4gICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOyAgLyogV2hpdGUgb3V0bGluZSBmb3IgdmlzaWJpbGl0eSAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogXG4gICAgICAgIDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMyksICAvKiBEYXJrIG91dGxpbmUgZm9yIGNvbnRyYXN0ICovXG4gICAgICAgIGluc2V0IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIDAuMSk7ICAvKiBJbm5lciBzaGFkb3cgZm9yIGRlcHRoICovXG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLyogRG9vciBudW1iZXIgLSBzZW1pLXRyYW5zcGFyZW50IGJhY2tncm91bmQgZm9yIHJlYWRhYmlsaXR5ICovXG4uZ2JjLXN0YXRpYy1kb29yIC5nYmMtZG9vci1udW1iZXIge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC43KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICAvKiBVc2UgZmxleGJveCBmb3IgU2FmYXJpLWNvbXBhdGlibGUgY2VudGVyaW5nICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiBEb29yIEhlaWdodCBQcm9wb3J0aW9ucyAtIFNhbWUgYXMgbXVsdGktaW1hZ2UgKi9cbi5nYmMtc2luZ2xlLWRvb3Itb3ZlcmxheSAuZ2JjLWxlZnQtY29sIC5nYmMtc3RhdGljLWRvb3I6bnRoLWNoaWxkKDEpLFxuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IC5nYmMtcmlnaHQtY29sLTEgLmdiYy1zdGF0aWMtZG9vcjpudGgtY2hpbGQoMSksXG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1yaWdodC1jb2wtMiAuZ2JjLXN0YXRpYy1kb29yOm50aC1jaGlsZCgxKSB7XG4gICAgZmxleC1ncm93OiA2Ljg7XG59XG5cbi5nYmMtc2luZ2xlLWRvb3Itb3ZlcmxheSAuZ2JjLWxlZnQtY29sIC5nYmMtc3RhdGljLWRvb3I6bnRoLWNoaWxkKDIpLFxuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IC5nYmMtcmlnaHQtY29sLTEgLmdiYy1zdGF0aWMtZG9vcjpudGgtY2hpbGQoMiksXG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1yaWdodC1jb2wtMiAuZ2JjLXN0YXRpYy1kb29yOm50aC1jaGlsZCgyKSB7XG4gICAgZmxleC1ncm93OiAxMC44O1xufVxuXG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1jZW50ZXItY29sIC5nYmMtc3RhdGljLWRvb3I6bnRoLWNoaWxkKDEpIHsgZmxleC1ncm93OiAyLjY7IH1cbi5nYmMtc2luZ2xlLWRvb3Itb3ZlcmxheSAuZ2JjLWNlbnRlci1jb2wgLmdiYy1zdGF0aWMtZG9vcjpudGgtY2hpbGQoMikgeyBmbGV4LWdyb3c6IDYuNzsgfVxuLmdiYy1zaW5nbGUtZG9vci1vdmVybGF5IC5nYmMtY2VudGVyLWNvbCAuZ2JjLXN0YXRpYy1kb29yOm50aC1jaGlsZCgzKSB7IGZsZXgtZ3JvdzogMi42OyB9XG4uZ2JjLXNpbmdsZS1kb29yLW92ZXJsYXkgLmdiYy1jZW50ZXItY29sIC5nYmMtc3RhdGljLWRvb3I6bnRoLWNoaWxkKDQpIHsgZmxleC1ncm93OiAyLjY7IH1cblxuLyogU2luZ2xlLUltYWdlIFRvb2xiYXIgUm93ICovXG4uZ2JjLXNpbmdsZS10b29sYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS00KTtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi8qIFpvb20gQ29udHJvbHMgLSBOb3cgaW4gdG9vbGJhciAqL1xuLmdiYy1zaW5nbGUtem9vbS1jb250cm9scyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiA0cHg7XG59XG5cbi8qIFJlbW92ZSBJbWFnZSBCdXR0b24gLSBUb29sYmFyIHZlcnNpb24gKi9cbi5nYmMtcmVtb3ZlLWltYWdlLXRvb2xiYXItYnRuIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0xKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS0xKSB2YXIoLS1zcGFjZS0zKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyMCwgNTMsIDY5LCAwLjEpO1xuICAgIGNvbG9yOiAjZGMzNTQ1O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjIwLCA1MywgNjksIDAuMyk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uZ2JjLXJlbW92ZS1pbWFnZS10b29sYmFyLWJ0bjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2RjMzU0NTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyLWNvbG9yOiAjZGMzNTQ1O1xufVxuXG4uZ2JjLXpvb20tYnRuIHtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgICBjb2xvcjogIzMzMztcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgbGluZS1oZWlnaHQ6IDM2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uZ2JjLXpvb20tYnRuOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5nYmMtem9vbS1idG46YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xufVxuXG4vKiBEcmFnIEhpbnQgKGZvciBzaW5nbGUgaW1hZ2UpICovXG4uZ2JjLWRyYWctaGludCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNyk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLTQpIHZhcigtLXNwYWNlLTYpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS0yKTtcbiAgICB6LWluZGV4OiAyMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBhbmltYXRpb246IHB1bHNlSGludCAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuLmdiYy1kcmFnLWhpbnQgLmRyYWctaWNvbiB7XG4gICAgZm9udC1zaXplOiAycmVtO1xufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlSGludCB7XG4gICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAwLjk7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpIHNjYWxlKDEpOyB9XG4gICAgNTAlIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMS4wNSk7IH1cbn1cblxuLyogTW9iaWxlIHJlc3BvbnNpdmUgZm9yIHNpbmdsZSBpbWFnZSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLmdiYy1zdGF0aWMtZG9vciAuZ2JjLWRvb3ItbnVtYmVyIHtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgICAgIHRvcDogNHB4O1xuICAgIH1cbiAgICBcbiAgICAuZ2JjLXNpbmdsZS16b29tLWNvbnRyb2xzIHtcbiAgICAgICAgYm90dG9tOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDRweDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgfVxuICAgIFxuICAgIC5nYmMtem9vbS1idG4ge1xuICAgICAgICB3aWR0aDogMzBweDtcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMHB4O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFBSRVZJRVcgTU9EQUxcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5nYmMtcHJldmlldy1tb2RhbC1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDcwMHB4O1xuICAgIHdpZHRoOiA5NSU7XG59XG5cbi5nYmMtcHJldmlldy1tb2RhbC1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiB2YXIoLS1zcGFjZS02KTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS02KTtcbn1cblxuLmdiYy1wcmV2aWV3LWNhbnZhcy1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6ICNmOGY5ZmE7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS00KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5nYmMtcHJldmlldy1jYW52YXMtY29udGFpbmVyIGNhbnZhcyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeSk7XG59XG5cbi5nYmMtcHJldmlldy1oaW50IHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xufVxuXG4uZ2JjLXByZXZpZXctc3VtbWFyeSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmcpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtNCk7XG59XG5cbi5nYmMtcHJldmlldy1zdW1tYXJ5IGg0IHtcbiAgICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zcGFjZS0zKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbi5nYmMtcHJldmlldy1zdW1tYXJ5IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4uZ2JjLXByZXZpZXctc3VtbWFyeSBsaSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcGFkZGluZzogdmFyKC0tc3BhY2UtMikgMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG59XG5cbi5nYmMtcHJldmlldy1zdW1tYXJ5IGxpOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG5cbi5nYmMtcHJldmlldy1zdW1tYXJ5IC5sYWJlbCB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCk7XG59XG5cbi5nYmMtcHJldmlldy1hY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogdmFyKC0tc3BhY2UtNCk7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4uZ2JjLXByZXZpZXctYWN0aW9ucyAuYnRuIHtcbiAgICBmbGV4OiAxO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAuZ2JjLXByZXZpZXctYWN0aW9ucyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuICAgIFxuICAgIC5nYmMtcHJldmlldy1hY3Rpb25zIC5idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi8qIFByZXZpZXcgQ2xvbmUgU3R5bGluZyAqL1xuLmdiYy1wcmV2aWV3LXdyYXBwZXIge1xuICAgIG1heC1oZWlnaHQ6IDM1MHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuLmdiYy1wcmV2aWV3LWNsb25lIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmdiYy1wcmV2aWV3LWNsb25lIC5nYmMtZG9vci1jb250cm9scyxcbi5nYmMtcHJldmlldy1jbG9uZSAuZ2JjLXJlbW92ZS1pbWFnZS1idG4sXG4uZ2JjLXByZXZpZXctY2xvbmUgLmdiYy1jdXN0b21pemUtdGV4dC1idG4sXG4uZ2JjLXByZXZpZXctY2xvbmUgLmdiYy1yZW1vdmUtaW1hZ2UtdG9vbGJhci1idG4sXG4uZ2JjLXByZXZpZXctY2xvbmUgLmdiYy1hZGQtdGl0bGUtYnRuIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iXX0= */