@layer reset, tokens, base, layout, components, screens, utilities;

@layer reset{

*,
*::before,
*::after {
	box-sizing: border-box;
}

* {
	margin: 0;
}

html {
	-webkit-text-size-adjust: none;
	text-size-adjust: none;
	line-height: var(--line-base, 1.5);
	tab-size: 4;
}

body {
	min-height: 100vh;
	min-height: 100svh;
	min-height: 100dvh;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizelegibility;
}

img,
picture,
video,
canvas,
svg {
	display: block;
	max-width: 100%;
}

input,
button,
textarea,
select {
	font: inherit;
	color: inherit;
	letter-spacing: inherit;
}

button {
	background: none;
	border: none;
	cursor: pointer;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
	overflow-wrap: break-word;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-size: inherit;
	font-weight: inherit;
}

ul[role="list"],
ol[role="list"] {
	list-style: none;
	padding: 0;
}

a {
	color: inherit;
}

table {
	border-collapse: collapse;
	border-spacing: 0;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}
}

@layer tokens{
/* Tier 1 — primitives. Raw literals only; never reference from components. */
:root {
	/* Neutrals */
	--neutral-0: #ffffff;
	--neutral-50: #f2f2f2;
	--neutral-75: #eeeeec;
	--neutral-100: #e6e6e6;
	--neutral-200: #d9d9d9;
	--neutral-300: #cbcbcb;
	--neutral-400: #b3b3b3;
	--neutral-500: #808080;
	--neutral-600: #666666;
	--neutral-700: #4d4d4d;
	--neutral-800: #333333;
	--neutral-900: #1a1a1a;
	--neutral-950: #0d0d0d;
	--black: #000000;

	/* Brand & status seeds */
	--orange: #cc5804; /* primary */
	--green: #038310;  /* success */
	--red: #cf2e2e;    /* danger */
	--amber: #e0851b;  /* warning */
	--blue: #2f6feb;   /* info */

	--slate: #2c3435;  /* sidebar */
}
}

@layer tokens{
:root {
	/* Surfaces & text */
	--color-bg: var(--neutral-50);
	--color-surface: var(--neutral-0);
	--color-surface-sunken: var(--neutral-50);
	--color-surface-raised: var(--neutral-0);
	--color-surface-hover: var(--neutral-50);
	--color-surface-active: var(--neutral-100);
	--color-fill: var(--neutral-100);
	--color-fill-hover: var(--neutral-200);
	--color-fill-active: var(--neutral-300);
	--color-tooltip-bg: var(--neutral-800);

	--color-text: var(--neutral-900);
	--color-text-muted: var(--neutral-600);
	--color-text-subtle: var(--neutral-500);
	--color-text-inverse: var(--neutral-0);

	--color-border: var(--neutral-200);
	--color-border-strong: var(--neutral-300);
	--color-border-light: var(--neutral-75);

	/* Seeds */
	--color-primary: var(--orange);
	--color-success: var(--green);
	--color-danger: var(--red);
	--color-warning: var(--amber);
	--color-info: var(--blue);

	/* Primary */
	--color-primary-hover: oklch(from var(--color-primary) calc(l - 0.075) calc(c - 0.02) h);
	--color-primary-active: oklch(from var(--color-primary) calc(l - 0.16) calc(c - 0.05) h);
	--color-primary-soft: oklch(from var(--color-primary) 0.95 0.03 h);
	--color-on-primary: var(--color-text-inverse);

	/* Form controls (buttons, checkbox, radio) */
	--color-form: var(--brand-form, var(--green));
	--color-form-soft: oklch(from var(--color-form) 0.95 0.03 h);
	--color-on-form: var(--color-text-inverse);
	--color-form-border: var(--color-border-strong);

	/* Accent (focus/highlight) — primary rotated by --accent-hue-shift° */
	--accent-hue-shift: 100;
	--color-accent: oklch(from var(--color-primary) l c calc(h + var(--accent-hue-shift)));
	--color-accent-soft: oklch(from var(--color-accent) 0.95 0.05 h);
	--color-on-accent: var(--color-text-inverse);

	/* Danger */
	--color-danger-hover: oklch(from var(--color-danger) calc(l - 0.075) calc(c - 0.02) h);
	--color-danger-soft: oklch(from var(--color-danger) 0.95 0.03 h);
	--color-on-danger: var(--color-text-inverse);

	/* Success */
	--color-success-hover: oklch(from var(--color-success) calc(l - 0.075) calc(c - 0.02) h);
	--color-success-soft: oklch(from var(--color-success) 0.95 0.03 h);
	--color-on-success: var(--color-text-inverse);

	/* Warning */
	--color-warning-hover: oklch(from var(--color-warning) calc(l - 0.075) calc(c - 0.02) h);
	--color-warning-soft: oklch(from var(--color-warning) 0.95 0.03 h);
	--color-on-warning: var(--color-text-inverse);

	/* Info */
	--color-info-hover: oklch(from var(--color-info) calc(l - 0.075) calc(c - 0.02) h);
	--color-info-soft: oklch(from var(--color-info) 0.95 0.03 h);

	/* Interface */
	--color-sidebar-bg: var(--slate);
	--color-backdrop: color-mix(in srgb, var(--black) 30%, transparent);
	--color-focus-ring: var(--color-accent);

	/* Spacing */
	--space-3xs: 0.125rem; /*  2px */
	--space-2xs: 0.25rem;  /*  4px */
	--space-xs: 0.5rem;    /*  8px */
	--space-sm: 0.75rem;   /* 12px */
	--space-md: 1rem;      /* 16px */
	--space-lg: 1.5rem;    /* 24px */
	--space-xl: 2rem;      /* 32px */
	--space-2xl: 3rem;     /* 48px */
	--space-3xl: 4rem;     /* 64px */

	/* Typography */
	--font-sans: "Noto Sans", system-ui, -apple-system, "Segoe UI", roboto, sans-serif;
	--font-mono: ui-monospace, "SF Mono", "Cascadia Code", "Fira Code", monospace;

	--font-weight-normal: 400;
	--font-weight-medium: 500;
	--font-weight-bold: 700;

	--line-tight: 1.2;
	--line-snug: 1.35;
	--line-base: 1.5;
	--line-loose: 1.7;

	--text-xs: 0.75rem;    /* 12px */
	--text-sm: 0.875rem;   /* 14px */
	--text-base: 1rem;     /* 16px */
	--text-lg: 1.125rem;   /* 18px */
	--text-xl: 1.25rem;    /* 20px */
	--text-2xl: clamp(1.5rem, 1.3rem + 1vw, 1.875rem);
	--text-3xl: clamp(1.875rem, 1.5rem + 1.8vw, 2.5rem);

	/* Radius */
	--radius-xs: 2px;
	--radius-sm: 4px;
	--radius-md: 6px;
	--radius-lg: 8px;
	--radius-xl: 12px;
	--radius-pill: 999px;
	--radius-round: 50%;

	/* Borders */
	--border-width: 1px;
	--border-width-strong: 2px;
	--keycap-edge: 0 2px 0 0;

	/* Shadows */
	--color-shadow: color-mix(in srgb, var(--neutral-700) 41%, transparent);
	--shadow-sm: 0 1px 2px color-mix(in srgb, var(--neutral-950) 7%, transparent);
	--shadow-md: 0 2px 8px color-mix(in srgb, var(--neutral-950) 11%, transparent);
	--shadow-lg: 0 8px 24px color-mix(in srgb, var(--neutral-950) 15%, transparent);
	--shadow-raised-edge: var(--color-primary);
	--shadow-raised:
		var(--keycap-edge) var(--shadow-raised-edge),
		var(--shadow-raised-drop, 12px) var(--shadow-raised-drop, 12px) 0 0 var(--color-shadow);

	/* Z-index */
	--z-base: 0;
	--z-sticky: 100;
	--z-sidebar: 200;
	--z-dropdown: 1000;
	--z-overlay: 1100;
	--z-modal: 1200;
	--z-popover: 1300;
	--z-toast: 1400;
	--z-tooltip: 1500;

	/* Motion */
	--duration-fast: 120ms;
	--duration-base: 200ms;
	--duration-slow: 320ms;
	--ease-standard: cubic-bezier(0.2, 0, 0, 1);
	--ease-out: cubic-bezier(0, 0, 0.2, 1);
	--ease-in: cubic-bezier(0.4, 0, 1, 1);

	/* Layout */
	--sidebar-width: 200px;
	--container-max: 1280px;
	--content-padding: var(--space-lg);

	/* Breakpoints (mobile-first) */
	--bp-sm: 40rem; /* 640px */
	--bp-md: 48rem; /* 768px */
	--bp-lg: 64rem; /* 1024px */
	--bp-xl: 80rem; /* 1280px */
}
}

@layer base{

html {
	font-family: var(--font-sans);
	font-size: 100%;
}

body {
	margin: 0;
	background: var(--color-bg);
	color: var(--color-text);
	font-family: var(--font-sans); /* re-consume so element-scoped --font-sans overrides (themes) apply */
	font-size: var(--text-base);
	font-weight: var(--font-weight-normal);
	line-height: var(--line-base);
}

/* Typography */
h1,
h2,
h3,
h4,
h5,
h6 {
	font-weight: var(--font-weight-bold);
	line-height: var(--line-tight);
	text-wrap: balance;
}

h1 { font-size: var(--text-3xl); }
h2 { font-size: var(--text-2xl); }
h3 { font-size: var(--text-xl); }
h4 { font-size: var(--text-lg); }
h5 { font-size: var(--text-base); }
h6 { font-size: var(--text-sm); }

p {
	text-wrap: pretty;
}

small {
	font-size: var(--text-sm);
}

strong,
b {
	font-weight: var(--font-weight-bold);
}

code,
kbd,
samp,
pre {
	font-family: var(--font-mono);
	font-size: var(--text-sm);
}

/* Links */
a {
	text-decoration: underline;
	&:hover {
		text-decoration: none;
	}
}

hr {
	border: none;
	border-top: var(--border-width) solid var(--color-border);
	margin-top: var(--space-md);
	margin-bottom: var(--space-md);
}

/* Forms */
input,
textarea,
select {
	background-color: var(--color-surface);
	color: var(--color-text);
}

::placeholder {
	color: var(--color-text-subtle);
	opacity: 1;
}

textarea {
	resize: vertical;
}

:focus,
:focus-visible {
	outline: none;
}

::selection {
	background-color: color-mix(in srgb, var(--color-accent) 30%, transparent);
}
}

@layer layout{

/*
 * Grid — generic 12-column layout grid.
 *
 *   <div class="grid">
 *     <div class="col-8">main</div>
 *     <div class="col-4 offset-4">aside</div>
 *   </div>
 *
 * Spans: .col-1…12 · .col-full · Offset: .offset-1…11
 * Config: --cols (default 12) · --grid-row-gap · --grid-col-gap
 */

.grid {
	display: grid;
	grid-template-columns: repeat(var(--cols, 12), minmax(0, 1fr));
	gap: var(--grid-row-gap, var(--space-md)) var(--grid-col-gap, var(--space-lg));
	container-type: inline-size;
}

.grid > * {
	grid-column: var(--col-start, auto) / span var(--col-span, var(--cols, 12));
}

.col-1 { --col-span: 1; }
.col-2 { --col-span: 2; }
.col-3 { --col-span: 3; }
.col-4 { --col-span: 4; }
.col-5 { --col-span: 5; }
.col-6 { --col-span: 6; }
.col-7 { --col-span: 7; }
.col-8 { --col-span: 8; }
.col-9 { --col-span: 9; }
.col-10 { --col-span: 10; }
.col-11 { --col-span: 11; }
.col-12 { --col-span: 12; }
.col-full { grid-column: 1 / -1; }

.offset-1 { --col-start: 2; }
.offset-2 { --col-start: 3; }
.offset-3 { --col-start: 4; }
.offset-4 { --col-start: 5; }
.offset-5 { --col-start: 6; }
.offset-6 { --col-start: 7; }
.offset-7 { --col-start: 8; }
.offset-8 { --col-start: 9; }
.offset-9 { --col-start: 10; }
.offset-10 { --col-start: 11; }
.offset-11 { --col-start: 12; }

.grid--subgrid { grid-template-columns: subgrid; }

@container (max-width: 32rem) {
	.grid > * { grid-column: 1 / -1; }
}
}

@layer components{

/*
 * Button
 *
 *   <button class="button button--primary">Save</button>
 *   <a class="button button--subtle">Back</a>
 *
 * Variants: --primary/--danger/--warning/--subtle/--ghost/--light
 * Sizes: --sm/--lg
 * Modifiers: --icon/--block
 * State: .is-loading
 * Themeable: --button-bg/fg/border-color/shadow/radius
 */

.button {
	--_bg: var(--button-bg, var(--color-surface));
	--_bg-hover: var(--color-surface-hover);
	--_bg-active: var(--color-surface-active);
	--_fg: var(--button-fg, var(--color-text));
	--_border: var(--button-border-color, var(--color-form));
	--_border-width: var(--border-width);
	--_shadow: var(--button-shadow, var(--keycap-edge) var(--_border));
	--_padding-block: var(--space-xs);
	--_padding-inline: var(--space-sm);
	--_radius: var(--button-radius, var(--radius-sm));
	--_font-size: var(--text-sm);
	--_font-weight: var(--font-weight-medium);
	--_gap: var(--space-xs);

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--_gap);
	padding: var(--_padding-block) var(--_padding-inline);
	border: var(--_border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	color: var(--_fg);
	box-shadow: var(--_shadow);
	font-size: var(--_font-size);
	font-weight: var(--_font-weight);
	line-height: var(--line-tight);
	text-align: center;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	user-select: none;
	transition:
		background-color var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard),
		color var(--duration-fast) var(--ease-standard);

	&:hover {
		background-color: var(--_bg-hover);
	}

	&:active {
		background-color: var(--_bg-active);
	}

	&:disabled,
	&[aria-disabled="true"],
	&.is-disabled {
		--_bg: var(--color-surface);
		--_bg-hover: var(--color-surface);
		--_fg: var(--color-text-subtle);
		--_border: var(--color-border);
		--_shadow: none;
		cursor: not-allowed;
		pointer-events: none;
	}

	& .icon {
		font-size: 1.15em;
		line-height: 0;
	}
}

.button--primary {
	--_bg-hover: var(--color-form-soft);
	--_bg-active: var(--color-form-soft);
	--_fg: var(--color-form);
	--_border: var(--color-form);
	--_shadow: var(--keycap-edge) var(--color-form);
	--_font-weight: var(--font-weight-bold);

	&:active {
		--_shadow: 0 1px 0 0 var(--color-form);
		transform: translateY(1px);
	}
}

.button--danger {
	--_bg: var(--color-danger);
	--_bg-hover: var(--color-danger-hover);
	--_bg-active: var(--color-danger-hover);
	--_fg: var(--color-on-danger);
	--_border: transparent;
	--_shadow: none;
	--_font-weight: var(--font-weight-bold);
}

.button--warning {
	--_bg: var(--color-warning);
	--_bg-hover: var(--color-warning-hover);
	--_bg-active: var(--color-warning-hover);
	--_fg: var(--color-on-warning);
	--_border: transparent;
	--_shadow: none;
	--_font-weight: var(--font-weight-bold);
}

.button--subtle {
	--_bg: var(--color-fill);
	--_bg-hover: var(--color-fill-hover);
	--_bg-active: var(--color-fill-active);
	--_border: transparent;
	--_shadow: none;
}

.button--ghost {
	--_bg: transparent;
	--_bg-hover: var(--color-fill);
	--_bg-active: var(--color-fill-hover);
	--_border: transparent;
	--_shadow: none;
}

.button--light {
	--_bg: transparent;
	--_fg: var(--color-text-subtle);
	--_border: var(--color-border-strong);
	--_shadow: none;
	--_font-weight: var(--font-weight-normal);
}

.button--sm {
	--_padding-block: var(--space-2xs);
	--_padding-inline: var(--space-sm);
	--_font-size: var(--text-xs);
	--_radius: var(--radius-sm);
}

.button--lg {
	--_padding-block: var(--space-sm);
	--_padding-inline: var(--space-lg);
	--_font-size: var(--text-base);
	--_radius: var(--radius-lg);
}

.button--icon {
	--_padding-inline: var(--_padding-block);
	aspect-ratio: 1;
}

.button--block {
	display: flex;
	width: 100%;
}

.button.is-loading {
	position: relative;
	color: transparent;
	pointer-events: none;
}

.button.is-loading::after {
	content: "";
	position: absolute;
	inset: 0;
	margin: auto;
	--spinner-size: 1em;
	--spinner-color: var(--_fg);
}
}

@layer components{

/*
 * Kbd
 *
 *   <span class="kbd">Cmd + K</span>
 *
 * Variant: --filled
 * Themeable: --kbd-bg/fg/border-color
 */

.kbd {
	--_bg: var(--kbd-bg, transparent);
	--_fg: var(--kbd-fg, var(--color-text-subtle));
	--_border: var(--kbd-border-color, var(--color-border-light));
	--_shadow: var(--keycap-edge) var(--_border);

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-2xs);
	padding: 3px 6px;
	border: var(--border-width) solid var(--_border);
	border-radius: 3px;
	background-color: var(--_bg);
	box-shadow: var(--_shadow);
	color: var(--_fg);
	font-family: inherit;
	font-size: var(--text-xs);
	font-weight: var(--font-weight-medium);
	line-height: 1;
	white-space: nowrap;
}

.kbd--filled {
	--_bg: var(--color-surface);
}
}

@layer components{

/*
 * Avatar
 *
 *   <span class="avatar"><img src="…" alt="…"></span>
 *   <span class="avatar">JM</span>
 *
 * Sizes: --xs/--sm/--lg/--xl
 * Shape: --circle.
 * Content: --logo.
 */

.avatar {
	--_size: var(--avatar-size, 2.5rem);
	--_radius: calc(var(--_size) * 0.14);
	--_bg: var(--avatar-bg, var(--color-primary));
	--_fg: var(--avatar-fg, var(--color-on-primary));
	--_font-size: calc(var(--_size) * 0.4);

	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: var(--_size);
	height: var(--_size);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	color: var(--_fg);
	font-size: var(--_font-size);
	font-weight: var(--font-weight-bold);
	line-height: 1;
	text-transform: uppercase;
	text-decoration: none;
	user-select: none;
	overflow: hidden;
}

.avatar img,
.avatar__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: inherit;
}

.avatar--xs { --_size: 1.5rem; }
.avatar--sm { --_size: 2rem; }
.avatar--lg { --_size: 3rem; }
.avatar--xl { --_size: 4rem; }

.avatar--circle { --_radius: var(--radius-round); }

.avatar--logo {
	--_bg: var(--color-surface);
	padding: calc(var(--_size) * 0.12);
}

.avatar--logo img {
	object-fit: contain;
}
}

@layer components{

/*
 * Tabs
 *
 *   <div class="tabs" role="tablist">
 *     <button class="tabs__item is-active" type="button" aria-selected="true">…</button>
 *     <button class="tabs__item" type="button" aria-selected="false">…</button>
 *   </div>
 *
 * Active: .is-active / [aria-selected="true"] / [aria-pressed="true"]
 * Themeable: --tabs-border-color/shadow
 */

.tabs {
	--_bg: var(--color-surface);
	--_border: var(--tabs-border-color, var(--color-primary));
	--_shadow: var(--tabs-shadow, var(--keycap-edge) var(--_border));

	display: inline-flex;
	gap: 3px;
	padding: 3px;
	border: var(--border-width) solid var(--_border);
	border-radius: var(--radius-sm);
	background-color: var(--_bg);
	box-shadow: var(--_shadow);
}

.tabs__item {
	--_item-bg: transparent;
	--_item-bg-hover: var(--color-surface-active);
	--_item-fg: var(--color-text-muted);

	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-xs);
	padding: 5px 11px;
	border: 0;
	border-radius: 3px;
	background-color: var(--_item-bg);
	color: var(--_item-fg);
	font-size: var(--text-xs);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-tight);
	white-space: nowrap;
	text-decoration: none;
	cursor: pointer;
	transition:
		background-color var(--duration-fast) var(--ease-standard),
		color var(--duration-fast) var(--ease-standard);
}

.tabs__item:hover {
	--_item-bg: var(--_item-bg-hover);
	--_item-fg: var(--color-text);
}

.tabs__item.is-active,
.tabs__item[aria-selected="true"],
.tabs__item[aria-pressed="true"] {
	--_item-bg: var(--color-primary);
	--_item-fg: var(--color-on-primary);
	font-weight: var(--font-weight-bold);
}
}

@layer components{

/*
 * Field
 *
 *   <label class="field">
 *     <span class="field__label">Name</span>
 *     <input class="input" type="text">
 *     <span class="field__hint">…</span>
 *   </label>
 *   Error: swap .field__hint for .field__error (+ aria-invalid on the control)
 *
 * Themeable: --field-label-color/size, --field-hint-bg/fg, --field-error-bg/fg
 */

.field {
	display: flex;
	flex-direction: column;
	gap: var(--space-2xs);
}

.field__label {
	display: flex;
	align-items: center;
	gap: var(--space-xs);
	color: var(--field-label-color, var(--color-text-subtle));
	font-size: var(--field-label-size, var(--text-sm));
	letter-spacing: 0.03em;
}

.field__hint,
.field__error {
	align-self: flex-start;
	padding: var(--space-3xs) var(--space-xs);
	border-radius: var(--radius-sm);
	font-size: var(--text-xs);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-tight);
}

.field__hint {
	background-color: var(--field-hint-bg, var(--color-tooltip-bg));
	color: var(--field-hint-fg, var(--color-text-inverse));
}

.field__error {
	background-color: var(--field-error-bg, var(--color-danger));
	color: var(--field-error-fg, var(--color-on-primary));
}
}

@layer components{

/*
 * Field mark
 *   <button class="field-mark field-mark--help" type="button" aria-label="Help"></button>
 *   <span class="field-mark field-mark--required" aria-hidden="true"></span>
 */

.field-mark {
	--_size: var(--field-mark-size, 1.4em);

	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--_size);
	height: var(--_size);
	padding: 0;
	border: 0;
	border-radius: var(--field-mark-radius, var(--radius-sm));
	font-weight: var(--font-weight-bold);
	line-height: 1;
}

.field-mark--help,
.field-mark--required {
	position: relative;
	color: transparent;
}

.field-mark--help::before,
.field-mark--required::before {
	content: "";
	position: absolute;
	inset: var(--_icon-inset, 20%);
	background-color: var(--_mark);
	-webkit-mask: var(--_icon) center / contain no-repeat;
	mask: var(--_icon) center / contain no-repeat;
}

.field-mark--help {
	--_mark: var(--field-mark-help-fg, var(--color-text-subtle));
	--_icon: var(--field-mark-help-icon, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' fill='%23000'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4.002.703a3.277 3.277 0 0 1 3.275 3.275 3.277 3.277 0 0 1-3.275 3.276A3.277 3.277 0 0 1 .727 3.978 3.277 3.277 0 0 1 4.002.703m0 .93a2.346 2.346 0 0 0 0 4.69 2.346 2.346 0 0 0 0-4.69'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4.458 4.337c.005.152.01.359.01.593h-.93c0-.53-.03-.796-.02-.93a.7.7 0 0 1 .053-.223l.054-.097.082-.093c.088-.078.228-.147.493-.147.073 0 .2-.062.2-.231a.393.393 0 0 0-.397-.388.393.393 0 0 0-.397.388h-.93c0-.726.593-1.318 1.327-1.318.733 0 1.327.592 1.327 1.318 0 .722-.484 1.034-.872 1.128'/%3E%3Cpath d='M4.002 6.094a.514.514 0 1 0 0-1.027.514.514 0 0 0 0 1.027'/%3E%3C/svg%3E"));
	--_icon-inset: 0; /* help glyph already carries its own margin in the 8×8 artboard */
	background-color: var(--field-mark-help-bg, var(--color-fill));
	cursor: help;
}

.field-mark--help:hover {
	--_mark: var(--color-text);
	background-color: var(--color-fill-hover);
}

.field-mark--required {
	--_mark: var(--field-mark-required-mark, var(--color-primary-soft));
	--_icon: var(--field-mark-required-icon, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 6'%3E%3Cpath fill='%23000' fill-rule='evenodd' clip-rule='evenodd' d='m2.288 2.997-1.491-.86.349-.605 1.49.861V.672h.698v1.721l1.491-.86.349.604-1.49.86 1.49.86-.349.605-1.49-.86v1.72h-.698v-1.72l-1.491.86-.349-.604z'/%3E%3C/svg%3E"));
	background-color: var(--field-mark-required-bg, var(--color-primary));
}
}

@layer components{

/*
 * Input — text control. Wrap in .field for label + messages.
 *
 *   <input class="input" type="text">
 *
 * States: :hover / :focus / [aria-invalid] / .is-error / :disabled / [readonly]
 * Themeable: --input-bg/fg/border-color/radius/focus/error/disabled
 */

.input {
	--_bg: var(--input-bg, var(--color-surface));
	--_fg: var(--input-fg, var(--color-text));
	--_border: var(--input-border-color, var(--color-form-border));
	--_radius: var(--input-radius, var(--radius-sm));
	--_hover-border: var(--input-hover-border, var(--color-text-subtle));
	--_focus-border: var(--input-focus-border, var(--color-primary));
	--_focus-bg: var(--input-focus-bg, var(--color-primary-soft));
	--_error-border: var(--input-error-border, var(--color-danger));
	--_error-bg: var(--input-error-bg, var(--color-danger-soft));
	--_disabled-bg: var(--input-disabled-bg, var(--color-surface-sunken));
	--_disabled-fg: var(--input-disabled-fg, var(--color-text-subtle));
	--_disabled-border: var(--input-disabled-border, var(--color-border));

	display: block;
	width: 100%;
	padding: var(--input-padding, var(--space-xs) var(--space-sm));
	border: var(--border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	color: var(--_fg);
	font: inherit;
	line-height: var(--line-tight);
	letter-spacing: 0.03em;
	transition:
		border-color var(--duration-fast) var(--ease-standard),
		background-color var(--duration-fast) var(--ease-standard);
}

.input::placeholder {
	color: var(--color-text-subtle);
}

.input:hover {
	--_border: var(--_hover-border);
}

.input:focus,
.input:focus-visible {
	--_border: var(--_focus-border);
	--_bg: var(--_focus-bg);
}

.input[aria-invalid="true"],
.input.is-error {
	--_border: var(--_error-border);
	--_bg: var(--_error-bg);
}

.input:disabled,
.input.is-disabled {
	--_bg: var(--_disabled-bg);
	--_fg: var(--_disabled-fg);
	--_border: var(--_disabled-border);
	cursor: not-allowed;
}

.input[readonly],
.input--readonly {
	background-color: transparent;
}
}

@layer components{

/*
 * Input group
 *
 *   <span class="input-group">
 *     <input class="input-group__field" type="text" value="12 309.68">
 *     <span class="tag">Kč</span>
 *   </span>
 *
 * States: :hover / :focus-within; error/disabled come from the field
 *         (aria-invalid / .is-error / :disabled on .input-group__field)
 * Themeable: reuses the --input-* custom properties
 */

.input-group {
	--_bg: var(--input-bg, var(--color-surface));
	--_border: var(--input-border-color, var(--color-border-strong));
	--_radius: var(--input-radius, var(--radius-sm));
	--_hover-border: var(--input-hover-border, var(--color-text-subtle));
	--_focus-border: var(--input-focus-border, var(--color-primary));
	--_focus-bg: var(--input-focus-bg, var(--color-primary-soft));
	--_error-border: var(--input-error-border, var(--color-danger));
	--_error-bg: var(--input-error-bg, var(--color-danger-soft));
	--_disabled-bg: var(--input-disabled-bg, var(--color-surface-sunken));
	--_disabled-border: var(--input-disabled-border, var(--color-border));

	display: flex;
	align-items: center;
	gap: var(--space-xs);
	width: 100%;
	padding: 0 var(--space-sm);
	border: var(--border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	transition:
		border-color var(--duration-fast) var(--ease-standard),
		background-color var(--duration-fast) var(--ease-standard);
}

.input-group:hover {
	--_border: var(--_hover-border);
}

.input-group:focus-within {
	--_border: var(--_focus-border);
	--_bg: var(--_focus-bg);
}

.input-group:has(.input-group__field[aria-invalid="true"]),
.input-group:has(.input-group__field.is-error) {
	--_border: var(--_error-border);
	--_bg: var(--_error-bg);
}

.input-group:has(.input-group__field:disabled) {
	--_bg: var(--_disabled-bg);
	--_border: var(--_disabled-border);
}

.input-group__field {
	flex: 1;
	min-width: 0;
	padding: var(--space-xs) 0;
	border: 0;
	background: transparent;
	color: var(--color-text);
	font: inherit;
	line-height: var(--line-tight);
}

.input-group__field::placeholder {
	color: var(--color-text-subtle);
}

.input-group__field:disabled {
	color: var(--color-text-subtle);
	cursor: not-allowed;
}
}

@layer components{

/*
 * Textarea
 *
 *   <label class="field">
 *     <span class="field__label">Name</span>
 *     <textarea class="textarea"></textarea>
 *   </label>
 *
 * States: :hover / :focus / [aria-invalid] / .is-error / :disabled / [readonly]
 * Themeable: --textarea-bg/fg/border-color/radius/focus/error/disabled/min-height
 */

.textarea {
	--_bg: var(--textarea-bg, var(--color-surface));
	--_fg: var(--textarea-fg, var(--color-text));
	--_border: var(--textarea-border-color, var(--color-form-border));
	--_radius: var(--textarea-radius, var(--radius-sm));
	--_hover-border: var(--textarea-hover-border, var(--color-text-subtle));
	--_focus-border: var(--textarea-focus-border, var(--color-primary));
	--_focus-bg: var(--textarea-focus-bg, var(--color-primary-soft));
	--_error-border: var(--textarea-error-border, var(--color-danger));
	--_error-bg: var(--textarea-error-bg, var(--color-danger-soft));
	--_disabled-bg: var(--textarea-disabled-bg, var(--color-surface-sunken));
	--_disabled-fg: var(--textarea-disabled-fg, var(--color-text-subtle));
	--_disabled-border: var(--textarea-disabled-border, var(--color-border));

	display: block;
	width: 100%;
	min-height: var(--textarea-min-height, 5.5rem);
	padding: var(--textarea-padding, var(--space-xs) var(--space-sm));
	border: var(--border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	color: var(--_fg);
	font: inherit;
	line-height: var(--line-base);
	letter-spacing: 0.03em;
	resize: vertical;
	transition:
		border-color var(--duration-fast) var(--ease-standard),
		background-color var(--duration-fast) var(--ease-standard);
}

.textarea::placeholder {
	color: var(--color-text-subtle);
}

.textarea:hover {
	--_border: var(--_hover-border);
}

.textarea:focus,
.textarea:focus-visible {
	--_border: var(--_focus-border);
	--_bg: var(--_focus-bg);
}

.textarea[aria-invalid="true"],
.textarea.is-error {
	--_border: var(--_error-border);
	--_bg: var(--_error-bg);
}

.textarea:disabled,
.textarea.is-disabled {
	--_bg: var(--_disabled-bg);
	--_fg: var(--_disabled-fg);
	--_border: var(--_disabled-border);
	resize: none;
	cursor: not-allowed;
}

.textarea[readonly],
.textarea--readonly {
	background-color: transparent;
}
}

@layer components{

/*
 * Select — native <select> styled to match .input, with a custom chevron.
 *
 *   <label class="field">
 *     <span class="field__label">Klub</span>
 *     <select class="select"><option>Sport Alive</option>…</select>
 *   </label>
 *
 * States: :hover / :focus / [aria-invalid] / .is-error / :disabled
 * Themeable: --select-bg/fg/border-color/radius/focus/error/disabled/chevron
 */

.select {
	--_bg: var(--select-bg, var(--color-surface));
	--_fg: var(--select-fg, var(--color-text));
	--_border: var(--select-border-color, var(--color-form-border));
	--_radius: var(--select-radius, var(--radius-sm));
	--_hover-border: var(--select-hover-border, var(--color-text-subtle));
	--_focus-border: var(--select-focus-border, var(--color-primary));
	--_focus-bg: var(--select-focus-bg, var(--color-primary-soft));
	--_error-border: var(--select-error-border, var(--color-danger));
	--_error-bg: var(--select-error-bg, var(--color-danger-soft));
	--_disabled-bg: var(--select-disabled-bg, var(--color-surface-sunken));
	--_disabled-fg: var(--select-disabled-fg, var(--color-text-subtle));
	--_disabled-border: var(--select-disabled-border, var(--color-border));
	--_chevron: var(--select-chevron, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 9 5'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4.19379 4.58996L-0.000431918 2.16843L1.25155 -7.21987e-05L4.19379 1.69862L7.13602 -4.28093e-05L8.38799 2.16845L4.19379 4.58996Z' fill='%23808080'/%3E%3C/svg%3E"));

	appearance: none;
	display: block;
	width: 100%;
	padding: var(--select-padding, var(--space-xs) var(--space-sm));
	padding-inline-end: calc(var(--space-sm) + 1.25em);
	border: var(--border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	background-image: var(--_chevron);
	background-repeat: no-repeat;
	background-position: right var(--space-sm) center;
	background-size: 0.6em;
	color: var(--_fg);
	font: inherit;
	line-height: var(--line-tight);
	letter-spacing: 0.03em;
	cursor: pointer;
	transition:
		border-color var(--duration-fast) var(--ease-standard),
		background-color var(--duration-fast) var(--ease-standard);
}

.select option {
	background-color: var(--color-surface);
	color: var(--color-text);
}

.select:hover {
	--_border: var(--_hover-border);
}

.select:focus,
.select:focus-visible {
	--_border: var(--_focus-border);
	--_bg: var(--_focus-bg);
}

.select[aria-invalid="true"],
.select.is-error {
	--_border: var(--_error-border);
	--_bg: var(--_error-bg);
}

.select:disabled,
.select.is-disabled {
	--_bg: var(--_disabled-bg);
	--_fg: var(--_disabled-fg);
	--_border: var(--_disabled-border);
	cursor: not-allowed;
}
}

@layer components{

/*
 * Checkbox
 *
 *   <label class="checkbox"><input type="checkbox"><span>Label</span></label>
 *
 * Themeable: --checkbox-size/radius/bg/border-color/checked-bg/check-color/label/disabled
 */

.checkbox {
	--_size: var(--checkbox-size, 1.25rem);
	--_radius: var(--checkbox-radius, var(--radius-sm));
	--_bg: var(--checkbox-bg, var(--color-surface));
	--_border: var(--checkbox-border-color, var(--color-form-border));
	--_hover-border: var(--checkbox-hover-border, var(--color-text-subtle));
	--_hover-bg: var(--checkbox-hover-bg, var(--color-primary-soft));
	--_checked-bg: var(--checkbox-checked-bg, var(--color-form));
	--_checked-border: var(--checkbox-checked-border, var(--color-form));
	--_check-color: var(--checkbox-check-color, var(--color-on-form));
	--_label: var(--checkbox-label-color, var(--color-text-muted));
	--_label-checked: var(--checkbox-label-checked-color, var(--color-text));
	--_disabled-bg: var(--checkbox-disabled-bg, var(--color-surface-sunken));
	--_disabled-border: var(--checkbox-disabled-border, var(--color-border));
	--_disabled-label: var(--checkbox-disabled-label-color, var(--color-text-subtle));
	--_check-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' d='M3.5 8.5l3 3 6-6'/%3E%3C/svg%3E");

	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	color: var(--_label);
	cursor: pointer;
}

.checkbox input {
	appearance: none;
	flex-shrink: 0;
	width: var(--_size);
	height: var(--_size);
	margin: 0;
	border: var(--border-width-strong) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_bg);
	cursor: inherit;
	transition:
		background-color var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard);
}

.checkbox::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: var(--_size);
	height: var(--_size);
	background-color: var(--_check-color);
	-webkit-mask: var(--_check-icon) center / 80% no-repeat;
	mask: var(--_check-icon) center / 80% no-repeat;
	opacity: 0;
	pointer-events: none;
}

.checkbox input:checked {
	--_bg: var(--_checked-bg);
	--_border: var(--_checked-border);
}

.checkbox:has(input:checked)::before {
	opacity: 1;
}

.checkbox:has(input:checked) {
	--_label: var(--_label-checked);
	font-weight: var(--font-weight-bold);
}

.checkbox:hover:not(:has(input:checked)) {
	--_border: var(--_hover-border);
	--_bg: var(--_hover-bg);
}

.checkbox:hover:not(:has(input:checked)):not(:has(input:disabled))::before {
	opacity: 0.4;
	background-color: var(--color-text-subtle);
}

.checkbox:has(input:disabled) {
	--_label: var(--_disabled-label);
	cursor: not-allowed;
}

.checkbox input:disabled {
	--_bg: var(--_disabled-bg);
	--_border: var(--_disabled-border);
}
}

@layer components{

/*
 * Radio
 *
 *   <label class="radio"><input type="radio" name="answer"><span>Label</span></label>
 *
 * Themeable: --radio-size/bg/border-color/checked-color/label/disabled
 */

.radio {
	--_size: var(--radio-size, 1.25rem);
	--_bg: var(--radio-bg, var(--color-surface));
	--_border: var(--radio-border-color, var(--color-form-border));
	--_hover-border: var(--radio-hover-border, var(--color-text-subtle));
	--_hover-bg: var(--radio-hover-bg, var(--color-primary-soft));
	--_checked: var(--radio-checked-color, var(--color-form));
	--_label: var(--radio-label-color, var(--color-text-muted));
	--_label-checked: var(--radio-label-checked-color, var(--color-text));
	--_disabled-bg: var(--radio-disabled-bg, var(--color-surface-sunken));
	--_disabled-border: var(--radio-disabled-border, var(--color-border));
	--_disabled-label: var(--radio-disabled-label-color, var(--color-text-subtle));

	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--space-xs);
	color: var(--_label);
	cursor: pointer;
}

.radio input {
	appearance: none;
	flex-shrink: 0;
	width: var(--_size);
	height: var(--_size);
	margin: 0;
	border: var(--border-width-strong) solid var(--_border);
	border-radius: var(--radius-round);
	background-color: var(--_bg);
	cursor: inherit;
	transition:
		background-color var(--duration-fast) var(--ease-standard),
		border-color var(--duration-fast) var(--ease-standard);
}

.radio::before {
	content: "";
	position: absolute;
	left: calc(var(--_size) * 0.27);
	top: 50%;
	width: calc(var(--_size) * 0.46);
	height: calc(var(--_size) * 0.46);
	border-radius: var(--radius-round);
	background-color: var(--_checked);
	transform: translateY(-50%) scale(0);
	opacity: 0;
	pointer-events: none;
	transition:
		transform var(--duration-fast) var(--ease-standard),
		opacity var(--duration-fast) var(--ease-standard);
}

.radio input:checked {
	--_border: var(--_checked);
}

.radio:has(input:checked)::before {
	transform: translateY(-50%) scale(1);
	opacity: 1;
}

.radio:has(input:checked) {
	--_label: var(--_label-checked);
	font-weight: var(--font-weight-bold);
}

.radio:hover:not(:has(input:checked)) {
	--_border: var(--_hover-border);
	--_bg: var(--_hover-bg);
}

.radio:hover:not(:has(input:checked)):not(:has(input:disabled))::before {
	transform: translateY(-50%) scale(1);
	opacity: 0.4;
	background-color: var(--color-text-subtle);
}

.radio:has(input:disabled) {
	--_label: var(--_disabled-label);
	cursor: not-allowed;
}

.radio input:disabled {
	--_bg: var(--_disabled-bg);
	--_border: var(--_disabled-border);
}
}

@layer components{

/*
 * Switch — on/off toggle (native checkbox styled as a sliding switch).
 *
 *   <label class="switch"><input type="checkbox"><span>Veřejný</span></label>
 *
 * Themeable: --switch-height/width/radius/track/border/knob/border-checked/knob-checked/label
 */

.switch {
	--_h: var(--switch-height, 1.25rem);
	--_w: var(--switch-width, calc(var(--_h) * 18 / 11));
	--_pad: var(--switch-pad, calc(var(--_h) * 2 / 11));
	--_knob-w: var(--switch-knob-width, calc(var(--_h) * 9 / 11));
	--_knob-h: var(--switch-knob-height, calc(var(--_h) * 7 / 11));
	--_radius: var(--switch-radius, calc(var(--_h) * 3 / 11));
	--_knob-radius: var(--switch-knob-radius, calc(var(--_h) * 2 / 11));

	--_track: var(--switch-track, var(--color-surface));
	--_border: var(--switch-border, var(--color-form-border));
	--_border-checked: var(--switch-border-checked, var(--color-form));
	--_knob: var(--switch-knob, var(--color-border-strong));
	--_knob-checked: var(--switch-knob-checked, var(--color-form));

	--_label: var(--switch-label-color, var(--color-text-subtle));
	--_label-checked: var(--switch-label-checked-color, var(--color-text));

	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--switch-gap, var(--space-xs));
	color: var(--_label);
	letter-spacing: 0.03em;
	cursor: pointer;
}

.switch input {
	appearance: none;
	flex-shrink: 0;
	width: var(--_w);
	height: var(--_h);
	margin: 0;
	border: var(--border-width) solid var(--_border);
	border-radius: var(--_radius);
	background-color: var(--_track);
	cursor: inherit;
	transition:
		background-color var(--duration-base) var(--ease-standard),
		border-color var(--duration-base) var(--ease-standard);
}

.switch::before {
	content: "";
	position: absolute;
	left: var(--_pad);
	top: 50%;
	width: var(--_knob-w);
	height: var(--_knob-h);
	border-radius: var(--_knob-radius);
	background-color: var(--_knob);
	translate: 0 -50%;
	pointer-events: none;
	transition:
		translate var(--duration-base) var(--ease-standard),
		background-color var(--duration-base) var(--ease-standard);
}

.switch:has(input:checked) {
	--_border: var(--_border-checked);
	--_knob: var(--_knob-checked);
	--_label: var(--_label-checked);
	font-weight: var(--font-weight-bold);
}

.switch:has(input:checked)::before {
	translate: calc(var(--_w) - var(--_knob-w) - 2 * var(--_pad)) -50%;
}

.switch:hover:not(:has(input:checked)):not(:has(input:disabled)) {
	--_border: var(--switch-hover-border, var(--color-text-subtle));
	--_track: var(--switch-hover-bg, var(--color-primary-soft));
}

.switch:has(input:disabled) {
	--_border: var(--color-border);
	--_knob: var(--color-border);
	--_label: var(--color-text-subtle);
	cursor: not-allowed;
	opacity: 0.7;
}
}

@layer components{

/*
 * Tag
 *
 *   <span class="tag">CZ</span>
 *   <span class="tag tag--danger">HOT</span>
 *   <span class="tag">CZ <button class="tag__remove" type="button" aria-label="Remove">×</button></span>
 *   <button class="tag" type="button" aria-label="Add">+</button>
 *   <span class="tag"><img class="tag__icon" src="…" alt=""> Czech</span>
 *
 * Color variants: --danger. Themeable: --tag-bg, --tag-fg, --tag-border-color.
 */

.tag {
	--_bg: var(--tag-bg, transparent);
	--_fg: var(--tag-fg, var(--color-text-subtle));
	--_border: var(--tag-border-color, var(--color-border-strong));

	display: inline-flex;
	align-items: center;
	gap: var(--space-3xs);
	padding: 0 var(--space-2xs);
	border: var(--border-width) solid var(--_border);
	border-radius: var(--radius-sm);
	background-color: var(--_bg);
	color: var(--_fg);
	font-family: var(--font-mono);
	font-size: var(--text-xs);
	font-weight: var(--font-weight-bold);
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
}

.tag--danger {
	--_bg: var(--color-danger-soft);
	--_fg: var(--color-danger);
	--_border: var(--color-danger);
}

.tag__remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	border: 0;
	background: none;
	color: var(--_border);
	font: inherit;
	line-height: 1;
	cursor: pointer;
}

.tag__remove:hover {
	color: var(--_fg);
}

.tag__icon {
	display: block;
	height: 1em;
	width: auto;
	border-radius: var(--radius-xs);
}
}

@layer components{

/*
 * Auth-box
 *
 *   <main class="auth-box">…</main>
 */

.auth-box {
	width: min(80vw, 28rem);
	padding: 28px 32px 36px;
	color: var(--color-text);
	background: var(--color-surface);
	border: var(--border-width) solid var(--color-primary);
	border-radius: 4px 4px 4px 44px;
	box-shadow: var(--shadow-raised);
}
}

@layer components{

/*
 * Close
 *
 * <button class="close" type="button" aria-label="Zavřít"></button>
 * <button class="close close--sm" type="button" aria-label="Zavřít"></button>
 */

.close {
	--_size: var(--close-size, 1.5rem);
	--_icon-size: var(--close-icon-size, 13px);
	--_color: var(--close-color, var(--color-border-strong));
	--_color-hover: var(--close-color-hover, var(--color-text-subtle));
	--_icon: var(--close-icon, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 13'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M3.16058 6.03251L0.000696478 2.87263L2.87332 2.79408e-06L6.0332 3.15989L9.19309 1.78255e-06L12.0657 2.87262L8.90582 6.03251L12.0657 9.19239L9.19308 12.065L6.0332 8.90513L2.87332 12.065L0.000695129 9.19239L3.16058 6.03251ZM4.23781 7.10974L2.15512 9.19243L2.87328 9.91059L6.03316 6.7507L9.19312 9.91051L9.91128 9.19235L6.7514 6.03247L9.91128 2.87259L9.19312 2.15443L6.03316 5.31439L2.87328 2.15451L2.15512 2.87266L5.31501 6.03255L4.23781 7.10974Z'/%3E%3C/svg%3E"));

	flex-shrink: 0;
	width: var(--_size);
	height: var(--_size);
	padding: 0;
	border: 0;
	background-color: var(--_color);
	-webkit-mask: var(--_icon) center / var(--_icon-size) no-repeat;
	mask: var(--_icon) center / var(--_icon-size) no-repeat;
	cursor: pointer;

	&:hover {
		background-color: var(--_color-hover);
	}
}

.close--sm {
	--_size: 1rem;
	--_icon-size: 11px;
}
}

@layer components{

/*
 * Modal
 *
 *   <dialog class="modal">
 *     <header class="modal__header">
 *       <h2 class="modal__title">Title</h2>
 *       <button class="close" aria-label="Zavřít"></button>
 *     </header>
 *     <div class="modal__body">…</div>
 *     <footer class="modal__footer">…buttons…</footer>
 *   </dialog>
 */

.modal {
	margin: auto; /* reset zeroes margins; restore dialog centering */
	width: min(92vw, var(--modal-width, 30rem));
	max-height: 90vh;
	max-height: 90dvh;
	padding: 0;
	border: 0;
	border-radius: var(--radius-lg);
	background-color: var(--color-surface);
	color: var(--color-text);
	box-shadow: var(--shadow-lg);
	opacity: 0;
	scale: 0.96;
	transition:
		opacity var(--duration-base) var(--ease-out),
		scale var(--duration-base) var(--ease-out),
		display var(--duration-base) allow-discrete,
		overlay var(--duration-base) allow-discrete;
}

.modal[open] {
	display: flex;
	flex-direction: column;
	opacity: 1;
	scale: 1;
}

@starting-style {
	.modal[open] {
		opacity: 0;
		scale: 0.96;
	}
}

.modal::backdrop {
	background-color: var(--color-backdrop);
	-webkit-backdrop-filter: var(--modal-backdrop-filter, blur(2.5px));
	backdrop-filter: var(--modal-backdrop-filter, blur(2.5px));
	opacity: 0;
	transition:
		opacity var(--duration-base) var(--ease-out),
		display var(--duration-base) allow-discrete,
		overlay var(--duration-base) allow-discrete;
}

.modal[open]::backdrop {
	opacity: 1;
}

@starting-style {
	.modal[open]::backdrop {
		opacity: 0;
	}
}

.modal__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-md);
	padding: var(--space-md) var(--space-lg);
	border-bottom: var(--border-width) solid var(--color-border);
}

.modal__title {
	margin: 0;
	font-size: var(--text-lg);
	font-weight: var(--font-weight-bold);
}

.modal__body {
	padding: var(--space-lg);
	overflow-y: auto;
}

.modal__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-sm);
	padding: var(--space-md) var(--space-lg);
	border-top: var(--border-width) solid var(--color-border);
}
}

@layer components{

/*
 * Toast
 *
 *   <div class="toast-region" aria-live="polite">
 *     <div class="toast toast--success" role="status">
 *       <div class="toast__content">
 *         <p class="toast__title">Uloženo</p>
 *         <p class="toast__message">Změny byly úspěšně uloženy.</p>
 *       </div>
 *       <button class="close close--sm" type="button" aria-label="Zavřít"></button>
 *     </div>
 *   </div>
 */

.toast-region {
	position: fixed;
	inset-block-start: var(--toast-region-inset, var(--space-lg));
	inset-inline-end: var(--toast-region-inset, var(--space-lg));
	z-index: var(--z-toast);
	display: flex;
	flex-direction: column;
	gap: var(--toast-region-gap, var(--space-sm));
	width: min(92vw, var(--toast-width, 24rem));
	pointer-events: none;
}

.toast {
	--_bg: var(--toast-bg, var(--color-surface));
	--_fg: var(--toast-fg, var(--color-text));
	--_accent: var(--toast-accent, var(--color-border-strong));

	display: flex;
	align-items: flex-start;
	gap: var(--space-sm);
	padding: var(--space-sm) var(--space-md);
	border: var(--border-width) solid var(--color-border);
	border-inline-start: var(--border-width-strong) solid var(--_accent);
	border-radius: var(--radius-md);
	background-color: var(--_bg);
	color: var(--_fg);
	box-shadow: var(--shadow-md);
	pointer-events: auto;
	opacity: 1;
	scale: 1;
	transition:
		opacity var(--duration-base) var(--ease-out),
		scale var(--duration-base) var(--ease-out);

	&.is-leaving {
		opacity: 0;
		scale: 0.96;
	}
}

@starting-style {
	.toast {
		opacity: 0;
		scale: 0.96;
	}
}

.toast__content {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-3xs);
}

.toast__title {
	margin: 0;
	font-size: var(--text-sm);
	font-weight: var(--font-weight-bold);
	line-height: var(--line-snug);
}

.toast__message {
	margin: 0;
	font-size: var(--text-sm);
	color: var(--color-text-muted);
	line-height: var(--line-snug);
	text-wrap: pretty;
}

.toast .close {
	margin-block-start: 0.15rem; /* nudge to align with title cap height */
}

.toast--success {
	--_bg: var(--color-success-soft);
	--_accent: var(--color-success);
}

.toast--danger {
	--_bg: var(--color-danger-soft);
	--_accent: var(--color-danger);
}

.toast--warning {
	--_bg: var(--color-warning-soft);
	--_accent: var(--color-warning);
}

.toast--info {
	--_bg: var(--color-info-soft);
	--_accent: var(--color-info);
}

@media (prefers-reduced-motion: reduce) {
	.toast {
		transition-duration: 1ms;
		scale: 1;
	}
}
}

@layer components{

/*
 * Spinner
 *
 * <span class="spinner" role="status" aria-label="Načítání"></span>
 * <span class="spinner spinner--sm"></span>
 * <span class="spinner spinner--lg"></span>
 */

.spinner,
.button.is-loading::after {
	--_size: var(--spinner-size, 1.25rem);
	--_width: var(--spinner-width, 2px);
	--_color: var(--spinner-color, var(--color-accent));
	--_track: var(--spinner-track, color-mix(in srgb, var(--_color) 20%, transparent));
	--_speed: var(--spinner-speed, var(--duration-slow));

	width: var(--_size);
	height: var(--_size);
	border: var(--_width) solid var(--_track);
	border-top-color: var(--_color);
	border-radius: var(--radius-round);
	animation: spinner-spin var(--_speed) linear infinite;
}

.spinner {
	display: inline-block;
}

.spinner--sm {
	--_size: 0.875rem;
}

.spinner--lg {
	--_size: 2rem;
	--_width: 3px;
}

@keyframes spinner-spin {
	to { transform: rotate(1turn); }
}

@media (prefers-reduced-motion: reduce) {
	.spinner,
	.button.is-loading::after {
		animation-duration: calc(var(--_speed) * 4);
	}
}
}

@layer screens{

/*
 * Auth screen — layout only (card anchoring, side help, corner switchers,
 * form column). Element visuals live in components.
 *
 *   <body class="auth-screen">
 *     <nav class="auth-langs tabs">language switcher</nav>
 *     <div class="auth-layout">
 *       <main class="auth-box">
 *         <h1 class="auth-logo"></h1>
 *         <p class="auth-intro"></p>
 *         <nav class="auth-methods tabs">login method switcher (optional)…</nav>
 *         <form class="grid"> .field/.input, .checkbox, .button </form>
 *       </main>
 *       <aside class="auth-aside">…</aside>
 *     </div>
 *     <button class="auth-theme">…theme toggle…</button>
 *   </body>
 */

.auth-screen {
	--color-bg: var(--neutral-400);
	--color-aside: var(--neutral-800);
	--auth-offset-block: 10vw;
	--auth-offset-inline: 14.5vw;
	--shadow-raised-edge: var(--neutral-950);

	display: flex;
	align-items: center;
	align-items: safe center;
	padding: var(--space-2xl) var(--space-lg);
}

.auth-layout {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-lg);
	width: 100%;
}

@media (min-width: 48rem) {
	.auth-screen {
		align-items: center;
		align-items: safe center;
		padding: var(--auth-offset-block, var(--space-2xl)) var(--space-xl) var(--auth-offset-block, var(--space-2xl)) var(--auth-offset-inline);
	}

	.auth-layout {
		flex-direction: row;
		align-items: flex-end;
		gap: var(--space-2xl);
		width: max-content;
		max-width: 100%;
	}
}

.auth-logo {
	margin-bottom: var(--space-md);
	font-size: var(--text-lg);
	font-weight: var(--font-weight-bold);
}

.auth-intro {
	margin-top: 0;
	margin-bottom: var(--space-lg);
}

.auth-methods {
	margin-bottom: var(--space-lg);
}

.auth-aside {
	color: var(--color-aside);
	padding-bottom: var(--space-sm);
}

.auth-langs {
	position: fixed;
	top: var(--space-lg);
	right: var(--space-lg);
	z-index: var(--z-sticky);
}

.auth-theme {
	position: fixed;
	bottom: var(--space-lg);
	right: var(--space-lg);
	z-index: var(--z-sticky);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	border-radius: var(--radius-round);
}

.auth-box button[type="submit"] {
	font-weight: var(--font-weight-bold);
}
}

@layer utilities{

.visually-hidden:not(:focus):not(:active) {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	border: 0;
	overflow: hidden;
	white-space: nowrap;
	clip-path: inset(50%);
}

.container {
	width: 100%;
	max-width: var(--container-max);
	margin-left: auto;
	margin-right: auto;
	padding-left: var(--content-padding);
	padding-right: var(--content-padding);
}

.flow > * + * {
	margin-top: var(--flow-space, var(--space-md));
}

.raised-shadow { box-shadow: var(--shadow-raised); }

.text-muted { color: var(--color-text-muted); }
.text-subtle { color: var(--color-text-subtle); }
.text-truncate {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

[hidden] { display: none !important; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9AbGliZGV2cy9hZG1pbi1zdHlsZS9hc3NldHMvbWFpbi5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2Jhc2UvcmVzZXQuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy90b2tlbnMvcGFsZXR0ZS5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL3Rva2Vucy90b2tlbnMuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9iYXNlL2Jhc2UuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9sYXlvdXQvZ3JpZC5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvYnV0dG9uLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AbGliZGV2cy9hZG1pbi1zdHlsZS9hc3NldHMvY29tcG9uZW50cy9rYmQuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL2F2YXRhci5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvdGFicy5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvZmllbGQuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL2ZpZWxkLW1hcmsuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL2lucHV0LmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AbGliZGV2cy9hZG1pbi1zdHlsZS9hc3NldHMvY29tcG9uZW50cy9pbnB1dC1ncm91cC5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvdGV4dGFyZWEuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL3NlbGVjdC5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvY2hlY2tib3guY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL3JhZGlvLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AbGliZGV2cy9hZG1pbi1zdHlsZS9hc3NldHMvY29tcG9uZW50cy9zd2l0Y2guY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL3RhZy5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvYXV0aC1ib3guY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL2Nsb3NlLmNzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AbGliZGV2cy9hZG1pbi1zdHlsZS9hc3NldHMvY29tcG9uZW50cy9tb2RhbC5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGxpYmRldnMvYWRtaW4tc3R5bGUvYXNzZXRzL2NvbXBvbmVudHMvdG9hc3QuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9jb21wb25lbnRzL3NwaW5uZXIuY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy9zY3JlZW5zL2F1dGguY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BsaWJkZXZzL2FkbWluLXN0eWxlL2Fzc2V0cy91dGlsaXRpZXMvdXRpbGl0aWVzLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrRUFBa0U7O0FDQWxFOztBQUFBOzs7Q0FHQyxzQkFBc0I7QUFDdkI7O0FBRUE7Q0FDQyxTQUFTO0FBQ1Y7O0FBRUE7Q0FDQyw4QkFBOEI7Q0FDOUIsc0JBQXNCO0NBQ3RCLGtDQUFrQztDQUNsQyxXQUFXO0FBQ1o7O0FBRUE7Q0FDQyxpQkFBaUI7Q0FDakIsa0JBQWtCO0NBQ2xCLGtCQUFrQjtDQUNsQixtQ0FBbUM7Q0FDbkMsa0NBQWtDO0FBQ25DOztBQUVBOzs7OztDQUtDLGNBQWM7Q0FDZCxlQUFlO0FBQ2hCOztBQUVBOzs7O0NBSUMsYUFBYTtDQUNiLGNBQWM7Q0FDZCx1QkFBdUI7QUFDeEI7O0FBRUE7Q0FDQyxnQkFBZ0I7Q0FDaEIsWUFBWTtDQUNaLGVBQWU7QUFDaEI7O0FBRUE7Ozs7Ozs7Q0FPQyx5QkFBeUI7QUFDMUI7O0FBRUE7Ozs7OztDQU1DLGtCQUFrQjtDQUNsQixvQkFBb0I7QUFDckI7O0FBRUE7O0NBRUMsZ0JBQWdCO0NBQ2hCLFVBQVU7QUFDWDs7QUFFQTtDQUNDLGNBQWM7QUFDZjs7QUFFQTtDQUNDLHlCQUF5QjtDQUN6QixpQkFBaUI7QUFDbEI7O0FBRUE7Q0FDQzs7O0VBR0MscUNBQXFDO0VBQ3JDLHVDQUF1QztFQUN2QyxzQ0FBc0M7RUFDdEMsZ0NBQWdDO0NBQ2pDO0FBQ0Q7QUFDQTs7QUM5RkE7QUFBQSw2RUFBNkU7QUFDN0U7Q0FDQyxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLHFCQUFxQjtDQUNyQixxQkFBcUI7Q0FDckIsc0JBQXNCO0NBQ3RCLHNCQUFzQjtDQUN0QixzQkFBc0I7Q0FDdEIsc0JBQXNCO0NBQ3RCLHNCQUFzQjtDQUN0QixzQkFBc0I7Q0FDdEIsc0JBQXNCO0NBQ3RCLHNCQUFzQjtDQUN0QixzQkFBc0I7Q0FDdEIsc0JBQXNC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ekI7O0FBRUE7Q0FDQyxlQUFlO0NBQ2YsdUJBQXVCO0NBQ3ZCLHNCQUFzQjtDQUN0Qix3QkFBd0I7Q0FDeEIsb0JBQW9CO0NBQ3BCLG1CQUFtQjtDQUNuQix1QkFBdUI7Q0FDdkIsY0FBYztDQUNkLGVBQWU7Q0FDZixrQ0FBa0M7QUFDbkM7O0FBRUE7Q0FDQyxvQ0FBb0M7QUFDckM7QUFDQTs7QUNuR0E7O0FBQUE7Q0FDQyxrQkFBa0I7Q0FDbEIsVUFBVTtDQUNWLFdBQVc7Q0FDWCxZQUFZO0NBQ1osVUFBVTtDQUNWLFNBQVM7Q0FDVCxnQkFBZ0I7Q0FDaEIsbUJBQW1CO0NBQ25CLHFCQUFxQjtBQUN0Qjs7QUFFQTtDQUNDLFdBQVc7Q0FDWCwrQkFBK0I7Q0FDL0IsaUJBQWlCO0NBQ2pCLGtCQUFrQjtDQUNsQixvQ0FBb0M7Q0FDcEMscUNBQXFDO0FBQ3RDOztBQUVBO0NBQ0MsOENBQThDO0FBQy9DOztBQUVBLGlCQUFpQixnQ0FBZ0MsRUFBRTs7QUFFbkQsY0FBYyw4QkFBOEIsRUFBRTtBQUM5QyxlQUFlLCtCQUErQixFQUFFO0FBQ2hEO0NBQ0MsZ0JBQWdCO0NBQ2hCLHVCQUF1QjtDQUN2QixtQkFBbUI7QUFDcEI7O0FBRUEsV0FBVyx3QkFBd0IsRUFBRTtBQUNyQyIsImZpbGUiOiJhdXRoLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBsYXllciByZXNldCwgdG9rZW5zLCBiYXNlLCBsYXlvdXQsIGNvbXBvbmVudHMsIHNjcmVlbnMsIHV0aWxpdGllcztcblxuQGltcG9ydCBcIi4vYmFzZS9yZXNldC5jc3NcIiBsYXllcihyZXNldCk7XG5cbkBpbXBvcnQgXCIuL3Rva2Vucy9wYWxldHRlLmNzc1wiIGxheWVyKHRva2Vucyk7XG5AaW1wb3J0IFwiLi90b2tlbnMvdG9rZW5zLmNzc1wiIGxheWVyKHRva2Vucyk7XG5cbkBpbXBvcnQgXCIuL2Jhc2UvYmFzZS5jc3NcIiBsYXllcihiYXNlKTtcblxuQGltcG9ydCBcIi4vbGF5b3V0L2dyaWQuY3NzXCIgbGF5ZXIobGF5b3V0KTtcblxuQGltcG9ydCBcIi4vY29tcG9uZW50cy9idXR0b24uY3NzXCIgbGF5ZXIoY29tcG9uZW50cyk7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL2tiZC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvYXZhdGFyLmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy90YWJzLmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9maWVsZC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvZmllbGQtbWFyay5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvaW5wdXQuY3NzXCIgbGF5ZXIoY29tcG9uZW50cyk7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL2lucHV0LWdyb3VwLmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy90ZXh0YXJlYS5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvc2VsZWN0LmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9jaGVja2JveC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvcmFkaW8uY3NzXCIgbGF5ZXIoY29tcG9uZW50cyk7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL3N3aXRjaC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvdGFnLmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy9hdXRoLWJveC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvY2xvc2UuY3NzXCIgbGF5ZXIoY29tcG9uZW50cyk7XG5AaW1wb3J0IFwiLi9jb21wb25lbnRzL21vZGFsLmNzc1wiIGxheWVyKGNvbXBvbmVudHMpO1xuQGltcG9ydCBcIi4vY29tcG9uZW50cy90b2FzdC5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcbkBpbXBvcnQgXCIuL2NvbXBvbmVudHMvc3Bpbm5lci5jc3NcIiBsYXllcihjb21wb25lbnRzKTtcblxuQGltcG9ydCBcIi4vc2NyZWVucy9hdXRoLmNzc1wiIGxheWVyKHNjcmVlbnMpO1xuXG5AaW1wb3J0IFwiLi91dGlsaXRpZXMvdXRpbGl0aWVzLmNzc1wiIGxheWVyKHV0aWxpdGllcyk7XG5cbiIsIiosXG4qOjpiZWZvcmUsXG4qOjphZnRlciB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbioge1xuXHRtYXJnaW46IDA7XG59XG5cbmh0bWwge1xuXHQtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7XG5cdHRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWJhc2UsIDEuNSk7XG5cdHRhYi1zaXplOiA0O1xufVxuXG5ib2R5IHtcblx0bWluLWhlaWdodDogMTAwdmg7XG5cdG1pbi1oZWlnaHQ6IDEwMHN2aDtcblx0bWluLWhlaWdodDogMTAwZHZoO1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0dGV4dC1yZW5kZXJpbmc6IG9wdGltaXplbGVnaWJpbGl0eTtcbn1cblxuaW1nLFxucGljdHVyZSxcbnZpZGVvLFxuY2FudmFzLFxuc3ZnIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1heC13aWR0aDogMTAwJTtcbn1cblxuaW5wdXQsXG5idXR0b24sXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG5cdGZvbnQ6IGluaGVyaXQ7XG5cdGNvbG9yOiBpbmhlcml0O1xuXHRsZXR0ZXItc3BhY2luZzogaW5oZXJpdDtcbn1cblxuYnV0dG9uIHtcblx0YmFja2dyb3VuZDogbm9uZTtcblx0Ym9yZGVyOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbnAsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuXHRvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuXHRmb250LXNpemU6IGluaGVyaXQ7XG5cdGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG51bFtyb2xlPVwibGlzdFwiXSxcbm9sW3JvbGU9XCJsaXN0XCJdIHtcblx0bGlzdC1zdHlsZTogbm9uZTtcblx0cGFkZGluZzogMDtcbn1cblxuYSB7XG5cdGNvbG9yOiBpbmhlcml0O1xufVxuXG50YWJsZSB7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdGJvcmRlci1zcGFjaW5nOiAwO1xufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHQqLFxuXHQqOjpiZWZvcmUsXG5cdCo6OmFmdGVyIHtcblx0XHRhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50O1xuXHRcdGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDtcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDtcblx0XHRzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDtcblx0fVxufVxuIiwiLyogVGllciAxIOKAlCBwcmltaXRpdmVzLiBSYXcgbGl0ZXJhbHMgb25seTsgbmV2ZXIgcmVmZXJlbmNlIGZyb20gY29tcG9uZW50cy4gKi9cbjpyb290IHtcblx0LyogTmV1dHJhbHMgKi9cblx0LS1uZXV0cmFsLTA6ICNmZmZmZmY7XG5cdC0tbmV1dHJhbC01MDogI2YyZjJmMjtcblx0LS1uZXV0cmFsLTc1OiAjZWVlZWVjO1xuXHQtLW5ldXRyYWwtMTAwOiAjZTZlNmU2O1xuXHQtLW5ldXRyYWwtMjAwOiAjZDlkOWQ5O1xuXHQtLW5ldXRyYWwtMzAwOiAjY2JjYmNiO1xuXHQtLW5ldXRyYWwtNDAwOiAjYjNiM2IzO1xuXHQtLW5ldXRyYWwtNTAwOiAjODA4MDgwO1xuXHQtLW5ldXRyYWwtNjAwOiAjNjY2NjY2O1xuXHQtLW5ldXRyYWwtNzAwOiAjNGQ0ZDRkO1xuXHQtLW5ldXRyYWwtODAwOiAjMzMzMzMzO1xuXHQtLW5ldXRyYWwtOTAwOiAjMWExYTFhO1xuXHQtLW5ldXRyYWwtOTUwOiAjMGQwZDBkO1xuXHQtLWJsYWNrOiAjMDAwMDAwO1xuXG5cdC8qIEJyYW5kICYgc3RhdHVzIHNlZWRzICovXG5cdC0tb3JhbmdlOiAjY2M1ODA0OyAvKiBwcmltYXJ5ICovXG5cdC0tZ3JlZW46ICMwMzgzMTA7ICAvKiBzdWNjZXNzICovXG5cdC0tcmVkOiAjY2YyZTJlOyAgICAvKiBkYW5nZXIgKi9cblx0LS1hbWJlcjogI2UwODUxYjsgIC8qIHdhcm5pbmcgKi9cblx0LS1ibHVlOiAjMmY2ZmViOyAgIC8qIGluZm8gKi9cblxuXHQtLXNsYXRlOiAjMmMzNDM1OyAgLyogc2lkZWJhciAqL1xufVxuIiwiOnJvb3Qge1xuXHQvKiBTdXJmYWNlcyAmIHRleHQgKi9cblx0LS1jb2xvci1iZzogdmFyKC0tbmV1dHJhbC01MCk7XG5cdC0tY29sb3Itc3VyZmFjZTogdmFyKC0tbmV1dHJhbC0wKTtcblx0LS1jb2xvci1zdXJmYWNlLXN1bmtlbjogdmFyKC0tbmV1dHJhbC01MCk7XG5cdC0tY29sb3Itc3VyZmFjZS1yYWlzZWQ6IHZhcigtLW5ldXRyYWwtMCk7XG5cdC0tY29sb3Itc3VyZmFjZS1ob3ZlcjogdmFyKC0tbmV1dHJhbC01MCk7XG5cdC0tY29sb3Itc3VyZmFjZS1hY3RpdmU6IHZhcigtLW5ldXRyYWwtMTAwKTtcblx0LS1jb2xvci1maWxsOiB2YXIoLS1uZXV0cmFsLTEwMCk7XG5cdC0tY29sb3ItZmlsbC1ob3ZlcjogdmFyKC0tbmV1dHJhbC0yMDApO1xuXHQtLWNvbG9yLWZpbGwtYWN0aXZlOiB2YXIoLS1uZXV0cmFsLTMwMCk7XG5cdC0tY29sb3ItdG9vbHRpcC1iZzogdmFyKC0tbmV1dHJhbC04MDApO1xuXG5cdC0tY29sb3ItdGV4dDogdmFyKC0tbmV1dHJhbC05MDApO1xuXHQtLWNvbG9yLXRleHQtbXV0ZWQ6IHZhcigtLW5ldXRyYWwtNjAwKTtcblx0LS1jb2xvci10ZXh0LXN1YnRsZTogdmFyKC0tbmV1dHJhbC01MDApO1xuXHQtLWNvbG9yLXRleHQtaW52ZXJzZTogdmFyKC0tbmV1dHJhbC0wKTtcblxuXHQtLWNvbG9yLWJvcmRlcjogdmFyKC0tbmV1dHJhbC0yMDApO1xuXHQtLWNvbG9yLWJvcmRlci1zdHJvbmc6IHZhcigtLW5ldXRyYWwtMzAwKTtcblx0LS1jb2xvci1ib3JkZXItbGlnaHQ6IHZhcigtLW5ldXRyYWwtNzUpO1xuXG5cdC8qIFNlZWRzICovXG5cdC0tY29sb3ItcHJpbWFyeTogdmFyKC0tb3JhbmdlKTtcblx0LS1jb2xvci1zdWNjZXNzOiB2YXIoLS1ncmVlbik7XG5cdC0tY29sb3ItZGFuZ2VyOiB2YXIoLS1yZWQpO1xuXHQtLWNvbG9yLXdhcm5pbmc6IHZhcigtLWFtYmVyKTtcblx0LS1jb2xvci1pbmZvOiB2YXIoLS1ibHVlKTtcblxuXHQvKiBQcmltYXJ5ICovXG5cdC0tY29sb3ItcHJpbWFyeS1ob3Zlcjogb2tsY2goZnJvbSB2YXIoLS1jb2xvci1wcmltYXJ5KSBjYWxjKGwgLSAwLjA3NSkgY2FsYyhjIC0gMC4wMikgaCk7XG5cdC0tY29sb3ItcHJpbWFyeS1hY3RpdmU6IG9rbGNoKGZyb20gdmFyKC0tY29sb3ItcHJpbWFyeSkgY2FsYyhsIC0gMC4xNikgY2FsYyhjIC0gMC4wNSkgaCk7XG5cdC0tY29sb3ItcHJpbWFyeS1zb2Z0OiBva2xjaChmcm9tIHZhcigtLWNvbG9yLXByaW1hcnkpIDAuOTUgMC4wMyBoKTtcblx0LS1jb2xvci1vbi1wcmltYXJ5OiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXG5cdC8qIEZvcm0gY29udHJvbHMgKGJ1dHRvbnMsIGNoZWNrYm94LCByYWRpbykgKi9cblx0LS1jb2xvci1mb3JtOiB2YXIoLS1icmFuZC1mb3JtLCB2YXIoLS1ncmVlbikpO1xuXHQtLWNvbG9yLWZvcm0tc29mdDogb2tsY2goZnJvbSB2YXIoLS1jb2xvci1mb3JtKSAwLjk1IDAuMDMgaCk7XG5cdC0tY29sb3Itb24tZm9ybTogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcblx0LS1jb2xvci1mb3JtLWJvcmRlcjogdmFyKC0tY29sb3ItYm9yZGVyLXN0cm9uZyk7XG5cblx0LyogQWNjZW50IChmb2N1cy9oaWdobGlnaHQpIOKAlCBwcmltYXJ5IHJvdGF0ZWQgYnkgLS1hY2NlbnQtaHVlLXNoaWZ0wrAgKi9cblx0LS1hY2NlbnQtaHVlLXNoaWZ0OiAxMDA7XG5cdC0tY29sb3ItYWNjZW50OiBva2xjaChmcm9tIHZhcigtLWNvbG9yLXByaW1hcnkpIGwgYyBjYWxjKGggKyB2YXIoLS1hY2NlbnQtaHVlLXNoaWZ0KSkpO1xuXHQtLWNvbG9yLWFjY2VudC1zb2Z0OiBva2xjaChmcm9tIHZhcigtLWNvbG9yLWFjY2VudCkgMC45NSAwLjA1IGgpO1xuXHQtLWNvbG9yLW9uLWFjY2VudDogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcblxuXHQvKiBEYW5nZXIgKi9cblx0LS1jb2xvci1kYW5nZXItaG92ZXI6IG9rbGNoKGZyb20gdmFyKC0tY29sb3ItZGFuZ2VyKSBjYWxjKGwgLSAwLjA3NSkgY2FsYyhjIC0gMC4wMikgaCk7XG5cdC0tY29sb3ItZGFuZ2VyLXNvZnQ6IG9rbGNoKGZyb20gdmFyKC0tY29sb3ItZGFuZ2VyKSAwLjk1IDAuMDMgaCk7XG5cdC0tY29sb3Itb24tZGFuZ2VyOiB2YXIoLS1jb2xvci10ZXh0LWludmVyc2UpO1xuXG5cdC8qIFN1Y2Nlc3MgKi9cblx0LS1jb2xvci1zdWNjZXNzLWhvdmVyOiBva2xjaChmcm9tIHZhcigtLWNvbG9yLXN1Y2Nlc3MpIGNhbGMobCAtIDAuMDc1KSBjYWxjKGMgLSAwLjAyKSBoKTtcblx0LS1jb2xvci1zdWNjZXNzLXNvZnQ6IG9rbGNoKGZyb20gdmFyKC0tY29sb3Itc3VjY2VzcykgMC45NSAwLjAzIGgpO1xuXHQtLWNvbG9yLW9uLXN1Y2Nlc3M6IHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSk7XG5cblx0LyogV2FybmluZyAqL1xuXHQtLWNvbG9yLXdhcm5pbmctaG92ZXI6IG9rbGNoKGZyb20gdmFyKC0tY29sb3Itd2FybmluZykgY2FsYyhsIC0gMC4wNzUpIGNhbGMoYyAtIDAuMDIpIGgpO1xuXHQtLWNvbG9yLXdhcm5pbmctc29mdDogb2tsY2goZnJvbSB2YXIoLS1jb2xvci13YXJuaW5nKSAwLjk1IDAuMDMgaCk7XG5cdC0tY29sb3Itb24td2FybmluZzogdmFyKC0tY29sb3ItdGV4dC1pbnZlcnNlKTtcblxuXHQvKiBJbmZvICovXG5cdC0tY29sb3ItaW5mby1ob3Zlcjogb2tsY2goZnJvbSB2YXIoLS1jb2xvci1pbmZvKSBjYWxjKGwgLSAwLjA3NSkgY2FsYyhjIC0gMC4wMikgaCk7XG5cdC0tY29sb3ItaW5mby1zb2Z0OiBva2xjaChmcm9tIHZhcigtLWNvbG9yLWluZm8pIDAuOTUgMC4wMyBoKTtcblxuXHQvKiBJbnRlcmZhY2UgKi9cblx0LS1jb2xvci1zaWRlYmFyLWJnOiB2YXIoLS1zbGF0ZSk7XG5cdC0tY29sb3ItYmFja2Ryb3A6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1ibGFjaykgMzAlLCB0cmFuc3BhcmVudCk7XG5cdC0tY29sb3ItZm9jdXMtcmluZzogdmFyKC0tY29sb3ItYWNjZW50KTtcblxuXHQvKiBTcGFjaW5nICovXG5cdC0tc3BhY2UtM3hzOiAwLjEyNXJlbTsgLyogIDJweCAqL1xuXHQtLXNwYWNlLTJ4czogMC4yNXJlbTsgIC8qICA0cHggKi9cblx0LS1zcGFjZS14czogMC41cmVtOyAgICAvKiAgOHB4ICovXG5cdC0tc3BhY2Utc206IDAuNzVyZW07ICAgLyogMTJweCAqL1xuXHQtLXNwYWNlLW1kOiAxcmVtOyAgICAgIC8qIDE2cHggKi9cblx0LS1zcGFjZS1sZzogMS41cmVtOyAgICAvKiAyNHB4ICovXG5cdC0tc3BhY2UteGw6IDJyZW07ICAgICAgLyogMzJweCAqL1xuXHQtLXNwYWNlLTJ4bDogM3JlbTsgICAgIC8qIDQ4cHggKi9cblx0LS1zcGFjZS0zeGw6IDRyZW07ICAgICAvKiA2NHB4ICovXG5cblx0LyogVHlwb2dyYXBoeSAqL1xuXHQtLWZvbnQtc2FuczogXCJOb3RvIFNhbnNcIiwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBcIlNlZ29lIFVJXCIsIHJvYm90bywgc2Fucy1zZXJpZjtcblx0LS1mb250LW1vbm86IHVpLW1vbm9zcGFjZSwgXCJTRiBNb25vXCIsIFwiQ2FzY2FkaWEgQ29kZVwiLCBcIkZpcmEgQ29kZVwiLCBtb25vc3BhY2U7XG5cblx0LS1mb250LXdlaWdodC1ub3JtYWw6IDQwMDtcblx0LS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcblx0LS1mb250LXdlaWdodC1ib2xkOiA3MDA7XG5cblx0LS1saW5lLXRpZ2h0OiAxLjI7XG5cdC0tbGluZS1zbnVnOiAxLjM1O1xuXHQtLWxpbmUtYmFzZTogMS41O1xuXHQtLWxpbmUtbG9vc2U6IDEuNztcblxuXHQtLXRleHQteHM6IDAuNzVyZW07ICAgIC8qIDEycHggKi9cblx0LS10ZXh0LXNtOiAwLjg3NXJlbTsgICAvKiAxNHB4ICovXG5cdC0tdGV4dC1iYXNlOiAxcmVtOyAgICAgLyogMTZweCAqL1xuXHQtLXRleHQtbGc6IDEuMTI1cmVtOyAgIC8qIDE4cHggKi9cblx0LS10ZXh0LXhsOiAxLjI1cmVtOyAgICAvKiAyMHB4ICovXG5cdC0tdGV4dC0yeGw6IGNsYW1wKDEuNXJlbSwgMS4zcmVtICsgMXZ3LCAxLjg3NXJlbSk7XG5cdC0tdGV4dC0zeGw6IGNsYW1wKDEuODc1cmVtLCAxLjVyZW0gKyAxLjh2dywgMi41cmVtKTtcblxuXHQvKiBSYWRpdXMgKi9cblx0LS1yYWRpdXMteHM6IDJweDtcblx0LS1yYWRpdXMtc206IDRweDtcblx0LS1yYWRpdXMtbWQ6IDZweDtcblx0LS1yYWRpdXMtbGc6IDhweDtcblx0LS1yYWRpdXMteGw6IDEycHg7XG5cdC0tcmFkaXVzLXBpbGw6IDk5OXB4O1xuXHQtLXJhZGl1cy1yb3VuZDogNTAlO1xuXG5cdC8qIEJvcmRlcnMgKi9cblx0LS1ib3JkZXItd2lkdGg6IDFweDtcblx0LS1ib3JkZXItd2lkdGgtc3Ryb25nOiAycHg7XG5cdC0ta2V5Y2FwLWVkZ2U6IDAgMnB4IDAgMDtcblxuXHQvKiBTaGFkb3dzICovXG5cdC0tY29sb3Itc2hhZG93OiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmV1dHJhbC03MDApIDQxJSwgdHJhbnNwYXJlbnQpO1xuXHQtLXNoYWRvdy1zbTogMCAxcHggMnB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1uZXV0cmFsLTk1MCkgNyUsIHRyYW5zcGFyZW50KTtcblx0LS1zaGFkb3ctbWQ6IDAgMnB4IDhweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmV1dHJhbC05NTApIDExJSwgdHJhbnNwYXJlbnQpO1xuXHQtLXNoYWRvdy1sZzogMCA4cHggMjRweCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tbmV1dHJhbC05NTApIDE1JSwgdHJhbnNwYXJlbnQpO1xuXHQtLXNoYWRvdy1yYWlzZWQtZWRnZTogdmFyKC0tY29sb3ItcHJpbWFyeSk7XG5cdC0tc2hhZG93LXJhaXNlZDpcblx0XHR2YXIoLS1rZXljYXAtZWRnZSkgdmFyKC0tc2hhZG93LXJhaXNlZC1lZGdlKSxcblx0XHR2YXIoLS1zaGFkb3ctcmFpc2VkLWRyb3AsIDEycHgpIHZhcigtLXNoYWRvdy1yYWlzZWQtZHJvcCwgMTJweCkgMCAwIHZhcigtLWNvbG9yLXNoYWRvdyk7XG5cblx0LyogWi1pbmRleCAqL1xuXHQtLXotYmFzZTogMDtcblx0LS16LXN0aWNreTogMTAwO1xuXHQtLXotc2lkZWJhcjogMjAwO1xuXHQtLXotZHJvcGRvd246IDEwMDA7XG5cdC0tei1vdmVybGF5OiAxMTAwO1xuXHQtLXotbW9kYWw6IDEyMDA7XG5cdC0tei1wb3BvdmVyOiAxMzAwO1xuXHQtLXotdG9hc3Q6IDE0MDA7XG5cdC0tei10b29sdGlwOiAxNTAwO1xuXG5cdC8qIE1vdGlvbiAqL1xuXHQtLWR1cmF0aW9uLWZhc3Q6IDEyMG1zO1xuXHQtLWR1cmF0aW9uLWJhc2U6IDIwMG1zO1xuXHQtLWR1cmF0aW9uLXNsb3c6IDMyMG1zO1xuXHQtLWVhc2Utc3RhbmRhcmQ6IGN1YmljLWJlemllcigwLjIsIDAsIDAsIDEpO1xuXHQtLWVhc2Utb3V0OiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKTtcblx0LS1lYXNlLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTtcblxuXHQvKiBMYXlvdXQgKi9cblx0LS1zaWRlYmFyLXdpZHRoOiAyMDBweDtcblx0LS1jb250YWluZXItbWF4OiAxMjgwcHg7XG5cdC0tY29udGVudC1wYWRkaW5nOiB2YXIoLS1zcGFjZS1sZyk7XG5cblx0LyogQnJlYWtwb2ludHMgKG1vYmlsZS1maXJzdCkgKi9cblx0LS1icC1zbTogNDByZW07IC8qIDY0MHB4ICovXG5cdC0tYnAtbWQ6IDQ4cmVtOyAvKiA3NjhweCAqL1xuXHQtLWJwLWxnOiA2NHJlbTsgLyogMTAyNHB4ICovXG5cdC0tYnAteGw6IDgwcmVtOyAvKiAxMjgwcHggKi9cbn1cbiIsImh0bWwge1xuXHRmb250LWZhbWlseTogdmFyKC0tZm9udC1zYW5zKTtcblx0Zm9udC1zaXplOiAxMDAlO1xufVxuXG5ib2R5IHtcblx0bWFyZ2luOiAwO1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iZyk7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcblx0Zm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc2Fucyk7IC8qIHJlLWNvbnN1bWUgc28gZWxlbWVudC1zY29wZWQgLS1mb250LXNhbnMgb3ZlcnJpZGVzICh0aGVtZXMpIGFwcGx5ICovXG5cdGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWJhc2UpO1xufVxuXG4vKiBUeXBvZ3JhcGh5ICovXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLXRpZ2h0KTtcblx0dGV4dC13cmFwOiBiYWxhbmNlO1xufVxuXG5oMSB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC0zeGwpOyB9XG5oMiB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC0yeGwpOyB9XG5oMyB7IGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14bCk7IH1cbmg0IHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LWxnKTsgfVxuaDUgeyBmb250LXNpemU6IHZhcigtLXRleHQtYmFzZSk7IH1cbmg2IHsgZm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTsgfVxuXG5wIHtcblx0dGV4dC13cmFwOiBwcmV0dHk7XG59XG5cbnNtYWxsIHtcblx0Zm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbn1cblxuc3Ryb25nLFxuYiB7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbn1cblxuY29kZSxcbmtiZCxcbnNhbXAsXG5wcmUge1xuXHRmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcblx0Zm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcbn1cblxuLyogTGlua3MgKi9cbmEge1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0Jjpob3ZlciB7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG59XG5cbmhyIHtcblx0Ym9yZGVyOiBub25lO1xuXHRib3JkZXItdG9wOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdG1hcmdpbi10b3A6IHZhcigtLXNwYWNlLW1kKTtcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtbWQpO1xufVxuXG4vKiBGb3JtcyAqL1xuaW5wdXQsXG50ZXh0YXJlYSxcbnNlbGVjdCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG59XG5cbjo6cGxhY2Vob2xkZXIge1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpO1xuXHRvcGFjaXR5OiAxO1xufVxuXG50ZXh0YXJlYSB7XG5cdHJlc2l6ZTogdmVydGljYWw7XG59XG5cbjpmb2N1cyxcbjpmb2N1cy12aXNpYmxlIHtcblx0b3V0bGluZTogbm9uZTtcbn1cblxuOjpzZWxlY3Rpb24ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tY29sb3ItYWNjZW50KSAzMCUsIHRyYW5zcGFyZW50KTtcbn1cbiIsIi8qXG4gKiBHcmlkIOKAlCBnZW5lcmljIDEyLWNvbHVtbiBsYXlvdXQgZ3JpZC5cbiAqXG4gKiAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+bWFpbjwvZGl2PlxuICogICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBvZmZzZXQtNFwiPmFzaWRlPC9kaXY+XG4gKiAgIDwvZGl2PlxuICpcbiAqIFNwYW5zOiAuY29sLTHigKYxMiDCtyAuY29sLWZ1bGwgwrcgT2Zmc2V0OiAub2Zmc2V0LTHigKYxMVxuICogQ29uZmlnOiAtLWNvbHMgKGRlZmF1bHQgMTIpIMK3IC0tZ3JpZC1yb3ctZ2FwIMK3IC0tZ3JpZC1jb2wtZ2FwXG4gKi9cblxuLmdyaWQge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCh2YXIoLS1jb2xzLCAxMiksIG1pbm1heCgwLCAxZnIpKTtcblx0Z2FwOiB2YXIoLS1ncmlkLXJvdy1nYXAsIHZhcigtLXNwYWNlLW1kKSkgdmFyKC0tZ3JpZC1jb2wtZ2FwLCB2YXIoLS1zcGFjZS1sZykpO1xuXHRjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7XG59XG5cbi5ncmlkID4gKiB7XG5cdGdyaWQtY29sdW1uOiB2YXIoLS1jb2wtc3RhcnQsIGF1dG8pIC8gc3BhbiB2YXIoLS1jb2wtc3BhbiwgdmFyKC0tY29scywgMTIpKTtcbn1cblxuLmNvbC0xIHsgLS1jb2wtc3BhbjogMTsgfVxuLmNvbC0yIHsgLS1jb2wtc3BhbjogMjsgfVxuLmNvbC0zIHsgLS1jb2wtc3BhbjogMzsgfVxuLmNvbC00IHsgLS1jb2wtc3BhbjogNDsgfVxuLmNvbC01IHsgLS1jb2wtc3BhbjogNTsgfVxuLmNvbC02IHsgLS1jb2wtc3BhbjogNjsgfVxuLmNvbC03IHsgLS1jb2wtc3BhbjogNzsgfVxuLmNvbC04IHsgLS1jb2wtc3BhbjogODsgfVxuLmNvbC05IHsgLS1jb2wtc3BhbjogOTsgfVxuLmNvbC0xMCB7IC0tY29sLXNwYW46IDEwOyB9XG4uY29sLTExIHsgLS1jb2wtc3BhbjogMTE7IH1cbi5jb2wtMTIgeyAtLWNvbC1zcGFuOiAxMjsgfVxuLmNvbC1mdWxsIHsgZ3JpZC1jb2x1bW46IDEgLyAtMTsgfVxuXG4ub2Zmc2V0LTEgeyAtLWNvbC1zdGFydDogMjsgfVxuLm9mZnNldC0yIHsgLS1jb2wtc3RhcnQ6IDM7IH1cbi5vZmZzZXQtMyB7IC0tY29sLXN0YXJ0OiA0OyB9XG4ub2Zmc2V0LTQgeyAtLWNvbC1zdGFydDogNTsgfVxuLm9mZnNldC01IHsgLS1jb2wtc3RhcnQ6IDY7IH1cbi5vZmZzZXQtNiB7IC0tY29sLXN0YXJ0OiA3OyB9XG4ub2Zmc2V0LTcgeyAtLWNvbC1zdGFydDogODsgfVxuLm9mZnNldC04IHsgLS1jb2wtc3RhcnQ6IDk7IH1cbi5vZmZzZXQtOSB7IC0tY29sLXN0YXJ0OiAxMDsgfVxuLm9mZnNldC0xMCB7IC0tY29sLXN0YXJ0OiAxMTsgfVxuLm9mZnNldC0xMSB7IC0tY29sLXN0YXJ0OiAxMjsgfVxuXG4uZ3JpZC0tc3ViZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogc3ViZ3JpZDsgfVxuXG5AY29udGFpbmVyIChtYXgtd2lkdGg6IDMycmVtKSB7XG5cdC5ncmlkID4gKiB7IGdyaWQtY29sdW1uOiAxIC8gLTE7IH1cbn1cbiIsIi8qXG4gKiBCdXR0b25cbiAqXG4gKiAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLS1wcmltYXJ5XCI+U2F2ZTwvYnV0dG9uPlxuICogICA8YSBjbGFzcz1cImJ1dHRvbiBidXR0b24tLXN1YnRsZVwiPkJhY2s8L2E+XG4gKlxuICogVmFyaWFudHM6IC0tcHJpbWFyeS8tLWRhbmdlci8tLXdhcm5pbmcvLS1zdWJ0bGUvLS1naG9zdC8tLWxpZ2h0XG4gKiBTaXplczogLS1zbS8tLWxnXG4gKiBNb2RpZmllcnM6IC0taWNvbi8tLWJsb2NrXG4gKiBTdGF0ZTogLmlzLWxvYWRpbmdcbiAqIFRoZW1lYWJsZTogLS1idXR0b24tYmcvZmcvYm9yZGVyLWNvbG9yL3NoYWRvdy9yYWRpdXNcbiAqL1xuXG4uYnV0dG9uIHtcblx0LS1fYmc6IHZhcigtLWJ1dHRvbi1iZywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9iZy1ob3ZlcjogdmFyKC0tY29sb3Itc3VyZmFjZS1ob3Zlcik7XG5cdC0tX2JnLWFjdGl2ZTogdmFyKC0tY29sb3Itc3VyZmFjZS1hY3RpdmUpO1xuXHQtLV9mZzogdmFyKC0tYnV0dG9uLWZnLCB2YXIoLS1jb2xvci10ZXh0KSk7XG5cdC0tX2JvcmRlcjogdmFyKC0tYnV0dG9uLWJvcmRlci1jb2xvciwgdmFyKC0tY29sb3ItZm9ybSkpO1xuXHQtLV9ib3JkZXItd2lkdGg6IHZhcigtLWJvcmRlci13aWR0aCk7XG5cdC0tX3NoYWRvdzogdmFyKC0tYnV0dG9uLXNoYWRvdywgdmFyKC0ta2V5Y2FwLWVkZ2UpIHZhcigtLV9ib3JkZXIpKTtcblx0LS1fcGFkZGluZy1ibG9jazogdmFyKC0tc3BhY2UteHMpO1xuXHQtLV9wYWRkaW5nLWlubGluZTogdmFyKC0tc3BhY2Utc20pO1xuXHQtLV9yYWRpdXM6IHZhcigtLWJ1dHRvbi1yYWRpdXMsIHZhcigtLXJhZGl1cy1zbSkpO1xuXHQtLV9mb250LXNpemU6IHZhcigtLXRleHQtc20pO1xuXHQtLV9mb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcblx0LS1fZ2FwOiB2YXIoLS1zcGFjZS14cyk7XG5cblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRnYXA6IHZhcigtLV9nYXApO1xuXHRwYWRkaW5nOiB2YXIoLS1fcGFkZGluZy1ibG9jaykgdmFyKC0tX3BhZGRpbmctaW5saW5lKTtcblx0Ym9yZGVyOiB2YXIoLS1fYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fYm9yZGVyKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tX3JhZGl1cyk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9iZyk7XG5cdGNvbG9yOiB2YXIoLS1fZmcpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1fc2hhZG93KTtcblx0Zm9udC1zaXplOiB2YXIoLS1fZm9udC1zaXplKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLV9mb250LXdlaWdodCk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLXRpZ2h0KTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdHRyYW5zaXRpb246XG5cdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKSxcblx0XHRib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0Y29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCk7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tX2JnLWhvdmVyKTtcblx0fVxuXG5cdCY6YWN0aXZlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fYmctYWN0aXZlKTtcblx0fVxuXG5cdCY6ZGlzYWJsZWQsXG5cdCZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0sXG5cdCYuaXMtZGlzYWJsZWQge1xuXHRcdC0tX2JnOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcblx0XHQtLV9iZy1ob3ZlcjogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG5cdFx0LS1fZmc6IHZhcigtLWNvbG9yLXRleHQtc3VidGxlKTtcblx0XHQtLV9ib3JkZXI6IHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdFx0LS1fc2hhZG93OiBub25lO1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdH1cblxuXHQmIC5pY29uIHtcblx0XHRmb250LXNpemU6IDEuMTVlbTtcblx0XHRsaW5lLWhlaWdodDogMDtcblx0fVxufVxuXG4uYnV0dG9uLS1wcmltYXJ5IHtcblx0LS1fYmctaG92ZXI6IHZhcigtLWNvbG9yLWZvcm0tc29mdCk7XG5cdC0tX2JnLWFjdGl2ZTogdmFyKC0tY29sb3ItZm9ybS1zb2Z0KTtcblx0LS1fZmc6IHZhcigtLWNvbG9yLWZvcm0pO1xuXHQtLV9ib3JkZXI6IHZhcigtLWNvbG9yLWZvcm0pO1xuXHQtLV9zaGFkb3c6IHZhcigtLWtleWNhcC1lZGdlKSB2YXIoLS1jb2xvci1mb3JtKTtcblx0LS1fZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuXG5cdCY6YWN0aXZlIHtcblx0XHQtLV9zaGFkb3c6IDAgMXB4IDAgMCB2YXIoLS1jb2xvci1mb3JtKTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTtcblx0fVxufVxuXG4uYnV0dG9uLS1kYW5nZXIge1xuXHQtLV9iZzogdmFyKC0tY29sb3ItZGFuZ2VyKTtcblx0LS1fYmctaG92ZXI6IHZhcigtLWNvbG9yLWRhbmdlci1ob3Zlcik7XG5cdC0tX2JnLWFjdGl2ZTogdmFyKC0tY29sb3ItZGFuZ2VyLWhvdmVyKTtcblx0LS1fZmc6IHZhcigtLWNvbG9yLW9uLWRhbmdlcik7XG5cdC0tX2JvcmRlcjogdHJhbnNwYXJlbnQ7XG5cdC0tX3NoYWRvdzogbm9uZTtcblx0LS1fZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xufVxuXG4uYnV0dG9uLS13YXJuaW5nIHtcblx0LS1fYmc6IHZhcigtLWNvbG9yLXdhcm5pbmcpO1xuXHQtLV9iZy1ob3ZlcjogdmFyKC0tY29sb3Itd2FybmluZy1ob3Zlcik7XG5cdC0tX2JnLWFjdGl2ZTogdmFyKC0tY29sb3Itd2FybmluZy1ob3Zlcik7XG5cdC0tX2ZnOiB2YXIoLS1jb2xvci1vbi13YXJuaW5nKTtcblx0LS1fYm9yZGVyOiB0cmFuc3BhcmVudDtcblx0LS1fc2hhZG93OiBub25lO1xuXHQtLV9mb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG5cbi5idXR0b24tLXN1YnRsZSB7XG5cdC0tX2JnOiB2YXIoLS1jb2xvci1maWxsKTtcblx0LS1fYmctaG92ZXI6IHZhcigtLWNvbG9yLWZpbGwtaG92ZXIpO1xuXHQtLV9iZy1hY3RpdmU6IHZhcigtLWNvbG9yLWZpbGwtYWN0aXZlKTtcblx0LS1fYm9yZGVyOiB0cmFuc3BhcmVudDtcblx0LS1fc2hhZG93OiBub25lO1xufVxuXG4uYnV0dG9uLS1naG9zdCB7XG5cdC0tX2JnOiB0cmFuc3BhcmVudDtcblx0LS1fYmctaG92ZXI6IHZhcigtLWNvbG9yLWZpbGwpO1xuXHQtLV9iZy1hY3RpdmU6IHZhcigtLWNvbG9yLWZpbGwtaG92ZXIpO1xuXHQtLV9ib3JkZXI6IHRyYW5zcGFyZW50O1xuXHQtLV9zaGFkb3c6IG5vbmU7XG59XG5cbi5idXR0b24tLWxpZ2h0IHtcblx0LS1fYmc6IHRyYW5zcGFyZW50O1xuXHQtLV9mZzogdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpO1xuXHQtLV9ib3JkZXI6IHZhcigtLWNvbG9yLWJvcmRlci1zdHJvbmcpO1xuXHQtLV9zaGFkb3c6IG5vbmU7XG5cdC0tX2ZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ub3JtYWwpO1xufVxuXG4uYnV0dG9uLS1zbSB7XG5cdC0tX3BhZGRpbmctYmxvY2s6IHZhcigtLXNwYWNlLTJ4cyk7XG5cdC0tX3BhZGRpbmctaW5saW5lOiB2YXIoLS1zcGFjZS1zbSk7XG5cdC0tX2ZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG5cdC0tX3JhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbn1cblxuLmJ1dHRvbi0tbGcge1xuXHQtLV9wYWRkaW5nLWJsb2NrOiB2YXIoLS1zcGFjZS1zbSk7XG5cdC0tX3BhZGRpbmctaW5saW5lOiB2YXIoLS1zcGFjZS1sZyk7XG5cdC0tX2ZvbnQtc2l6ZTogdmFyKC0tdGV4dC1iYXNlKTtcblx0LS1fcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xufVxuXG4uYnV0dG9uLS1pY29uIHtcblx0LS1fcGFkZGluZy1pbmxpbmU6IHZhcigtLV9wYWRkaW5nLWJsb2NrKTtcblx0YXNwZWN0LXJhdGlvOiAxO1xufVxuXG4uYnV0dG9uLS1ibG9jayB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG4uYnV0dG9uLmlzLWxvYWRpbmcge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGNvbG9yOiB0cmFuc3BhcmVudDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5idXR0b24uaXMtbG9hZGluZzo6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlwiO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGluc2V0OiAwO1xuXHRtYXJnaW46IGF1dG87XG5cdC0tc3Bpbm5lci1zaXplOiAxZW07XG5cdC0tc3Bpbm5lci1jb2xvcjogdmFyKC0tX2ZnKTtcbn1cbiIsIi8qXG4gKiBLYmRcbiAqXG4gKiAgIDxzcGFuIGNsYXNzPVwia2JkXCI+Q21kICsgSzwvc3Bhbj5cbiAqXG4gKiBWYXJpYW50OiAtLWZpbGxlZFxuICogVGhlbWVhYmxlOiAtLWtiZC1iZy9mZy9ib3JkZXItY29sb3JcbiAqL1xuXG4ua2JkIHtcblx0LS1fYmc6IHZhcigtLWtiZC1iZywgdHJhbnNwYXJlbnQpO1xuXHQtLV9mZzogdmFyKC0ta2JkLWZnLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLWtiZC1ib3JkZXItY29sb3IsIHZhcigtLWNvbG9yLWJvcmRlci1saWdodCkpO1xuXHQtLV9zaGFkb3c6IHZhcigtLWtleWNhcC1lZGdlKSB2YXIoLS1fYm9yZGVyKTtcblxuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGdhcDogdmFyKC0tc3BhY2UtMnhzKTtcblx0cGFkZGluZzogM3B4IDZweDtcblx0Ym9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9ib3JkZXIpO1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9iZyk7XG5cdGJveC1zaGFkb3c6IHZhcigtLV9zaGFkb3cpO1xuXHRjb2xvcjogdmFyKC0tX2ZnKTtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuXHRsaW5lLWhlaWdodDogMTtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmtiZC0tZmlsbGVkIHtcblx0LS1fYmc6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xufVxuIiwiLypcbiAqIEF2YXRhclxuICpcbiAqICAgPHNwYW4gY2xhc3M9XCJhdmF0YXJcIj48aW1nIHNyYz1cIuKAplwiIGFsdD1cIuKAplwiPjwvc3Bhbj5cbiAqICAgPHNwYW4gY2xhc3M9XCJhdmF0YXJcIj5KTTwvc3Bhbj5cbiAqXG4gKiBTaXplczogLS14cy8tLXNtLy0tbGcvLS14bFxuICogU2hhcGU6IC0tY2lyY2xlLlxuICogQ29udGVudDogLS1sb2dvLlxuICovXG5cbi5hdmF0YXIge1xuXHQtLV9zaXplOiB2YXIoLS1hdmF0YXItc2l6ZSwgMi41cmVtKTtcblx0LS1fcmFkaXVzOiBjYWxjKHZhcigtLV9zaXplKSAqIDAuMTQpO1xuXHQtLV9iZzogdmFyKC0tYXZhdGFyLWJnLCB2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG5cdC0tX2ZnOiB2YXIoLS1hdmF0YXItZmcsIHZhcigtLWNvbG9yLW9uLXByaW1hcnkpKTtcblx0LS1fZm9udC1zaXplOiBjYWxjKHZhcigtLV9zaXplKSAqIDAuNCk7XG5cblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRmbGV4LXNocmluazogMDtcblx0d2lkdGg6IHZhcigtLV9zaXplKTtcblx0aGVpZ2h0OiB2YXIoLS1fc2l6ZSk7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLV9yYWRpdXMpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fYmcpO1xuXHRjb2xvcjogdmFyKC0tX2ZnKTtcblx0Zm9udC1zaXplOiB2YXIoLS1fZm9udC1zaXplKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuXHRsaW5lLWhlaWdodDogMTtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmF2YXRhciBpbWcsXG4uYXZhdGFyX19pbWcge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXHRvYmplY3QtZml0OiBjb3Zlcjtcblx0Ym9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cblxuLmF2YXRhci0teHMgeyAtLV9zaXplOiAxLjVyZW07IH1cbi5hdmF0YXItLXNtIHsgLS1fc2l6ZTogMnJlbTsgfVxuLmF2YXRhci0tbGcgeyAtLV9zaXplOiAzcmVtOyB9XG4uYXZhdGFyLS14bCB7IC0tX3NpemU6IDRyZW07IH1cblxuLmF2YXRhci0tY2lyY2xlIHsgLS1fcmFkaXVzOiB2YXIoLS1yYWRpdXMtcm91bmQpOyB9XG5cbi5hdmF0YXItLWxvZ28ge1xuXHQtLV9iZzogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG5cdHBhZGRpbmc6IGNhbGModmFyKC0tX3NpemUpICogMC4xMik7XG59XG5cbi5hdmF0YXItLWxvZ28gaW1nIHtcblx0b2JqZWN0LWZpdDogY29udGFpbjtcbn1cbiIsIi8qXG4gKiBUYWJzXG4gKlxuICogICA8ZGl2IGNsYXNzPVwidGFic1wiIHJvbGU9XCJ0YWJsaXN0XCI+XG4gKiAgICAgPGJ1dHRvbiBjbGFzcz1cInRhYnNfX2l0ZW0gaXMtYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGFyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCI+4oCmPC9idXR0b24+XG4gKiAgICAgPGJ1dHRvbiBjbGFzcz1cInRhYnNfX2l0ZW1cIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1zZWxlY3RlZD1cImZhbHNlXCI+4oCmPC9idXR0b24+XG4gKiAgIDwvZGl2PlxuICpcbiAqIEFjdGl2ZTogLmlzLWFjdGl2ZSAvIFthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSAvIFthcmlhLXByZXNzZWQ9XCJ0cnVlXCJdXG4gKiBUaGVtZWFibGU6IC0tdGFicy1ib3JkZXItY29sb3Ivc2hhZG93XG4gKi9cblxuLnRhYnMge1xuXHQtLV9iZzogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG5cdC0tX2JvcmRlcjogdmFyKC0tdGFicy1ib3JkZXItY29sb3IsIHZhcigtLWNvbG9yLXByaW1hcnkpKTtcblx0LS1fc2hhZG93OiB2YXIoLS10YWJzLXNoYWRvdywgdmFyKC0ta2V5Y2FwLWVkZ2UpIHZhcigtLV9ib3JkZXIpKTtcblxuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0Z2FwOiAzcHg7XG5cdHBhZGRpbmc6IDNweDtcblx0Ym9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9ib3JkZXIpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fYmcpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1fc2hhZG93KTtcbn1cblxuLnRhYnNfX2l0ZW0ge1xuXHQtLV9pdGVtLWJnOiB0cmFuc3BhcmVudDtcblx0LS1faXRlbS1iZy1ob3ZlcjogdmFyKC0tY29sb3Itc3VyZmFjZS1hY3RpdmUpO1xuXHQtLV9pdGVtLWZnOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTtcblxuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGdhcDogdmFyKC0tc3BhY2UteHMpO1xuXHRwYWRkaW5nOiA1cHggMTFweDtcblx0Ym9yZGVyOiAwO1xuXHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9pdGVtLWJnKTtcblx0Y29sb3I6IHZhcigtLV9pdGVtLWZnKTtcblx0Zm9udC1zaXplOiB2YXIoLS10ZXh0LXhzKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG5cdGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLXRpZ2h0KTtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRyYW5zaXRpb246XG5cdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKSxcblx0XHRjb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKTtcbn1cblxuLnRhYnNfX2l0ZW06aG92ZXIge1xuXHQtLV9pdGVtLWJnOiB2YXIoLS1faXRlbS1iZy1ob3Zlcik7XG5cdC0tX2l0ZW0tZmc6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4udGFic19faXRlbS5pcy1hY3RpdmUsXG4udGFic19faXRlbVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXSxcbi50YWJzX19pdGVtW2FyaWEtcHJlc3NlZD1cInRydWVcIl0ge1xuXHQtLV9pdGVtLWJnOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0LS1faXRlbS1mZzogdmFyKC0tY29sb3Itb24tcHJpbWFyeSk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbn1cbiIsIi8qXG4gKiBGaWVsZFxuICpcbiAqICAgPGxhYmVsIGNsYXNzPVwiZmllbGRcIj5cbiAqICAgICA8c3BhbiBjbGFzcz1cImZpZWxkX19sYWJlbFwiPk5hbWU8L3NwYW4+XG4gKiAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxuICogICAgIDxzcGFuIGNsYXNzPVwiZmllbGRfX2hpbnRcIj7igKY8L3NwYW4+XG4gKiAgIDwvbGFiZWw+XG4gKiAgIEVycm9yOiBzd2FwIC5maWVsZF9faGludCBmb3IgLmZpZWxkX19lcnJvciAoKyBhcmlhLWludmFsaWQgb24gdGhlIGNvbnRyb2wpXG4gKlxuICogVGhlbWVhYmxlOiAtLWZpZWxkLWxhYmVsLWNvbG9yL3NpemUsIC0tZmllbGQtaGludC1iZy9mZywgLS1maWVsZC1lcnJvci1iZy9mZ1xuICovXG5cbi5maWVsZCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogdmFyKC0tc3BhY2UtMnhzKTtcbn1cblxuLmZpZWxkX19sYWJlbCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogdmFyKC0tc3BhY2UteHMpO1xuXHRjb2xvcjogdmFyKC0tZmllbGQtbGFiZWwtY29sb3IsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZmllbGQtbGFiZWwtc2l6ZSwgdmFyKC0tdGV4dC1zbSkpO1xuXHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xufVxuXG4uZmllbGRfX2hpbnQsXG4uZmllbGRfX2Vycm9yIHtcblx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0cGFkZGluZzogdmFyKC0tc3BhY2UtM3hzKSB2YXIoLS1zcGFjZS14cyk7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG5cdGZvbnQtc2l6ZTogdmFyKC0tdGV4dC14cyk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS10aWdodCk7XG59XG5cbi5maWVsZF9faGludCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWZpZWxkLWhpbnQtYmcsIHZhcigtLWNvbG9yLXRvb2x0aXAtYmcpKTtcblx0Y29sb3I6IHZhcigtLWZpZWxkLWhpbnQtZmcsIHZhcigtLWNvbG9yLXRleHQtaW52ZXJzZSkpO1xufVxuXG4uZmllbGRfX2Vycm9yIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmllbGQtZXJyb3ItYmcsIHZhcigtLWNvbG9yLWRhbmdlcikpO1xuXHRjb2xvcjogdmFyKC0tZmllbGQtZXJyb3ItZmcsIHZhcigtLWNvbG9yLW9uLXByaW1hcnkpKTtcbn1cbiIsIi8qXG4gKiBGaWVsZCBtYXJrXG4gKiAgIDxidXR0b24gY2xhc3M9XCJmaWVsZC1tYXJrIGZpZWxkLW1hcmstLWhlbHBcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkhlbHBcIj48L2J1dHRvbj5cbiAqICAgPHNwYW4gY2xhc3M9XCJmaWVsZC1tYXJrIGZpZWxkLW1hcmstLXJlcXVpcmVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICovXG5cbi5maWVsZC1tYXJrIHtcblx0LS1fc2l6ZTogdmFyKC0tZmllbGQtbWFyay1zaXplLCAxLjRlbSk7XG5cblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR3aWR0aDogdmFyKC0tX3NpemUpO1xuXHRoZWlnaHQ6IHZhcigtLV9zaXplKTtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1maWVsZC1tYXJrLXJhZGl1cywgdmFyKC0tcmFkaXVzLXNtKSk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcblx0bGluZS1oZWlnaHQ6IDE7XG59XG5cbi5maWVsZC1tYXJrLS1oZWxwLFxuLmZpZWxkLW1hcmstLXJlcXVpcmVkIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5maWVsZC1tYXJrLS1oZWxwOjpiZWZvcmUsXG4uZmllbGQtbWFyay0tcmVxdWlyZWQ6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0aW5zZXQ6IHZhcigtLV9pY29uLWluc2V0LCAyMCUpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fbWFyayk7XG5cdC13ZWJraXQtbWFzazogdmFyKC0tX2ljb24pIGNlbnRlciAvIGNvbnRhaW4gbm8tcmVwZWF0O1xuXHRtYXNrOiB2YXIoLS1faWNvbikgY2VudGVyIC8gY29udGFpbiBuby1yZXBlYXQ7XG59XG5cbi5maWVsZC1tYXJrLS1oZWxwIHtcblx0LS1fbWFyazogdmFyKC0tZmllbGQtbWFyay1oZWxwLWZnLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9pY29uOiB2YXIoLS1maWVsZC1tYXJrLWhlbHAtaWNvbiwgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA4IDgnIGZpbGw9JyUyMzAwMCclM0UlM0NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgY2xpcC1ydWxlPSdldmVub2RkJyBkPSdNNC4wMDIuNzAzYTMuMjc3IDMuMjc3IDAgMCAxIDMuMjc1IDMuMjc1IDMuMjc3IDMuMjc3IDAgMCAxLTMuMjc1IDMuMjc2QTMuMjc3IDMuMjc3IDAgMCAxIC43MjcgMy45NzggMy4yNzcgMy4yNzcgMCAwIDEgNC4wMDIuNzAzbTAgLjkzYTIuMzQ2IDIuMzQ2IDAgMCAwIDAgNC42OSAyLjM0NiAyLjM0NiAwIDAgMCAwLTQuNjknLyUzRSUzQ3BhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J000LjQ1OCA0LjMzN2MuMDA1LjE1Mi4wMS4zNTkuMDEuNTkzaC0uOTNjMC0uNTMtLjAzLS43OTYtLjAyLS45M2EuNy43IDAgMCAxIC4wNTMtLjIyM2wuMDU0LS4wOTcuMDgyLS4wOTNjLjA4OC0uMDc4LjIyOC0uMTQ3LjQ5My0uMTQ3LjA3MyAwIC4yLS4wNjIuMi0uMjMxYS4zOTMuMzkzIDAgMCAwLS4zOTctLjM4OC4zOTMuMzkzIDAgMCAwLS4zOTcuMzg4aC0uOTNjMC0uNzI2LjU5My0xLjMxOCAxLjMyNy0xLjMxOC43MzMgMCAxLjMyNy41OTIgMS4zMjcgMS4zMTggMCAuNzIyLS40ODQgMS4wMzQtLjg3MiAxLjEyOCcvJTNFJTNDcGF0aCBkPSdNNC4wMDIgNi4wOTRhLjUxNC41MTQgMCAxIDAgMC0xLjAyNy41MTQuNTE0IDAgMCAwIDAgMS4wMjcnLyUzRSUzQy9zdmclM0VcIikpO1xuXHQtLV9pY29uLWluc2V0OiAwOyAvKiBoZWxwIGdseXBoIGFscmVhZHkgY2FycmllcyBpdHMgb3duIG1hcmdpbiBpbiB0aGUgOMOXOCBhcnRib2FyZCAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1maWVsZC1tYXJrLWhlbHAtYmcsIHZhcigtLWNvbG9yLWZpbGwpKTtcblx0Y3Vyc29yOiBoZWxwO1xufVxuXG4uZmllbGQtbWFyay0taGVscDpob3ZlciB7XG5cdC0tX21hcms6IHZhcigtLWNvbG9yLXRleHQpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1maWxsLWhvdmVyKTtcbn1cblxuLmZpZWxkLW1hcmstLXJlcXVpcmVkIHtcblx0LS1fbWFyazogdmFyKC0tZmllbGQtbWFyay1yZXF1aXJlZC1tYXJrLCB2YXIoLS1jb2xvci1wcmltYXJ5LXNvZnQpKTtcblx0LS1faWNvbjogdmFyKC0tZmllbGQtbWFyay1yZXF1aXJlZC1pY29uLCB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDYgNiclM0UlM0NwYXRoIGZpbGw9JyUyMzAwMCcgZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J20yLjI4OCAyLjk5Ny0xLjQ5MS0uODYuMzQ5LS42MDUgMS40OS44NjFWLjY3MmguNjk4djEuNzIxbDEuNDkxLS44Ni4zNDkuNjA0LTEuNDkuODYgMS40OS44Ni0uMzQ5LjYwNS0xLjQ5LS44NnYxLjcyaC0uNjk4di0xLjcybC0xLjQ5MS44Ni0uMzQ5LS42MDR6Jy8lM0UlM0Mvc3ZnJTNFXCIpKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmllbGQtbWFyay1yZXF1aXJlZC1iZywgdmFyKC0tY29sb3ItcHJpbWFyeSkpO1xufVxuIiwiLypcbiAqIElucHV0IOKAlCB0ZXh0IGNvbnRyb2wuIFdyYXAgaW4gLmZpZWxkIGZvciBsYWJlbCArIG1lc3NhZ2VzLlxuICpcbiAqICAgPGlucHV0IGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiPlxuICpcbiAqIFN0YXRlczogOmhvdmVyIC8gOmZvY3VzIC8gW2FyaWEtaW52YWxpZF0gLyAuaXMtZXJyb3IgLyA6ZGlzYWJsZWQgLyBbcmVhZG9ubHldXG4gKiBUaGVtZWFibGU6IC0taW5wdXQtYmcvZmcvYm9yZGVyLWNvbG9yL3JhZGl1cy9mb2N1cy9lcnJvci9kaXNhYmxlZFxuICovXG5cbi5pbnB1dCB7XG5cdC0tX2JnOiB2YXIoLS1pbnB1dC1iZywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9mZzogdmFyKC0taW5wdXQtZmcsIHZhcigtLWNvbG9yLXRleHQpKTtcblx0LS1fYm9yZGVyOiB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IsIHZhcigtLWNvbG9yLWZvcm0tYm9yZGVyKSk7XG5cdC0tX3JhZGl1czogdmFyKC0taW5wdXQtcmFkaXVzLCB2YXIoLS1yYWRpdXMtc20pKTtcblx0LS1faG92ZXItYm9yZGVyOiB2YXIoLS1pbnB1dC1ob3Zlci1ib3JkZXIsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdC0tX2ZvY3VzLWJvcmRlcjogdmFyKC0taW5wdXQtZm9jdXMtYm9yZGVyLCB2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG5cdC0tX2ZvY3VzLWJnOiB2YXIoLS1pbnB1dC1mb2N1cy1iZywgdmFyKC0tY29sb3ItcHJpbWFyeS1zb2Z0KSk7XG5cdC0tX2Vycm9yLWJvcmRlcjogdmFyKC0taW5wdXQtZXJyb3ItYm9yZGVyLCB2YXIoLS1jb2xvci1kYW5nZXIpKTtcblx0LS1fZXJyb3ItYmc6IHZhcigtLWlucHV0LWVycm9yLWJnLCB2YXIoLS1jb2xvci1kYW5nZXItc29mdCkpO1xuXHQtLV9kaXNhYmxlZC1iZzogdmFyKC0taW5wdXQtZGlzYWJsZWQtYmcsIHZhcigtLWNvbG9yLXN1cmZhY2Utc3Vua2VuKSk7XG5cdC0tX2Rpc2FibGVkLWZnOiB2YXIoLS1pbnB1dC1kaXNhYmxlZC1mZywgdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpKTtcblx0LS1fZGlzYWJsZWQtYm9yZGVyOiB2YXIoLS1pbnB1dC1kaXNhYmxlZC1ib3JkZXIsIHZhcigtLWNvbG9yLWJvcmRlcikpO1xuXG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogMTAwJTtcblx0cGFkZGluZzogdmFyKC0taW5wdXQtcGFkZGluZywgdmFyKC0tc3BhY2UteHMpIHZhcigtLXNwYWNlLXNtKSk7XG5cdGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fYm9yZGVyKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tX3JhZGl1cyk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9iZyk7XG5cdGNvbG9yOiB2YXIoLS1fZmcpO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS10aWdodCk7XG5cdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdHRyYW5zaXRpb246XG5cdFx0Ym9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpIHZhcigtLWVhc2Utc3RhbmRhcmQpLFxuXHRcdGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCk7XG59XG5cbi5pbnB1dDo6cGxhY2Vob2xkZXIge1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpO1xufVxuXG4uaW5wdXQ6aG92ZXIge1xuXHQtLV9ib3JkZXI6IHZhcigtLV9ob3Zlci1ib3JkZXIpO1xufVxuXG4uaW5wdXQ6Zm9jdXMsXG4uaW5wdXQ6Zm9jdXMtdmlzaWJsZSB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2ZvY3VzLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZm9jdXMtYmcpO1xufVxuXG4uaW5wdXRbYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXSxcbi5pbnB1dC5pcy1lcnJvciB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2Vycm9yLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZXJyb3ItYmcpO1xufVxuXG4uaW5wdXQ6ZGlzYWJsZWQsXG4uaW5wdXQuaXMtZGlzYWJsZWQge1xuXHQtLV9iZzogdmFyKC0tX2Rpc2FibGVkLWJnKTtcblx0LS1fZmc6IHZhcigtLV9kaXNhYmxlZC1mZyk7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2Rpc2FibGVkLWJvcmRlcik7XG5cdGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5pbnB1dFtyZWFkb25seV0sXG4uaW5wdXQtLXJlYWRvbmx5IHtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4iLCIvKlxuICogSW5wdXQgZ3JvdXBcbiAqXG4gKiAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAqICAgICA8aW5wdXQgY2xhc3M9XCJpbnB1dC1ncm91cF9fZmllbGRcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiMTIgMzA5LjY4XCI+XG4gKiAgICAgPHNwYW4gY2xhc3M9XCJ0YWdcIj5LxI08L3NwYW4+XG4gKiAgIDwvc3Bhbj5cbiAqXG4gKiBTdGF0ZXM6IDpob3ZlciAvIDpmb2N1cy13aXRoaW47IGVycm9yL2Rpc2FibGVkIGNvbWUgZnJvbSB0aGUgZmllbGRcbiAqICAgICAgICAgKGFyaWEtaW52YWxpZCAvIC5pcy1lcnJvciAvIDpkaXNhYmxlZCBvbiAuaW5wdXQtZ3JvdXBfX2ZpZWxkKVxuICogVGhlbWVhYmxlOiByZXVzZXMgdGhlIC0taW5wdXQtKiBjdXN0b20gcHJvcGVydGllc1xuICovXG5cbi5pbnB1dC1ncm91cCB7XG5cdC0tX2JnOiB2YXIoLS1pbnB1dC1iZywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLWlucHV0LWJvcmRlci1jb2xvciwgdmFyKC0tY29sb3ItYm9yZGVyLXN0cm9uZykpO1xuXHQtLV9yYWRpdXM6IHZhcigtLWlucHV0LXJhZGl1cywgdmFyKC0tcmFkaXVzLXNtKSk7XG5cdC0tX2hvdmVyLWJvcmRlcjogdmFyKC0taW5wdXQtaG92ZXItYm9yZGVyLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9mb2N1cy1ib3JkZXI6IHZhcigtLWlucHV0LWZvY3VzLWJvcmRlciwgdmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuXHQtLV9mb2N1cy1iZzogdmFyKC0taW5wdXQtZm9jdXMtYmcsIHZhcigtLWNvbG9yLXByaW1hcnktc29mdCkpO1xuXHQtLV9lcnJvci1ib3JkZXI6IHZhcigtLWlucHV0LWVycm9yLWJvcmRlciwgdmFyKC0tY29sb3ItZGFuZ2VyKSk7XG5cdC0tX2Vycm9yLWJnOiB2YXIoLS1pbnB1dC1lcnJvci1iZywgdmFyKC0tY29sb3ItZGFuZ2VyLXNvZnQpKTtcblx0LS1fZGlzYWJsZWQtYmc6IHZhcigtLWlucHV0LWRpc2FibGVkLWJnLCB2YXIoLS1jb2xvci1zdXJmYWNlLXN1bmtlbikpO1xuXHQtLV9kaXNhYmxlZC1ib3JkZXI6IHZhcigtLWlucHV0LWRpc2FibGVkLWJvcmRlciwgdmFyKC0tY29sb3ItYm9yZGVyKSk7XG5cblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjZS14cyk7XG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nOiAwIHZhcigtLXNwYWNlLXNtKTtcblx0Ym9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9ib3JkZXIpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1fcmFkaXVzKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tX2JnKTtcblx0dHJhbnNpdGlvbjpcblx0XHRib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKTtcbn1cblxuLmlucHV0LWdyb3VwOmhvdmVyIHtcblx0LS1fYm9yZGVyOiB2YXIoLS1faG92ZXItYm9yZGVyKTtcbn1cblxuLmlucHV0LWdyb3VwOmZvY3VzLXdpdGhpbiB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2ZvY3VzLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZm9jdXMtYmcpO1xufVxuXG4uaW5wdXQtZ3JvdXA6aGFzKC5pbnB1dC1ncm91cF9fZmllbGRbYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXSksXG4uaW5wdXQtZ3JvdXA6aGFzKC5pbnB1dC1ncm91cF9fZmllbGQuaXMtZXJyb3IpIHtcblx0LS1fYm9yZGVyOiB2YXIoLS1fZXJyb3ItYm9yZGVyKTtcblx0LS1fYmc6IHZhcigtLV9lcnJvci1iZyk7XG59XG5cbi5pbnB1dC1ncm91cDpoYXMoLmlucHV0LWdyb3VwX19maWVsZDpkaXNhYmxlZCkge1xuXHQtLV9iZzogdmFyKC0tX2Rpc2FibGVkLWJnKTtcblx0LS1fYm9yZGVyOiB2YXIoLS1fZGlzYWJsZWQtYm9yZGVyKTtcbn1cblxuLmlucHV0LWdyb3VwX19maWVsZCB7XG5cdGZsZXg6IDE7XG5cdG1pbi13aWR0aDogMDtcblx0cGFkZGluZzogdmFyKC0tc3BhY2UteHMpIDA7XG5cdGJvcmRlcjogMDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcblx0Zm9udDogaW5oZXJpdDtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtdGlnaHQpO1xufVxuXG4uaW5wdXQtZ3JvdXBfX2ZpZWxkOjpwbGFjZWhvbGRlciB7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSk7XG59XG5cbi5pbnB1dC1ncm91cF9fZmllbGQ6ZGlzYWJsZWQge1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpO1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuIiwiLypcbiAqIFRleHRhcmVhXG4gKlxuICogICA8bGFiZWwgY2xhc3M9XCJmaWVsZFwiPlxuICogICAgIDxzcGFuIGNsYXNzPVwiZmllbGRfX2xhYmVsXCI+TmFtZTwvc3Bhbj5cbiAqICAgICA8dGV4dGFyZWEgY2xhc3M9XCJ0ZXh0YXJlYVwiPjwvdGV4dGFyZWE+XG4gKiAgIDwvbGFiZWw+XG4gKlxuICogU3RhdGVzOiA6aG92ZXIgLyA6Zm9jdXMgLyBbYXJpYS1pbnZhbGlkXSAvIC5pcy1lcnJvciAvIDpkaXNhYmxlZCAvIFtyZWFkb25seV1cbiAqIFRoZW1lYWJsZTogLS10ZXh0YXJlYS1iZy9mZy9ib3JkZXItY29sb3IvcmFkaXVzL2ZvY3VzL2Vycm9yL2Rpc2FibGVkL21pbi1oZWlnaHRcbiAqL1xuXG4udGV4dGFyZWEge1xuXHQtLV9iZzogdmFyKC0tdGV4dGFyZWEtYmcsIHZhcigtLWNvbG9yLXN1cmZhY2UpKTtcblx0LS1fZmc6IHZhcigtLXRleHRhcmVhLWZnLCB2YXIoLS1jb2xvci10ZXh0KSk7XG5cdC0tX2JvcmRlcjogdmFyKC0tdGV4dGFyZWEtYm9yZGVyLWNvbG9yLCB2YXIoLS1jb2xvci1mb3JtLWJvcmRlcikpO1xuXHQtLV9yYWRpdXM6IHZhcigtLXRleHRhcmVhLXJhZGl1cywgdmFyKC0tcmFkaXVzLXNtKSk7XG5cdC0tX2hvdmVyLWJvcmRlcjogdmFyKC0tdGV4dGFyZWEtaG92ZXItYm9yZGVyLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9mb2N1cy1ib3JkZXI6IHZhcigtLXRleHRhcmVhLWZvY3VzLWJvcmRlciwgdmFyKC0tY29sb3ItcHJpbWFyeSkpO1xuXHQtLV9mb2N1cy1iZzogdmFyKC0tdGV4dGFyZWEtZm9jdXMtYmcsIHZhcigtLWNvbG9yLXByaW1hcnktc29mdCkpO1xuXHQtLV9lcnJvci1ib3JkZXI6IHZhcigtLXRleHRhcmVhLWVycm9yLWJvcmRlciwgdmFyKC0tY29sb3ItZGFuZ2VyKSk7XG5cdC0tX2Vycm9yLWJnOiB2YXIoLS10ZXh0YXJlYS1lcnJvci1iZywgdmFyKC0tY29sb3ItZGFuZ2VyLXNvZnQpKTtcblx0LS1fZGlzYWJsZWQtYmc6IHZhcigtLXRleHRhcmVhLWRpc2FibGVkLWJnLCB2YXIoLS1jb2xvci1zdXJmYWNlLXN1bmtlbikpO1xuXHQtLV9kaXNhYmxlZC1mZzogdmFyKC0tdGV4dGFyZWEtZGlzYWJsZWQtZmcsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdC0tX2Rpc2FibGVkLWJvcmRlcjogdmFyKC0tdGV4dGFyZWEtZGlzYWJsZWQtYm9yZGVyLCB2YXIoLS1jb2xvci1ib3JkZXIpKTtcblxuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IHZhcigtLXRleHRhcmVhLW1pbi1oZWlnaHQsIDUuNXJlbSk7XG5cdHBhZGRpbmc6IHZhcigtLXRleHRhcmVhLXBhZGRpbmcsIHZhcigtLXNwYWNlLXhzKSB2YXIoLS1zcGFjZS1zbSkpO1xuXHRib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2JvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLV9yYWRpdXMpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fYmcpO1xuXHRjb2xvcjogdmFyKC0tX2ZnKTtcblx0Zm9udDogaW5oZXJpdDtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtYmFzZSk7XG5cdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdHJlc2l6ZTogdmVydGljYWw7XG5cdHRyYW5zaXRpb246XG5cdFx0Ym9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpIHZhcigtLWVhc2Utc3RhbmRhcmQpLFxuXHRcdGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCk7XG59XG5cbi50ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpO1xufVxuXG4udGV4dGFyZWE6aG92ZXIge1xuXHQtLV9ib3JkZXI6IHZhcigtLV9ob3Zlci1ib3JkZXIpO1xufVxuXG4udGV4dGFyZWE6Zm9jdXMsXG4udGV4dGFyZWE6Zm9jdXMtdmlzaWJsZSB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2ZvY3VzLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZm9jdXMtYmcpO1xufVxuXG4udGV4dGFyZWFbYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXSxcbi50ZXh0YXJlYS5pcy1lcnJvciB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2Vycm9yLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZXJyb3ItYmcpO1xufVxuXG4udGV4dGFyZWE6ZGlzYWJsZWQsXG4udGV4dGFyZWEuaXMtZGlzYWJsZWQge1xuXHQtLV9iZzogdmFyKC0tX2Rpc2FibGVkLWJnKTtcblx0LS1fZmc6IHZhcigtLV9kaXNhYmxlZC1mZyk7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2Rpc2FibGVkLWJvcmRlcik7XG5cdHJlc2l6ZTogbm9uZTtcblx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLnRleHRhcmVhW3JlYWRvbmx5XSxcbi50ZXh0YXJlYS0tcmVhZG9ubHkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbiIsIi8qXG4gKiBTZWxlY3Qg4oCUIG5hdGl2ZSA8c2VsZWN0PiBzdHlsZWQgdG8gbWF0Y2ggLmlucHV0LCB3aXRoIGEgY3VzdG9tIGNoZXZyb24uXG4gKlxuICogICA8bGFiZWwgY2xhc3M9XCJmaWVsZFwiPlxuICogICAgIDxzcGFuIGNsYXNzPVwiZmllbGRfX2xhYmVsXCI+S2x1Yjwvc3Bhbj5cbiAqICAgICA8c2VsZWN0IGNsYXNzPVwic2VsZWN0XCI+PG9wdGlvbj5TcG9ydCBBbGl2ZTwvb3B0aW9uPuKApjwvc2VsZWN0PlxuICogICA8L2xhYmVsPlxuICpcbiAqIFN0YXRlczogOmhvdmVyIC8gOmZvY3VzIC8gW2FyaWEtaW52YWxpZF0gLyAuaXMtZXJyb3IgLyA6ZGlzYWJsZWRcbiAqIFRoZW1lYWJsZTogLS1zZWxlY3QtYmcvZmcvYm9yZGVyLWNvbG9yL3JhZGl1cy9mb2N1cy9lcnJvci9kaXNhYmxlZC9jaGV2cm9uXG4gKi9cblxuLnNlbGVjdCB7XG5cdC0tX2JnOiB2YXIoLS1zZWxlY3QtYmcsIHZhcigtLWNvbG9yLXN1cmZhY2UpKTtcblx0LS1fZmc6IHZhcigtLXNlbGVjdC1mZywgdmFyKC0tY29sb3ItdGV4dCkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLXNlbGVjdC1ib3JkZXItY29sb3IsIHZhcigtLWNvbG9yLWZvcm0tYm9yZGVyKSk7XG5cdC0tX3JhZGl1czogdmFyKC0tc2VsZWN0LXJhZGl1cywgdmFyKC0tcmFkaXVzLXNtKSk7XG5cdC0tX2hvdmVyLWJvcmRlcjogdmFyKC0tc2VsZWN0LWhvdmVyLWJvcmRlciwgdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpKTtcblx0LS1fZm9jdXMtYm9yZGVyOiB2YXIoLS1zZWxlY3QtZm9jdXMtYm9yZGVyLCB2YXIoLS1jb2xvci1wcmltYXJ5KSk7XG5cdC0tX2ZvY3VzLWJnOiB2YXIoLS1zZWxlY3QtZm9jdXMtYmcsIHZhcigtLWNvbG9yLXByaW1hcnktc29mdCkpO1xuXHQtLV9lcnJvci1ib3JkZXI6IHZhcigtLXNlbGVjdC1lcnJvci1ib3JkZXIsIHZhcigtLWNvbG9yLWRhbmdlcikpO1xuXHQtLV9lcnJvci1iZzogdmFyKC0tc2VsZWN0LWVycm9yLWJnLCB2YXIoLS1jb2xvci1kYW5nZXItc29mdCkpO1xuXHQtLV9kaXNhYmxlZC1iZzogdmFyKC0tc2VsZWN0LWRpc2FibGVkLWJnLCB2YXIoLS1jb2xvci1zdXJmYWNlLXN1bmtlbikpO1xuXHQtLV9kaXNhYmxlZC1mZzogdmFyKC0tc2VsZWN0LWRpc2FibGVkLWZnLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9kaXNhYmxlZC1ib3JkZXI6IHZhcigtLXNlbGVjdC1kaXNhYmxlZC1ib3JkZXIsIHZhcigtLWNvbG9yLWJvcmRlcikpO1xuXHQtLV9jaGV2cm9uOiB2YXIoLS1zZWxlY3QtY2hldnJvbiwgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA5IDUnJTNFJTNDcGF0aCBmaWxsLXJ1bGU9J2V2ZW5vZGQnIGNsaXAtcnVsZT0nZXZlbm9kZCcgZD0nTTQuMTkzNzkgNC41ODk5NkwtMC4wMDA0MzE5MTggMi4xNjg0M0wxLjI1MTU1IC03LjIxOTg3ZS0wNUw0LjE5Mzc5IDEuNjk4NjJMNy4xMzYwMiAtNC4yODA5M2UtMDVMOC4zODc5OSAyLjE2ODQ1TDQuMTkzNzkgNC41ODk5NlonIGZpbGw9JyUyMzgwODA4MCcvJTNFJTNDL3N2ZyUzRVwiKSk7XG5cblx0YXBwZWFyYW5jZTogbm9uZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nOiB2YXIoLS1zZWxlY3QtcGFkZGluZywgdmFyKC0tc3BhY2UteHMpIHZhcigtLXNwYWNlLXNtKSk7XG5cdHBhZGRpbmctaW5saW5lLWVuZDogY2FsYyh2YXIoLS1zcGFjZS1zbSkgKyAxLjI1ZW0pO1xuXHRib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tX2JvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLV9yYWRpdXMpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fYmcpO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1fY2hldnJvbik7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IHZhcigtLXNwYWNlLXNtKSBjZW50ZXI7XG5cdGJhY2tncm91bmQtc2l6ZTogMC42ZW07XG5cdGNvbG9yOiB2YXIoLS1fZmcpO1xuXHRmb250OiBpbmhlcml0O1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS10aWdodCk7XG5cdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dHJhbnNpdGlvbjpcblx0XHRib3JkZXItY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKTtcbn1cblxuLnNlbGVjdCBvcHRpb24ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1zdXJmYWNlKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQpO1xufVxuXG4uc2VsZWN0OmhvdmVyIHtcblx0LS1fYm9yZGVyOiB2YXIoLS1faG92ZXItYm9yZGVyKTtcbn1cblxuLnNlbGVjdDpmb2N1cyxcbi5zZWxlY3Q6Zm9jdXMtdmlzaWJsZSB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2ZvY3VzLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1fZm9jdXMtYmcpO1xufVxuXG4uc2VsZWN0W2FyaWEtaW52YWxpZD1cInRydWVcIl0sXG4uc2VsZWN0LmlzLWVycm9yIHtcblx0LS1fYm9yZGVyOiB2YXIoLS1fZXJyb3ItYm9yZGVyKTtcblx0LS1fYmc6IHZhcigtLV9lcnJvci1iZyk7XG59XG5cbi5zZWxlY3Q6ZGlzYWJsZWQsXG4uc2VsZWN0LmlzLWRpc2FibGVkIHtcblx0LS1fYmc6IHZhcigtLV9kaXNhYmxlZC1iZyk7XG5cdC0tX2ZnOiB2YXIoLS1fZGlzYWJsZWQtZmcpO1xuXHQtLV9ib3JkZXI6IHZhcigtLV9kaXNhYmxlZC1ib3JkZXIpO1xuXHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuIiwiLypcbiAqIENoZWNrYm94XG4gKlxuICogICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveFwiPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj48c3Bhbj5MYWJlbDwvc3Bhbj48L2xhYmVsPlxuICpcbiAqIFRoZW1lYWJsZTogLS1jaGVja2JveC1zaXplL3JhZGl1cy9iZy9ib3JkZXItY29sb3IvY2hlY2tlZC1iZy9jaGVjay1jb2xvci9sYWJlbC9kaXNhYmxlZFxuICovXG5cbi5jaGVja2JveCB7XG5cdC0tX3NpemU6IHZhcigtLWNoZWNrYm94LXNpemUsIDEuMjVyZW0pO1xuXHQtLV9yYWRpdXM6IHZhcigtLWNoZWNrYm94LXJhZGl1cywgdmFyKC0tcmFkaXVzLXNtKSk7XG5cdC0tX2JnOiB2YXIoLS1jaGVja2JveC1iZywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLWNoZWNrYm94LWJvcmRlci1jb2xvciwgdmFyKC0tY29sb3ItZm9ybS1ib3JkZXIpKTtcblx0LS1faG92ZXItYm9yZGVyOiB2YXIoLS1jaGVja2JveC1ob3Zlci1ib3JkZXIsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdC0tX2hvdmVyLWJnOiB2YXIoLS1jaGVja2JveC1ob3Zlci1iZywgdmFyKC0tY29sb3ItcHJpbWFyeS1zb2Z0KSk7XG5cdC0tX2NoZWNrZWQtYmc6IHZhcigtLWNoZWNrYm94LWNoZWNrZWQtYmcsIHZhcigtLWNvbG9yLWZvcm0pKTtcblx0LS1fY2hlY2tlZC1ib3JkZXI6IHZhcigtLWNoZWNrYm94LWNoZWNrZWQtYm9yZGVyLCB2YXIoLS1jb2xvci1mb3JtKSk7XG5cdC0tX2NoZWNrLWNvbG9yOiB2YXIoLS1jaGVja2JveC1jaGVjay1jb2xvciwgdmFyKC0tY29sb3Itb24tZm9ybSkpO1xuXHQtLV9sYWJlbDogdmFyKC0tY2hlY2tib3gtbGFiZWwtY29sb3IsIHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpKTtcblx0LS1fbGFiZWwtY2hlY2tlZDogdmFyKC0tY2hlY2tib3gtbGFiZWwtY2hlY2tlZC1jb2xvciwgdmFyKC0tY29sb3ItdGV4dCkpO1xuXHQtLV9kaXNhYmxlZC1iZzogdmFyKC0tY2hlY2tib3gtZGlzYWJsZWQtYmcsIHZhcigtLWNvbG9yLXN1cmZhY2Utc3Vua2VuKSk7XG5cdC0tX2Rpc2FibGVkLWJvcmRlcjogdmFyKC0tY2hlY2tib3gtZGlzYWJsZWQtYm9yZGVyLCB2YXIoLS1jb2xvci1ib3JkZXIpKTtcblx0LS1fZGlzYWJsZWQtbGFiZWw6IHZhcigtLWNoZWNrYm94LWRpc2FibGVkLWxhYmVsLWNvbG9yLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9jaGVjay1pY29uOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDE2IDE2JyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgc3Ryb2tlPSclMjMwMDAnIHN0cm9rZS13aWR0aD0nMi41JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J00zLjUgOC41bDMgMyA2LTYnLyUzRSUzQy9zdmclM0VcIik7XG5cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjZS14cyk7XG5cdGNvbG9yOiB2YXIoLS1fbGFiZWwpO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jaGVja2JveCBpbnB1dCB7XG5cdGFwcGVhcmFuY2U6IG5vbmU7XG5cdGZsZXgtc2hyaW5rOiAwO1xuXHR3aWR0aDogdmFyKC0tX3NpemUpO1xuXHRoZWlnaHQ6IHZhcigtLV9zaXplKTtcblx0bWFyZ2luOiAwO1xuXHRib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aC1zdHJvbmcpIHNvbGlkIHZhcigtLV9ib3JkZXIpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1fcmFkaXVzKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tX2JnKTtcblx0Y3Vyc29yOiBpbmhlcml0O1xuXHR0cmFuc2l0aW9uOlxuXHRcdGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0Ym9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpIHZhcigtLWVhc2Utc3RhbmRhcmQpO1xufVxuXG4uY2hlY2tib3g6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0bGVmdDogMDtcblx0dG9wOiA1MCU7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0d2lkdGg6IHZhcigtLV9zaXplKTtcblx0aGVpZ2h0OiB2YXIoLS1fc2l6ZSk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9jaGVjay1jb2xvcik7XG5cdC13ZWJraXQtbWFzazogdmFyKC0tX2NoZWNrLWljb24pIGNlbnRlciAvIDgwJSBuby1yZXBlYXQ7XG5cdG1hc2s6IHZhcigtLV9jaGVjay1pY29uKSBjZW50ZXIgLyA4MCUgbm8tcmVwZWF0O1xuXHRvcGFjaXR5OiAwO1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmNoZWNrYm94IGlucHV0OmNoZWNrZWQge1xuXHQtLV9iZzogdmFyKC0tX2NoZWNrZWQtYmcpO1xuXHQtLV9ib3JkZXI6IHZhcigtLV9jaGVja2VkLWJvcmRlcik7XG59XG5cbi5jaGVja2JveDpoYXMoaW5wdXQ6Y2hlY2tlZCk6OmJlZm9yZSB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi5jaGVja2JveDpoYXMoaW5wdXQ6Y2hlY2tlZCkge1xuXHQtLV9sYWJlbDogdmFyKC0tX2xhYmVsLWNoZWNrZWQpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG5cbi5jaGVja2JveDpob3Zlcjpub3QoOmhhcyhpbnB1dDpjaGVja2VkKSkge1xuXHQtLV9ib3JkZXI6IHZhcigtLV9ob3Zlci1ib3JkZXIpO1xuXHQtLV9iZzogdmFyKC0tX2hvdmVyLWJnKTtcbn1cblxuLmNoZWNrYm94OmhvdmVyOm5vdCg6aGFzKGlucHV0OmNoZWNrZWQpKTpub3QoOmhhcyhpbnB1dDpkaXNhYmxlZCkpOjpiZWZvcmUge1xuXHRvcGFjaXR5OiAwLjQ7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc3VidGxlKTtcbn1cblxuLmNoZWNrYm94OmhhcyhpbnB1dDpkaXNhYmxlZCkge1xuXHQtLV9sYWJlbDogdmFyKC0tX2Rpc2FibGVkLWxhYmVsKTtcblx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmNoZWNrYm94IGlucHV0OmRpc2FibGVkIHtcblx0LS1fYmc6IHZhcigtLV9kaXNhYmxlZC1iZyk7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2Rpc2FibGVkLWJvcmRlcik7XG59XG4iLCIvKlxuICogUmFkaW9cbiAqXG4gKiAgIDxsYWJlbCBjbGFzcz1cInJhZGlvXCI+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJhbnN3ZXJcIj48c3Bhbj5MYWJlbDwvc3Bhbj48L2xhYmVsPlxuICpcbiAqIFRoZW1lYWJsZTogLS1yYWRpby1zaXplL2JnL2JvcmRlci1jb2xvci9jaGVja2VkLWNvbG9yL2xhYmVsL2Rpc2FibGVkXG4gKi9cblxuLnJhZGlvIHtcblx0LS1fc2l6ZTogdmFyKC0tcmFkaW8tc2l6ZSwgMS4yNXJlbSk7XG5cdC0tX2JnOiB2YXIoLS1yYWRpby1iZywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLXJhZGlvLWJvcmRlci1jb2xvciwgdmFyKC0tY29sb3ItZm9ybS1ib3JkZXIpKTtcblx0LS1faG92ZXItYm9yZGVyOiB2YXIoLS1yYWRpby1ob3Zlci1ib3JkZXIsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdC0tX2hvdmVyLWJnOiB2YXIoLS1yYWRpby1ob3Zlci1iZywgdmFyKC0tY29sb3ItcHJpbWFyeS1zb2Z0KSk7XG5cdC0tX2NoZWNrZWQ6IHZhcigtLXJhZGlvLWNoZWNrZWQtY29sb3IsIHZhcigtLWNvbG9yLWZvcm0pKTtcblx0LS1fbGFiZWw6IHZhcigtLXJhZGlvLWxhYmVsLWNvbG9yLCB2YXIoLS1jb2xvci10ZXh0LW11dGVkKSk7XG5cdC0tX2xhYmVsLWNoZWNrZWQ6IHZhcigtLXJhZGlvLWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLWNvbG9yLXRleHQpKTtcblx0LS1fZGlzYWJsZWQtYmc6IHZhcigtLXJhZGlvLWRpc2FibGVkLWJnLCB2YXIoLS1jb2xvci1zdXJmYWNlLXN1bmtlbikpO1xuXHQtLV9kaXNhYmxlZC1ib3JkZXI6IHZhcigtLXJhZGlvLWRpc2FibGVkLWJvcmRlciwgdmFyKC0tY29sb3ItYm9yZGVyKSk7XG5cdC0tX2Rpc2FibGVkLWxhYmVsOiB2YXIoLS1yYWRpby1kaXNhYmxlZC1sYWJlbC1jb2xvciwgdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpKTtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IHZhcigtLXNwYWNlLXhzKTtcblx0Y29sb3I6IHZhcigtLV9sYWJlbCk7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnJhZGlvIGlucHV0IHtcblx0YXBwZWFyYW5jZTogbm9uZTtcblx0ZmxleC1zaHJpbms6IDA7XG5cdHdpZHRoOiB2YXIoLS1fc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tX3NpemUpO1xuXHRtYXJnaW46IDA7XG5cdGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoLXN0cm9uZykgc29saWQgdmFyKC0tX2JvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1yb3VuZCk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9iZyk7XG5cdGN1cnNvcjogaW5oZXJpdDtcblx0dHJhbnNpdGlvbjpcblx0XHRiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWR1cmF0aW9uLWZhc3QpIHZhcigtLWVhc2Utc3RhbmRhcmQpLFxuXHRcdGJvcmRlci1jb2xvciB2YXIoLS1kdXJhdGlvbi1mYXN0KSB2YXIoLS1lYXNlLXN0YW5kYXJkKTtcbn1cblxuLnJhZGlvOjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlwiO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGxlZnQ6IGNhbGModmFyKC0tX3NpemUpICogMC4yNyk7XG5cdHRvcDogNTAlO1xuXHR3aWR0aDogY2FsYyh2YXIoLS1fc2l6ZSkgKiAwLjQ2KTtcblx0aGVpZ2h0OiBjYWxjKHZhcigtLV9zaXplKSAqIDAuNDYpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtcm91bmQpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fY2hlY2tlZCk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgwKTtcblx0b3BhY2l0eTogMDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdHRyYW5zaXRpb246XG5cdFx0dHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uLWZhc3QpIHZhcigtLWVhc2Utc3RhbmRhcmQpLFxuXHRcdG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tZmFzdCkgdmFyKC0tZWFzZS1zdGFuZGFyZCk7XG59XG5cbi5yYWRpbyBpbnB1dDpjaGVja2VkIHtcblx0LS1fYm9yZGVyOiB2YXIoLS1fY2hlY2tlZCk7XG59XG5cbi5yYWRpbzpoYXMoaW5wdXQ6Y2hlY2tlZCk6OmJlZm9yZSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcblx0b3BhY2l0eTogMTtcbn1cblxuLnJhZGlvOmhhcyhpbnB1dDpjaGVja2VkKSB7XG5cdC0tX2xhYmVsOiB2YXIoLS1fbGFiZWwtY2hlY2tlZCk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbn1cblxuLnJhZGlvOmhvdmVyOm5vdCg6aGFzKGlucHV0OmNoZWNrZWQpKSB7XG5cdC0tX2JvcmRlcjogdmFyKC0tX2hvdmVyLWJvcmRlcik7XG5cdC0tX2JnOiB2YXIoLS1faG92ZXItYmcpO1xufVxuXG4ucmFkaW86aG92ZXI6bm90KDpoYXMoaW5wdXQ6Y2hlY2tlZCkpOm5vdCg6aGFzKGlucHV0OmRpc2FibGVkKSk6OmJlZm9yZSB7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSBzY2FsZSgxKTtcblx0b3BhY2l0eTogMC40O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSk7XG59XG5cbi5yYWRpbzpoYXMoaW5wdXQ6ZGlzYWJsZWQpIHtcblx0LS1fbGFiZWw6IHZhcigtLV9kaXNhYmxlZC1sYWJlbCk7XG5cdGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5yYWRpbyBpbnB1dDpkaXNhYmxlZCB7XG5cdC0tX2JnOiB2YXIoLS1fZGlzYWJsZWQtYmcpO1xuXHQtLV9ib3JkZXI6IHZhcigtLV9kaXNhYmxlZC1ib3JkZXIpO1xufVxuIiwiLypcbiAqIFN3aXRjaCDigJQgb24vb2ZmIHRvZ2dsZSAobmF0aXZlIGNoZWNrYm94IHN0eWxlZCBhcyBhIHNsaWRpbmcgc3dpdGNoKS5cbiAqXG4gKiAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIj48c3Bhbj5WZcWZZWpuw708L3NwYW4+PC9sYWJlbD5cbiAqXG4gKiBUaGVtZWFibGU6IC0tc3dpdGNoLWhlaWdodC93aWR0aC9yYWRpdXMvdHJhY2svYm9yZGVyL2tub2IvYm9yZGVyLWNoZWNrZWQva25vYi1jaGVja2VkL2xhYmVsXG4gKi9cblxuLnN3aXRjaCB7XG5cdC0tX2g6IHZhcigtLXN3aXRjaC1oZWlnaHQsIDEuMjVyZW0pO1xuXHQtLV93OiB2YXIoLS1zd2l0Y2gtd2lkdGgsIGNhbGModmFyKC0tX2gpICogMTggLyAxMSkpO1xuXHQtLV9wYWQ6IHZhcigtLXN3aXRjaC1wYWQsIGNhbGModmFyKC0tX2gpICogMiAvIDExKSk7XG5cdC0tX2tub2ItdzogdmFyKC0tc3dpdGNoLWtub2Itd2lkdGgsIGNhbGModmFyKC0tX2gpICogOSAvIDExKSk7XG5cdC0tX2tub2ItaDogdmFyKC0tc3dpdGNoLWtub2ItaGVpZ2h0LCBjYWxjKHZhcigtLV9oKSAqIDcgLyAxMSkpO1xuXHQtLV9yYWRpdXM6IHZhcigtLXN3aXRjaC1yYWRpdXMsIGNhbGModmFyKC0tX2gpICogMyAvIDExKSk7XG5cdC0tX2tub2ItcmFkaXVzOiB2YXIoLS1zd2l0Y2gta25vYi1yYWRpdXMsIGNhbGModmFyKC0tX2gpICogMiAvIDExKSk7XG5cblx0LS1fdHJhY2s6IHZhcigtLXN3aXRjaC10cmFjaywgdmFyKC0tY29sb3Itc3VyZmFjZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLXN3aXRjaC1ib3JkZXIsIHZhcigtLWNvbG9yLWZvcm0tYm9yZGVyKSk7XG5cdC0tX2JvcmRlci1jaGVja2VkOiB2YXIoLS1zd2l0Y2gtYm9yZGVyLWNoZWNrZWQsIHZhcigtLWNvbG9yLWZvcm0pKTtcblx0LS1fa25vYjogdmFyKC0tc3dpdGNoLWtub2IsIHZhcigtLWNvbG9yLWJvcmRlci1zdHJvbmcpKTtcblx0LS1fa25vYi1jaGVja2VkOiB2YXIoLS1zd2l0Y2gta25vYi1jaGVja2VkLCB2YXIoLS1jb2xvci1mb3JtKSk7XG5cblx0LS1fbGFiZWw6IHZhcigtLXN3aXRjaC1sYWJlbC1jb2xvciwgdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpKTtcblx0LS1fbGFiZWwtY2hlY2tlZDogdmFyKC0tc3dpdGNoLWxhYmVsLWNoZWNrZWQtY29sb3IsIHZhcigtLWNvbG9yLXRleHQpKTtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IHZhcigtLXN3aXRjaC1nYXAsIHZhcigtLXNwYWNlLXhzKSk7XG5cdGNvbG9yOiB2YXIoLS1fbGFiZWwpO1xuXHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5zd2l0Y2ggaW5wdXQge1xuXHRhcHBlYXJhbmNlOiBub25lO1xuXHRmbGV4LXNocmluazogMDtcblx0d2lkdGg6IHZhcigtLV93KTtcblx0aGVpZ2h0OiB2YXIoLS1faCk7XG5cdG1hcmdpbjogMDtcblx0Ym9yZGVyOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLV9ib3JkZXIpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1fcmFkaXVzKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tX3RyYWNrKTtcblx0Y3Vyc29yOiBpbmhlcml0O1xuXHR0cmFuc2l0aW9uOlxuXHRcdGJhY2tncm91bmQtY29sb3IgdmFyKC0tZHVyYXRpb24tYmFzZSkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0Ym9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uLWJhc2UpIHZhcigtLWVhc2Utc3RhbmRhcmQpO1xufVxuXG4uc3dpdGNoOjpiZWZvcmUge1xuXHRjb250ZW50OiBcIlwiO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGxlZnQ6IHZhcigtLV9wYWQpO1xuXHR0b3A6IDUwJTtcblx0d2lkdGg6IHZhcigtLV9rbm9iLXcpO1xuXHRoZWlnaHQ6IHZhcigtLV9rbm9iLWgpO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1fa25vYi1yYWRpdXMpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fa25vYik7XG5cdHRyYW5zbGF0ZTogMCAtNTAlO1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0dHJhbnNpdGlvbjpcblx0XHR0cmFuc2xhdGUgdmFyKC0tZHVyYXRpb24tYmFzZSkgdmFyKC0tZWFzZS1zdGFuZGFyZCksXG5cdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1kdXJhdGlvbi1iYXNlKSB2YXIoLS1lYXNlLXN0YW5kYXJkKTtcbn1cblxuLnN3aXRjaDpoYXMoaW5wdXQ6Y2hlY2tlZCkge1xuXHQtLV9ib3JkZXI6IHZhcigtLV9ib3JkZXItY2hlY2tlZCk7XG5cdC0tX2tub2I6IHZhcigtLV9rbm9iLWNoZWNrZWQpO1xuXHQtLV9sYWJlbDogdmFyKC0tX2xhYmVsLWNoZWNrZWQpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG5cbi5zd2l0Y2g6aGFzKGlucHV0OmNoZWNrZWQpOjpiZWZvcmUge1xuXHR0cmFuc2xhdGU6IGNhbGModmFyKC0tX3cpIC0gdmFyKC0tX2tub2ItdykgLSAyICogdmFyKC0tX3BhZCkpIC01MCU7XG59XG5cbi5zd2l0Y2g6aG92ZXI6bm90KDpoYXMoaW5wdXQ6Y2hlY2tlZCkpOm5vdCg6aGFzKGlucHV0OmRpc2FibGVkKSkge1xuXHQtLV9ib3JkZXI6IHZhcigtLXN3aXRjaC1ob3Zlci1ib3JkZXIsIHZhcigtLWNvbG9yLXRleHQtc3VidGxlKSk7XG5cdC0tX3RyYWNrOiB2YXIoLS1zd2l0Y2gtaG92ZXItYmcsIHZhcigtLWNvbG9yLXByaW1hcnktc29mdCkpO1xufVxuXG4uc3dpdGNoOmhhcyhpbnB1dDpkaXNhYmxlZCkge1xuXHQtLV9ib3JkZXI6IHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdC0tX2tub2I6IHZhcigtLWNvbG9yLWJvcmRlcik7XG5cdC0tX2xhYmVsOiB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSk7XG5cdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdG9wYWNpdHk6IDAuNztcbn1cbiIsIi8qXG4gKiBUYWdcbiAqXG4gKiAgIDxzcGFuIGNsYXNzPVwidGFnXCI+Q1o8L3NwYW4+XG4gKiAgIDxzcGFuIGNsYXNzPVwidGFnIHRhZy0tZGFuZ2VyXCI+SE9UPC9zcGFuPlxuICogICA8c3BhbiBjbGFzcz1cInRhZ1wiPkNaIDxidXR0b24gY2xhc3M9XCJ0YWdfX3JlbW92ZVwiIHR5cGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiUmVtb3ZlXCI+w5c8L2J1dHRvbj48L3NwYW4+XG4gKiAgIDxidXR0b24gY2xhc3M9XCJ0YWdcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIkFkZFwiPis8L2J1dHRvbj5cbiAqICAgPHNwYW4gY2xhc3M9XCJ0YWdcIj48aW1nIGNsYXNzPVwidGFnX19pY29uXCIgc3JjPVwi4oCmXCIgYWx0PVwiXCI+IEN6ZWNoPC9zcGFuPlxuICpcbiAqIENvbG9yIHZhcmlhbnRzOiAtLWRhbmdlci4gVGhlbWVhYmxlOiAtLXRhZy1iZywgLS10YWctZmcsIC0tdGFnLWJvcmRlci1jb2xvci5cbiAqL1xuXG4udGFnIHtcblx0LS1fYmc6IHZhcigtLXRhZy1iZywgdHJhbnNwYXJlbnQpO1xuXHQtLV9mZzogdmFyKC0tdGFnLWZnLCB2YXIoLS1jb2xvci10ZXh0LXN1YnRsZSkpO1xuXHQtLV9ib3JkZXI6IHZhcigtLXRhZy1ib3JkZXItY29sb3IsIHZhcigtLWNvbG9yLWJvcmRlci1zdHJvbmcpKTtcblxuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjZS0zeHMpO1xuXHRwYWRkaW5nOiAwIHZhcigtLXNwYWNlLTJ4cyk7XG5cdGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1fYm9yZGVyKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tX2JnKTtcblx0Y29sb3I6IHZhcigtLV9mZyk7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xuXHRmb250LXNpemU6IHZhcigtLXRleHQteHMpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi50YWctLWRhbmdlciB7XG5cdC0tX2JnOiB2YXIoLS1jb2xvci1kYW5nZXItc29mdCk7XG5cdC0tX2ZnOiB2YXIoLS1jb2xvci1kYW5nZXIpO1xuXHQtLV9ib3JkZXI6IHZhcigtLWNvbG9yLWRhbmdlcik7XG59XG5cbi50YWdfX3JlbW92ZSB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHRjb2xvcjogdmFyKC0tX2JvcmRlcik7XG5cdGZvbnQ6IGluaGVyaXQ7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHRjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50YWdfX3JlbW92ZTpob3ZlciB7XG5cdGNvbG9yOiB2YXIoLS1fZmcpO1xufVxuXG4udGFnX19pY29uIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGhlaWdodDogMWVtO1xuXHR3aWR0aDogYXV0bztcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXhzKTtcbn1cbiIsIi8qXG4gKiBBdXRoLWJveFxuICpcbiAqICAgPG1haW4gY2xhc3M9XCJhdXRoLWJveFwiPuKApjwvbWFpbj5cbiAqL1xuXG4uYXV0aC1ib3gge1xuXHR3aWR0aDogbWluKDgwdncsIDI4cmVtKTtcblx0cGFkZGluZzogMjhweCAzMnB4IDM2cHg7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0KTtcblx0YmFja2dyb3VuZDogdmFyKC0tY29sb3Itc3VyZmFjZSk7XG5cdGJvcmRlcjogdmFyKC0tYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5KTtcblx0Ym9yZGVyLXJhZGl1czogNHB4IDRweCA0cHggNDRweDtcblx0Ym94LXNoYWRvdzogdmFyKC0tc2hhZG93LXJhaXNlZCk7XG59XG4iLCIvKlxuICogQ2xvc2VcbiAqXG4gKiA8YnV0dG9uIGNsYXNzPVwiY2xvc2VcIiB0eXBlPVwiYnV0dG9uXCIgYXJpYS1sYWJlbD1cIlphdsWZw610XCI+PC9idXR0b24+XG4gKiA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgY2xvc2UtLXNtXCIgdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJaYXbFmcOtdFwiPjwvYnV0dG9uPlxuICovXG5cbi5jbG9zZSB7XG5cdC0tX3NpemU6IHZhcigtLWNsb3NlLXNpemUsIDEuNXJlbSk7XG5cdC0tX2ljb24tc2l6ZTogdmFyKC0tY2xvc2UtaWNvbi1zaXplLCAxM3B4KTtcblx0LS1fY29sb3I6IHZhcigtLWNsb3NlLWNvbG9yLCB2YXIoLS1jb2xvci1ib3JkZXItc3Ryb25nKSk7XG5cdC0tX2NvbG9yLWhvdmVyOiB2YXIoLS1jbG9zZS1jb2xvci1ob3ZlciwgdmFyKC0tY29sb3ItdGV4dC1zdWJ0bGUpKTtcblx0LS1faWNvbjogdmFyKC0tY2xvc2UtaWNvbiwgdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxMyAxMyclM0UlM0NwYXRoIGZpbGwtcnVsZT0nZXZlbm9kZCcgY2xpcC1ydWxlPSdldmVub2RkJyBkPSdNMy4xNjA1OCA2LjAzMjUxTDAuMDAwNjk2NDc4IDIuODcyNjNMMi44NzMzMiAyLjc5NDA4ZS0wNkw2LjAzMzIgMy4xNTk4OUw5LjE5MzA5IDEuNzgyNTVlLTA2TDEyLjA2NTcgMi44NzI2Mkw4LjkwNTgyIDYuMDMyNTFMMTIuMDY1NyA5LjE5MjM5TDkuMTkzMDggMTIuMDY1TDYuMDMzMiA4LjkwNTEzTDIuODczMzIgMTIuMDY1TDAuMDAwNjk1MTI5IDkuMTkyMzlMMy4xNjA1OCA2LjAzMjUxWk00LjIzNzgxIDcuMTA5NzRMMi4xNTUxMiA5LjE5MjQzTDIuODczMjggOS45MTA1OUw2LjAzMzE2IDYuNzUwN0w5LjE5MzEyIDkuOTEwNTFMOS45MTEyOCA5LjE5MjM1TDYuNzUxNCA2LjAzMjQ3TDkuOTExMjggMi44NzI1OUw5LjE5MzEyIDIuMTU0NDNMNi4wMzMxNiA1LjMxNDM5TDIuODczMjggMi4xNTQ1MUwyLjE1NTEyIDIuODcyNjZMNS4zMTUwMSA2LjAzMjU1TDQuMjM3ODEgNy4xMDk3NFonLyUzRSUzQy9zdmclM0VcIikpO1xuXG5cdGZsZXgtc2hyaW5rOiAwO1xuXHR3aWR0aDogdmFyKC0tX3NpemUpO1xuXHRoZWlnaHQ6IHZhcigtLV9zaXplKTtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fY29sb3IpO1xuXHQtd2Via2l0LW1hc2s6IHZhcigtLV9pY29uKSBjZW50ZXIgLyB2YXIoLS1faWNvbi1zaXplKSBuby1yZXBlYXQ7XG5cdG1hc2s6IHZhcigtLV9pY29uKSBjZW50ZXIgLyB2YXIoLS1faWNvbi1zaXplKSBuby1yZXBlYXQ7XG5cdGN1cnNvcjogcG9pbnRlcjtcblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1fY29sb3ItaG92ZXIpO1xuXHR9XG59XG5cbi5jbG9zZS0tc20ge1xuXHQtLV9zaXplOiAxcmVtO1xuXHQtLV9pY29uLXNpemU6IDExcHg7XG59XG4iLCIvKlxuICogTW9kYWxcbiAqXG4gKiAgIDxkaWFsb2cgY2xhc3M9XCJtb2RhbFwiPlxuICogICAgIDxoZWFkZXIgY2xhc3M9XCJtb2RhbF9faGVhZGVyXCI+XG4gKiAgICAgICA8aDIgY2xhc3M9XCJtb2RhbF9fdGl0bGVcIj5UaXRsZTwvaDI+XG4gKiAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiWmF2xZnDrXRcIj48L2J1dHRvbj5cbiAqICAgICA8L2hlYWRlcj5cbiAqICAgICA8ZGl2IGNsYXNzPVwibW9kYWxfX2JvZHlcIj7igKY8L2Rpdj5cbiAqICAgICA8Zm9vdGVyIGNsYXNzPVwibW9kYWxfX2Zvb3RlclwiPuKApmJ1dHRvbnPigKY8L2Zvb3Rlcj5cbiAqICAgPC9kaWFsb2c+XG4gKi9cblxuLm1vZGFsIHtcblx0bWFyZ2luOiBhdXRvOyAvKiByZXNldCB6ZXJvZXMgbWFyZ2luczsgcmVzdG9yZSBkaWFsb2cgY2VudGVyaW5nICovXG5cdHdpZHRoOiBtaW4oOTJ2dywgdmFyKC0tbW9kYWwtd2lkdGgsIDMwcmVtKSk7XG5cdG1heC1oZWlnaHQ6IDkwdmg7XG5cdG1heC1oZWlnaHQ6IDkwZHZoO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXI6IDA7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXN1cmZhY2UpO1xuXHRjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7XG5cdGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG5cdG9wYWNpdHk6IDA7XG5cdHNjYWxlOiAwLjk2O1xuXHR0cmFuc2l0aW9uOlxuXHRcdG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tYmFzZSkgdmFyKC0tZWFzZS1vdXQpLFxuXHRcdHNjYWxlIHZhcigtLWR1cmF0aW9uLWJhc2UpIHZhcigtLWVhc2Utb3V0KSxcblx0XHRkaXNwbGF5IHZhcigtLWR1cmF0aW9uLWJhc2UpIGFsbG93LWRpc2NyZXRlLFxuXHRcdG92ZXJsYXkgdmFyKC0tZHVyYXRpb24tYmFzZSkgYWxsb3ctZGlzY3JldGU7XG59XG5cbi5tb2RhbFtvcGVuXSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG9wYWNpdHk6IDE7XG5cdHNjYWxlOiAxO1xufVxuXG5Ac3RhcnRpbmctc3R5bGUge1xuXHQubW9kYWxbb3Blbl0ge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0c2NhbGU6IDAuOTY7XG5cdH1cbn1cblxuLm1vZGFsOjpiYWNrZHJvcCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tkcm9wKTtcblx0LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IHZhcigtLW1vZGFsLWJhY2tkcm9wLWZpbHRlciwgYmx1cigyLjVweCkpO1xuXHRiYWNrZHJvcC1maWx0ZXI6IHZhcigtLW1vZGFsLWJhY2tkcm9wLWZpbHRlciwgYmx1cigyLjVweCkpO1xuXHRvcGFjaXR5OiAwO1xuXHR0cmFuc2l0aW9uOlxuXHRcdG9wYWNpdHkgdmFyKC0tZHVyYXRpb24tYmFzZSkgdmFyKC0tZWFzZS1vdXQpLFxuXHRcdGRpc3BsYXkgdmFyKC0tZHVyYXRpb24tYmFzZSkgYWxsb3ctZGlzY3JldGUsXG5cdFx0b3ZlcmxheSB2YXIoLS1kdXJhdGlvbi1iYXNlKSBhbGxvdy1kaXNjcmV0ZTtcbn1cblxuLm1vZGFsW29wZW5dOjpiYWNrZHJvcCB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbkBzdGFydGluZy1zdHlsZSB7XG5cdC5tb2RhbFtvcGVuXTo6YmFja2Ryb3Age1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cbn1cblxuLm1vZGFsX19oZWFkZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGdhcDogdmFyKC0tc3BhY2UtbWQpO1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjZS1tZCkgdmFyKC0tc3BhY2UtbGcpO1xuXHRib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLWNvbG9yLWJvcmRlcik7XG59XG5cbi5tb2RhbF9fdGl0bGUge1xuXHRtYXJnaW46IDA7XG5cdGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1sZyk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbn1cblxuLm1vZGFsX19ib2R5IHtcblx0cGFkZGluZzogdmFyKC0tc3BhY2UtbGcpO1xuXHRvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4ubW9kYWxfX2Zvb3RlciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0Z2FwOiB2YXIoLS1zcGFjZS1zbSk7XG5cdHBhZGRpbmc6IHZhcigtLXNwYWNlLW1kKSB2YXIoLS1zcGFjZS1sZyk7XG5cdGJvcmRlci10b3A6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcbn1cbiIsIi8qXG4gKiBUb2FzdFxuICpcbiAqICAgPGRpdiBjbGFzcz1cInRvYXN0LXJlZ2lvblwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICogICAgIDxkaXYgY2xhc3M9XCJ0b2FzdCB0b2FzdC0tc3VjY2Vzc1wiIHJvbGU9XCJzdGF0dXNcIj5cbiAqICAgICAgIDxkaXYgY2xhc3M9XCJ0b2FzdF9fY29udGVudFwiPlxuICogICAgICAgICA8cCBjbGFzcz1cInRvYXN0X190aXRsZVwiPlVsb8W+ZW5vPC9wPlxuICogICAgICAgICA8cCBjbGFzcz1cInRvYXN0X19tZXNzYWdlXCI+Wm3Em255IGJ5bHkgw7pzcMSbxaFuxJsgdWxvxb5lbnkuPC9wPlxuICogICAgICAgPC9kaXY+XG4gKiAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UgY2xvc2UtLXNtXCIgdHlwZT1cImJ1dHRvblwiIGFyaWEtbGFiZWw9XCJaYXbFmcOtdFwiPjwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICA8L2Rpdj5cbiAqL1xuXG4udG9hc3QtcmVnaW9uIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHRpbnNldC1ibG9jay1zdGFydDogdmFyKC0tdG9hc3QtcmVnaW9uLWluc2V0LCB2YXIoLS1zcGFjZS1sZykpO1xuXHRpbnNldC1pbmxpbmUtZW5kOiB2YXIoLS10b2FzdC1yZWdpb24taW5zZXQsIHZhcigtLXNwYWNlLWxnKSk7XG5cdHotaW5kZXg6IHZhcigtLXotdG9hc3QpO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IHZhcigtLXRvYXN0LXJlZ2lvbi1nYXAsIHZhcigtLXNwYWNlLXNtKSk7XG5cdHdpZHRoOiBtaW4oOTJ2dywgdmFyKC0tdG9hc3Qtd2lkdGgsIDI0cmVtKSk7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4udG9hc3Qge1xuXHQtLV9iZzogdmFyKC0tdG9hc3QtYmcsIHZhcigtLWNvbG9yLXN1cmZhY2UpKTtcblx0LS1fZmc6IHZhcigtLXRvYXN0LWZnLCB2YXIoLS1jb2xvci10ZXh0KSk7XG5cdC0tX2FjY2VudDogdmFyKC0tdG9hc3QtYWNjZW50LCB2YXIoLS1jb2xvci1ib3JkZXItc3Ryb25nKSk7XG5cblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdGdhcDogdmFyKC0tc3BhY2Utc20pO1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjZS1zbSkgdmFyKC0tc3BhY2UtbWQpO1xuXHRib3JkZXI6IHZhcigtLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTtcblx0Ym9yZGVyLWlubGluZS1zdGFydDogdmFyKC0tYm9yZGVyLXdpZHRoLXN0cm9uZykgc29saWQgdmFyKC0tX2FjY2VudCk7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLV9iZyk7XG5cdGNvbG9yOiB2YXIoLS1fZmcpO1xuXHRib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuXHRwb2ludGVyLWV2ZW50czogYXV0bztcblx0b3BhY2l0eTogMTtcblx0c2NhbGU6IDE7XG5cdHRyYW5zaXRpb246XG5cdFx0b3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1iYXNlKSB2YXIoLS1lYXNlLW91dCksXG5cdFx0c2NhbGUgdmFyKC0tZHVyYXRpb24tYmFzZSkgdmFyKC0tZWFzZS1vdXQpO1xuXG5cdCYuaXMtbGVhdmluZyB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRzY2FsZTogMC45Njtcblx0fVxufVxuXG5Ac3RhcnRpbmctc3R5bGUge1xuXHQudG9hc3Qge1xuXHRcdG9wYWNpdHk6IDA7XG5cdFx0c2NhbGU6IDAuOTY7XG5cdH1cbn1cblxuLnRvYXN0X19jb250ZW50IHtcblx0ZmxleDogMTtcblx0bWluLXdpZHRoOiAwO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRnYXA6IHZhcigtLXNwYWNlLTN4cyk7XG59XG5cbi50b2FzdF9fdGl0bGUge1xuXHRtYXJnaW46IDA7XG5cdGZvbnQtc2l6ZTogdmFyKC0tdGV4dC1zbSk7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcblx0bGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtc251Zyk7XG59XG5cbi50b2FzdF9fbWVzc2FnZSB7XG5cdG1hcmdpbjogMDtcblx0Zm9udC1zaXplOiB2YXIoLS10ZXh0LXNtKTtcblx0Y29sb3I6IHZhcigtLWNvbG9yLXRleHQtbXV0ZWQpO1xuXHRsaW5lLWhlaWdodDogdmFyKC0tbGluZS1zbnVnKTtcblx0dGV4dC13cmFwOiBwcmV0dHk7XG59XG5cbi50b2FzdCAuY2xvc2Uge1xuXHRtYXJnaW4tYmxvY2stc3RhcnQ6IDAuMTVyZW07IC8qIG51ZGdlIHRvIGFsaWduIHdpdGggdGl0bGUgY2FwIGhlaWdodCAqL1xufVxuXG4udG9hc3QtLXN1Y2Nlc3Mge1xuXHQtLV9iZzogdmFyKC0tY29sb3Itc3VjY2Vzcy1zb2Z0KTtcblx0LS1fYWNjZW50OiB2YXIoLS1jb2xvci1zdWNjZXNzKTtcbn1cblxuLnRvYXN0LS1kYW5nZXIge1xuXHQtLV9iZzogdmFyKC0tY29sb3ItZGFuZ2VyLXNvZnQpO1xuXHQtLV9hY2NlbnQ6IHZhcigtLWNvbG9yLWRhbmdlcik7XG59XG5cbi50b2FzdC0td2FybmluZyB7XG5cdC0tX2JnOiB2YXIoLS1jb2xvci13YXJuaW5nLXNvZnQpO1xuXHQtLV9hY2NlbnQ6IHZhcigtLWNvbG9yLXdhcm5pbmcpO1xufVxuXG4udG9hc3QtLWluZm8ge1xuXHQtLV9iZzogdmFyKC0tY29sb3ItaW5mby1zb2Z0KTtcblx0LS1fYWNjZW50OiB2YXIoLS1jb2xvci1pbmZvKTtcbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0LnRvYXN0IHtcblx0XHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAxbXM7XG5cdFx0c2NhbGU6IDE7XG5cdH1cbn1cbiIsIi8qXG4gKiBTcGlubmVyXG4gKlxuICogPHNwYW4gY2xhc3M9XCJzcGlubmVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGFiZWw9XCJOYcSNw610w6Fuw61cIj48L3NwYW4+XG4gKiA8c3BhbiBjbGFzcz1cInNwaW5uZXIgc3Bpbm5lci0tc21cIj48L3NwYW4+XG4gKiA8c3BhbiBjbGFzcz1cInNwaW5uZXIgc3Bpbm5lci0tbGdcIj48L3NwYW4+XG4gKi9cblxuLnNwaW5uZXIsXG4uYnV0dG9uLmlzLWxvYWRpbmc6OmFmdGVyIHtcblx0LS1fc2l6ZTogdmFyKC0tc3Bpbm5lci1zaXplLCAxLjI1cmVtKTtcblx0LS1fd2lkdGg6IHZhcigtLXNwaW5uZXItd2lkdGgsIDJweCk7XG5cdC0tX2NvbG9yOiB2YXIoLS1zcGlubmVyLWNvbG9yLCB2YXIoLS1jb2xvci1hY2NlbnQpKTtcblx0LS1fdHJhY2s6IHZhcigtLXNwaW5uZXItdHJhY2ssIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1fY29sb3IpIDIwJSwgdHJhbnNwYXJlbnQpKTtcblx0LS1fc3BlZWQ6IHZhcigtLXNwaW5uZXItc3BlZWQsIHZhcigtLWR1cmF0aW9uLXNsb3cpKTtcblxuXHR3aWR0aDogdmFyKC0tX3NpemUpO1xuXHRoZWlnaHQ6IHZhcigtLV9zaXplKTtcblx0Ym9yZGVyOiB2YXIoLS1fd2lkdGgpIHNvbGlkIHZhcigtLV90cmFjayk7XG5cdGJvcmRlci10b3AtY29sb3I6IHZhcigtLV9jb2xvcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1yb3VuZCk7XG5cdGFuaW1hdGlvbjogc3Bpbm5lci1zcGluIHZhcigtLV9zcGVlZCkgbGluZWFyIGluZmluaXRlO1xufVxuXG4uc3Bpbm5lciB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLnNwaW5uZXItLXNtIHtcblx0LS1fc2l6ZTogMC44NzVyZW07XG59XG5cbi5zcGlubmVyLS1sZyB7XG5cdC0tX3NpemU6IDJyZW07XG5cdC0tX3dpZHRoOiAzcHg7XG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1zcGluIHtcblx0dG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7IH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0LnNwaW5uZXIsXG5cdC5idXR0b24uaXMtbG9hZGluZzo6YWZ0ZXIge1xuXHRcdGFuaW1hdGlvbi1kdXJhdGlvbjogY2FsYyh2YXIoLS1fc3BlZWQpICogNCk7XG5cdH1cbn1cbiIsIi8qXG4gKiBBdXRoIHNjcmVlbiDigJQgbGF5b3V0IG9ubHkgKGNhcmQgYW5jaG9yaW5nLCBzaWRlIGhlbHAsIGNvcm5lciBzd2l0Y2hlcnMsXG4gKiBmb3JtIGNvbHVtbikuIEVsZW1lbnQgdmlzdWFscyBsaXZlIGluIGNvbXBvbmVudHMuXG4gKlxuICogICA8Ym9keSBjbGFzcz1cImF1dGgtc2NyZWVuXCI+XG4gKiAgICAgPG5hdiBjbGFzcz1cImF1dGgtbGFuZ3MgdGFic1wiPmxhbmd1YWdlIHN3aXRjaGVyPC9uYXY+XG4gKiAgICAgPGRpdiBjbGFzcz1cImF1dGgtbGF5b3V0XCI+XG4gKiAgICAgICA8bWFpbiBjbGFzcz1cImF1dGgtYm94XCI+XG4gKiAgICAgICAgIDxoMSBjbGFzcz1cImF1dGgtbG9nb1wiPjwvaDE+XG4gKiAgICAgICAgIDxwIGNsYXNzPVwiYXV0aC1pbnRyb1wiPjwvcD5cbiAqICAgICAgICAgPG5hdiBjbGFzcz1cImF1dGgtbWV0aG9kcyB0YWJzXCI+bG9naW4gbWV0aG9kIHN3aXRjaGVyIChvcHRpb25hbCnigKY8L25hdj5cbiAqICAgICAgICAgPGZvcm0gY2xhc3M9XCJncmlkXCI+IC5maWVsZC8uaW5wdXQsIC5jaGVja2JveCwgLmJ1dHRvbiA8L2Zvcm0+XG4gKiAgICAgICA8L21haW4+XG4gKiAgICAgICA8YXNpZGUgY2xhc3M9XCJhdXRoLWFzaWRlXCI+4oCmPC9hc2lkZT5cbiAqICAgICA8L2Rpdj5cbiAqICAgICA8YnV0dG9uIGNsYXNzPVwiYXV0aC10aGVtZVwiPuKApnRoZW1lIHRvZ2dsZeKApjwvYnV0dG9uPlxuICogICA8L2JvZHk+XG4gKi9cblxuLmF1dGgtc2NyZWVuIHtcblx0LS1jb2xvci1iZzogdmFyKC0tbmV1dHJhbC00MDApO1xuXHQtLWNvbG9yLWFzaWRlOiB2YXIoLS1uZXV0cmFsLTgwMCk7XG5cdC0tYXV0aC1vZmZzZXQtYmxvY2s6IDEwdnc7XG5cdC0tYXV0aC1vZmZzZXQtaW5saW5lOiAxNC41dnc7XG5cdC0tc2hhZG93LXJhaXNlZC1lZGdlOiB2YXIoLS1uZXV0cmFsLTk1MCk7XG5cblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IHNhZmUgY2VudGVyO1xuXHRwYWRkaW5nOiB2YXIoLS1zcGFjZS0yeGwpIHZhcigtLXNwYWNlLWxnKTtcbn1cblxuLmF1dGgtbGF5b3V0IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiB2YXIoLS1zcGFjZS1sZyk7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNDhyZW0pIHtcblx0LmF1dGgtc2NyZWVuIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGFsaWduLWl0ZW1zOiBzYWZlIGNlbnRlcjtcblx0XHRwYWRkaW5nOiB2YXIoLS1hdXRoLW9mZnNldC1ibG9jaywgdmFyKC0tc3BhY2UtMnhsKSkgdmFyKC0tc3BhY2UteGwpIHZhcigtLWF1dGgtb2Zmc2V0LWJsb2NrLCB2YXIoLS1zcGFjZS0yeGwpKSB2YXIoLS1hdXRoLW9mZnNldC1pbmxpbmUpO1xuXHR9XG5cblx0LmF1dGgtbGF5b3V0IHtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRnYXA6IHZhcigtLXNwYWNlLTJ4bCk7XG5cdFx0d2lkdGg6IG1heC1jb250ZW50O1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0fVxufVxuXG4uYXV0aC1sb2dvIHtcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtbWQpO1xuXHRmb250LXNpemU6IHZhcigtLXRleHQtbGcpO1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG5cbi5hdXRoLWludHJvIHtcblx0bWFyZ2luLXRvcDogMDtcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtbGcpO1xufVxuXG4uYXV0aC1tZXRob2RzIHtcblx0bWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2UtbGcpO1xufVxuXG4uYXV0aC1hc2lkZSB7XG5cdGNvbG9yOiB2YXIoLS1jb2xvci1hc2lkZSk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1zcGFjZS1zbSk7XG59XG5cbi5hdXRoLWxhbmdzIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IHZhcigtLXNwYWNlLWxnKTtcblx0cmlnaHQ6IHZhcigtLXNwYWNlLWxnKTtcblx0ei1pbmRleDogdmFyKC0tei1zdGlja3kpO1xufVxuXG4uYXV0aC10aGVtZSB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0Ym90dG9tOiB2YXIoLS1zcGFjZS1sZyk7XG5cdHJpZ2h0OiB2YXIoLS1zcGFjZS1sZyk7XG5cdHotaW5kZXg6IHZhcigtLXotc3RpY2t5KTtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR3aWR0aDogMi43NXJlbTtcblx0aGVpZ2h0OiAyLjc1cmVtO1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtcm91bmQpO1xufVxuXG4uYXV0aC1ib3ggYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG59XG4iLCIudmlzdWFsbHktaGlkZGVuOm5vdCg6Zm9jdXMpOm5vdCg6YWN0aXZlKSB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0d2lkdGg6IDFweDtcblx0aGVpZ2h0OiAxcHg7XG5cdG1hcmdpbjogLTFweDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyOiAwO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRjbGlwLXBhdGg6IGluc2V0KDUwJSk7XG59XG5cbi5jb250YWluZXIge1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiB2YXIoLS1jb250YWluZXItbWF4KTtcblx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdG1hcmdpbi1yaWdodDogYXV0bztcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1jb250ZW50LXBhZGRpbmcpO1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1jb250ZW50LXBhZGRpbmcpO1xufVxuXG4uZmxvdyA+ICogKyAqIHtcblx0bWFyZ2luLXRvcDogdmFyKC0tZmxvdy1zcGFjZSwgdmFyKC0tc3BhY2UtbWQpKTtcbn1cblxuLnJhaXNlZC1zaGFkb3cgeyBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctcmFpc2VkKTsgfVxuXG4udGV4dC1tdXRlZCB7IGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkKTsgfVxuLnRleHQtc3VidGxlIHsgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtc3VidGxlKTsgfVxuLnRleHQtdHJ1bmNhdGUge1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbiJdfQ== */