/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/globals/globals.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which hides an element in DOM.
 */

.ck-hidden {
	/* Override selector specificity. Otherwise, all elements with some display
	style defined will override this one, which is not a desired result. */
	display: none !important;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-reset,
.ck.ck-reset_all,
.ck.ck-reset_all * {
	box-sizing: border-box;
	width: auto;
	height: auto;
	position: static;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-z-default: 1;
	--ck-z-modal: calc( var(--ck-z-default) + 999 );
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class that disables all transitions of the element and its children.
 */

.ck-transitions-disabled,
.ck-transitions-disabled * {
	transition: none !important;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/globals/globals.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-color-base-foreground: 								hsl(0, 0%, 98%);
	--ck-color-base-background: 								hsl(0, 0%, 100%);
	--ck-color-base-border: 									hsl(0, 0%, 77%);
	--ck-color-base-action: 									hsl(104, 44%, 48%);
	--ck-color-base-focus: 										hsl(209, 92%, 70%);
	--ck-color-base-text: 										hsl(0, 0%, 20%);
	--ck-color-base-active: 									hsl(208, 88%, 52%);
	--ck-color-base-active-focus:								hsl(208, 88%, 47%);
	--ck-color-base-error:										hsl(15, 100%, 43%);

	/* -- Generic colors ------------------------------------------------------------------------ */

	--ck-color-focus-border-coordinates: 						208, 79%, 51%;
	--ck-color-focus-border: 									hsl(var(--ck-color-focus-border-coordinates));
	--ck-color-focus-outer-shadow:								hsl(207, 89%, 86%);
	--ck-color-focus-disabled-shadow:							hsla(209, 90%, 72%,.3);
	--ck-color-focus-error-shadow:								hsla(9,100%,56%,.3);
	--ck-color-text: 											var(--ck-color-base-text);
	--ck-color-shadow-drop: 									hsla(0, 0%, 0%, 0.15);
	--ck-color-shadow-drop-active:								hsla(0, 0%, 0%, 0.2);
	--ck-color-shadow-inner: 									hsla(0, 0%, 0%, 0.1);

	/* -- Buttons ------------------------------------------------------------------------------- */

	--ck-color-button-default-background: 						transparent;
	--ck-color-button-default-hover-background: 				hsl(0, 0%, 90%);
	--ck-color-button-default-active-background: 				hsl(0, 0%, 85%);
	--ck-color-button-default-active-shadow: 					hsl(0, 0%, 75%);
	--ck-color-button-default-disabled-background: 				transparent;

	--ck-color-button-on-background: 							hsl(0, 0%, 87%);
	--ck-color-button-on-hover-background: 						hsl(0, 0%, 77%);
	--ck-color-button-on-active-background: 					hsl(0, 0%, 73%);
	--ck-color-button-on-active-shadow: 						hsl(0, 0%, 63%);
	--ck-color-button-on-disabled-background: 					hsl(0, 0%, 87%);

	--ck-color-button-action-background: 						var(--ck-color-base-action);
	--ck-color-button-action-hover-background: 					hsl(104, 44%, 43%);
	--ck-color-button-action-active-background: 				hsl(104, 44%, 41%);
	--ck-color-button-action-active-shadow: 					hsl(104, 44%, 36%);
	--ck-color-button-action-disabled-background: 				hsl(104, 44%, 58%);
	--ck-color-button-action-text: 								var(--ck-color-base-background);

	--ck-color-button-save: 									hsl(120, 100%, 27%);
	--ck-color-button-cancel: 									hsl(15, 100%, 43%);

	--ck-color-switch-button-off-background:					hsl(0, 0%, 69%);
	--ck-color-switch-button-off-hover-background:				hsl(0, 0%, 64%);
	--ck-color-switch-button-on-background:						var(--ck-color-button-action-background);
	--ck-color-switch-button-on-hover-background:				hsl(104, 44%, 43%);
	--ck-color-switch-button-inner-background:					var(--ck-color-base-background);
	--ck-color-switch-button-inner-shadow:						hsla(0, 0%, 0%, 0.1);

	/* -- Dropdown ------------------------------------------------------------------------------ */

	--ck-color-dropdown-panel-background: 						var(--ck-color-base-background);
	--ck-color-dropdown-panel-border: 							var(--ck-color-base-border);

	/* -- Input --------------------------------------------------------------------------------- */

	--ck-color-input-background: 								var(--ck-color-base-background);
	--ck-color-input-border: 									hsl(0, 0%, 78%);
	--ck-color-input-error-border:								var(--ck-color-base-error);
	--ck-color-input-text: 										var(--ck-color-base-text);
	--ck-color-input-disabled-background: 						hsl(0, 0%, 95%);
	--ck-color-input-disabled-border: 							hsl(0, 0%, 78%);
	--ck-color-input-disabled-text: 							hsl(0, 0%, 46%);

	/* -- List ---------------------------------------------------------------------------------- */

	--ck-color-list-background: 								var(--ck-color-base-background);
	--ck-color-list-button-hover-background: 					var(--ck-color-button-default-hover-background);
	--ck-color-list-button-on-background: 						var(--ck-color-base-active);
	--ck-color-list-button-on-background-focus: 				var(--ck-color-base-active-focus);
	--ck-color-list-button-on-text:								var(--ck-color-base-background);

	/* -- Panel --------------------------------------------------------------------------------- */

	--ck-color-panel-background: 								var(--ck-color-base-background);
	--ck-color-panel-border: 									var(--ck-color-base-border);

	/* -- Toolbar ------------------------------------------------------------------------------- */

	--ck-color-toolbar-background: 								var(--ck-color-base-foreground);
	--ck-color-toolbar-border: 									var(--ck-color-base-border);

	/* -- Tooltip ------------------------------------------------------------------------------- */

	--ck-color-tooltip-background: 								var(--ck-color-base-text);
	--ck-color-tooltip-text: 									var(--ck-color-base-background);

	/* -- Engine -------------------------------------------------------------------------------- */

	--ck-color-engine-placeholder-text: 						hsl(0, 0%, 44%);

	/* -- Upload -------------------------------------------------------------------------------- */

	--ck-color-upload-bar-background:		 					hsl(209, 92%, 70%);

	/* -- Link -------------------------------------------------------------------------------- */

	--ck-color-link-default:									hsl(240, 100%, 47%);
	--ck-color-link-selected-background:						hsla(201, 100%, 56%, 0.1);
	--ck-color-link-fake-selection:								hsla(201, 100%, 56%, 0.3);
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	/**
	 * An opacity value of disabled UI item.
	 */
	--ck-disabled-opacity: .5;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	/**
	 * The geometry of the of focused element's outer shadow.
	 */
	--ck-focus-outer-shadow-geometry: 0 0 0 3px;

	/**
	 * A visual style of focused element's outer shadow.
	 */
	--ck-focus-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);

	/**
	 * A visual style of focused element's outer shadow (when disabled).
	 */
	--ck-focus-disabled-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);

	/**
	 * A visual style of focused element's outer shadow (when has errors).
	 */
	--ck-focus-error-outer-shadow: var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);

	/**
	 * A visual style of focused element's border or outline.
	 */
	--ck-focus-ring: 1px solid var(--ck-color-focus-border);
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-font-size-base: 13px;
	--ck-line-height-base: 1.84615;
	--ck-font-face: Helvetica, Arial, Tahoma, Verdana, Sans-Serif;

	--ck-font-size-tiny: 0.7em;
	--ck-font-size-small: 0.75em;
	--ck-font-size-normal: 1em;
	--ck-font-size-big: 1.4em;
	--ck-font-size-large: 1.8em;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	/* This is super-important. This is **manually** adjusted so a button without an icon
	is never smaller than a button with icon, additionally making sure that text-less buttons
	are perfect squares. The value is also shared by other components which should stay "in-line"
	with buttons. */
	--ck-ui-component-min-height: 2.3em;
}

/**
 * Resets an element, ignoring its children.
 */

.ck.ck-reset,
.ck.ck-reset_all,
.ck.ck-reset_all * {
	/* Do not include inheritable rules here. */
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	text-decoration: none;
	vertical-align: middle;
	transition: none;

	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/105 */
	word-wrap: break-word;
}

/**
 * Resets an element AND its children.
 */

.ck.ck-reset_all,
.ck.ck-reset_all * {
	/* These are rule inherited by all children elements. */
	border-collapse: collapse;
	font: normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);
	color: var(--ck-color-text);
	text-align: left;
	white-space: nowrap;
	cursor: auto;
	float: none;
}

.ck.ck-reset_all .ck-rtl * {
		text-align: right;
	}

.ck.ck-reset_all iframe {
		/* For IE */
		vertical-align: inherit;
	}

.ck.ck-reset_all textarea {
		white-space: pre-wrap;
	}

.ck.ck-reset_all textarea,
	.ck.ck-reset_all input[type="text"],
	.ck.ck-reset_all input[type="password"] {
		cursor: text;
	}

.ck.ck-reset_all textarea[disabled],
	.ck.ck-reset_all input[type="text"][disabled],
	.ck.ck-reset_all input[type="password"][disabled] {
		cursor: default;
	}

.ck.ck-reset_all fieldset {
		padding: 10px;
		border: 2px groove hsl(255, 7%, 88%);
	}

.ck.ck-reset_all button::-moz-focus-inner {
		/* See http://stackoverflow.com/questions/5517744/remove-extra-button-spacing-padding-in-firefox */
		padding: 0;
		border: 0
	}

/**
 * Default UI rules for RTL languages.
 */

.ck[dir="rtl"],
.ck[dir="rtl"] .ck {
	text-align: right;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Default border-radius value.
 */

:root{
	--ck-border-radius: 2px;
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	/**
	 * A visual style of element's inner shadow (i.e. input).
	 */
	--ck-inner-shadow: 2px 2px 3px var(--ck-color-shadow-inner) inset;

	/**
	 * A visual style of element's drop shadow (i.e. panel).
	 */
	--ck-drop-shadow: 0 1px 2px 1px var(--ck-color-shadow-drop);

	/**
	 * A visual style of element's active shadow (i.e. comment or suggestion).
	 */
	--ck-drop-shadow-active: 0 3px 6px 1px var(--ck-color-shadow-drop-active);
}

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-spacing-unit: 						0.6em;
	--ck-spacing-large: 					calc(var(--ck-spacing-unit) * 1.5);
	--ck-spacing-standard: 					var(--ck-spacing-unit);
	--ck-spacing-medium: 					calc(var(--ck-spacing-unit) * 0.8);
	--ck-spacing-small: 					calc(var(--ck-spacing-unit) * 0.5);
	--ck-spacing-tiny: 						calc(var(--ck-spacing-unit) * 0.3);
	--ck-spacing-extra-tiny: 				calc(var(--ck-spacing-unit) * 0.16);
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonpanel.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	/* Make sure the balloon arrow does not float over its children. */
	--ck-balloon-panel-arrow-z-index: calc(var(--ck-z-default) - 3);
}

.ck.ck-balloon-panel {
	display: none;
	position: absolute;

	z-index: var(--ck-z-modal)
}

.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::before,
		.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::after {
			content: "";
			position: absolute;
		}

.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::before {
			z-index: var(--ck-balloon-panel-arrow-z-index);
		}

.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::after {
			z-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);
		}

.ck.ck-balloon-panel[class*="arrow_n"]::before {
			z-index: var(--ck-balloon-panel-arrow-z-index);
		}

.ck.ck-balloon-panel[class*="arrow_n"]::after {
			z-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);
		}

.ck.ck-balloon-panel[class*="arrow_s"]::before {
			z-index: var(--ck-balloon-panel-arrow-z-index);
		}

.ck.ck-balloon-panel[class*="arrow_s"]::after {
			z-index: calc(var(--ck-balloon-panel-arrow-z-index) + 1);
		}

.ck.ck-balloon-panel.ck-balloon-panel_visible {
		display: block;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonpanel.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

:root {
	--ck-balloon-arrow-offset: 2px;
	--ck-balloon-arrow-height: 10px;
	--ck-balloon-arrow-half-width: 8px;
	--ck-balloon-arrow-drop-shadow: 0 2px 2px var(--ck-color-shadow-drop);
}

.ck.ck-balloon-panel {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-balloon-panel, .ck.ck-balloon-panel.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-balloon-panel {
	box-shadow: var(--ck-drop-shadow), 0 0;

	min-height: 15px;

	background: var(--ck-color-panel-background);
	border: 1px solid var(--ck-color-panel-border)
}

.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::before,
		.ck.ck-balloon-panel.ck-balloon-panel_with-arrow::after {
			width: 0;
			height: 0;
			border-style: solid;
		}

.ck.ck-balloon-panel[class*="arrow_n"]::before,
		.ck.ck-balloon-panel[class*="arrow_n"]::after {
			border-width: 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width);
		}

.ck.ck-balloon-panel[class*="arrow_n"]::before {
			border-color: transparent transparent var(--ck-color-panel-border) transparent;
		}

.ck.ck-balloon-panel[class*="arrow_n"]::after {
			border-color: transparent transparent var(--ck-color-panel-background) transparent;
			margin-top: var(--ck-balloon-arrow-offset);
		}

.ck.ck-balloon-panel[class*="arrow_s"]::before,
		.ck.ck-balloon-panel[class*="arrow_s"]::after {
			border-width: var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width);
		}

.ck.ck-balloon-panel[class*="arrow_s"]::before {
			border-color: var(--ck-color-panel-border) transparent transparent;
			filter: drop-shadow(var(--ck-balloon-arrow-drop-shadow));
		}

.ck.ck-balloon-panel[class*="arrow_s"]::after {
			border-color: var(--ck-color-panel-background) transparent transparent transparent;
			margin-bottom: var(--ck-balloon-arrow-offset);
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_n::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_n::after {
			left: 50%;
			margin-left: calc(-1 * var(--ck-balloon-arrow-half-width));
			top: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw::after {
			left: calc(2 * var(--ck-balloon-arrow-half-width));
			top: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne::after {
			right: calc(2 * var(--ck-balloon-arrow-half-width));
			top: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_s::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_s::after {
			left: 50%;
			margin-left: calc(-1 * var(--ck-balloon-arrow-half-width));
			bottom: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw::after {
			left: calc(2 * var(--ck-balloon-arrow-half-width));
			bottom: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_se::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_se::after {
			right: calc(2 * var(--ck-balloon-arrow-half-width));
			bottom: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme::after {
			right: 25%;
			margin-right: calc(2 * var(--ck-balloon-arrow-half-width));
			bottom: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw::after {
			left: 25%;
			margin-left: calc(2 * var(--ck-balloon-arrow-half-width));
			bottom: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme::after {
			right: 25%;
			margin-right: calc(2 * var(--ck-balloon-arrow-half-width));
			top: calc(-1 * var(--ck-balloon-arrow-height));
		}

.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw::before,
		.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw::after {
			left: 25%;
			margin-left: calc(2 * var(--ck-balloon-arrow-half-width));
			top: calc(-1 * var(--ck-balloon-arrow-height));
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/icon/icon.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-icon {
	vertical-align: middle;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/icon/icon.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-icon-size: calc(var(--ck-line-height-base) * var(--ck-font-size-normal));
}

.ck.ck-icon {
	width: var(--ck-icon-size);
	height: var(--ck-icon-size);

	/* Multiplied by the height of the line in "px" should give SVG "viewport" dimensions */
	font-size: .8333350694em;

	color: inherit;

	/* Inherit cursor style (#5). */
	cursor: inherit;

	/* This will prevent blurry icons on Firefox. See #340. */
	will-change: transform
}

.ck.ck-icon * {
		/* Inherit cursor style (#5). */
		cursor: inherit;

		/* Allows dynamic coloring of the icons. */
		color: inherit
	}

.ck.ck-icon *:not([fill]) {
			/* Needed by FF. */
			fill: currentColor;
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/tooltip/tooltip.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-tooltip,
.ck.ck-tooltip .ck-tooltip__text::after {
	position: absolute;

	/* Without this, hovering the tooltip could keep it visible. */
	pointer-events: none;

	/* This is to get rid of flickering when transitioning opacity in Chrome.
	It's weird but it works. */
	-webkit-backface-visibility: hidden;
}

.ck.ck-tooltip {
	/* Tooltip is hidden by default. */
	visibility: hidden;
	opacity: 0;
	display: none;
	z-index: var(--ck-z-modal)
}

.ck.ck-tooltip .ck-tooltip__text {
		display: inline-block
	}

.ck.ck-tooltip .ck-tooltip__text::after {
			content: "";
			width: 0;
			height: 0;
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/tooltip/tooltip.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

:root {
	--ck-tooltip-arrow-size: 5px;
}

.ck.ck-tooltip {
	left: 50%;

	/*
	 * Prevent blurry tooltips in LoDPI environments.
	 * See https://github.com/ckeditor/ckeditor5/issues/1802.
	 */
	top: 0;

	/*
	 * For the transition to work, the tooltip must be controlled
	 * using visibility+opacity. A delay prevents a "tooltip avalanche"
	 * i.e. when scanning the toolbar with mouse cursor.
	 */
	transition: opacity .2s ease-in-out .2s
}

.ck.ck-tooltip .ck-tooltip__text {
		border-radius: 0
	}

.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text, .ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
	}

.ck.ck-tooltip .ck-tooltip__text {

		font-size: .9em;
		line-height: 1.5;
		color: var(--ck-color-tooltip-text);
		padding: var(--ck-spacing-small) var(--ck-spacing-medium);
		background: var(--ck-color-tooltip-background);
		position: relative;
		left: -50%
	}

.ck.ck-tooltip .ck-tooltip__text::after {
			/*
			 * For the transition to work, the tooltip must be controlled
			 * using visibility+opacity. A delay prevents a "tooltip avalanche"
			 * i.e. when scanning the toolbar with mouse cursor.
			 */
			transition: opacity .2s ease-in-out .2s;
			border-style: solid;
			left: 50%;
		}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip south of the element.
	 *
	 *       [element]
	 *           ^
	 *     +-----------+
	 *     |  Tooltip  |
	 *     +-----------+
	 */
}

.ck.ck-tooltip.ck-tooltip_s,
	.ck.ck-tooltip.ck-tooltip_sw,
	.ck.ck-tooltip.ck-tooltip_se {
		bottom: calc(-1 * var(--ck-tooltip-arrow-size));
		transform: translateY( 100% )
	}

.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text::after, .ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text::after, .ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text::after {
			/* 1px addresses gliches in rendering causing gap between the triangle and the text */
			top: calc(-1 * var(--ck-tooltip-arrow-size) + 1px);
			transform: translateX( -50% );
			border-color: transparent transparent var(--ck-color-tooltip-background) transparent;
			border-width: 0 var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size);
		}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip south-west of the element.
	 *
	 *        [element]
	 *            ^
	 *  +-----------+
	 *  |  Tooltip  |
	 *  +-----------+
	 */
}

.ck.ck-tooltip.ck-tooltip_sw {
		right: 50%;
		left: auto
	}

.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text {
			left: auto;
			right: calc( -2 * var(--ck-tooltip-arrow-size));
		}

.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text::after {
			left: auto;
			right: 0;
		}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip south-east of the element.
	 *
	 *  [element]
	 *      ^
	 *    +-----------+
	 *    |  Tooltip  |
	 *    +-----------+
	 */
}

.ck.ck-tooltip.ck-tooltip_se {
		left: 50%;
		right: auto
	}

.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text {
			right: auto;
			left: calc( -2 * var(--ck-tooltip-arrow-size));
		}

.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text::after {
			right: auto;
			left: 0;
			transform: translateX( 50% );
		}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip north of the element.
	 *
	 *     +-----------+
	 *     |  Tooltip  |
	 *     +-----------+
	 *           V
	 *       [element]
	 */
}

.ck.ck-tooltip.ck-tooltip_n {
		top: calc(-1 * var(--ck-tooltip-arrow-size));
		transform: translateY( -100% )
	}

.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text::after {
			bottom: calc(-1 * var(--ck-tooltip-arrow-size));
			transform: translateX( -50% );
			border-color: var(--ck-color-tooltip-background) transparent transparent transparent;
			border-width: var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) 0 var(--ck-tooltip-arrow-size);
		}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip east of the element.
	 *
	 *                +----------+
	 *    [element] < |   east   |
	 *                +----------+
	 */
}

.ck.ck-tooltip.ck-tooltip_e {
		left: calc(100% + var(--ck-tooltip-arrow-size));
		top: 50%
	}

.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text {
			left: 0;
			transform: translateY( -50% )
		}

.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text::after {
				left: calc(-1 * var(--ck-tooltip-arrow-size));
				top: calc(50% - 1 * var(--ck-tooltip-arrow-size));
				border-color: transparent var(--ck-color-tooltip-background) transparent transparent;
				border-width: var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) 0;
			}

.ck.ck-tooltip {

	/**
	 * A class that displays the tooltip west of the element.
	 *
	 *    +----------+
	 *    |   west   | > [element]
	 *    +----------+
	 */
}

.ck.ck-tooltip.ck-tooltip_w {
		right: calc(100% + var(--ck-tooltip-arrow-size));
		left: auto;
		top: 50%
	}

.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text {
			left: 0;
			transform: translateY( -50% )
		}

.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text::after {
				left: 100%;
				top: calc(50% - 1 * var(--ck-tooltip-arrow-size));
				border-color: transparent transparent transparent var(--ck-color-tooltip-background);
				border-width: var(--ck-tooltip-arrow-size) 0 var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size);
			}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/button/button.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Makes element unselectable.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Enables the tooltip, which is the tooltip is in DOM but
 * not yet displayed.
 */

/**
 * Disables the tooltip making it disappear from DOM.
 */

/**
 * Shows the tooltip, which is already in DOM.
 * Requires `ck-tooltip_enabled` first.
 */

.ck.ck-button,
a.ck.ck-button {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none
}

.ck.ck-button .ck-tooltip, a.ck.ck-button .ck-tooltip {
		display: block

		/*
		 * Don't display tooltips in devices which don't support :hover.
		 * In fact, it's all about iOS, which forces user to click UI elements twice to execute
		 * the primary action, when tooltips are enabled.
		 *
		 * Q: OK, but why not the following query?
		 *
		 *   @media (hover) {
		 *       display: block;
		 *   }
		 *
		 * A: Because FF does not support it and it would completely disable tooltips
		 * in that browser.
		 *
		 * More in https://github.com/ckeditor/ckeditor5/issues/920.
		 */
	}

@media (hover:none) {

.ck.ck-button .ck-tooltip, a.ck.ck-button .ck-tooltip {
			display: none
	}
		}

.ck.ck-button,
a.ck.ck-button {

	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: left
}

.ck.ck-button .ck-button__label, a.ck.ck-button .ck-button__label {
		display: none;
	}

.ck.ck-button.ck-button_with-text .ck-button__label, a.ck.ck-button.ck-button_with-text .ck-button__label {
			display: inline-block;
		}

.ck.ck-button,
a.ck.ck-button {

	/* Center the icon horizontally in a button without text. */
}

.ck.ck-button:not(.ck-button_with-text),  a.ck.ck-button:not(.ck-button_with-text)  {
		justify-content: center;
	}

.ck.ck-button:hover .ck-tooltip, a.ck.ck-button:hover .ck-tooltip {
		visibility: visible;
		opacity: 1;
	}

.ck.ck-button,
a.ck.ck-button {

	/* Get rid of the native focus outline around the tooltip when focused (but not :hover). */
}

.ck.ck-button:focus:not(:hover) .ck-tooltip, a.ck.ck-button:focus:not(:hover) .ck-tooltip {
		display: none;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/button.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A visual style of focused element's border.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which indicates that an element holding it is disabled.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements a button of given background color.
 *
 * @param {String} $background - Background color of the button.
 * @param {String} $border - Border color of the button.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-button,
a.ck.ck-button {
	background: var(--ck-color-button-default-background)
}

.ck.ck-button:not(.ck-disabled):hover, a.ck.ck-button:not(.ck-disabled):hover {
			background: var(--ck-color-button-default-hover-background);
		}

.ck.ck-button:not(.ck-disabled):active, a.ck.ck-button:not(.ck-disabled):active {
			background: var(--ck-color-button-default-active-background);
			box-shadow: inset 0 2px 2px var(--ck-color-button-default-active-shadow);
		}

.ck.ck-button,
a.ck.ck-button {
	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */
}

.ck.ck-button.ck-disabled, a.ck.ck-button.ck-disabled {
		background: var(--ck-color-button-default-disabled-background);
	}

.ck.ck-button,
a.ck.ck-button {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-button,
.ck.ck-button.ck-rounded-corners,
.ck-rounded-corners a.ck.ck-button,
a.ck.ck-button.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-button,
a.ck.ck-button {

	white-space: nowrap;
	cursor: default;
	vertical-align: middle;
	padding: var(--ck-spacing-tiny);
	text-align: center;

	/* A very important piece of styling. Go to variable declaration to learn more. */
	min-width: var(--ck-ui-component-min-height);
	min-height: var(--ck-ui-component-min-height);

	/* Normalize the height of the line. Removing this will break consistent height
	among text and text-less buttons (with icons). */
	line-height: 1;

	/* Enable font size inheritance, which allows fluid UI scaling. */
	font-size: inherit;

	/* Avoid flickering when the foucs border shows up. */
	border: 1px solid transparent;

	/* Apply some smooth transition to the box-shadow and border. */
	transition: box-shadow .2s ease-in-out, border .2s ease-in-out;

	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/189 */
	-webkit-appearance: none
}

.ck.ck-button:active,
	.ck.ck-button:focus,
	a.ck.ck-button:active,
	a.ck.ck-button:focus {
		/* Disable native outline. */
		outline: none;
		border: var(--ck-focus-ring);
		box-shadow: var(--ck-focus-outer-shadow), 0 0;
	}

.ck.ck-button,
a.ck.ck-button {

	/* Allow icon coloring using the text "color" property. */
}

.ck.ck-button .ck-button__icon use,
		.ck.ck-button .ck-button__icon use *,
		a.ck.ck-button .ck-button__icon use,
		a.ck.ck-button .ck-button__icon use * {
			color: inherit;
		}

.ck.ck-button .ck-button__label, a.ck.ck-button .ck-button__label {
		/* Enable font size inheritance, which allows fluid UI scaling. */
		font-size: inherit;
		font-weight: inherit;
		color: inherit;
		cursor: inherit;

		/* Must be consistent with .ck-icon's vertical align. Otherwise, buttons with and
		without labels (but with icons) have different sizes in Chrome */
		vertical-align: middle
	}

[dir="ltr"] .ck.ck-button .ck-button__label, [dir="ltr"] a.ck.ck-button .ck-button__label {
			text-align: left
	}

[dir="rtl"] .ck.ck-button .ck-button__label, [dir="rtl"] a.ck.ck-button .ck-button__label {
			text-align: right
	}

.ck.ck-button .ck-button__keystroke, a.ck.ck-button .ck-button__keystroke {
		color: inherit;
	}

[dir="ltr"] .ck.ck-button .ck-button__keystroke, [dir="ltr"] a.ck.ck-button .ck-button__keystroke {
			margin-left: var(--ck-spacing-large);
	}

[dir="rtl"] .ck.ck-button .ck-button__keystroke, [dir="rtl"] a.ck.ck-button .ck-button__keystroke {
			margin-right: var(--ck-spacing-large);
	}

.ck.ck-button .ck-button__keystroke, a.ck.ck-button .ck-button__keystroke {

		font-weight: bold;
		opacity: .7;
	}

.ck.ck-button,
a.ck.ck-button {

	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */
}

.ck.ck-button.ck-disabled:active,
		.ck.ck-button.ck-disabled:focus,
		a.ck.ck-button.ck-disabled:active,
		a.ck.ck-button.ck-disabled:focus {
			/* The disabled button should have a slightly less visible shadow when focused. */
			box-shadow: var(--ck-focus-disabled-outer-shadow), 0 0;
		}

.ck.ck-button.ck-disabled .ck-button__icon, a.ck.ck-button.ck-disabled .ck-button__icon {
			opacity: var(--ck-disabled-opacity);
		}

.ck.ck-button.ck-disabled, a.ck.ck-button.ck-disabled {

		/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */
	}

.ck.ck-button.ck-disabled .ck-button__label, a.ck.ck-button.ck-disabled .ck-button__label {
			opacity: var(--ck-disabled-opacity);
		}

.ck.ck-button.ck-disabled .ck-button__keystroke, a.ck.ck-button.ck-disabled .ck-button__keystroke {
			opacity: .3;
		}

.ck.ck-button.ck-button_with-text, a.ck.ck-button.ck-button_with-text {
		padding: var(--ck-spacing-tiny) var(--ck-spacing-standard)

		/* stylelint-disable-next-line no-descending-specificity */
	}

[dir="ltr"] .ck.ck-button.ck-button_with-text .ck-button__icon, [dir="ltr"] a.ck.ck-button.ck-button_with-text .ck-button__icon {
				margin-left: calc(-1 * var(--ck-spacing-small));
				margin-right: var(--ck-spacing-small)
		}

[dir="rtl"] .ck.ck-button.ck-button_with-text .ck-button__icon, [dir="rtl"] a.ck.ck-button.ck-button_with-text .ck-button__icon {
				margin-right: calc(-1 * var(--ck-spacing-small));
				margin-left: var(--ck-spacing-small)
		}

.ck.ck-button.ck-button_with-keystroke, a.ck.ck-button.ck-button_with-keystroke {
		/* stylelint-disable-next-line no-descending-specificity */
	}

.ck.ck-button.ck-button_with-keystroke .ck-button__label, a.ck.ck-button.ck-button_with-keystroke .ck-button__label {
			flex-grow: 1;
		}

.ck.ck-button,
a.ck.ck-button {

	/* A style of the button which is currently on, e.g. its feature is active. */
}

.ck.ck-button.ck-on, a.ck.ck-button.ck-on {
		background: var(--ck-color-button-on-background);
	}

.ck.ck-button.ck-on:not(.ck-disabled):hover, a.ck.ck-button.ck-on:not(.ck-disabled):hover {
			background: var(--ck-color-button-on-hover-background);
		}

.ck.ck-button.ck-on:not(.ck-disabled):active, a.ck.ck-button.ck-on:not(.ck-disabled):active {
			background: var(--ck-color-button-on-active-background);
			box-shadow: inset 0 2px 2px var(--ck-color-button-on-active-shadow);
		}

.ck.ck-button.ck-on, a.ck.ck-button.ck-on {
		/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */
	}

.ck.ck-button.ck-on.ck-disabled, a.ck.ck-button.ck-on.ck-disabled {
		background: var(--ck-color-button-on-disabled-background);
	}

.ck.ck-button.ck-button-save, a.ck.ck-button.ck-button-save {
		color: var(--ck-color-button-save);
	}

.ck.ck-button.ck-button-cancel, a.ck.ck-button.ck-button-cancel {
		color: var(--ck-color-button-cancel);
	}

/* A style of the button which handles the primary action. */

.ck.ck-button-action,
a.ck.ck-button-action {
	background: var(--ck-color-button-action-background);
}

.ck.ck-button-action:not(.ck-disabled):hover, a.ck.ck-button-action:not(.ck-disabled):hover {
			background: var(--ck-color-button-action-hover-background);
		}

.ck.ck-button-action:not(.ck-disabled):active, a.ck.ck-button-action:not(.ck-disabled):active {
			background: var(--ck-color-button-action-active-background);
			box-shadow: inset 0 2px 2px var(--ck-color-button-action-active-shadow);
		}

.ck.ck-button-action,
a.ck.ck-button-action {
	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/98 */
}

.ck.ck-button-action.ck-disabled, a.ck.ck-button-action.ck-disabled {
		background: var(--ck-color-button-action-disabled-background);
	}

.ck.ck-button-action,
a.ck.ck-button-action {

	color: var(--ck-color-button-action-text);
}

.ck.ck-button-bold,
a.ck.ck-button-bold {
	font-weight: bold;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/balloonrotator.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-balloon-rotator__navigation {
	display: flex;
	align-items: center;
	justify-content: center;
}

/* Buttons inside a toolbar should be centered when rotator bar is wider.
 * See: https://github.com/ckeditor/ckeditor5-ui/issues/495
 */

.ck .ck-balloon-rotator__content .ck-toolbar {
	justify-content: center;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/balloonrotator.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-balloon-rotator__navigation {
	background: var(--ck-color-toolbar-background);
	border-bottom: 1px solid var(--ck-color-toolbar-border);
	padding: 0 var(--ck-spacing-small)

	/* Let's keep similar appearance to `ck-toolbar`. */
}

.ck .ck-balloon-rotator__navigation > * {
		margin-right: var(--ck-spacing-small);
		margin-top: var(--ck-spacing-small);
		margin-bottom: var(--ck-spacing-small);
	}

.ck .ck-balloon-rotator__navigation {

	/* Gives counter more breath than buttons. */
}

.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter {
		margin-right: var(--ck-spacing-standard);

		/* We need to use smaller margin because of previous button's right margin. */
		margin-left: var(--ck-spacing-small);
	}

.ck .ck-balloon-rotator__content {

	/* Disable default annotation shadow inside rotator with fake panels. */
}

.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper {
		box-shadow: none;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/panel/fakepanel.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-fake-panel {
	position: absolute;

	/* Fake panels should be placed under main balloon content. */
	z-index: calc(var(--ck-z-modal) - 1);
}

.ck .ck-fake-panel div {
	position: absolute;
}

.ck .ck-fake-panel div:nth-child( 1 ) {
	z-index: 2;
}

.ck .ck-fake-panel div:nth-child( 2 ) {
	z-index: 1;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/panel/fakepanel.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

:root {
	--ck-balloon-fake-panel-offset-horizontal: 6px;
	--ck-balloon-fake-panel-offset-vertical: 6px;
}

/* Let's use `.ck-balloon-panel` appearance. See: balloonpanel.css. */

.ck .ck-fake-panel div {
	box-shadow: var(--ck-drop-shadow), 0 0;

	min-height: 15px;

	background: var(--ck-color-panel-background);
	border: 1px solid var(--ck-color-panel-border);
	border-radius: var(--ck-border-radius);

	width: 100%;
	height: 100%;
}

.ck .ck-fake-panel div:nth-child( 1 ) {
	margin-left: var(--ck-balloon-fake-panel-offset-horizontal);
	margin-top: var(--ck-balloon-fake-panel-offset-vertical);
}

.ck .ck-fake-panel div:nth-child( 2 ) {
	margin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 2);
	margin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 2);
}

.ck .ck-fake-panel div:nth-child( 3 ) {
	margin-left: calc(var(--ck-balloon-fake-panel-offset-horizontal) * 3);
	margin-top: calc(var(--ck-balloon-fake-panel-offset-vertical) * 3);
}

/* If balloon is positioned above element, we need to move fake panel to the top. */

.ck .ck-balloon-panel_arrow_s + .ck-fake-panel,
.ck .ck-balloon-panel_arrow_se + .ck-fake-panel,
.ck .ck-balloon-panel_arrow_sw + .ck-fake-panel {
	--ck-balloon-fake-panel-offset-vertical: -6px;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/dropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Enables the tooltip, which is the tooltip is in DOM but
 * not yet displayed.
 */

/**
 * Disables the tooltip making it disappear from DOM.
 */

/**
 * Shows the tooltip, which is already in DOM.
 * Requires `ck-tooltip_enabled` first.
 */

:root {
	--ck-dropdown-max-width: 75vw;
}

.ck.ck-dropdown {
	display: inline-block;
	position: relative
}

.ck.ck-dropdown .ck-dropdown__arrow {
		pointer-events: none;
		z-index: var(--ck-z-default);
	}

.ck.ck-dropdown {

	/* Dropdown button should span horizontally, e.g. in vertical toolbars */
}

.ck.ck-dropdown .ck-button.ck-dropdown__button {
		width: 100%

		/* Disable main button's tooltip when the dropdown is open. Otherwise the panel may
		partially cover the tooltip */
	}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip {
		display: none;
	}

.ck.ck-dropdown .ck-dropdown__panel {
		/* This is to get rid of flickering when the tooltip is shown under the panel,
		which looks like the panel moves vertically a pixel down and up. */
		-webkit-backface-visibility: hidden;

		display: none;
		z-index: var(--ck-z-modal);
		max-width: var(--ck-dropdown-max-width);

		position: absolute
	}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible {
			display: inline-block;
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme {
			bottom: 100%;
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s {
			/*
			 * Using transform: translate3d( 0, 100%, 0 ) causes blurry dropdown on Chrome 67-78+ on non-retina displays.
			 * See https://github.com/ckeditor/ckeditor5/issues/1053.
			 */
			top: 100%;
			bottom: auto;
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se {
			left: 0px;
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw {
			right: 0px;
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n {
			/* Positioning panels relative to the center of the button */
			left: 50%;
			transform: translateX(-50%);
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw {
			/* Positioning panels relative to the middle-west of the button */
			left: 75%;
			transform: translateX(-75%);
		}

.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,
		.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme {
			/* Positioning panels relative to the middle-east of the button */
			left: 25%;
			transform: translateX(-25%);
		}

/*
 * Toolbar dropdown panels should be always above the UI (eg. other dropdown panels) from the editor's content.
 * See https://github.com/ckeditor/ckeditor5/issues/7874
 */

.ck.ck-toolbar .ck-dropdown__panel {
	z-index: calc( var(--ck-z-modal) + 1 );
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/dropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which indicates that an element holding it is disabled.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-dropdown-arrow-size: calc(0.5 * var(--ck-icon-size));
}

.ck.ck-dropdown {
	/* Enable font size inheritance, which allows fluid UI scaling. */
	font-size: inherit
}

.ck.ck-dropdown .ck-dropdown__arrow {
		width: var(--ck-dropdown-arrow-size);
	}

[dir="ltr"] .ck.ck-dropdown .ck-dropdown__arrow {
			right: var(--ck-spacing-standard);

			/* A space to accommodate the triangle. */
			margin-left: var(--ck-spacing-standard);
		}

[dir="rtl"] .ck.ck-dropdown .ck-dropdown__arrow {
			left: var(--ck-spacing-standard);

			/* A space to accommodate the triangle. */
			margin-right: var(--ck-spacing-small);
		}

.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow {
		opacity: var(--ck-disabled-opacity);
	}

[dir="ltr"] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text) {
				/* Make sure dropdowns with just an icon have the right inner spacing */
				padding-left: var(--ck-spacing-small);
			}

[dir="rtl"] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text) {
				/* Make sure dropdowns with just an icon have the right inner spacing */
				padding-right: var(--ck-spacing-small);
			}

.ck.ck-dropdown .ck-button.ck-dropdown__button {

		/* #23 */
	}

.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label {
			width: 7em;
			overflow: hidden;
			text-overflow: ellipsis;
		}

.ck.ck-dropdown .ck-button.ck-dropdown__button {

		/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/70 */
	}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label {
			opacity: var(--ck-disabled-opacity);
		}

.ck.ck-dropdown .ck-button.ck-dropdown__button {

		/* https://github.com/ckeditor/ckeditor5/issues/816 */
	}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on {
			border-bottom-left-radius: 0;
			border-bottom-right-radius: 0;
		}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label {
			width: auto;
		}

.ck.ck-dropdown .ck-button.ck-dropdown__button {

		/* https://github.com/ckeditor/ckeditor5/issues/8699 */
	}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,
		.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active {
			box-shadow: none
		}

.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus, .ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus {
				box-shadow: var(--ck-focus-outer-shadow), 0 0;
			}

.ck.ck-dropdown__panel {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-dropdown__panel, .ck.ck-dropdown__panel.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-dropdown__panel {
	box-shadow: var(--ck-drop-shadow), 0 0;

	background: var(--ck-color-dropdown-panel-background);
	border: 1px solid var(--ck-color-dropdown-panel-border);
	bottom: 0;

	/* Make sure the panel is at least as wide as the drop-down's button. */
	min-width: 100%

	/* Disabled corner border radius to be consistent with the .dropdown__button
	https://github.com/ckeditor/ckeditor5/issues/816 */
}

.ck.ck-dropdown__panel.ck-dropdown__panel_se {
		border-top-left-radius: 0;
	}

.ck.ck-dropdown__panel.ck-dropdown__panel_sw {
		border-top-right-radius: 0;
	}

.ck.ck-dropdown__panel.ck-dropdown__panel_ne {
		border-bottom-left-radius: 0;
	}

.ck.ck-dropdown__panel.ck-dropdown__panel_nw {
		border-bottom-right-radius: 0;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/list/list.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Makes element unselectable.
 */

.ck.ck-list {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;

	display: flex;
	flex-direction: column
}

.ck.ck-list .ck-list__item,
	.ck.ck-list .ck-list__separator {
		display: block;
	}

.ck.ck-list {

	/* Make sure that whatever child of the list item gets focus, it remains on the
	top. Thanks to that, styles like box-shadow, outline, etc. are not masked by
	adjacent list items. */
}

.ck.ck-list .ck-list__item > *:focus {
		position: relative;
		z-index: var(--ck-z-default);
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/list/list.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which indicates that an element holding it is disabled.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

.ck.ck-list {
	border-radius: 0;
}

.ck-rounded-corners .ck.ck-list, .ck.ck-list.ck-rounded-corners {
		border-radius: var(--ck-border-radius);
}

.ck.ck-list {

	list-style-type: none;
	background: var(--ck-color-list-background);
}

.ck.ck-list__item {
	cursor: default;
	min-width: 12em
}

.ck.ck-list__item .ck-button {
		min-height: unset;
		width: 100%;
		text-align: left;
		border-radius: 0;

		/* List items should have the same height. Use absolute units to make sure it is so
		   because e.g. different heading styles may have different height
		   https://github.com/ckeditor/ckeditor5-heading/issues/63 */
		padding:
			calc(.2 * var(--ck-line-height-base) * var(--ck-font-size-base))
			calc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base))
	}

.ck.ck-list__item .ck-button .ck-button__label {
			/* https://github.com/ckeditor/ckeditor5-heading/issues/63 */
			line-height: calc(1.2 * var(--ck-line-height-base) * var(--ck-font-size-base));
		}

.ck.ck-list__item .ck-button:active {
			box-shadow: none;
		}

.ck.ck-list__item .ck-button.ck-on {
			background: var(--ck-color-list-button-on-background);
			color: var(--ck-color-list-button-on-text)
		}

.ck.ck-list__item .ck-button.ck-on:active {
				box-shadow: none;
			}

.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled) {
				background: var(--ck-color-list-button-on-background-focus);
			}

.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled) {
				border-color: var(--ck-color-base-background);
			}

.ck.ck-list__item .ck-button:hover:not(.ck-disabled) {
			background: var(--ck-color-list-button-hover-background);
		}

.ck.ck-list__item {

	/* It's unnecessary to change the background/text of a switch toggle; it has different ways
	of conveying its state (like the switcher) */
}

.ck.ck-list__item .ck-switchbutton.ck-on {
			background: var(--ck-color-list-background);
			color: inherit
		}

.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled) {
				background: var(--ck-color-list-button-hover-background);
				color: inherit;
			}

.ck.ck-list__separator {
	height: 1px;
	width: 100%;
	background: var(--ck-color-base-border);
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/button/switchbutton.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-button.ck-switchbutton .ck-button__toggle {
		display: block
	}

.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner {
			display: block;
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/button/switchbutton.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which indicates that an element holding it is disabled.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* Note: To avoid rendering issues (aliasing) but to preserve the responsive nature
of the component, floating–point numbers have been used which, for the default font size
(see: --ck-font-size-base), will generate simple integers. */

:root {
	/* 34px at 13px font-size */
	--ck-switch-button-toggle-width: 2.6153846154em;
	/* 14px at 13px font-size */
	--ck-switch-button-toggle-inner-size: 1.0769230769em;
	--ck-switch-button-toggle-spacing: 1px;
	--ck-switch-button-translation: calc(
		var(--ck-switch-button-toggle-width) -
		var(--ck-switch-button-toggle-inner-size) -
		2 * var(--ck-switch-button-toggle-spacing)
	);
}

[dir="ltr"] .ck.ck-button.ck-switchbutton .ck-button__label {
			/* Separate the label from the switch */
			margin-right: calc(2 * var(--ck-spacing-large))
	}

[dir="rtl"] .ck.ck-button.ck-switchbutton .ck-button__label {
			/* Separate the label from the switch */
			margin-left: calc(2 * var(--ck-spacing-large))
	}

.ck.ck-button.ck-switchbutton .ck-button__toggle {
		border-radius: 0
	}

.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle, .ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
	}

[dir="ltr"] .ck.ck-button.ck-switchbutton .ck-button__toggle {
			/* Make sure the toggle is always to the right as far as possible. */
			margin-left: auto
	}

[dir="rtl"] .ck.ck-button.ck-switchbutton .ck-button__toggle {
			/* Make sure the toggle is always to the left as far as possible. */
			margin-right: auto
	}

.ck.ck-button.ck-switchbutton .ck-button__toggle {

		/* Gently animate the background color of the toggle switch */
		transition: background 400ms ease;

		width: var(--ck-switch-button-toggle-width);
		background: var(--ck-color-switch-button-off-background)
	}

.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner {
			border-radius: 0;
		}

.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner, .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners {
		border-radius: var(--ck-border-radius);
				border-radius: calc(.5 * var(--ck-border-radius));
		}

.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner {

			/* Leave some tiny bit of space around the inner part of the switch */
			margin: var(--ck-switch-button-toggle-spacing);
			width: var(--ck-switch-button-toggle-inner-size);
			height: var(--ck-switch-button-toggle-inner-size);
			background: var(--ck-color-switch-button-inner-background);

			/* Gently animate the inner part of the toggle switch */
			transition: all 300ms ease;
		}

.ck.ck-button.ck-switchbutton .ck-button__toggle:hover {
			background: var(--ck-color-switch-button-off-hover-background)
		}

.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner {
				box-shadow: 0 0 0 5px var(--ck-color-switch-button-inner-shadow);
			}

.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle {
		opacity: var(--ck-disabled-opacity);
	}

.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle {
		background: var(--ck-color-switch-button-on-background)
	}

.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover {
			background: var(--ck-color-switch-button-on-hover-background);
		}

.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner {
			/*
			 * Move the toggle switch to the right. It will be animated.
			 */
		}

[dir="ltr"] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner {
				transform: translateX( var( --ck-switch-button-translation ) )
		}

[dir="rtl"] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner {
				transform: translateX( calc( -1 * var( --ck-switch-button-translation ) ) )
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-toolbar-dropdown-max-width: 60vw;
}

.ck.ck-toolbar-dropdown > .ck-dropdown__panel {
	/* https://github.com/ckeditor/ckeditor5/issues/5586 */
	width: max-content;
	max-width: var(--ck-toolbar-dropdown-max-width)
}

.ck.ck-toolbar-dropdown > .ck-dropdown__panel .ck-button:focus {
			z-index: calc(var(--ck-z-default) + 1);
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/toolbardropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-toolbar-dropdown .ck-toolbar {
	border: 0;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/dropdown/listdropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Note: This file should contain the wireframe styles only. But since there are no such styles,
 * it acts as a message to the builder telling that it should look for the corresponding styles
 * **in the theme** when compiling the editor.
 */

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/dropdown/listdropdown.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

.ck.ck-dropdown .ck-dropdown__panel .ck-list {
	/* Disabled radius of top-left border to be consistent with .dropdown__button
	https://github.com/ckeditor/ckeditor5/issues/816 */
	border-radius: 0
}

.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list, .ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners {
		border-radius: var(--ck-border-radius);
		border-top-left-radius: 0
}

.ck.ck-dropdown .ck-dropdown__panel .ck-list {

	/* Make sure the button belonging to the first/last child of the list goes well with the
	border radius of the entire panel. */
}

.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button {
			border-radius: 0
		}

.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button, .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners {
		border-radius: var(--ck-border-radius);
				border-top-left-radius: 0;
				border-bottom-left-radius: 0;
				border-bottom-right-radius: 0
		}

.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button {
			border-radius: 0
		}

.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button, .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners {
		border-radius: var(--ck-border-radius);
				border-top-left-radius: 0;
				border-top-right-radius: 0
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/toolbar/toolbar.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Makes element unselectable.
 */

.ck.ck-toolbar {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;

	display: flex;
	flex-flow: row nowrap;
	align-items: center
}

.ck.ck-toolbar > .ck-toolbar__items {
		display: flex;
		flex-flow: row wrap;
		align-items: center;
		flex-grow: 1;

	}

.ck.ck-toolbar .ck.ck-toolbar__separator {
		display: inline-block

		/*
		 * A leading or trailing separator makes no sense (separates from nothing on one side).
		 * For instance, it can happen when toolbar items (also separators) are getting grouped one by one and
		 * moved to another toolbar in the dropdown.
		 */
	}

.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,
		.ck.ck-toolbar .ck.ck-toolbar__separator:last-child {
			display: none;
		}

.ck.ck-toolbar .ck-toolbar__line-break {
		flex-basis: 100%;
	}

.ck.ck-toolbar.ck-toolbar_grouping > .ck-toolbar__items {
		flex-wrap: nowrap;
	}

.ck.ck-toolbar.ck-toolbar_vertical > .ck-toolbar__items {
		flex-direction: column;
	}

.ck.ck-toolbar.ck-toolbar_floating > .ck-toolbar__items {
		flex-wrap: nowrap;
	}

.ck.ck-toolbar > .ck.ck-toolbar__grouped-dropdown > .ck-dropdown__button .ck-dropdown__arrow {
			display: none;
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/toolbar/toolbar.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-toolbar {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-toolbar, .ck.ck-toolbar.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-toolbar {

	background: var(--ck-color-toolbar-background);
	padding: 0 var(--ck-spacing-small);
	border: 1px solid var(--ck-color-toolbar-border)
}

.ck.ck-toolbar .ck.ck-toolbar__separator {
		align-self: stretch;
		width: 1px;
		min-width: 1px;
		background: var(--ck-color-toolbar-border);

		/*
		 * These margins make the separators look better in balloon toolbars (when aligned with the "tip").
		 * See https://github.com/ckeditor/ckeditor5/issues/7493.
		 */
		margin-top: var(--ck-spacing-small);
		margin-bottom: var(--ck-spacing-small);
	}

.ck.ck-toolbar .ck-toolbar__line-break {
		height: 0;
	}

.ck.ck-toolbar > .ck-toolbar__items > *:not(.ck-toolbar__line-break) {
			/* (#11) Separate toolbar items. */
			margin-right: var(--ck-spacing-small);
		}

.ck.ck-toolbar > .ck-toolbar__items {

		/* Don't display a separator after an empty items container, for instance,
		when all items were grouped */
	}

.ck.ck-toolbar > .ck-toolbar__items:empty + .ck.ck-toolbar__separator {
			display: none;
		}

.ck.ck-toolbar > .ck-toolbar__items > *:not(.ck-toolbar__line-break),
	.ck.ck-toolbar > .ck.ck-toolbar__grouped-dropdown {
		/* Make sure items wrapped to the next line have v-spacing */
		margin-top: var(--ck-spacing-small);
		margin-bottom: var(--ck-spacing-small);
	}

.ck.ck-toolbar.ck-toolbar_vertical {
		/* Items in a vertical toolbar span the entire width. */
		padding: 0

		/* Specificity matters here. See https://github.com/ckeditor/ckeditor5-theme-lark/issues/168. */
	}

.ck.ck-toolbar.ck-toolbar_vertical > .ck-toolbar__items > .ck {
			/* Items in a vertical toolbar should span the horizontal space. */
			width: 100%;

			/* Items in a vertical toolbar should have no margin. */
			margin: 0;

			/* Items in a vertical toolbar span the entire width so rounded corners are pointless. */
			border-radius: 0;

			/* Items in a vertical toolbar span the entire width so any border is pointless. */
			border: 0;
		}

.ck.ck-toolbar.ck-toolbar_compact {
		/* No spacing around items. */
		padding: 0
	}

.ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > * {
			/* Compact toolbar items have no spacing between them. */
			margin: 0

			/* "Middle" children should have no rounded corners. */
		}

.ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > *:not(:first-child):not(:last-child) {
				border-radius: 0;
			}

.ck.ck-toolbar > .ck.ck-toolbar__grouped-dropdown {
		/*
		 * Dropdown button has asymmetric padding to fit the arrow.
		 * This button has no arrow so let's revert that padding back to normal.
		 */
	}

.ck.ck-toolbar > .ck.ck-toolbar__grouped-dropdown > .ck.ck-button.ck-dropdown__button {
			padding-left: var(--ck-spacing-tiny);
		}

.ck-toolbar-container .ck.ck-toolbar {
		border: 0
}

/* stylelint-disable */

/*
 * Styles for RTL toolbars.
 *
 * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"
 * because its parent is not controlled by the editor framework.
 */

[dir="rtl"] .ck.ck-toolbar > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="rtl"] > .ck-toolbar__items > .ck {
		margin-right: 0;
	}

[dir="rtl"] .ck.ck-toolbar:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="rtl"]:not(.ck-toolbar_compact) > .ck-toolbar__items > .ck {
		/* (#11) Separate toolbar items. */
		margin-left: var(--ck-spacing-small);
	}

[dir="rtl"] .ck.ck-toolbar > .ck-toolbar__items > .ck:last-child, .ck.ck-toolbar[dir="rtl"] > .ck-toolbar__items > .ck:last-child {
		margin-left: 0;
	}

[dir="rtl"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="rtl"].ck-toolbar_compact > .ck-toolbar__items > .ck {
		/* No rounded corners on the right side of the first child. */
	}

[dir="rtl"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck:first-child, .ck.ck-toolbar[dir="rtl"].ck-toolbar_compact > .ck-toolbar__items > .ck:first-child {
			border-top-left-radius: 0;
			border-bottom-left-radius: 0;
		}

[dir="rtl"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="rtl"].ck-toolbar_compact > .ck-toolbar__items > .ck {

		/* No rounded corners on the left side of the last child. */
	}

[dir="rtl"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck:last-child, .ck.ck-toolbar[dir="rtl"].ck-toolbar_compact > .ck-toolbar__items > .ck:last-child {
			border-top-right-radius: 0;
			border-bottom-right-radius: 0;
		}

[dir="rtl"] .ck.ck-toolbar,
.ck.ck-toolbar[dir="rtl"] {

	/* Separate the the separator form the grouping dropdown when some items are grouped. */
}

[dir="rtl"] .ck.ck-toolbar > .ck.ck-toolbar__separator, .ck.ck-toolbar[dir="rtl"] > .ck.ck-toolbar__separator {
		margin-left: var(--ck-spacing-small);
	}

[dir="rtl"] .ck.ck-toolbar,
.ck.ck-toolbar[dir="rtl"] {

	/* Some spacing between the items and the separator before the grouped items dropdown. */
}

[dir="rtl"] .ck.ck-toolbar.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child), .ck.ck-toolbar[dir="rtl"].ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {
		margin-left: var(--ck-spacing-small);
	}

/*
 * Styles for LTR toolbars.
 *
 * Note: In some cases (e.g. a decoupled editor), the toolbar has its own "dir"
 * because its parent is not controlled by the editor framework.
 */

[dir="ltr"] .ck.ck-toolbar > .ck-toolbar__items > .ck:last-child, .ck.ck-toolbar[dir="ltr"] > .ck-toolbar__items > .ck:last-child {
		margin-right: 0;
	}

[dir="ltr"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="ltr"].ck-toolbar_compact > .ck-toolbar__items > .ck {
		/* No rounded corners on the right side of the first child. */
	}

[dir="ltr"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck:first-child, .ck.ck-toolbar[dir="ltr"].ck-toolbar_compact > .ck-toolbar__items > .ck:first-child {
			border-top-right-radius: 0;
			border-bottom-right-radius: 0;
		}

[dir="ltr"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck, .ck.ck-toolbar[dir="ltr"].ck-toolbar_compact > .ck-toolbar__items > .ck {

		/* No rounded corners on the left side of the last child. */
	}

[dir="ltr"] .ck.ck-toolbar.ck-toolbar_compact > .ck-toolbar__items > .ck:last-child, .ck.ck-toolbar[dir="ltr"].ck-toolbar_compact > .ck-toolbar__items > .ck:last-child {
			border-top-left-radius: 0;
			border-bottom-left-radius: 0;
		}

[dir="ltr"] .ck.ck-toolbar,
.ck.ck-toolbar[dir="ltr"] {

	/* Separate the the separator form the grouping dropdown when some items are grouped. */
}

[dir="ltr"] .ck.ck-toolbar > .ck.ck-toolbar__separator, .ck.ck-toolbar[dir="ltr"] > .ck.ck-toolbar__separator {
		margin-right: var(--ck-spacing-small);
	}

[dir="ltr"] .ck.ck-toolbar,
.ck.ck-toolbar[dir="ltr"] {

	/* Some spacing between the items and the separator before the grouped items dropdown. */
}

[dir="ltr"] .ck.ck-toolbar.ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child), .ck.ck-toolbar[dir="ltr"].ck-toolbar_grouping > .ck-toolbar__items:not(:empty):not(:only-child) {
		margin-right: var(--ck-spacing-small);
	}

/* stylelint-enable */

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-engine/theme/placeholder.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* See ckeditor/ckeditor5#936. */

.ck.ck-placeholder::before, .ck .ck-placeholder::before {
		content: attr(data-placeholder);

		/* See ckeditor/ckeditor5#469. */
		pointer-events: none;
	}

/* See ckeditor/ckeditor5#1987. */

.ck.ck-read-only .ck-placeholder::before {
		display: none;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-engine/placeholder.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* See ckeditor/ckeditor5#936. */

.ck.ck-placeholder::before, .ck .ck-placeholder::before {
		cursor: text;
		color: var(--ck-color-engine-placeholder-text);
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/editorui/editorui.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Note: This file should contain the wireframe styles only. But since there are no such styles,
 * it acts as a message to the builder telling that it should look for the corresponding styles
 * **in the theme** when compiling the editor.
 */

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/editorui/editorui.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A class which indicates that an element holding it is disabled.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A visual style of focused element's border.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements a button of given background color.
 *
 * @param {String} $background - Background color of the button.
 * @param {String} $border - Border color of the button.
 */

:root {
	--ck-color-editable-blur-selection: hsl(0, 0%, 85%);
}

.ck.ck-editor__editable:not(.ck-editor__nested-editable) {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable), .ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused {
		/* Disable native outline. */
		outline: none;
		border: var(--ck-focus-ring);
		box-shadow: var(--ck-inner-shadow), 0 0;
	}

.ck.ck-editor__editable_inline {
	overflow: auto;
	padding: 0 var(--ck-spacing-standard);
	border: 1px solid transparent
}

.ck.ck-editor__editable_inline[dir="ltr"] {
		text-align: left;
	}

.ck.ck-editor__editable_inline[dir="rtl"] {
		text-align: right;
	}

.ck.ck-editor__editable_inline {

	/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/116 */
}

.ck.ck-editor__editable_inline > *:first-child {
		margin-top: var(--ck-spacing-large);
	}

.ck.ck-editor__editable_inline {

	/* https://github.com/ckeditor/ckeditor5/issues/847 */
}

.ck.ck-editor__editable_inline > *:last-child {
		margin-bottom: var(--ck-spacing-large);
	}

.ck.ck-editor__editable_inline {

	/* https://github.com/ckeditor/ckeditor5/issues/6517 */
}

.ck.ck-editor__editable_inline.ck-blurred ::selection {
		background: var(--ck-color-editable-blur-selection);
	}

/* https://github.com/ckeditor/ckeditor5-theme-lark/issues/111 */

.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_n"]::after {
		border-bottom-color: var(--ck-color-base-foreground);
	}

.ck.ck-balloon-panel.ck-toolbar-container[class*="arrow_s"]::after {
		border-top-color: var(--ck-color-base-foreground);
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-block-quote/theme/blockquote.css */

/**
 * @license Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-content blockquote {
	/* See #12 */
	overflow: hidden;

	/* https://github.com/ckeditor/ckeditor5-block-quote/issues/15 */
	padding-right: 1.5em;
	padding-left: 1.5em;

	margin-left: 0;
	margin-right: 0;
	font-style: italic;
	border-left: solid 5px hsl(0, 0%, 80%);
}

.ck-content[dir="rtl"] blockquote {
	border-left: 0;
	border-right: solid 5px hsl(0, 0%, 80%);
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-widget {
	/*
	 * Styles of the type around buttons
	 */
}

.ck .ck-widget .ck-widget__type-around__button {
		display: block;
		position: absolute;
		overflow: hidden;
		z-index: var(--ck-z-default)
	}

.ck .ck-widget .ck-widget__type-around__button svg {
			position: absolute;
			top: 50%;
			left: 50%;
			z-index: calc(var(--ck-z-default) + 2);
		}

.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before {
			/* Place it in the middle of the outline */
			top: calc(-0.5 * var(--ck-widget-outline-thickness));
			left: min(10%, 30px);

			transform: translateY(-50%);
		}

.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after {
			/* Place it in the middle of the outline */
			bottom: calc(-0.5 * var(--ck-widget-outline-thickness));
			right: min(10%, 30px);

			transform: translateY(50%);
		}

.ck .ck-widget {

	/*
	 * Styles for the buttons when:
	 * - the widget is selected,
	 * - or the button is being hovered (regardless of the widget state).
	 */
}

.ck .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button::after, .ck .ck-widget > .ck-widget__type-around > .ck-widget__type-around__button:hover::after {
			content: "";
			display: block;
			position: absolute;
			top: 1px;
			left: 1px;
			z-index: calc(var(--ck-z-default) + 1);
		}

.ck .ck-widget {

	/*
	 * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.
	 */
}

.ck .ck-widget > .ck-widget__type-around > .ck-widget__type-around__fake-caret {
		display: none;
		position: absolute;
		left: 0;
		right: 0;
	}

.ck .ck-widget {

	/*
	 * When the widget is hovered the "fake caret" would normally be narrower than the
	 * extra outline displayed around the widget. Let's extend the "fake caret" to match
	 * the full width of the widget.
	 */
}

.ck .ck-widget:hover > .ck-widget__type-around > .ck-widget__type-around__fake-caret {
		left: calc( -1 * var(--ck-widget-outline-thickness) );
		right: calc( -1 * var(--ck-widget-outline-thickness) );
	}

.ck .ck-widget {

	/*
	 * Styles for the horizontal "fake caret" when it should be displayed before the widget (backward keyboard navigation).
	 */
}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__fake-caret {
		top: calc( -1 * var(--ck-widget-outline-thickness) - 1px );
		display: block;
	}

.ck .ck-widget {

	/*
	 * Styles for the horizontal "fake caret" when it should be displayed after the widget (forward keyboard navigation).
	 */
}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__fake-caret {
		bottom: calc( -1 * var(--ck-widget-outline-thickness) - 1px );
		display: block;
	}

/*
 * Integration with the read-only mode of the editor.
 */

.ck.ck-editor__editable.ck-read-only .ck-widget__type-around {
	display: none;
}

/*
 * Integration with the restricted editing mode (feature) of the editor.
 */

.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around {
	display: none;
}

/*
 * Integration with the #isEnabled property of the WidgetTypeAround plugin.
 */

.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around {
	display: none;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widgettypearound.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-widget-type-around-button-size: 20px;
	--ck-color-widget-type-around-button-active: var(--ck-color-focus-border);
	--ck-color-widget-type-around-button-hover: var(--ck-color-widget-hover-border);
	--ck-color-widget-type-around-button-blurred-editable: var(--ck-color-widget-blurred-border);
	--ck-color-widget-type-around-button-radar-start-alpha: 0;
	--ck-color-widget-type-around-button-radar-end-alpha: .3;
	--ck-color-widget-type-around-button-icon: var(--ck-color-base-background);
}

.ck .ck-widget {
	/*
	 * Styles of the type around buttons
	 */
}

.ck .ck-widget .ck-widget__type-around__button {
		width: var(--ck-widget-type-around-button-size);
		height: var(--ck-widget-type-around-button-size);
		background: var(--ck-color-widget-type-around-button);
		border-radius: 100px;
		transition: opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve), background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);

		opacity: 0;

		pointer-events: none
	}

.ck .ck-widget .ck-widget__type-around__button svg {
			width: 10px;
			height: 8px;
			transform: translate(-50%,-50%);
			transition: transform .5s ease;
			margin-top: 1px
		}

.ck .ck-widget .ck-widget__type-around__button svg * {
				stroke-dasharray: 10;
				stroke-dashoffset: 0;

				fill: none;
				stroke: var(--ck-color-widget-type-around-button-icon);
				stroke-width: 1.5px;
				stroke-linecap: round;
				stroke-linejoin: round;
			}

.ck .ck-widget .ck-widget__type-around__button svg line {
				stroke-dasharray: 7;
			}

.ck .ck-widget .ck-widget__type-around__button:hover {
			/*
			 * Display the "sonar" around the button when hovered.
			 */
			animation: ck-widget-type-around-button-sonar 1s ease infinite

			/*
			 * Animate active button's icon.
			 */
		}

.ck .ck-widget .ck-widget__type-around__button:hover svg polyline {
					animation: ck-widget-type-around-arrow-dash 2s linear;
				}

.ck .ck-widget .ck-widget__type-around__button:hover svg line {
					animation: ck-widget-type-around-arrow-tip-dash 2s linear;
				}

.ck .ck-widget {

	/*
	 * Show type around buttons when the widget gets selected or being hovered.
	 */
}

.ck .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button, .ck .ck-widget:hover > .ck-widget__type-around > .ck-widget__type-around__button {
			opacity: 1;
			pointer-events: auto;
		}

.ck .ck-widget {

	/*
	 * Styles for the buttons when the widget is NOT selected (but the buttons are visible
	 * and still can be hovered).
	 */
}

.ck .ck-widget:not(.ck-widget_selected) > .ck-widget__type-around > .ck-widget__type-around__button {
		background: var(--ck-color-widget-type-around-button-hover);
	}

.ck .ck-widget {

	/*
	 * Styles for the buttons when:
	 * - the widget is selected,
	 * - or the button is being hovered (regardless of the widget state).
	 */
}

.ck .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button,
	.ck .ck-widget > .ck-widget__type-around > .ck-widget__type-around__button:hover {
		background: var(--ck-color-widget-type-around-button-active)
	}

.ck .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button::after, .ck .ck-widget > .ck-widget__type-around > .ck-widget__type-around__button:hover::after {
			width: calc(var(--ck-widget-type-around-button-size) - 2px);
			height: calc(var(--ck-widget-type-around-button-size) - 2px);
			border-radius: 100px;
			background: linear-gradient(135deg, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,.3) 100%);
		}

.ck .ck-widget {

	/*
	 * Styles for the "before" button when the widget has a selection handle. Because some space
	 * is consumed by the handle, the button must be moved slightly to the right to let it breathe.
	 */
}

.ck .ck-widget.ck-widget_with-selection-handle > .ck-widget__type-around > .ck-widget__type-around__button_before {
		margin-left: 20px;
	}

.ck .ck-widget {

	/*
	 * Styles for the horizontal "fake caret" which is displayed when the user navigates using the keyboard.
	 */
}

.ck .ck-widget .ck-widget__type-around__fake-caret {
		pointer-events: none;
		height: 1px;
		animation: ck-widget-type-around-fake-caret-pulse linear 1s infinite normal forwards;

		/*
		 * The semi-transparent-outline+background combo improves the contrast
		 * when the background underneath the fake caret is dark.
		 */
		outline: solid 1px hsla(0, 0%, 100%, .5);
		background: var(--ck-color-base-text);
	}

.ck .ck-widget {

	/*
	 * Styles of the widget when the "fake caret" is blinking (e.g. upon keyboard navigation).
	 * Despite the widget being physically selected in the model, its outline should disappear.
	 */
}

.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before,
		.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after {
			outline-color: transparent;
		}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before,
	.ck .ck-widget.ck-widget_type-around_show-fake-caret_after {
		/*
		 * When the "fake caret" is visible we simulate that the widget is not selected
		 * (despite being physically selected), so the outline color should be for the
		 * unselected widget.
		 */
	}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover {
			outline-color: var(--ck-color-widget-hover-border);
		}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before,
	.ck .ck-widget.ck-widget_type-around_show-fake-caret_after {

		/*
		 * Styles of the type around buttons when the "fake caret" is blinking (e.g. upon keyboard navigation).
		 * In this state, the type around buttons would collide with the fake carets so they should disappear.
		 */
	}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before > .ck-widget__type-around > .ck-widget__type-around__button, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after > .ck-widget__type-around > .ck-widget__type-around__button {
			opacity: 0;
			pointer-events: none;
		}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before,
	.ck .ck-widget.ck-widget_type-around_show-fake-caret_after {

		/*
		 * Fake horizontal caret integration with the selection handle. When the caret is visible, simply
		 * hide the handle because it intersects with the caret (and does not make much sense anyway).
		 */
	}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected > .ck-widget__selection-handle, .ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover > .ck-widget__selection-handle, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected > .ck-widget__selection-handle, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover > .ck-widget__selection-handle {
					opacity: 0
				}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before,
	.ck .ck-widget.ck-widget_type-around_show-fake-caret_after {

		/*
		 * Fake horizontal caret integration with the resize UI. When the caret is visible, simply
		 * hide the resize UI because it creates too much noise. It can be visible when the user
		 * hovers the widget, though.
		 */
	}

.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer, .ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer > .ck-widget__resizer {
			opacity: 0
		}

/*
 * Styles for the "before" button when the widget has a selection handle in an RTL environment.
 * The selection handler is aligned to the right side of the widget so there is no need to create
 * additional space for it next to the "before" button.
 */

.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around > .ck-widget__type-around__button_before {
	margin-left: 0;
	margin-right: 20px;
}

/*
 * Hide type around buttons when the widget is selected as a child of a selected
 * nested editable (e.g. mulit-cell table selection).
 *
 * See https://github.com/ckeditor/ckeditor5/issues/7263.
 */

.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button, .ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover > .ck-widget__type-around > .ck-widget__type-around__button {
				opacity: 0;
				pointer-events: none;
			}

/*
 * Styles for the buttons when the widget is selected but the user clicked outside of the editor (blurred the editor).
 */

.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) {
	background: var(--ck-color-widget-type-around-button-blurred-editable)
}

.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected > .ck-widget__type-around > .ck-widget__type-around__button:not(:hover) svg * {
		stroke: hsl(0,0%,60%);
	}

@keyframes ck-widget-type-around-arrow-dash {
	0% {
		stroke-dashoffset: 10;
	}
	20%, 100% {
		stroke-dashoffset: 0;
	}
}

@keyframes ck-widget-type-around-arrow-tip-dash {
	0%, 20% {
		stroke-dashoffset: 7;
	}
	40%, 100% {
		stroke-dashoffset: 0;
	}
}

@keyframes ck-widget-type-around-button-sonar {
	0% {
		box-shadow: 0 0 0 0 hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));
	}
	50% {
		box-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-end-alpha));
	}
	100% {
		box-shadow: 0 0 0 5px hsla(var(--ck-color-focus-border-coordinates), var(--ck-color-widget-type-around-button-radar-start-alpha));
	}
}

@keyframes ck-widget-type-around-fake-caret-pulse {
	0% {
		opacity: 1;
	}
	49% {
		opacity: 1;
	}
	50% {
		opacity: 0;
	}
	99% {
		opacity: 0;
	}
	100% {
		opacity: 1;
	}
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-widget/theme/widget.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-color-resizer: var(--ck-color-focus-border);
	--ck-color-resizer-tooltip-background: hsl(0, 0%, 15%);
	--ck-color-resizer-tooltip-text: hsl(0, 0%, 95%);

	--ck-resizer-border-radius: var(--ck-border-radius);
	--ck-resizer-tooltip-offset: 10px;
}

.ck .ck-widget {
	/* This is neccessary for type around UI to be positioned properly. */
	position: relative;
}

.ck .ck-widget.ck-widget_with-selection-handle {
	/* Make the widget wrapper a relative positioning container for the drag handle. */
	position: relative
}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {
		position: absolute
	}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon {
			/* Make sure the icon in not a subject to font-size or line-height to avoid
			unnecessary spacing around it. */
			display: block;
		}

.ck .ck-widget.ck-widget_with-selection-handle {

	/* Show the selection handle on mouse hover over the widget. */
}

.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle {
			visibility: visible;
		}

.ck .ck-widget.ck-widget_with-selection-handle {

	/* Show the selection handle when the widget is selected. */
}

.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle {
		visibility: visible;
	}

.ck .ck-size-view {
	background: var(--ck-color-resizer-tooltip-background);
	color: var(--ck-color-resizer-tooltip-text);
	border: 1px solid var(--ck-color-resizer-tooltip-text);
	border-radius: var(--ck-resizer-border-radius);
	font-size: var(--ck-font-size-tiny);
	display: block;
	padding: var(--ck-spacing-small)
}

.ck .ck-size-view.ck-orientation-top-left,
	.ck .ck-size-view.ck-orientation-top-right,
	.ck .ck-size-view.ck-orientation-bottom-right,
	.ck .ck-size-view.ck-orientation-bottom-left {
		position: absolute;
	}

.ck .ck-size-view.ck-orientation-top-left {
		top: var(--ck-resizer-tooltip-offset);
		left: var(--ck-resizer-tooltip-offset);
	}

.ck .ck-size-view.ck-orientation-top-right {
		top: var(--ck-resizer-tooltip-offset);
		right: var(--ck-resizer-tooltip-offset);
	}

.ck .ck-size-view.ck-orientation-bottom-right {
		bottom: var(--ck-resizer-tooltip-offset);
		right: var(--ck-resizer-tooltip-offset);
	}

.ck .ck-size-view.ck-orientation-bottom-left {
		bottom: var(--ck-resizer-tooltip-offset);
		left: var(--ck-resizer-tooltip-offset);
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-widget/widget.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A visual style of focused element's border.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

:root {
	--ck-widget-outline-thickness: 3px;
	--ck-widget-handler-icon-size: 16px;
	--ck-widget-handler-animation-duration: 200ms;
	--ck-widget-handler-animation-curve: ease;

	--ck-color-widget-blurred-border: hsl(0, 0%, 87%);
	--ck-color-widget-hover-border: hsl(43, 100%, 62%);
	--ck-color-widget-editable-focus-background: var(--ck-color-base-background);
	--ck-color-widget-drag-handler-icon-color: var(--ck-color-base-background);
}

.ck .ck-widget {
	outline-width: var(--ck-widget-outline-thickness);
	outline-style: solid;
	outline-color: transparent;
	transition: outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)
}

.ck .ck-widget.ck-widget_selected,
	.ck .ck-widget.ck-widget_selected:hover {
		outline: var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border);
	}

.ck .ck-widget:hover {
		outline-color: var(--ck-color-widget-hover-border);
	}

.ck .ck-editor__nested-editable {
	border: 1px solid transparent

	/* The :focus style is applied before .ck-editor__nested-editable_focused class is rendered in the view.
	These styles show a different border for a blink of an eye, so `:focus` need to have same styles applied. */
}

.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,
	.ck .ck-editor__nested-editable:focus {
		/* Disable native outline. */
		outline: none;
		border: var(--ck-focus-ring);
		box-shadow: var(--ck-inner-shadow), 0 0;

		background-color: var(--ck-color-widget-editable-focus-background);
	}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {
		padding: 4px;
		box-sizing: border-box;

		/* Background and opacity will be animated as the handler shows up or the widget gets selected. */
		background-color: transparent;
		opacity: 0;

		/* Transition:
		   * background-color for the .ck-widget_selected state change,
		   * visibility for hiding the handler,
		   * opacity for the proper look of the icon when the handler disappears. */
		transition:
			background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),
			visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),
			opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);

		/* Make only top corners round. */
		border-radius: var(--ck-border-radius) var(--ck-border-radius) 0 0;

		/* Place the drag handler outside the widget wrapper. */
		transform: translateY(-100%);
		left: calc(0px - var(--ck-widget-outline-thickness))
	}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon {
			/* Make sure the dimensions of the icon are independent of the fon-size of the content. */
			width: var(--ck-widget-handler-icon-size);
			height: var(--ck-widget-handler-icon-size);
			color: var(--ck-color-widget-drag-handler-icon-color)

			/* The "selected" part of the icon is invisible by default */
		}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator {
				opacity: 0;

				/* Note: The animation is longer on purpose. Simply feels better. */
				transition: opacity 300ms var(--ck-widget-handler-animation-curve);
			}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {

		/* Advertise using the look of the icon that once clicked the handler, the widget will be selected. */
	}

.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator {
			opacity: 1;
		}

.ck .ck-widget.ck-widget_with-selection-handle {

	/* Show the selection handler on mouse hover over the widget. */
}

.ck .ck-widget.ck-widget_with-selection-handle:hover .ck-widget__selection-handle {
		opacity: 1;
		background-color: var(--ck-color-widget-hover-border);
	}

.ck .ck-widget.ck-widget_with-selection-handle {

	/* Show the selection handler when the widget is selected. */
}

.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle, .ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle {
			opacity: 1;
			background-color: var(--ck-color-focus-border)

			/* When the widget is selected, notify the user using the proper look of the icon. */
		}

.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator, .ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator {
				opacity: 1;
			}

/* In a RTL environment, align the selection handler to the right side of the widget */

/* stylelint-disable-next-line no-descending-specificity */

.ck[dir="rtl"] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle {
	left: auto;
	right: calc(0px - var(--ck-widget-outline-thickness));
}

/* https://github.com/ckeditor/ckeditor5/issues/6415 */

.ck.ck-editor__editable.ck-read-only .ck-widget {
	/* Prevent the :hover outline from showing up because of the used outline-color transition. */
	transition: none
}

.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected) {
		/* Disable visual effects of hover/active widget when CKEditor is in readOnly mode.
		 * See: https://github.com/ckeditor/ckeditor5/issues/1261
		 *
		 * Leave the unit because this custom property is used in calc() by other features.
		 * See: https://github.com/ckeditor/ckeditor5/issues/6775
		 */
		--ck-widget-outline-thickness: 0px;
	}

.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,
		.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover {
			background: var(--ck-color-widget-blurred-border);
		}

/* Style the widget when it's selected but the editable it belongs to lost focus. */

/* stylelint-disable-next-line no-descending-specificity */

.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,
	.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover {
		outline-color: var(--ck-color-widget-blurred-border)
	}

.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle,
			.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle .ck-widget__selection-handle:hover,
			.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle,
			.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover.ck-widget_with-selection-handle .ck-widget__selection-handle:hover {
				background: var(--ck-color-widget-blurred-border);
			}

.ck.ck-editor__editable > .ck-widget.ck-widget_with-selection-handle:first-child,
.ck.ck-editor__editable blockquote > .ck-widget.ck-widget_with-selection-handle:first-child {
	/* Do not crop selection handler if a widget is a first-child in the blockquote or in the root editable.
	In fact, anything with overflow: hidden.
	https://github.com/ckeditor/ckeditor5-block-quote/issues/28
	https://github.com/ckeditor/ckeditor5-widget/issues/44
	https://github.com/ckeditor/ckeditor5-widget/issues/66 */
	margin-top: calc(1em + var(--ck-widget-handler-icon-size));
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/label/label.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-label {
	display: block;
}

.ck.ck-voice-label {
	display: none;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/label/label.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-label {
	font-weight: bold;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper {
		display: flex;
		position: relative;
	}

.ck.ck-labeled-field-view .ck.ck-label {
		display: block;
		position: absolute;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/labeledfield/labeledfieldview.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

:root {
	--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);
	--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);
	--ck-color-labeled-field-label-background: var(--ck-color-base-background);
}

.ck.ck-labeled-field-view {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-labeled-field-view, .ck.ck-labeled-field-view.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper {
		width: 100%
	}

.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
			top: 0px;
		}

[dir="ltr"] .ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
				left: 0px;
		}

[dir="rtl"] .ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
				right: 0px;
		}

.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {

			pointer-events: none;
			transform-origin: 0 0;

			/* By default, display the label scaled down above the field. */
			transform: translate(var(--ck-spacing-medium), -6px) scale(.75);

			background: var(--ck-color-labeled-field-label-background);
			padding: 0 calc(.5 * var(--ck-font-size-tiny));
			line-height: initial;
			font-weight: normal;

			/* Prevent overflow when the label is longer than the input */
			text-overflow: ellipsis;
			overflow: hidden;

			max-width: 100%;

			transition:
				transform var(--ck-labeled-field-view-transition),
				padding var(--ck-labeled-field-view-transition),
				background var(--ck-labeled-field-view-transition);
		}

.ck.ck-labeled-field-view.ck-error > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
			color: var(--ck-color-base-error);
		}

.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly]) + .ck.ck-label {
			color: var(--ck-color-base-error);
		}

.ck.ck-labeled-field-view .ck-labeled-field-view__status {
		font-size: var(--ck-font-size-small);
		margin-top: var(--ck-spacing-small);

		/* Let the info wrap to the next line to avoid stretching the layout horizontally.
		The status could be very long. */
		white-space: normal
	}

.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error {
			color: var(--ck-color-base-error);
		}

.ck.ck-labeled-field-view {

	/* Disabled fields and fields that have no focus should fade out. */
}

.ck.ck-labeled-field-view.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
	.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
		color: var(--ck-color-input-disabled-text);
	}

.ck.ck-labeled-field-view {

	/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */
	/* stylelint-disable-next-line no-descending-specificity */
}

[dir="ltr"] .ck.ck-labeled-field-view.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
	[dir="ltr"] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
			transform: translate(var(--ck-spacing-medium), calc(0.6 * var(--ck-font-size-base))) scale(1);
	}

[dir="rtl"] .ck.ck-labeled-field-view.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
	[dir="rtl"] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
			transform: translate(calc(-1 * var(--ck-spacing-medium)), calc(0.6 * var(--ck-font-size-base))) scale(1);
	}

.ck.ck-labeled-field-view.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
	.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {

		/* Compensate for the default translate position. */
		max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));

		background: transparent;
		padding: 0;
	}

.ck.ck-labeled-field-view {

	/*------ DropdownView integration ----------------------------------------------------------------------------------- */

	/* Make sure dropdown' background color in any of dropdown's state does not collide with labeled field. */
}

.ck.ck-labeled-field-view > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {
		background: transparent;
	}

.ck.ck-labeled-field-view {

	/* When the dropdown is "empty", the labeled field label replaces its label. */
}

.ck.ck-labeled-field-view.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {
		opacity: 0;
	}

.ck.ck-labeled-field-view {

	/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */
}

.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {
		max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/inputtext/inputtext.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Note: This file should contain the wireframe styles only. But since there are no such styles,
 * it acts as a message to the builder telling that it should look for the corresponding styles
 * **in the theme** when compiling the editor.
 */

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/inputtext/inputtext.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A visual style of focused element's border.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

:root {
	--ck-input-text-width: 18em;
}

.ck.ck-input-text {
	border-radius: 0
}

.ck-rounded-corners .ck.ck-input-text, .ck.ck-input-text.ck-rounded-corners {
		border-radius: var(--ck-border-radius)
}

.ck.ck-input-text {

	background: var(--ck-color-input-background);
	border: 1px solid var(--ck-color-input-border);
	padding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);
	min-width: var(--ck-input-text-width);

	/* This is important to stay of the same height as surrounding buttons */
	min-height: var(--ck-ui-component-min-height);

	/* Apply some smooth transition to the box-shadow and border. */
	transition: box-shadow .1s ease-in-out, border .1s ease-in-out
}

.ck.ck-input-text:focus {
		/* Disable native outline. */
		outline: none;
		border: var(--ck-focus-ring);
		box-shadow: var(--ck-focus-outer-shadow), 0 0;
	}

.ck.ck-input-text[readonly] {
		border: 1px solid var(--ck-color-input-disabled-border);
		background: var(--ck-color-input-disabled-background);
		color: var(--ck-color-input-disabled-text)
	}

.ck.ck-input-text[readonly]:focus {
			/* The read-only input should have a slightly less visible shadow when focused. */
			box-shadow: var(--ck-focus-disabled-outer-shadow), 0 0;
		}

.ck.ck-input-text.ck-error {
		border-color: var(--ck-color-input-error-border);
		animation: ck-text-input-shake .3s ease both
	}

.ck.ck-input-text.ck-error:focus {
			box-shadow: var(--ck-focus-error-outer-shadow), 0 0;
		}

@keyframes ck-text-input-shake {
	20% {
		transform: translateX(-2px);
	}

	40% {
		transform: translateX(2px);
	}

	60% {
		transform: translateX(-1px);
	}

	80% {
		transform: translateX(1px);
	}
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/textalternativeform.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-text-alternative-form {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap
}

.ck.ck-text-alternative-form .ck-labeled-field-view {
		display: inline-block;
	}

.ck.ck-text-alternative-form .ck-label {
		display: none;
	}

@media screen and (max-width: 600px) {

.ck.ck-text-alternative-form {
		flex-wrap: wrap
}

		.ck.ck-text-alternative-form .ck-labeled-field-view {
			flex-basis: 100%;
		}

		.ck.ck-text-alternative-form .ck-button {
			flex-basis: 50%;
		}
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/responsive-form/responsiveform.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-vertical-form .ck-button::after {
	content: "";
	width: 0;
	position: absolute;
	right: -1px;
	top: var(--ck-spacing-small);
	bottom: var(--ck-spacing-small);
	z-index: 1;
}

@media screen and (max-width: 600px) {
		.ck.ck-responsive-form .ck-button::after {
			content: "";
			width: 0;
			position: absolute;
			right: -1px;
			top: var(--ck-spacing-small);
			bottom: var(--ck-spacing-small);
			z-index: 1;
		}
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/responsive-form/responsiveform.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-vertical-form > .ck-button:nth-last-child(2)::after {
	border-right: 1px solid var(--ck-color-base-border);
}

.ck.ck-responsive-form {
	padding: var(--ck-spacing-large)
}

.ck.ck-responsive-form:focus {
		/* See: https://github.com/ckeditor/ckeditor5/issues/4773 */
		outline: none;
	}

[dir="ltr"] .ck.ck-responsive-form > :not(:first-child) {
			margin-left: var(--ck-spacing-standard);
		}

[dir="rtl"] .ck.ck-responsive-form > :not(:last-child) {
			margin-left: var(--ck-spacing-standard);
		}

@media screen and (max-width: 600px) {

.ck.ck-responsive-form {
		padding: 0;
		width: calc(.8 * var(--ck-input-text-width))
}

		.ck.ck-responsive-form .ck-labeled-field-view {
			margin: var(--ck-spacing-large) var(--ck-spacing-large) 0
		}

			.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text {
				min-width: 0;
				width: 100%;
			}

		.ck.ck-responsive-form .ck-labeled-field-view {

			/* Let the long error messages wrap in the narrow form. */
		}
			.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error {
				white-space: normal;
			}

.ck.ck-responsive-form {

		/* Styles for two last buttons in the form (save&cancel, edit&unlink, etc.). */
}
		.ck.ck-responsive-form > .ck-button:nth-last-child(1),
		.ck.ck-responsive-form > .ck-button:nth-last-child(2) {
			padding: var(--ck-spacing-standard);
			margin-top: var(--ck-spacing-large);

			border-radius: 0;
			border: 0;
			border-top: 1px solid var(--ck-color-base-border)
		}
		[dir="ltr"] .ck.ck-responsive-form > .ck-button:nth-last-child(1),
		[dir="ltr"] .ck.ck-responsive-form > .ck-button:nth-last-child(2) {
				margin-left: 0
		}
		[dir="rtl"] .ck.ck-responsive-form > .ck-button:nth-last-child(1),
		[dir="rtl"] .ck.ck-responsive-form > .ck-button:nth-last-child(2) {
				margin-left: 0
		}

				[dir="rtl"] .ck.ck-responsive-form > .ck-button:nth-last-child(1):last-of-type, [dir="rtl"] .ck.ck-responsive-form > .ck-button:nth-last-child(2):last-of-type {
					border-right: 1px solid var(--ck-color-base-border);
				}
			.ck.ck-responsive-form > .ck-button:nth-last-child(2)::after {
				border-right: 1px solid var(--ck-color-base-border);
			}
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/image.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-content .image {
	display: table;
	clear: both;
	text-align: center;

	/* Make sure there is some space between the content and the image. Center image by default. */
	margin: 1em auto
}

.ck-content .image img {
		/* Prevent unnecessary margins caused by line-height (see #44). */
		display: block;

		/* Center the image if its width is smaller than the content's width. */
		margin: 0 auto;

		/* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */
		max-width: 100%;

		/* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */
		min-width: 50px;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/imageuploadprogress.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-editor__editable .image {
	position: relative;
}

/* Upload progress bar. */

.ck.ck-editor__editable .image .ck-progress-bar {
	position: absolute;
	top: 0;
	left: 0;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadprogress.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-editor__editable .image {
	/* Showing animation. */
}

.ck.ck-editor__editable .image.ck-appear {
		animation: fadeIn 700ms;
	}

/* Upload progress bar. */

.ck.ck-editor__editable .image .ck-progress-bar {
	height: 2px;
	width: 0;
	background: var(--ck-color-upload-bar-background);
	transition: width 100ms;
}

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

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/imageuploadicon.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-image-upload-complete-icon {
	display: block;
	position: absolute;
	top: 10px;
	right: 10px;
	border-radius: 50%
}

.ck-image-upload-complete-icon::after {
		content: "";
		position: absolute;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadicon.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-color-image-upload-icon: hsl(0, 0%, 100%);
	--ck-color-image-upload-icon-background: hsl(120, 100%, 27%);

	--ck-image-upload-icon-size: 20px;
	--ck-image-upload-icon-width: 2px;
}

.ck-image-upload-complete-icon {
	width: var(--ck-image-upload-icon-size);
	height: var(--ck-image-upload-icon-size);
	opacity: 0;
	background: var(--ck-color-image-upload-icon-background);
	animation-name: ck-upload-complete-icon-show, ck-upload-complete-icon-hide;
	animation-fill-mode: forwards, forwards;
	animation-duration: 500ms, 500ms;

	/* To make animation scalable. */
	font-size: var(--ck-image-upload-icon-size);

	/* Hide completed upload icon after 3 seconds. */
	animation-delay: 0ms, 3000ms

	/* This is check icon element made from border-width mixed with animations. */
}

.ck-image-upload-complete-icon::after {
		/* Because of border transformation we need to "hard code" left position. */
		left: 25%;

		top: 50%;
		opacity: 0;
		height: 0;
		width: 0;

		transform: scaleX(-1) rotate(135deg);
		transform-origin: left top;
		border-top: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);
		border-right: var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);

		animation-name: ck-upload-complete-icon-check;
		animation-duration: 500ms;
		animation-delay: 500ms;
		animation-fill-mode: forwards;

		/* #1095. While reset is not providing proper box-sizing for pseudoelements, we need to handle it. */
		box-sizing: border-box;
	}

@keyframes ck-upload-complete-icon-show {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

@keyframes ck-upload-complete-icon-hide {
	from {
		opacity: 1;
	}

	to {
		opacity: 0;
	}
}

@keyframes ck-upload-complete-icon-check {
	0% {
		opacity: 1;
		width: 0;
		height: 0;
	}
	33% {
		width: 0.3em;
		height: 0;
	}
	100% {
		opacity: 1;
		width: 0.3em;
		height: 0.45em;
	}
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/imageuploadloader.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-upload-placeholder-loader {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	top: 0;
	left: 0
}

.ck .ck-upload-placeholder-loader::before {
		content: '';
		position: relative;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-image/imageuploadloader.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-color-upload-placeholder-loader: hsl(0, 0%, 70%);
	--ck-upload-placeholder-loader-size: 32px;
}

.ck .ck-image-upload-placeholder {
	/* We need to control the full width of the SVG gray background. */
	width: 100%;
	margin: 0;
}

.ck .ck-upload-placeholder-loader {
	width: 100%;
	height: 100%
}

.ck .ck-upload-placeholder-loader::before {
		width: var(--ck-upload-placeholder-loader-size);
		height: var(--ck-upload-placeholder-loader-size);
		border-radius: 50%;
		border-top: 3px solid var(--ck-color-upload-placeholder-loader);
		border-right: 2px solid transparent;
		animation: ck-upload-placeholder-loader 1s linear infinite;
	}

@keyframes ck-upload-placeholder-loader {
	to {
		transform: rotate( 360deg );
	}
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-heading/theme/heading.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-heading_heading1 {
	font-size: 20px;
}

.ck.ck-heading_heading2 {
	font-size: 17px;
}

.ck.ck-heading_heading3 {
	font-size: 14px;
}

.ck[class*="ck-heading_heading"] {
	font-weight: bold;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-heading/heading.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* Resize dropdown's button label. */

.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__button .ck-button__label {
		width: 8em;
	}

.ck.ck-dropdown.ck-heading-dropdown .ck-dropdown__panel .ck-list__item {
		min-width: 18em;
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/imagecaption.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck-content .image > figcaption {
	display: table-caption;
	caption-side: bottom;
	word-break: break-word;
	color: hsl(0, 0%, 20%);
	background-color: hsl(0, 0%, 97%);
	padding: .6em;
	font-size: .75em;
	outline-offset: -1px;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-image/theme/imagestyle.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
	--ck-image-style-spacing: 1.5em;
}

.ck-content .image-style-side {
		float: right;
		margin-left: var(--ck-image-style-spacing);
		max-width: 50%;
	}

.ck-content .image-style-align-left {
		float: left;
		margin-right: var(--ck-image-style-spacing);
	}

.ck-content .image-style-align-center {
		margin-left: auto;
		margin-right: auto;
	}

.ck-content .image-style-align-right {
		float: right;
		margin-left: var(--ck-image-style-spacing);
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-link/theme/link.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Note: This file should contain the wireframe styles only. But since there are no such styles,
 * it acts as a message to the builder telling that it should look for the corresponding styles
 * **in the theme** when compiling the editor.
 */

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/link.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* Class added to span element surrounding currently selected link. */

.ck .ck-link_selected {
	background: var(--ck-color-link-selected-background);
}

/*
 * Classes used by the "fake visual selection" displayed in the content when an input
 * in the link UI has focus (the browser does not render the native selection in this state).
 */

.ck .ck-fake-link-selection {
	background: var(--ck-color-link-fake-selection);
}

/* A collapsed fake visual selection. */

.ck .ck-fake-link-selection_collapsed {
	height: 100%;
	border-right: 1px solid var(--ck-color-base-text);
	margin-right: -1px;
	outline: solid 1px hsla(0, 0%, 100%, .5);
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-link/theme/linkform.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-link-form {
	display: flex
}

.ck.ck-link-form .ck-label {
		display: none;
	}

@media screen and (max-width: 600px) {

.ck.ck-link-form {
		flex-wrap: wrap
}

		.ck.ck-link-form .ck-labeled-field-view {
			flex-basis: 100%;
		}

		.ck.ck-link-form .ck-button {
			flex-basis: 50%;
		}
	}

/*
 * Style link form differently when manual decorators are available.
 * See: https://github.com/ckeditor/ckeditor5-link/issues/186.
 */

.ck.ck-link-form_layout-vertical {
	display: block

	/*
	 * Whether the form is in the responsive mode or not, if there are decorator buttons
	 * keep the top margin of action buttons medium.
	 */
}

.ck.ck-link-form_layout-vertical .ck-button.ck-button-save,
		.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel {
			margin-top: var(--ck-spacing-medium);
		}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkform.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Style link form differently when manual decorators are available.
 * See: https://github.com/ckeditor/ckeditor5-link/issues/186.
 */

.ck.ck-link-form_layout-vertical {
	padding: 0;
	min-width: var(--ck-input-text-width)
}

.ck.ck-link-form_layout-vertical .ck-labeled-field-view {
		margin: var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)
	}

.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text {
			min-width: 0;
			width: 100%;
		}

.ck.ck-link-form_layout-vertical .ck-button {
		padding: var(--ck-spacing-standard);
		margin: 0;
		border-radius: 0;
		border: 0;
		border-top: 1px solid var(--ck-color-base-border);
		width: 50%
	}

[dir="ltr"] .ck.ck-link-form_layout-vertical .ck-button {
			margin-left: 0
	}

[dir="rtl"] .ck.ck-link-form_layout-vertical .ck-button {
			margin-left: 0
	}

[dir="rtl"] .ck.ck-link-form_layout-vertical .ck-button:last-of-type {
				border-right: 1px solid var(--ck-color-base-border);
			}

.ck.ck-link-form_layout-vertical {

	/* Using additional `.ck` class for stronger CSS specificity than `.ck.ck-link-form > :not(:first-child)`. */
}

.ck.ck-link-form_layout-vertical .ck.ck-list {
		margin: var(--ck-spacing-standard) var(--ck-spacing-large)
	}

.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton {
			border: 0;
			padding: 0;
			width: 100%
		}

.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover {
				background: none;
			}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-link/theme/linkactions.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-link-actions {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap
}

.ck.ck-link-actions .ck-link-actions__preview {
		display: inline-block
	}

.ck.ck-link-actions .ck-link-actions__preview .ck-button__label {
			overflow: hidden;
		}

@media screen and (max-width: 600px) {

.ck.ck-link-actions {
		flex-wrap: wrap
}

		.ck.ck-link-actions .ck-link-actions__preview {
			flex-basis: 100%;
		}

		.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview) {
			flex-basis: 50%;
		}
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-link/linkactions.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Enables the tooltip, which is the tooltip is in DOM but
 * not yet displayed.
 */

/**
 * Disables the tooltip making it disappear from DOM.
 */

/**
 * Shows the tooltip, which is already in DOM.
 * Requires `ck-tooltip_enabled` first.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Makes element unselectable.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A visual style of focused element's border.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * A helper to combine multiple shadows.
 */

/**
 * Gives an element a drop shadow so it looks like a floating panel.
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-link-actions .ck-button.ck-link-actions__preview {
		padding-left: 0;
		padding-right: 0
	}

.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label {
			padding: 0 var(--ck-spacing-medium);
			color: var(--ck-color-link-default);
			text-overflow: ellipsis;
			cursor: pointer;

			/* Match the box model of the link editor form's input so the balloon
			does not change width when moving between actions and the form. */
			max-width: var(--ck-input-text-width);
			min-width: 3em;
			text-align: center
		}

.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover {
				text-decoration: underline;
			}

.ck.ck-link-actions .ck-button.ck-link-actions__preview,
		.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover,
		.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,
		.ck.ck-link-actions .ck-button.ck-link-actions__preview:active {
			background: none;
		}

.ck.ck-link-actions .ck-button.ck-link-actions__preview:active {
			box-shadow: none;
		}

.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label {
				text-decoration: underline;
			}

[dir="ltr"] .ck.ck-link-actions .ck-button:not(:first-child) {
			margin-left: var(--ck-spacing-standard);
		}

[dir="rtl"] .ck.ck-link-actions .ck-button:not(:last-child) {
			margin-left: var(--ck-spacing-standard);
		}

@media screen and (max-width: 600px) {
		.ck.ck-link-actions .ck-button.ck-link-actions__preview {
			margin: var(--ck-spacing-standard) var(--ck-spacing-standard) 0
		}

			.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label {
				min-width: 0;
				max-width: 100%;
			}

		[dir="ltr"] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview) {
				margin-left: 0
		}

		[dir="rtl"] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview) {
				margin-left: 0
		}
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-ui/theme/components/colorgrid/colorgrid.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck.ck-color-grid {
	display: grid;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-ui/components/colorgrid/colorgrid.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/**
 * Implements rounded corner interface for .ck-rounded-corners class.
 *
 * @see $ck-border-radius
 */

:root {
	--ck-color-grid-tile-size: 24px;

	/* Not using global colors here because these may change but some colors in a pallette
	 * require special treatment. For instance, this ensures no matter what the UI text color is,
	 * the check icon will look good on the black color tile. */
	--ck-color-color-grid-check-icon: hsl(0, 0%, 0%);
}

.ck.ck-color-grid {
	grid-gap: 5px;
	padding: 8px;
}

.ck.ck-color-grid__tile {
	width: var(--ck-color-grid-tile-size);
	height: var(--ck-color-grid-tile-size);
	min-width: var(--ck-color-grid-tile-size);
	min-height: var(--ck-color-grid-tile-size);
	padding: 0;
	transition: .2s ease box-shadow;
	border: 0
}

.ck.ck-color-grid__tile.ck-disabled {
		cursor: unset;
		transition: unset;
	}

.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered {
		box-shadow: 0 0 0 1px var(--ck-color-base-border);
	}

.ck.ck-color-grid__tile .ck.ck-icon {
		display: none;
		color: var(--ck-color-color-grid-check-icon);
	}

.ck.ck-color-grid__tile.ck-on {
		box-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-base-text)
	}

.ck.ck-color-grid__tile.ck-on .ck.ck-icon {
			display: block;
		}

.ck.ck-color-grid__tile.ck-on,
	.ck.ck-color-grid__tile:focus:not( .ck-disabled ),
	.ck.ck-color-grid__tile:hover:not( .ck-disabled ) {
		/* Disable the default .ck-button's border ring. */
		border: 0;
	}

.ck.ck-color-grid__tile:focus:not( .ck-disabled ),
	.ck.ck-color-grid__tile:hover:not( .ck-disabled ) {
		box-shadow: inset 0 0 0 1px var(--ck-color-base-background), 0 0 0 2px var(--ck-color-focus-border);
	}

.ck.ck-color-grid__label {
	padding: 0 var(--ck-spacing-standard);
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-font/theme/fontcolor.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-button.ck-color-table__remove-color {
	display: flex;
	align-items: center;
	width: 100%;
}

label.ck.ck-color-grid__label {
	font-weight: unset;
}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-theme-lark/theme/ckeditor5-font/fontcolor.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

.ck .ck-button.ck-color-table__remove-color {
	padding: calc(var(--ck-spacing-standard) / 2 ) var(--ck-spacing-standard);
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0
}

.ck .ck-button.ck-color-table__remove-color:not(:focus) {
		border-bottom: 1px solid var(--ck-color-base-border);
	}

[dir="ltr"] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon {
			margin-right: var(--ck-spacing-standard)
	}

[dir="rtl"] .ck .ck-button.ck-color-table__remove-color .ck.ck-icon {
			margin-left: var(--ck-spacing-standard)
	}

/* /home/www/clients/client7/web31/web/node_modules/@ckeditor/ckeditor5-font/theme/fontsize.css */

/*
 * Copyright (c) 2003-2021, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

/* The values should be synchronized with the "FONT_SIZE_PRESET_UNITS" object in the "/src/fontsize/utils.js" file. */

/* Styles should be prefixed with the `.ck-content` class.
See https://github.com/ckeditor/ckeditor5/issues/6636 */

.ck-content .text-tiny {
		font-size: .7em;
	}

.ck-content .text-small {
		font-size: .85em;
	}

.ck-content .text-big {
		font-size: 1.4em;
	}

.ck-content .text-huge {
		font-size: 1.8em;
	}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vPG5vIHNvdXJjZT4iLCJ3ZWJwYWNrOi8vL2dsb2JhbHMuY3NzIiwid2VicGFjazovLy9faGlkZGVuLmNzcyIsIndlYnBhY2s6Ly8vX3Jlc2V0LmNzcyIsIndlYnBhY2s6Ly8vX3ppbmRleC5jc3MiLCJ3ZWJwYWNrOi8vL190cmFuc2l0aW9uLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2dsb2JhbHMvZ2xvYmFscy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9nbG9iYWxzL19jb2xvcnMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fZGlzYWJsZWQuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fZm9jdXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fZm9udHMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fcmVzZXQuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fcm91bmRlZC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9nbG9iYWxzL19zaGFkb3cuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvZ2xvYmFscy9fc3BhY2luZy5jc3MiLCJ3ZWJwYWNrOi8vL2JhbGxvb25wYW5lbC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL3BhbmVsL2JhbGxvb25wYW5lbC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL21peGlucy9fcm91bmRlZC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL21peGlucy9fc2hhZG93LmNzcyIsIndlYnBhY2s6Ly8vaWNvbi5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL2ljb24vaWNvbi5jc3MiLCJ3ZWJwYWNrOi8vL3Rvb2x0aXAuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY3NzIiwid2VicGFjazovLy9idXR0b24uY3NzIiwid2VicGFjazovLy8uLi8uLi9taXhpbnMvX3Vuc2VsZWN0YWJsZS5jc3MiLCJ3ZWJwYWNrOi8vLy4uL3Rvb2x0aXAvbWl4aW5zL190b29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL21peGlucy9fZm9jdXMuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9taXhpbnMvX2Rpc2FibGVkLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL21peGlucy9fYnV0dG9uLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vbWl4aW5zL19kaXIuY3NzIiwid2VicGFjazovLy9iYWxsb29ucm90YXRvci5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL3BhbmVsL2JhbGxvb25yb3RhdG9yLmNzcyIsIndlYnBhY2s6Ly8vZmFrZXBhbmVsLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvcGFuZWwvZmFrZXBhbmVsLmNzcyIsIndlYnBhY2s6Ly8vZHJvcGRvd24uY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jc3MiLCJ3ZWJwYWNrOi8vL2xpc3QuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy9saXN0L2xpc3QuY3NzIiwid2VicGFjazovLy9zd2l0Y2hidXR0b24uY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy9idXR0b24vc3dpdGNoYnV0dG9uLmNzcyIsIndlYnBhY2s6Ly8vdG9vbGJhcmRyb3Bkb3duLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvZHJvcGRvd24vdG9vbGJhcmRyb3Bkb3duLmNzcyIsIndlYnBhY2s6Ly8vbGlzdGRyb3Bkb3duLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvZHJvcGRvd24vbGlzdGRyb3Bkb3duLmNzcyIsIndlYnBhY2s6Ly8vdG9vbGJhci5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL3Rvb2xiYXIvdG9vbGJhci5jc3MiLCJ3ZWJwYWNrOi8vL3BsYWNlaG9sZGVyLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LWVuZ2luZS9wbGFjZWhvbGRlci5jc3MiLCJ3ZWJwYWNrOi8vL2VkaXRvcnVpLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvZWRpdG9ydWkvZWRpdG9ydWkuY3NzIiwid2VicGFjazovLy9ibG9ja3F1b3RlLmNzcyIsIndlYnBhY2s6Ly8vd2lkZ2V0dHlwZWFyb3VuZC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS13aWRnZXQvd2lkZ2V0dHlwZWFyb3VuZC5jc3MiLCJ3ZWJwYWNrOi8vL3dpZGdldC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS13aWRnZXQvd2lkZ2V0LmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvbWl4aW5zL19mb2N1cy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL21peGlucy9fc2hhZG93LmNzcyIsIndlYnBhY2s6Ly8vbGFiZWwuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy9sYWJlbC9sYWJlbC5jc3MiLCJ3ZWJwYWNrOi8vL2xhYmVsZWRmaWVsZHZpZXcuY3NzIiwid2VicGFjazovLy8uLi8uLi8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtdWkvY29tcG9uZW50cy9sYWJlbGVkZmllbGQvbGFiZWxlZGZpZWxkdmlldy5jc3MiLCJ3ZWJwYWNrOi8vL2lucHV0dGV4dC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL2lucHV0dGV4dC9pbnB1dHRleHQuY3NzIiwid2VicGFjazovLy90ZXh0YWx0ZXJuYXRpdmVmb3JtLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fcndkLmNzcyIsIndlYnBhY2s6Ly8vcmVzcG9uc2l2ZWZvcm0uY3NzIiwid2VicGFjazovLy8uLi8uLi9taXhpbnMvX3J3ZC5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS11aS9jb21wb25lbnRzL3Jlc3BvbnNpdmUtZm9ybS9yZXNwb25zaXZlZm9ybS5jc3MiLCJ3ZWJwYWNrOi8vL2ltYWdlLmNzcyIsIndlYnBhY2s6Ly8vaW1hZ2V1cGxvYWRwcm9ncmVzcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS1pbWFnZS9pbWFnZXVwbG9hZHByb2dyZXNzLmNzcyIsIndlYnBhY2s6Ly8vaW1hZ2V1cGxvYWRpY29uLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LWltYWdlL2ltYWdldXBsb2FkaWNvbi5jc3MiLCJ3ZWJwYWNrOi8vL2ltYWdldXBsb2FkbG9hZGVyLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LWltYWdlL2ltYWdldXBsb2FkbG9hZGVyLmNzcyIsIndlYnBhY2s6Ly8vaGVhZGluZy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS1oZWFkaW5nL2hlYWRpbmcuY3NzIiwid2VicGFjazovLy9pbWFnZWNhcHRpb24uY3NzIiwid2VicGFjazovLy9pbWFnZXN0eWxlLmNzcyIsIndlYnBhY2s6Ly8vbGluay5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS1saW5rL2xpbmsuY3NzIiwid2VicGFjazovLy9saW5rZm9ybS5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS1saW5rL2xpbmtmb3JtLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fZGlyLmNzcyIsIndlYnBhY2s6Ly8vbGlua2FjdGlvbnMuY3NzIiwid2VicGFjazovLy8uLi8uLi9ja2VkaXRvcjUtdGhlbWUtbGFyay90aGVtZS9ja2VkaXRvcjUtbGluay9saW5rYWN0aW9ucy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS11aS90aGVtZS9jb21wb25lbnRzL3Rvb2x0aXAvbWl4aW5zL190b29sdGlwLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fdW5zZWxlY3RhYmxlLmNzcyIsIndlYnBhY2s6Ly8vY29sb3JncmlkLmNzcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vLi4vY2tlZGl0b3I1LXRoZW1lLWxhcmsvdGhlbWUvY2tlZGl0b3I1LXVpL2NvbXBvbmVudHMvY29sb3JncmlkL2NvbG9yZ3JpZC5jc3MiLCJ3ZWJwYWNrOi8vL2ZvbnRjb2xvci5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uL2NrZWRpdG9yNS10aGVtZS1sYXJrL3RoZW1lL2NrZWRpdG9yNS1mb250L2ZvbnRjb2xvci5jc3MiLCJ3ZWJwYWNrOi8vL2ZvbnRzaXplLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUNBQTs7O0VBR0U7O0FDSEY7OztFQUdFOztBQUVGOztFQUVFOztBQUNGO0NBQ0M7dUVBQ3NFO0NBQ3RFLHdCQUF3QjtBQUN6Qjs7QUNaQTs7O0VBR0U7O0FBRUY7OztDQUdDLHNCQUFzQjtDQUN0QixXQUFXO0NBQ1gsWUFBWTtDQUNaLGdCQUFnQjtBQUNqQjs7QUNaQTs7O0VBR0U7O0FBRUY7Q0FDQyxpQkFBaUI7Q0FDakIsK0NBQStDO0FBQ2hEOztBQ1JBOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFDRjs7Q0FFQywyQkFBMkI7QUFDNUI7O0FMWEE7O0FNQUE7OztFQUdFOztBQ0hGOzs7RUFHRTs7QUFFRjtDQUNDLG1EQUFtRDtDQUNuRCxvREFBb0Q7Q0FDcEQsZ0RBQWdEO0NBQ2hELG1EQUFtRDtDQUNuRCxtREFBbUQ7Q0FDbkQsK0NBQStDO0NBQy9DLG1EQUFtRDtDQUNuRCx1REFBdUQ7Q0FDdkQsa0RBQWtEOztDQUVsRCwrRkFBK0Y7O0NBRS9GLHdEQUF3RDtDQUN4RCwrRUFBK0U7Q0FDL0Usd0RBQXdEO0NBQ3hELDhEQUE4RDtDQUM5RCx5REFBeUQ7Q0FDekQscURBQXFEO0NBQ3JELHNEQUFzRDtDQUN0RCwwREFBMEQ7Q0FDMUQsc0RBQXNEOztDQUV0RCwrRkFBK0Y7O0NBRS9GLHVEQUF1RDtDQUN2RCwrREFBK0Q7Q0FDL0QsZ0VBQWdFO0NBQ2hFLDZEQUE2RDtDQUM3RCw4REFBOEQ7O0NBRTlELHVEQUF1RDtDQUN2RCw0REFBNEQ7Q0FDNUQsNERBQTREO0NBQzVELHlEQUF5RDtDQUN6RCw4REFBOEQ7O0NBRTlELHNFQUFzRTtDQUN0RSxrRUFBa0U7Q0FDbEUsa0VBQWtFO0NBQ2xFLCtEQUErRDtDQUMvRCxvRUFBb0U7Q0FDcEUsc0VBQXNFOztDQUV0RSxvREFBb0Q7Q0FDcEQscURBQXFEOztDQUVyRCw0REFBNEQ7Q0FDNUQsaUVBQWlFO0NBQ2pFLHFGQUFxRjtDQUNyRixtRUFBbUU7Q0FDbkUsOEVBQThFO0NBQzlFLGdFQUFnRTs7Q0FFaEUsK0ZBQStGOztDQUUvRiwyRUFBMkU7Q0FDM0Usb0VBQW9FOztDQUVwRSwrRkFBK0Y7O0NBRS9GLG9FQUFvRTtDQUNwRSxpREFBaUQ7Q0FDakQsZ0VBQWdFO0NBQ2hFLDBEQUEwRDtDQUMxRCwyREFBMkQ7Q0FDM0Qsd0RBQXdEO0NBQ3hELHNEQUFzRDs7Q0FFdEQsK0ZBQStGOztDQUUvRixtRUFBbUU7Q0FDbkUsNkZBQTZGO0NBQzdGLHVFQUF1RTtDQUN2RSxpRkFBaUY7Q0FDakYsc0VBQXNFOztDQUV0RSwrRkFBK0Y7O0NBRS9GLG9FQUFvRTtDQUNwRSw2REFBNkQ7O0NBRTdELCtGQUErRjs7Q0FFL0Ysc0VBQXNFO0NBQ3RFLCtEQUErRDs7Q0FFL0QsK0ZBQStGOztDQUUvRixnRUFBZ0U7Q0FDaEUsaUVBQWlFOztDQUVqRSwrRkFBK0Y7O0NBRS9GLHlEQUF5RDs7Q0FFekQsK0ZBQStGOztDQUUvRiwyREFBMkQ7O0NBRTNELDZGQUE2Rjs7Q0FFN0Ysb0RBQW9EO0NBQ3BELG1FQUFtRTtDQUNuRSxnRUFBZ0U7QUFDakU7O0FDOUdBOzs7RUFHRTs7QUFFRjtDQUNDOztHQUVFO0NBQ0YseUJBQXlCO0FBQzFCOztBQ1ZBOzs7RUFHRTs7QUFFRjtDQUNDOztHQUVFO0NBQ0YsMkNBQTJDOztDQUUzQzs7R0FFRTtDQUNGLGlHQUFpRzs7Q0FFakc7O0dBRUU7Q0FDRiw2R0FBNkc7O0NBRTdHOztHQUVFO0NBQ0YsdUdBQXVHOztDQUV2Rzs7R0FFRTtDQUNGLHVEQUF1RDtBQUN4RDs7QUM5QkE7OztFQUdFOztBQUVGO0NBQ0MseUJBQXlCO0NBQ3pCLDhCQUE4QjtDQUM5Qiw2REFBNkQ7O0NBRTdELDBCQUEwQjtDQUMxQiw0QkFBNEI7Q0FDNUIsMEJBQTBCO0NBQzFCLHlCQUF5QjtDQUN6QiwyQkFBMkI7QUFDNUI7O0FDZkE7OztFQUdFOztBQUVGO0NBQ0M7OztnQkFHZTtDQUNmLG1DQUFtQztBQUNwQzs7QUFFQTs7RUFFRTs7QUFDRjs7O0NBR0MsMkNBQTJDO0NBQzNDLFNBQVM7Q0FDVCxVQUFVO0NBQ1YsU0FBUztDQUNULHVCQUF1QjtDQUN2QixxQkFBcUI7Q0FDckIsc0JBQXNCO0NBQ3RCLGdCQUFnQjs7Q0FFaEIsZ0VBQWdFO0NBQ2hFLHFCQUFxQjtBQUN0Qjs7QUFFQTs7RUFFRTs7QUFDRjs7Q0FFQyx1REFBdUQ7Q0FDdkQseUJBQXlCO0NBQ3pCLGtHQUFrRztDQUNsRywyQkFBMkI7Q0FDM0IsZ0JBQWdCO0NBQ2hCLG1CQUFtQjtDQUNuQixZQUFZO0NBQ1osV0FBVztBQUNaOztBQUdDO0VBQ0MsaUJBQWlCO0NBQ2xCOztBQUVBO0VBQ0MsV0FBVztFQUNYLHVCQUF1QjtDQUN4Qjs7QUFFQTtFQUNDLHFCQUFxQjtDQUN0Qjs7QUFFQTs7O0VBR0MsWUFBWTtDQUNiOztBQUVBOzs7RUFHQyxlQUFlO0NBQ2hCOztBQUVBO0VBQ0MsYUFBYTtFQUNiLG9DQUFvQztDQUNyQzs7QUFFQTtFQUNDLGtHQUFrRztFQUNsRyxVQUFVO0VBQ1Y7Q0FDRDs7QUFHRDs7RUFFRTs7QUFDRjs7Q0FFQyxpQkFBaUI7QUFDbEI7O0FDM0ZBOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFDRjtDQUNDLHVCQUF1QjtBQUN4Qjs7QUNWQTs7O0VBR0U7O0FBRUY7Q0FDQzs7R0FFRTtDQUNGLGlFQUFpRTs7Q0FFakU7O0dBRUU7Q0FDRiwyREFBMkQ7O0NBRTNEOztHQUVFO0NBQ0YseUVBQXlFO0FBQzFFOztBQ3BCQTs7O0VBR0U7O0FBRUY7Q0FDQyw4QkFBOEI7Q0FDOUIsMkRBQTJEO0NBQzNELGtEQUFrRDtDQUNsRCw0REFBNEQ7Q0FDNUQsMkRBQTJEO0NBQzNELDJEQUEyRDtDQUMzRCxnRUFBZ0U7QUFDakU7O0FkYkE7O0FlQUE7OztFQUdFOztBQUVGO0NBQ0Msa0VBQWtFO0NBQ2xFLCtEQUErRDtBQUNoRTs7QUFFQTtDQUNDLGFBQWE7Q0FDYixrQkFBa0I7O0NBRWxCO0FBeUNEOztBQXRDRTs7R0FFQyxXQUFXO0dBQ1gsa0JBQWtCO0VBQ25COztBQUVBO0dBQ0MsOENBQThDO0VBQy9DOztBQUVBO0dBQ0Msd0RBQXdEO0VBQ3pEOztBQUlBO0dBQ0MsOENBQThDO0VBQy9DOztBQUVBO0dBQ0Msd0RBQXdEO0VBQ3pEOztBQUlBO0dBQ0MsOENBQThDO0VBQy9DOztBQUVBO0dBQ0Msd0RBQXdEO0VBQ3pEOztBQUdEO0VBQ0MsY0FBYztDQUNmOztBZnRERDs7QWdCQUE7OztFQUdFOztBQ0hGOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBQ1RGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFLRjs7RUFFRTs7QUZORjtDQUNDLDhCQUE4QjtDQUM5QiwrQkFBK0I7Q0FDL0Isa0NBQWtDO0NBQ2xDLHFFQUFxRTtBQUN0RTs7QUFFQTtDQ0pDO0FENElEOztBQXhJQTtFQ0FFO0FEd0lGOztBQXhJQTtDRU5DLHNDQUE4Qjs7Q0ZVOUIsZ0JBQWdCOztDQUVoQiw0Q0FBNEM7Q0FDNUM7QUFpSUQ7O0FBOUhFOztHQUVDLFFBQVE7R0FDUixTQUFTO0dBQ1QsbUJBQW1CO0VBQ3BCOztBQUlBOztHQUVDLG9IQUFvSDtFQUNySDs7QUFFQTtHQUNDLDhFQUE4RTtFQUMvRTs7QUFFQTtHQUNDLGtGQUFrRjtHQUNsRiwwQ0FBMEM7RUFDM0M7O0FBSUE7O0dBRUMsb0hBQW9IO0VBQ3JIOztBQUVBO0dBQ0Msa0VBQWtFO0dBQ2xFLHdEQUF3RDtFQUN6RDs7QUFFQTtHQUNDLGtGQUFrRjtHQUNsRiw2Q0FBNkM7RUFDOUM7O0FBSUE7O0dBRUMsU0FBUztHQUNULDBEQUEwRDtHQUMxRCw4Q0FBOEM7RUFDL0M7O0FBSUE7O0dBRUMsa0RBQWtEO0dBQ2xELDhDQUE4QztFQUMvQzs7QUFJQTs7R0FFQyxtREFBbUQ7R0FDbkQsOENBQThDO0VBQy9DOztBQUlBOztHQUVDLFNBQVM7R0FDVCwwREFBMEQ7R0FDMUQsaURBQWlEO0VBQ2xEOztBQUlBOztHQUVDLGtEQUFrRDtHQUNsRCxpREFBaUQ7RUFDbEQ7O0FBSUE7O0dBRUMsbURBQW1EO0dBQ25ELGlEQUFpRDtFQUNsRDs7QUFJQTs7R0FFQyxVQUFVO0dBQ1YsMERBQTBEO0dBQzFELGlEQUFpRDtFQUNsRDs7QUFJQTs7R0FFQyxTQUFTO0dBQ1QseURBQXlEO0dBQ3pELGlEQUFpRDtFQUNsRDs7QUFJQTs7R0FFQyxVQUFVO0dBQ1YsMERBQTBEO0dBQzFELDhDQUE4QztFQUMvQzs7QUFJQTs7R0FFQyxTQUFTO0dBQ1QseURBQXlEO0dBQ3pELDhDQUE4QztFQUMvQzs7QWhCckpGOztBbUJBQTs7O0VBR0U7O0FBRUY7Q0FDQyxzQkFBc0I7QUFDdkI7O0FuQlBBOztBb0JBQTs7O0VBR0U7O0FBRUY7Q0FDQyw2RUFBNkU7QUFDOUU7O0FBRUE7Q0FDQywwQkFBMEI7Q0FDMUIsMkJBQTJCOztDQUUzQix1RkFBdUY7Q0FDdkYsd0JBQXdCOztDQUV4QixjQUFjOztDQUVkLCtCQUErQjtDQUMvQixlQUFlOztDQUVmLHlEQUF5RDtDQUN6RDtBQWNEOztBQVpDO0VBQ0MsK0JBQStCO0VBQy9CLGVBQWU7O0VBRWYsMENBQTBDO0VBQzFDO0NBTUQ7O0FBSkM7R0FDQyxrQkFBa0I7R0FDbEIsa0JBQWtCO0VBQ25COztBcEJsQ0Y7O0FxQkFBOzs7RUFHRTs7QUFFRjs7Q0FFQyxrQkFBa0I7O0NBRWxCLDhEQUE4RDtDQUM5RCxvQkFBb0I7O0NBRXBCOzJCQUMwQjtDQUMxQixtQ0FBbUM7QUFDcEM7O0FBRUE7Q0FDQyxrQ0FBa0M7Q0FDbEMsa0JBQWtCO0NBQ2xCLFVBQVU7Q0FDVixhQUFhO0NBQ2I7QUFXRDs7QUFUQztFQUNDO0NBT0Q7O0FBTEM7R0FDQyxXQUFXO0dBQ1gsUUFBUTtHQUNSLFNBQVM7RUFDVjs7QXJCL0JGOztBc0JBQTs7O0VBR0U7O0FMSEY7OztFQUdFOztBQUVGOzs7O0VBSUU7O0FLRkY7Q0FDQyw0QkFBNEI7QUFDN0I7O0FBRUE7Q0FDQyxTQUFTOztDQUVUOzs7R0FHRTtDQUNGLE1BQU07O0NBRU47Ozs7R0FJRTtDQUNGO0FBd0tEOztBQXRLQztFTGhCQTtDS3FDQTs7QUFyQkE7RUxaQztDS2lDRDs7QUFyQkE7O0VBR0MsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixtQ0FBbUM7RUFDbkMseURBQXlEO0VBQ3pELDhDQUE4QztFQUM5QyxrQkFBa0I7RUFDbEI7Q0FZRDs7QUFWQztHQUNDOzs7O0tBSUU7R0FDRix1Q0FBdUM7R0FDdkMsbUJBQW1CO0dBQ25CLFNBQVM7RUFDVjs7QUFwQ0Y7O0NBdUNDOzs7Ozs7OztHQVFFO0FBdUlIOztBQXRJQzs7O0VBR0MsK0NBQStDO0VBQy9DO0NBU0Q7O0FBUEM7R0FDQyxxRkFBcUY7R0FDckYsa0RBQWtEO0dBQ2xELDZCQUE2QjtHQUM3QixvRkFBb0Y7R0FDcEYsc0dBQXNHO0VBQ3ZHOztBQTVERjs7Q0ErREM7Ozs7Ozs7O0dBUUU7QUErR0g7O0FBN0dDO0VBQ0MsVUFBVTtFQUNWO0NBV0Q7O0FBVEM7R0FDQyxVQUFVO0dBQ1YsK0NBQStDO0VBQ2hEOztBQUVBO0dBQ0MsVUFBVTtHQUNWLFFBQVE7RUFDVDs7QUFyRkY7O0NBd0ZDOzs7Ozs7OztHQVFFO0FBc0ZIOztBQXJGQztFQUNDLFNBQVM7RUFDVDtDQVlEOztBQVZDO0dBQ0MsV0FBVztHQUNYLDhDQUE4QztFQUMvQzs7QUFFQTtHQUNDLFdBQVc7R0FDWCxPQUFPO0dBQ1AsNEJBQTRCO0VBQzdCOztBQTlHRjs7Q0FpSEM7Ozs7Ozs7O0dBUUU7QUE2REg7O0FBNURDO0VBQ0MsNENBQTRDO0VBQzVDO0NBUUQ7O0FBTkM7R0FDQywrQ0FBK0M7R0FDL0MsNkJBQTZCO0dBQzdCLG9GQUFvRjtHQUNwRixzR0FBc0c7RUFDdkc7O0FBbklGOztDQXNJQzs7Ozs7O0dBTUU7QUEwQ0g7O0FBekNDO0VBQ0MsK0NBQStDO0VBQy9DO0NBYUQ7O0FBWEM7R0FDQyxPQUFPO0dBQ1A7RUFRRDs7QUFOQztJQUNDLDZDQUE2QztJQUM3QyxpREFBaUQ7SUFDakQsb0ZBQW9GO0lBQ3BGLHNHQUFzRztHQUN2Rzs7QUExSkg7O0NBOEpDOzs7Ozs7R0FNRTtBQWtCSDs7QUFqQkM7RUFDQyxnREFBZ0Q7RUFDaEQsVUFBVTtFQUNWO0NBYUQ7O0FBWEM7R0FDQyxPQUFPO0dBQ1A7RUFRRDs7QUFOQztJQUNDLFVBQVU7SUFDVixpREFBaUQ7SUFDakQsb0ZBQW9GO0lBQ3BGLHNHQUFzRztHQUN2Rzs7QXRCOUxIOztBdUJBQTs7O0VBR0U7O0FDSEY7OztFQUdFOztBQUVGOztFQUVFOztBQ1BGOzs7RUFHRTs7QUFFRjs7O0VBR0U7O0FBMkJGOztFQUVFOztBQU9GOzs7RUFHRTs7QUZ2Q0Y7O0NDQ0Msc0JBQXNCO0NBQ3RCLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckI7QUQ2QkQ7O0FFL0JDO0VBQ0MsYUFBYzs7RUFFZDs7Ozs7Ozs7Ozs7Ozs7O0lBZUU7Q0FJSDs7QUFIQzs7QUFuQkQ7R0FvQkU7Q0FFRjtFQURDOztBRnZCRjs7O0NBS0Msa0JBQWtCO0NBQ2xCLG9CQUFvQjtDQUNwQixtQkFBbUI7Q0FDbkI7QUF5QkQ7O0FBdkJDO0VBQ0MsYUFBYTtDQUNkOztBQUdDO0dBQ0MscUJBQXFCO0VBQ3RCOztBQWpCRjs7O0NBb0JDLDJEQUEyRDtBQWE1RDs7QUFaQztFQUNDLHVCQUF1QjtDQUN4Qjs7QUVrQkE7RUFDQyxtQkFBbUI7RUFDbkIsVUFBVTtDQUNYOztBRjVDRDs7O0NBNkJDLDBGQUEwRjtBQUkzRjs7QUVGQztFQUNDLGFBQWE7Q0FDZDs7QXpCekNEOztBMEJBQTs7O0VBR0U7O0FDSEY7OztFQUdFOztBQUVGOztFQUVFOztBVFBGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFLRjs7RUFFRTs7QVVkRjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FYUEY7OztFQUdFOztBQUVGOzs7O0VBSUU7O0FZVEY7OztFQUdFOztBQUVGOzs7OztFQUtFOztBQ1ZGOzs7RUFHRTs7QUpTRjs7Q0dBQztBSDBJRDs7QUd2SUU7R0FDQywyREFBMkM7RUFDNUM7O0FBRUE7R0FDQyw0REFBNEM7R0FDNUMsd0VBQXdEO0VBQ3pEOztBSFZGOztDR2FDLCtEQUErRDtBSDZIaEU7O0FHNUhDO0VBQ0MsOERBQThDO0NBQy9DOztBSGhCRDs7Q1REQztBUzJJRDs7QUExSUE7Ozs7RVRHRTtBU3VJRjs7QUExSUE7OztDQUtDLG1CQUFtQjtDQUNuQixlQUFlO0NBQ2Ysc0JBQXNCO0NBQ3RCLCtCQUErQjtDQUMvQixrQkFBa0I7O0NBRWxCLGlGQUFpRjtDQUNqRiw0Q0FBNEM7Q0FDNUMsNkNBQTZDOztDQUU3QztpREFDZ0Q7Q0FDaEQsY0FBYzs7Q0FFZCxpRUFBaUU7Q0FDakUsa0JBQWtCOztDQUVsQixxREFBcUQ7Q0FDckQsNkJBQTZCOztDQUU3QiwrREFBK0Q7Q0FDL0QsOERBQThEOztDQUU5RCxnRUFBZ0U7Q0FDaEU7QUE2R0Q7O0FBM0dDOzs7O0VDbENBLDRCQUE0QjtFQUM1QixhQUFhO0VBQ2IsNEJBQTJCO0VURjNCLDZDQUE4QjtDUXNDOUI7O0FBbkNEOzs7Q0FxQ0MseURBQXlEO0FBcUcxRDs7QUFuR0U7Ozs7R0FFQyxjQUFjO0VBQ2Y7O0FBR0Q7RUFDQyxpRUFBaUU7RUFDakUsa0JBQWtCO0VBQ2xCLG9CQUFvQjtFQUNwQixjQUFjO0VBQ2QsZUFBZTs7RUFFZjtrRUFDZ0U7RUFDaEU7Q0FTRDs7QUFsQkE7R0FZRTtDQU1GOztBQWxCQTtHQWdCRTtDQUVGOztBQUVBO0VBQ0MsY0FBYztDQVlmOztBQWJBO0dBSUUsb0NBQW9DO0NBU3RDOztBQWJBO0dBUUUscUNBQXFDO0NBS3ZDOztBQWJBOztFQVdDLGlCQUFpQjtFQUNqQixXQUFXO0NBQ1o7O0FBOUVEOzs7Q0FnRkMsK0RBQStEO0FBMERoRTs7QUF4REU7Ozs7R0FFQyxpRkFBaUY7R1J2Rm5GLHNEQUE4QjtFUXlGN0I7O0FBRUE7R0UzRkQsbUNBQW1DO0VGNkZsQzs7QUFURDs7RUFXQywrREFBK0Q7Q0FRaEU7O0FBUEM7R0VoR0QsbUNBQW1DO0VGa0dsQzs7QUFFQTtHQUNDLFdBQVc7RUFDWjs7QUFHRDtFQUNDLHlEQUEwRDs7RUFFMUQsMERBQTBEO0NBWTNEOztBQVhDO0lBRUUsK0NBQStDO0lBQy9DO0VBT0Y7O0FBVkE7SUFPRSxnREFBZ0Q7SUFDaEQ7RUFFRjs7QUFHRDtFQUNDLDBEQUEwRDtDQUkzRDs7QUFIQztHQUNDLFlBQVk7RUFDYjs7QUEzSEY7OztDQThIQyw2RUFBNkU7QUFZOUU7O0FBWEM7RUcvSEEsZ0RBQXFDO0NIaUlyQzs7QUc5SEM7R0FDQyxzREFBMkM7RUFDNUM7O0FBRUE7R0FDQyx1REFBNEM7R0FDNUMsbUVBQXdEO0VBQ3pEOztBSHFIRDtFR2xIQSwrREFBK0Q7Q0hvSC9EOztBR25IQTtFQUNDLHlEQUE4QztDQUMvQzs7QUhtSEE7RUFDQyxrQ0FBa0M7Q0FDbkM7O0FBRUE7RUFDQyxvQ0FBb0M7Q0FDckM7O0FBR0QsNERBQTREOztBQUM1RDs7Q0c3SUMsb0RBQXFDO0FIa0p0Qzs7QUcvSUU7R0FDQywwREFBMkM7RUFDNUM7O0FBRUE7R0FDQywyREFBNEM7R0FDNUMsdUVBQXdEO0VBQ3pEOztBSG1JRjs7Q0doSUMsK0RBQStEO0FIcUloRTs7QUdwSUM7RUFDQyw2REFBOEM7Q0FDL0M7O0FINkhEOzs7Q0FJQyx5Q0FBeUM7QUFDMUM7O0FBRUE7O0NBRUMsaUJBQWlCO0FBQ2xCOztBMUJuS0E7O0ErQkFBOzs7RUFHRTs7QUFFRjtDQUNDLGFBQWE7Q0FDYixtQkFBbUI7Q0FDbkIsdUJBQXVCO0FBQ3hCOztBQUVBOztFQUVFOztBQUNGO0NBQ0MsdUJBQXVCO0FBQ3hCOztBL0JoQkE7O0FnQ0FBOzs7RUFHRTs7QUFFRjtDQUNDLDhDQUE4QztDQUM5Qyx1REFBdUQ7Q0FDdkQsaUNBQWtDOztDQUVsQyxtREFBbUQ7QUFjcEQ7O0FBYkM7RUFDQyxxQ0FBcUM7RUFDckMsbUNBQW1DO0VBQ25DLHNDQUFzQztDQUN2Qzs7QUFWRDs7Q0FZQyw0Q0FBNEM7QUFPN0M7O0FBTkM7RUFDQyx3Q0FBd0M7O0VBRXhDLDZFQUE2RTtFQUM3RSxvQ0FBb0M7Q0FDckM7O0FBR0Q7O0NBRUMsdUVBQXVFO0FBSXhFOztBQUhDO0VBQ0MsZ0JBQWdCO0NBQ2pCOztBaEMvQkQ7O0FpQ0FBOzs7RUFHRTs7QUFFRjtDQUNDLGtCQUFrQjs7Q0FFbEIsNkRBQTZEO0NBQzdELG9DQUFvQztBQUNyQzs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QUFFQTtDQUNDLFVBQVU7QUFDWDs7QUFFQTtDQUNDLFVBQVU7QUFDWDs7QWpDdEJBOztBa0NBQTs7O0VBR0U7O0FoQkhGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFLRjs7RUFFRTs7QWdCUEY7Q0FDQyw4Q0FBOEM7Q0FDOUMsNENBQTRDO0FBQzdDOztBQUVBLHFFQUFxRTs7QUFDckU7Q2hCSkMsc0NBQThCOztDZ0JPOUIsZ0JBQWdCOztDQUVoQiw0Q0FBNEM7Q0FDNUMsOENBQThDO0NBQzlDLHNDQUFzQzs7Q0FFdEMsV0FBVztDQUNYLFlBQVk7QUFDYjs7QUFFQTtDQUNDLDJEQUEyRDtDQUMzRCx3REFBd0Q7QUFDekQ7O0FBRUE7Q0FDQyxxRUFBcUU7Q0FDckUsa0VBQWtFO0FBQ25FOztBQUNBO0NBQ0MscUVBQXFFO0NBQ3JFLGtFQUFrRTtBQUNuRTs7QUFFQSxtRkFBbUY7O0FBQ25GOzs7Q0FHQyw2Q0FBNkM7QUFDOUM7O0FsQzdDQTs7QW1DQUE7OztFQUdFOztBVkhGOzs7RUFHRTs7QUFFRjs7O0VBR0U7O0FBMkJGOztFQUVFOztBQU9GOzs7RUFHRTs7QVV4Q0Y7Q0FDQyw2QkFBNkI7QUFDOUI7O0FBRUE7Q0FDQyxxQkFBcUI7Q0FDckI7QUFxRkQ7O0FBbkZDO0VBQ0Msb0JBQW9CO0VBQ3BCLDRCQUE0QjtDQUM3Qjs7QUFQRDs7Q0FTQyx3RUFBd0U7QUE4RXpFOztBQTdFQztFQUNDLFVBQVc7O0VBRVg7K0JBQzZCO0NBSTlCOztBVlVBO0VBQ0MsYUFBYTtDQUNkOztBVVZBO0VBQ0M7b0VBQ2tFO0VBQ2xFLG1DQUFtQzs7RUFFbkMsYUFBYTtFQUNiLDBCQUEwQjtFQUMxQix1Q0FBdUM7O0VBRXZDO0NBeUREOztBQXZEQztHQUNDLHFCQUFxQjtFQUN0Qjs7QUFFQTs7Ozs7R0FLQyxZQUFZO0VBQ2I7O0FBRUE7Ozs7O0dBS0M7OztLQUdFO0dBQ0YsU0FBUztHQUNULFlBQVk7RUFDYjs7QUFFQTs7R0FFQyxTQUFTO0VBQ1Y7O0FBRUE7O0dBRUMsVUFBVTtFQUNYOztBQUVBOztHQUVDLDREQUE0RDtHQUM1RCxTQUFTO0dBQ1QsMkJBQTJCO0VBQzVCOztBQUVBOztHQUVDLGlFQUFpRTtHQUNqRSxTQUFTO0dBQ1QsMkJBQTJCO0VBQzVCOztBQUVBOztHQUVDLGlFQUFpRTtHQUNqRSxTQUFTO0dBQ1QsMkJBQTJCO0VBQzVCOztBQUlGOzs7RUFHRTs7QUFDRjtDQUNDLHNDQUFzQztBQUN2Qzs7QW5DMUdBOztBb0NBQTs7O0VBR0U7O0FuQkhGOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBV1RGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QVZQRjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBS0Y7O0VBRUU7O0FZZEY7OztFQUdFOztBTU9GO0NBQ0MseURBQXlEO0FBQzFEOztBQUVBO0NBQ0MsaUVBQWlFO0NBQ2pFO0FBMkVEOztBQXpFQztFQUNDLG9DQUFvQztDQUNyQzs7QUFHQztHQUNDLGlDQUFpQzs7R0FFakMseUNBQXlDO0dBQ3pDLHVDQUF1QztFQUN4Qzs7QUFJQTtHQUNDLGdDQUFnQzs7R0FFaEMseUNBQXlDO0dBQ3pDLHFDQUFxQztFQUN0Qzs7QUFHRDtFUi9CQSxtQ0FBbUM7Q1FpQ25DOztBQUlFO0lBQ0MsdUVBQXVFO0lBQ3ZFLHFDQUFxQztHQUN0Qzs7QUFJQTtJQUNDLHVFQUF1RTtJQUN2RSxzQ0FBc0M7R0FDdkM7O0FBWkY7O0VBZUMsUUFBUTtDQStCVDs7QUE5QkM7R0FDQyxVQUFVO0dBQ1YsZ0JBQWdCO0dBQ2hCLHVCQUF1QjtFQUN4Qjs7QUFwQkQ7O0VBc0JDLCtEQUErRDtDQXdCaEU7O0FBdkJDO0dSMURELG1DQUFtQztFUTREbEM7O0FBekJEOztFQTJCQyxxREFBcUQ7Q0FtQnREOztBQWxCQztHQUNDLDRCQUE0QjtHQUM1Qiw2QkFBNkI7RUFDOUI7O0FBRUE7R0FDQyxXQUFXO0VBQ1o7O0FBbkNEOztFQXFDQyxzREFBc0Q7Q0FTdkQ7O0FBUkM7O0dBRUM7RUFLRDs7QUFIQztJbEI3RUYsNkNBQThCO0drQitFNUI7O0FBS0g7Q25CbEZDO0FtQjhHRDs7QUE1QkE7RW5COUVFO0FtQjBHRjs7QUE1QkE7Q2xCcEZDLHNDQUE4Qjs7Q2tCd0Y5QixxREFBcUQ7Q0FDckQsdURBQXVEO0NBQ3ZELFNBQVM7O0NBRVQsdUVBQXVFO0NBQ3ZFLGNBQWU7O0NBRWY7bURBQ2tEO0FBZ0JuRDs7QUFmQztFQUNDLHlCQUF5QjtDQUMxQjs7QUFFQTtFQUNDLDBCQUEwQjtDQUMzQjs7QUFFQTtFQUNDLDRCQUE0QjtDQUM3Qjs7QUFFQTtFQUNDLDZCQUE2QjtDQUM5Qjs7QXBDeEhEOztBcUNBQTs7O0VBR0U7O0FiSEY7OztFQUdFOztBQUVGOztFQUVFOztBYUFGO0NiRUMsc0JBQXNCO0NBQ3RCLHlCQUF5QjtDQUN6QixxQkFBcUI7Q0FDckIsaUJBQWdCOztDYUZoQixhQUFhO0NBQ2I7QUFjRDs7QUFaQzs7RUFFQyxjQUFjO0NBQ2Y7O0FBVEQ7O0NBV0M7O3VCQUVzQjtBQUt2Qjs7QUFKQztFQUNDLGtCQUFrQjtFQUNsQiw0QkFBNEI7Q0FDN0I7O0FyQ3hCRDs7QXNDQUE7OztFQUdFOztBVkhGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QVhQRjs7O0VBR0U7O0FBRUY7Ozs7RUFJRTs7QUNURjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBS0Y7O0VBRUU7O0FvQkxGO0NyQkVDLGdCQUFnQjtBcUJHakI7O0FBTEE7RXJCTUUsc0NBQXNDO0FxQkR4Qzs7QUFMQTs7Q0FHQyxxQkFBcUI7Q0FDckIsMkNBQTJDO0FBQzVDOztBQUVBO0NBQ0MsZUFBZTtDQUNmO0FBMkREOztBQXpEQztFQUNDLGlCQUFpQjtFQUNqQixXQUFXO0VBQ1gsZ0JBQWdCO0VBQ2hCLGdCQUFnQjs7RUFFaEI7OzhEQUU0RDtFQUM1RDs7O0NBaUNEOztBQTdCQztHQUNDLDREQUE0RDtHQUM1RCw4RUFBOEU7RUFDL0U7O0FBRUE7R0FDQyxnQkFBZ0I7RUFDakI7O0FBRUE7R0FDQyxxREFBcUQ7R0FDckQ7RUFhRDs7QUFYQztJQUNDLGdCQUFnQjtHQUNqQjs7QUFFQTtJQUNDLDJEQUEyRDtHQUM1RDs7QUFFQTtJQUNDLDZDQUE2QztHQUM5Qzs7QUFHRDtHQUNDLHdEQUF3RDtFQUN6RDs7QUE3Q0Y7O0NBZ0RDOzZDQUM0QztBQVk3Qzs7QUFWRTtHQUNDLDJDQUEyQztHQUMzQztFQU1EOztBQUpDO0lBQ0Msd0RBQXdEO0lBQ3hELGNBQWM7R0FDZjs7QUFLSDtDQUNDLFdBQVc7Q0FDWCxXQUFXO0NBQ1gsdUNBQXVDO0FBQ3hDOztBdENuRkE7O0F1Q0FBOzs7RUFHRTs7QUFHRDtFQUNDO0NBS0Q7O0FBSEM7R0FDQyxjQUFjO0VBQ2Y7O0F2Q1hGOztBd0NBQTs7O0VBR0U7O0F2QkhGOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBV1RGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUVQRjs7O0VBR0U7O0FVTUY7OzREQUU0RDs7QUFDNUQ7Q0FDQywyQkFBMkI7Q0FDM0IsK0NBQStDO0NBQy9DLDJCQUEyQjtDQUMzQixvREFBb0Q7Q0FDcEQsc0NBQXNDO0NBQ3RDOzs7O0VBSUM7QUFDRjs7QUFHQztHQUVFLHVDQUF1QztHQUN2QztDQU9GOztBQVZBO0dBT0UsdUNBQXVDO0dBQ3ZDO0NBRUY7O0FBRUE7RXZCM0JBO0N1Qm9FQTs7QUF6Q0E7RXZCdkJDO0N1QmdFRDs7QUF6Q0E7R0FJRSxvRUFBb0U7R0FDcEU7Q0FvQ0Y7O0FBekNBO0dBU0UsbUVBQW1FO0dBQ25FO0NBK0JGOztBQXpDQTs7RUFhQyw2REFBNkQ7RUFDN0QsaUNBQWlDOztFQUVqQywyQ0FBMkM7RUFDM0M7Q0F3QkQ7O0FBdEJDO0d2QjlDRCxnQkFBZ0I7RXVCMkRmOztBQWJBO0V2QjFDQSxzQ0FBc0M7SXVCNENwQyxpREFBaUQ7RUFXbkQ7O0FBYkE7O0dBS0MscUVBQXFFO0dBQ3JFLDhDQUE4QztHQUM5QyxnREFBZ0Q7R0FDaEQsaURBQWlEO0dBQ2pELDBEQUEwRDs7R0FFMUQsdURBQXVEO0dBQ3ZELDBCQUEwQjtFQUMzQjs7QUFFQTtHQUNDO0VBS0Q7O0FBSEM7SUFDQyxnRUFBZ0U7R0FDakU7O0FBSUY7RVp4RUEsbUNBQW1DO0NZMEVuQzs7QUFFQTtFQUNDO0NBa0JEOztBQWhCQztHQUNDLDZEQUE2RDtFQUM5RDs7QUFFQTtHQUNDOztLQUVFO0VBUUg7O0FBWEE7SUFLRTtFQU1GOztBQVhBO0lBU0U7RUFFRjs7QXhDdkdGOztBeUNBQTs7O0VBR0U7O0FBRUY7Q0FDQyxxQ0FBcUM7QUFDdEM7O0FBRUE7Q0FDQyxzREFBc0Q7Q0FDdEQsa0JBQWtCO0NBQ2xCO0FBT0Q7O0FBSkU7R0FDQyxzQ0FBc0M7RUFDdkM7O0F6Q2pCRjs7QTBDQUE7OztFQUdFOztBQUVGO0NBQ0MsU0FBUztBQUNWOztBMUNQQTs7QTJDQUE7OztFQUdFOztBQUVGOzs7O0VBSUU7O0EzQ1RGOztBNENBQTs7O0VBR0U7O0EzQkhGOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBMkJGRjtDQUNDO21EQUNrRDtDM0JFbEQ7QTJCcUJEOztBQXpCQTtFM0JRRSxzQ0FBc0M7RTJCSnRDO0FBcUJGOztBQXpCQTs7Q0FPQztxQ0FDb0M7QUFpQnJDOztBQWZFO0czQk5EO0UyQllDOztBQU5BO0UzQkZBLHNDQUFzQztJMkJJcEMseUJBQXlCO0lBQ3pCLDRCQUE0QjtJQUM1QjtFQUVGOztBQUVBO0czQmREO0UyQm1CQzs7QUFMQTtFM0JWQSxzQ0FBc0M7STJCWXBDLHlCQUF5QjtJQUN6QjtFQUVGOztBNUM5QkY7O0E2Q0FBOzs7RUFHRTs7QXJCSEY7OztFQUdFOztBQUVGOztFQUVFOztBcUJBRjtDckJFQyxzQkFBc0I7Q0FDdEIseUJBQXlCO0NBQ3pCLHFCQUFxQjtDQUNyQixpQkFBZ0I7O0NxQkZoQixhQUFhO0NBQ2IscUJBQXFCO0NBQ3JCO0FBNkNEOztBQTNDQztFQUNDLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLFlBQVk7O0NBRWI7O0FBRUE7RUFDQyxvQkFBcUI7O0VBRXJCOzs7O0lBSUU7Q0FLSDs7QUFKQzs7R0FFQyxhQUFhO0VBQ2Q7O0FBR0Q7RUFDQyxnQkFBZ0I7Q0FDakI7O0FBRUE7RUFDQyxpQkFBaUI7Q0FDbEI7O0FBRUE7RUFDQyxzQkFBc0I7Q0FDdkI7O0FBRUE7RUFDQyxpQkFBaUI7Q0FDbEI7O0FBR0M7R0FDQyxhQUFhO0VBQ2Q7O0E3Q3ZERjs7QThDQUE7OztFQUdFOztBN0JIRjs7O0VBR0U7O0FBRUY7Ozs7RUFJRTs7QWFURjs7O0VBR0U7O0FnQktGO0M3QkdDO0E2QjBGRDs7QUE3RkE7RTdCT0U7QTZCc0ZGOztBQTdGQTs7Q0FHQyw4Q0FBOEM7Q0FDOUMsa0NBQWtDO0NBQ2xDO0FBd0ZEOztBQXRGQztFQUNDLG1CQUFtQjtFQUNuQixVQUFVO0VBQ1YsY0FBYztFQUNkLDBDQUEwQzs7RUFFMUM7OztJQUdFO0VBQ0YsbUNBQW1DO0VBQ25DLHNDQUFzQztDQUN2Qzs7QUFFQTtFQUNDLFNBQVM7Q0FDVjs7QUFHQztHQUNDLGtDQUFrQztHQUNsQyxxQ0FBcUM7RUFDdEM7O0FBSkQ7O0VBTUM7K0JBQzZCO0NBSTlCOztBQUhDO0dBQ0MsYUFBYTtFQUNkOztBQUdEOztFQUVDLDREQUE0RDtFQUM1RCxtQ0FBbUM7RUFDbkMsc0NBQXNDO0NBQ3ZDOztBQUVBO0VBQ0MsdURBQXVEO0VBQ3ZELFNBQVU7O0VBRVYsK0ZBQStGO0NBY2hHOztBQWJDO0dBQ0Msa0VBQWtFO0dBQ2xFLFdBQVc7O0dBRVgsdURBQXVEO0dBQ3ZELFNBQVM7O0dBRVQsd0ZBQXdGO0dBQ3hGLGdCQUFnQjs7R0FFaEIsa0ZBQWtGO0dBQ2xGLFNBQVM7RUFDVjs7QUFHRDtFQUNDLDZCQUE2QjtFQUM3QjtDQVdEOztBQVRDO0dBQ0Msd0RBQXdEO0dBQ3hELFFBQVM7O0dBRVQsc0RBQXNEO0VBSXZEOztBQUhDO0lBQ0MsZ0JBQWdCO0dBQ2pCOztBQUlGO0VBQ0M7OztJQUdFO0NBSUg7O0FBSEM7R0FDQyxvQ0FBb0M7RUFDckM7O0FBdkZGO0VBMkZFO0FBRUY7O0FBRUEsc0JBQXNCOztBQUV0Qjs7Ozs7RUFLRTs7QUFHRDtFQUNDLGVBQWU7Q0FDaEI7O0FBRUE7RUFDQyxrQ0FBa0M7RUFDbEMsb0NBQW9DO0NBQ3JDOztBQUVBO0VBQ0MsY0FBYztDQUNmOztBQUVBO0VBQ0MsNkRBQTZEO0NBVzlEOztBQVZDO0dBQ0MseUJBQXlCO0dBQ3pCLDRCQUE0QjtFQUM3Qjs7QUFMRDs7RUFPQywyREFBMkQ7Q0FLNUQ7O0FBSkM7R0FDQywwQkFBMEI7R0FDMUIsNkJBQTZCO0VBQzlCOztBQTFCRjs7O0NBNkJDLHVGQUF1RjtBQVN4Rjs7QUFSQztFQUNDLG9DQUFvQztDQUNyQzs7QUFoQ0Q7OztDQWtDQyx3RkFBd0Y7QUFJekY7O0FBSEM7RUFDQyxvQ0FBb0M7Q0FDckM7O0FBR0Q7Ozs7O0VBS0U7O0FBR0Q7RUFDQyxlQUFlO0NBQ2hCOztBQUVBO0VBQ0MsNkRBQTZEO0NBVzlEOztBQVZDO0dBQ0MsMEJBQTBCO0dBQzFCLDZCQUE2QjtFQUM5Qjs7QUFMRDs7RUFPQywyREFBMkQ7Q0FLNUQ7O0FBSkM7R0FDQyx5QkFBeUI7R0FDekIsNEJBQTRCO0VBQzdCOztBQWpCRjs7O0NBb0JDLHVGQUF1RjtBQVN4Rjs7QUFSQztFQUNDLHFDQUFxQztDQUN0Qzs7QUF2QkQ7OztDQXlCQyx3RkFBd0Y7QUFJekY7O0FBSEM7RUFDQyxxQ0FBcUM7Q0FDdEM7O0FBR0QscUJBQXFCOztBOUM1THJCOztBK0NBQTs7O0VBR0U7O0FBRUYsZ0NBQWdDOztBQUcvQjtFQUNDLCtCQUErQjs7RUFFL0IsZ0NBQWdDO0VBQ2hDLG9CQUFvQjtDQUNyQjs7QUFHRCxpQ0FBaUM7O0FBRWhDO0VBQ0MsYUFBYTtDQUNkOztBL0NwQkQ7O0FnREFBOzs7RUFHRTs7QUFFRixnQ0FBZ0M7O0FBRS9CO0VBQ0MsWUFBWTtFQUNaLDhDQUE4QztDQUMvQzs7QWhEVkQ7O0FpREFBOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBakRURjs7QWtEQUE7OztFQUdFOztBakNIRjs7O0VBR0U7O0FBRUY7Ozs7RUFJRTs7QVdURjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FWUEY7OztFQUdFOztBQUVGOztFQUVFOztBQUtGOztFQUVFOztBU2RGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUVQRjs7O0VBR0U7O0FBRUY7Ozs7O0VBS0U7O0FxQkNGO0NBQ0MsbURBQW1EO0FBQ3BEOztBQUVBO0NqQ0pDO0FpQ1dEOztBQVBBO0VqQ0FFO0FpQ09GOztBQUpDO0V2QlRBLDRCQUE0QjtFQUM1QixhQUFhO0VBQ2IsNEJBQTJCO0VURjNCLHVDQUE4QjtDZ0NZOUI7O0FBR0Q7Q0FDQyxjQUFjO0NBQ2QscUNBQXFDO0NBQ3JDO0FBd0JEOztBQXRCQztFQUNDLGdCQUFnQjtDQUNqQjs7QUFFQTtFQUNDLGlCQUFpQjtDQUNsQjs7QUFYRDs7Q0FhQyxnRUFBZ0U7QUFjakU7O0FBYkM7RUFDQyxtQ0FBbUM7Q0FDcEM7O0FBaEJEOztDQWtCQyxxREFBcUQ7QUFTdEQ7O0FBUkM7RUFDQyxzQ0FBc0M7Q0FDdkM7O0FBckJEOztDQXVCQyxzREFBc0Q7QUFJdkQ7O0FBSEM7RUFDQyxtREFBbUQ7Q0FDcEQ7O0FBR0QsZ0VBQWdFOztBQUUvRDtFQUNDLG9EQUFvRDtDQUNyRDs7QUFJQTtFQUNDLGlEQUFpRDtDQUNsRDs7QWxEL0REOztBbURBQTs7O0VBR0U7O0FBRUY7Q0FDQyxZQUFZO0NBQ1osZ0JBQWdCOztDQUVoQixnRUFBZ0U7Q0FDaEUsb0JBQW9CO0NBQ3BCLG1CQUFtQjs7Q0FFbkIsY0FBYztDQUNkLGVBQWU7Q0FDZixrQkFBa0I7Q0FDbEIsc0NBQXNDO0FBQ3ZDOztBQUVBO0NBQ0MsY0FBYztDQUNkLHVDQUF1QztBQUN4Qzs7QW5EdEJBOztBb0RBQTs7O0VBR0U7O0FBRUY7Q0FDQzs7R0FFRTtBQW1GSDs7QUFsRkM7RUFDQyxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGdCQUFnQjtFQUNoQjtDQXdCRDs7QUF0QkM7R0FDQyxrQkFBa0I7R0FDbEIsUUFBUTtHQUNSLFNBQVM7R0FDVCxzQ0FBc0M7RUFDdkM7O0FBRUE7R0FDQywwQ0FBMEM7R0FDMUMsb0RBQW9EO0dBQ3BELG9CQUFvQjs7R0FFcEIsMkJBQTJCO0VBQzVCOztBQUVBO0dBQ0MsMENBQTBDO0dBQzFDLHVEQUF1RDtHQUN2RCxxQkFBcUI7O0dBRXJCLDBCQUEwQjtFQUMzQjs7QUEvQkY7O0NBa0NDOzs7O0dBSUU7QUFnREg7O0FBN0NFO0dBQ0MsV0FBVztHQUNYLGNBQWM7R0FDZCxrQkFBa0I7R0FDbEIsUUFBUTtHQUNSLFNBQVM7R0FDVCxzQ0FBc0M7RUFDdkM7O0FBaERGOztDQW1EQzs7R0FFRTtBQWlDSDs7QUFoQ0M7RUFDQyxhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLE9BQU87RUFDUCxRQUFRO0NBQ1Q7O0FBM0REOztDQTZEQzs7OztHQUlFO0FBcUJIOztBQXBCQztFQUNDLHFEQUFxRDtFQUNyRCxzREFBc0Q7Q0FDdkQ7O0FBckVEOztDQXVFQzs7R0FFRTtBQWFIOztBQVpDO0VBQ0MsMERBQTBEO0VBQzFELGNBQWM7Q0FDZjs7QUE3RUQ7O0NBK0VDOztHQUVFO0FBS0g7O0FBSkM7RUFDQyw2REFBNkQ7RUFDN0QsY0FBYztDQUNmOztBQUdEOztFQUVFOztBQUNGO0NBQ0MsYUFBYTtBQUNkOztBQUVBOztFQUVFOztBQUNGO0NBQ0MsYUFBYTtBQUNkOztBQUVBOztFQUVFOztBQUNGO0NBQ0MsYUFBYTtBQUNkOztBcERoSEE7O0FxREFBOzs7RUFHRTs7QUFFRjtDQUNDLHlDQUF5QztDQUN6Qyx5RUFBeUU7Q0FDekUsK0VBQStFO0NBQy9FLDRGQUE0RjtDQUM1Rix5REFBeUQ7Q0FDekQsd0RBQXdEO0NBQ3hELDBFQUEwRTtBQUMzRTs7QUFZQTtDQUNDOztHQUVFO0FBcUtIOztBQXBLQztFQUNDLCtDQUErQztFQUMvQyxnREFBZ0Q7RUFDaEQscURBQXFEO0VBQ3JELG9CQUFvQjtFQUNwQix5TUFBeU07O0VBYjFNLFVBQVU7O0VBQ1Y7Q0EwREE7O0FBMUNDO0dBQ0MsV0FBVztHQUNYLFdBQVc7R0FDWCwrQkFBK0I7R0FDL0IsOEJBQThCO0dBQzlCO0VBZ0JEOztBQWRDO0lBQ0Msb0JBQW9CO0lBQ3BCLG9CQUFvQjs7SUFFcEIsVUFBVTtJQUNWLHNEQUFzRDtJQUN0RCxtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLHNCQUFzQjtHQUN2Qjs7QUFFQTtJQUNDLG1CQUFtQjtHQUNwQjs7QUFHRDtHQUNDOztLQUVFO0dBQ0YsNkRBQThEOztHQUU5RDs7S0FFRTtFQVVIOztBQVJFO0tBQ0MscURBQXFEO0lBQ3REOztBQUVBO0tBQ0MseURBQXlEO0lBQzFEOztBQXBESjs7Q0F5REM7O0dBRUU7QUE2R0g7O0FBMUdFO0dBdkVELFVBQVU7R0FDVixvQkFBb0I7RUF3RW5COztBQWhFRjs7Q0FtRUM7OztHQUdFO0FBa0dIOztBQWpHQztFQUNDLDJEQUEyRDtDQUM1RDs7QUF6RUQ7O0NBMkVDOzs7O0dBSUU7QUF5Rkg7O0FBeEZDOztFQUVDO0NBUUQ7O0FBTkM7R0FDQywyREFBMkQ7R0FDM0QsNERBQTREO0dBQzVELG9CQUFvQjtHQUNwQixrRkFBa0Y7RUFDbkY7O0FBekZGOztDQTRGQzs7O0dBR0U7QUF5RUg7O0FBeEVDO0VBQ0MsaUJBQWlCO0NBQ2xCOztBQWxHRDs7Q0FvR0M7O0dBRUU7QUFrRUg7O0FBakVDO0VBQ0Msb0JBQW9CO0VBQ3BCLFdBQVc7RUFDWCxvRkFBb0Y7O0VBRXBGOzs7SUFHRTtFQUNGLHdDQUF3QztFQUN4QyxxQ0FBcUM7Q0FDdEM7O0FBbEhEOztDQW9IQzs7O0dBR0U7QUFpREg7O0FBL0NFOztHQUVDLDBCQUEwQjtFQUMzQjs7QUFHRDs7RUFFQzs7OztJQUlFO0NBa0NIOztBQWpDQztHQUNDLGtEQUFrRDtFQUNuRDs7QUFURDs7O0VBV0M7OztJQUdFO0NBMEJIOztBQXpCQztHQWxKRCxVQUFVO0dBQ1Ysb0JBQW9CO0VBbUpuQjs7QUFqQkQ7OztFQW1CQzs7O0lBR0U7Q0FrQkg7O0FBZEc7S0FDQztJQUNEOztBQTVCSDs7O0VBZ0NDOzs7O0lBSUU7Q0FJSDs7QUFIQztHQUNDO0VBQ0Q7O0FBSUY7Ozs7RUFJRTs7QUFDRjtDQUNDLGNBQWM7Q0FDZCxrQkFBa0I7QUFDbkI7O0FBRUE7Ozs7O0VBS0U7O0FBS0M7SUFsTUYsVUFBVTtJQUNWLG9CQUFvQjtHQW1NbEI7O0FBS0g7O0VBRUU7O0FBQ0Y7Q0FDQztBQUtEOztBQUhDO0VBQ0MscUJBQXFCO0NBQ3RCOztBQUdEO0NBQ0M7RUFDQyxxQkFBcUI7Q0FDdEI7Q0FDQTtFQUNDLG9CQUFvQjtDQUNyQjtBQUNEOztBQUVBO0NBQ0M7RUFDQyxvQkFBb0I7Q0FDckI7Q0FDQTtFQUNDLG9CQUFvQjtDQUNyQjtBQUNEOztBQUVBO0NBQ0M7RUFDQywrSEFBK0g7Q0FDaEk7Q0FDQTtFQUNDLCtIQUErSDtDQUNoSTtDQUNBO0VBQ0MsaUlBQWlJO0NBQ2xJO0FBQ0Q7O0FBRUE7Q0FDQztFQUNDLFVBQVU7Q0FDWDtDQUNBO0VBQ0MsVUFBVTtDQUNYO0NBQ0E7RUFDQyxVQUFVO0NBQ1g7Q0FDQTtFQUNDLFVBQVU7Q0FDWDtDQUNBO0VBQ0MsVUFBVTtDQUNYO0FBQ0Q7O0FyRHZSQTs7QXNEQUE7OztFQUdFOztBQUVGO0NBQ0MsZ0RBQWdEO0NBQ2hELHNEQUFzRDtDQUN0RCxnREFBZ0Q7O0NBRWhELG1EQUFtRDtDQUNuRCxpQ0FBaUM7QUFDbEM7O0FBRUE7Q0FDQyxxRUFBcUU7Q0FDckUsa0JBQWtCO0FBQ25COztBQUVBO0NBQ0Msa0ZBQWtGO0NBQ2xGO0FBdUJEOztBQXJCQztFQUNDO0NBT0Q7O0FBTEM7R0FDQzttQ0FDZ0M7R0FDaEMsY0FBYztFQUNmOztBQVhGOztDQWNDLDhEQUE4RDtBQVcvRDs7QUFURTtHQUNDLG1CQUFtQjtFQUNwQjs7QUFsQkY7O0NBcUJDLDJEQUEyRDtBQUk1RDs7QUFIQztFQUNDLG1CQUFtQjtDQUNwQjs7QUFHRDtDQUNDLHNEQUFzRDtDQUN0RCwyQ0FBMkM7Q0FDM0Msc0RBQXNEO0NBQ3RELDhDQUE4QztDQUM5QyxtQ0FBbUM7Q0FDbkMsY0FBYztDQUNkO0FBNEJEOztBQTFCQzs7OztFQUlDLGtCQUFrQjtDQUNuQjs7QUFFQTtFQUNDLHFDQUFxQztFQUNyQyxzQ0FBc0M7Q0FDdkM7O0FBRUE7RUFDQyxxQ0FBcUM7RUFDckMsdUNBQXVDO0NBQ3hDOztBQUVBO0VBQ0Msd0NBQXdDO0VBQ3hDLHVDQUF1QztDQUN4Qzs7QUFFQTtFQUNDLHdDQUF3QztFQUN4QyxzQ0FBc0M7Q0FDdkM7O0F0RGhGRDs7QXVEQUE7OztFQUdFOztBQ0hGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUNQRjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBS0Y7O0VBRUU7O0FGTkY7Q0FDQyxrQ0FBa0M7Q0FDbEMsbUNBQW1DO0NBQ25DLDZDQUE2QztDQUM3Qyx5Q0FBeUM7O0NBRXpDLGlEQUFpRDtDQUNqRCxrREFBa0Q7Q0FDbEQsNEVBQTRFO0NBQzVFLDBFQUEwRTtBQUMzRTs7QUFFQTtDQUNDLGlEQUFpRDtDQUNqRCxvQkFBb0I7Q0FDcEIsMEJBQTBCO0NBQzFCO0FBVUQ7O0FBUkM7O0VBRUMsOEVBQThFO0NBQy9FOztBQUVBO0VBQ0Msa0RBQWtEO0NBQ25EOztBQUdEO0NBQ0MsNEJBQTZCOztDQUU3Qjs0R0FDMkc7QUFRNUc7O0FBUEM7O0VDaENBLDRCQUE0QjtFQUM1QixhQUFhO0VBQ2IsNEJBQTJCO0VDRjNCLHVDQUE4Qjs7RUZxQzdCLGtFQUFrRTtDQUNuRTs7QUFJQTtFQUNDLFlBQVk7RUFDWixzQkFBc0I7O0VBRXRCLGlHQUFpRztFQUNqRyw2QkFBNkI7RUFDN0IsVUFBVTs7RUFFVjs7OzZFQUcyRTtFQUMzRTs7OytGQUc2Rjs7RUFFN0YsaUNBQWlDO0VBQ2pDLGtFQUFrRTs7RUFFbEUsdURBQXVEO0VBQ3ZELDRCQUE0QjtFQUM1QjtDQXFCRDs7QUFuQkM7R0FDQyx5RkFBeUY7R0FDekYseUNBQXlDO0dBQ3pDLDBDQUEwQztHQUMxQyxvREFBcUQ7O0dBRXJELDREQUE0RDtFQU83RDs7QUFOQztJQUNDLFVBQVU7O0lBRVYsbUVBQW1FO0lBQ25FLGtFQUFrRTtHQUNuRTs7QUFwQ0Y7O0VBdUNDLHFHQUFxRztDQUl0Rzs7QUFIQztHQUNDLFVBQVU7RUFDWDs7QUEzQ0Y7O0NBOENDLCtEQUErRDtBQW1CaEU7O0FBbEJDO0VBQ0MsVUFBVTtFQUNWLHFEQUFxRDtDQUN0RDs7QUFsREQ7O0NBb0RDLDREQUE0RDtBQWE3RDs7QUFWRTtHQUNDLFVBQVU7R0FDViw2Q0FBOEM7O0dBRTlDLG9GQUFvRjtFQUlyRjs7QUFIQztJQUNDLFVBQVU7R0FDWDs7QUFLSCxzRkFBc0Y7O0FBQ3RGLDBEQUEwRDs7QUFDMUQ7Q0FDQyxVQUFVO0NBQ1YscURBQXFEO0FBQ3REOztBQUVBLHNEQUFzRDs7QUFDdEQ7Q0FDQyw2RkFBNkY7Q0FDN0Y7QUFrQkQ7O0FBaEJDO0VBQ0M7Ozs7O0lBS0U7RUFDRixrQ0FBa0M7Q0FDbkM7O0FBR0M7O0dBRUMsaURBQWlEO0VBQ2xEOztBQUlGLG1GQUFtRjs7QUFDbkYsMERBQTBEOztBQUV6RDs7RUFFQztDQVFEOztBQUxFOzs7O0lBRUMsaURBQWlEO0dBQ2xEOztBQUtIOztDQUVDOzs7O3lEQUl3RDtDQUN4RCwwREFBMEQ7QUFDM0Q7O0F2RDNLQTs7QTBEQUE7OztFQUdFOztBQUVGO0NBQ0MsY0FBYztBQUNmOztBQUVBO0NBQ0MsYUFBYTtBQUNkOztBMURYQTs7QTJEQUE7OztFQUdFOztBQUVGO0NBQ0MsaUJBQWlCO0FBQ2xCOztBM0RQQTs7QTREQUE7OztFQUdFOztBQUdEO0VBQ0MsYUFBYTtFQUNiLGtCQUFrQjtDQUNuQjs7QUFFQTtFQUNDLGNBQWM7RUFDZCxrQkFBa0I7Q0FDbkI7O0E1RGREOztBNkRBQTs7O0VBR0U7O0EvQkhGOzs7RUFHRTs7QWJIRjs7O0VBR0U7O0FBRUY7Ozs7RUFJRTs7QTRDREY7Q0FDQyxzRUFBc0U7Q0FDdEUsaUZBQWlGO0NBQ2pGLDBFQUEwRTtBQUMzRTs7QUFFQTtDNUNIQztBNEM0R0Q7O0FBekdBO0U1Q0NFO0E0Q3dHRjs7QUF0R0M7RUFDQztDQW1DRDs7QUFqQ0M7R0FDQyxRQUFRO0VBK0JUOztBQWhDQTtJQUlFLFNBQVM7RUE0Qlg7O0FBaENBO0lBUUUsVUFBVTtFQXdCWjs7QUFoQ0E7O0dBV0Msb0JBQW9CO0dBQ3BCLHFCQUFxQjs7R0FFckIsK0RBQStEO0dBQy9ELCtEQUErRDs7R0FFL0QsMERBQTBEO0dBQzFELDhDQUE4QztHQUM5QyxvQkFBb0I7R0FDcEIsbUJBQW1COztHQUVuQiw2REFBNkQ7R0FDN0QsdUJBQXVCO0dBQ3ZCLGdCQUFnQjs7R0FFaEIsZUFBZTs7R0FFZjs7O3NEQUdtRDtFQUNwRDs7QUFJQTtHQUNDLGlDQUFpQztFQUNsQzs7QUFFQTtHQUNDLGlDQUFpQztFQUNsQzs7QUFHRDtFQUNDLG9DQUFvQztFQUNwQyxtQ0FBbUM7O0VBRW5DO2tDQUNnQztFQUNoQztDQUtEOztBQUhDO0dBQ0MsaUNBQWlDO0VBQ2xDOztBQTdERjs7Q0FnRUMsbUVBQW1FO0FBeUNwRTs7QUF4Q0M7O0VBRUMsMENBQTBDO0NBQzNDOztBQXBFRDs7Q0FzRUMscUdBQXFHO0NBQ3JHLDBEQUEwRDtBQWtDM0Q7O0FBakNDOztHQUdFLDZGQUE2RjtDQVkvRjs7QUFmQTs7R0FPRSx3R0FBd0c7Q0FRMUc7O0FBZkE7OztFQVVDLG1EQUFtRDtFQUNuRCxrRUFBa0U7O0VBRWxFLHVCQUF1QjtFQUN2QixVQUFVO0NBQ1g7O0FBdkZEOztDQXlGQyx1SEFBdUg7O0NBRXZILHlHQUF5RztBQWMxRzs7QUFiQztFQUNDLHVCQUF1QjtDQUN4Qjs7QUE5RkQ7O0NBZ0dDLDhFQUE4RTtBQVMvRTs7QUFSQztFQUNDLFVBQVU7Q0FDWDs7QUFuR0Q7O0NBcUdDLHlGQUF5RjtBQUkxRjs7QUFIQztFQUNDLCtIQUErSDtDQUNoSTs7QTdEdEhEOztBOERBQTs7O0VBR0U7O0FBRUY7Ozs7RUFJRTs7QTlEVEY7O0ErREFBOzs7RUFHRTs7QTlDSEY7OztFQUdFOztBQUVGOzs7O0VBSUU7O0FVVEY7OztFQUdFOztBQUVGOztFQUVFOztBVFBGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUFLRjs7RUFFRTs7QTZDTEY7Q0FDQywyQkFBMkI7QUFDNUI7O0FBRUE7QzlDRkM7QThDd0NEOztBQXRDQTtFOUNFRTtBOENvQ0Y7O0FBdENBOztDQUdDLDRDQUE0QztDQUM1Qyw4Q0FBOEM7Q0FDOUMsOERBQThEO0NBQzlELHFDQUFxQzs7Q0FFckMsd0VBQXdFO0NBQ3hFLDZDQUE2Qzs7Q0FFN0MsK0RBQStEO0NBQy9EO0FBMEJEOztBQXhCQztFcENsQkEsNEJBQTRCO0VBQzVCLGFBQWE7RUFDYiw0QkFBMkI7RVRGM0IsNkNBQThCO0M2Q3FCOUI7O0FBRUE7RUFDQyx1REFBdUQ7RUFDdkQscURBQXFEO0VBQ3JEO0NBTUQ7O0FBSkM7R0FDQyxpRkFBaUY7RzdDN0JuRixzREFBOEI7RTZDK0I3Qjs7QUFHRDtFQUNDLGdEQUFnRDtFQUNoRDtDQUtEOztBQUhDO0c3Q3RDRCxtREFBOEI7RTZDd0M3Qjs7QUFJRjtDQUNDO0VBQ0MsMkJBQTJCO0NBQzVCOztDQUVBO0VBQ0MsMEJBQTBCO0NBQzNCOztDQUVBO0VBQ0MsMkJBQTJCO0NBQzVCOztDQUVBO0VBQ0MsMEJBQTBCO0NBQzNCO0FBQ0Q7O0EvRHJFQTs7QWdFQUE7OztFQUdFOztBQ0hGOzs7RUFHRTs7QURJRjtDQUNDLGFBQWE7Q0FDYixtQkFBbUI7Q0FDbkI7QUFxQkQ7O0FBbkJDO0VBQ0MscUJBQXFCO0NBQ3RCOztBQUVBO0VBQ0MsYUFBYTtDQUNkOztBQ1pBOztBRENEO0VBY0U7QUFVRjs7RUFSRTtHQUNDLGdCQUFnQjtFQUNqQjs7RUFFQTtHQUNDLGVBQWU7RUFDaEI7Q0NyQkQ7O0FqRVJEOztBa0VBQTs7O0VBR0U7O0FDSEY7OztFQUdFOztBRElGO0NBQ0MsV0FBVztDQUNYLFFBQVE7Q0FDUixrQkFBa0I7Q0FDbEIsV0FBVztDQUNYLDRCQUE0QjtDQUM1QiwrQkFBK0I7Q0FDL0IsVUFBVTtBQUNYOztBQ1RDO0VEYUM7R0FDQyxXQUFXO0dBQ1gsUUFBUTtHQUNSLGtCQUFrQjtHQUNsQixXQUFXO0dBQ1gsNEJBQTRCO0dBQzVCLCtCQUErQjtHQUMvQixVQUFVO0VBQ1g7Q0NuQkQ7O0FuRVJEOztBb0VBQTs7O0VBR0U7O0FESEY7OztFQUdFOztBckNIRjs7O0VBR0U7O0FzQ0tGO0NBQ0MsbURBQW1EO0FBQ3BEOztBQUVBO0NBQ0M7QUFrRUQ7O0FBaEVDO0VBQ0MsMkRBQTJEO0VBQzNELGFBQWE7Q0FDZDs7QUFHQztHQUNDLHVDQUF1QztFQUN4Qzs7QUFJQTtHQUNDLHVDQUF1QztFQUN4Qzs7QUR2QkQ7O0FDTUQ7RUFxQkUsVUFBVTtFQUNWO0FBNkNGOztFQTNDRTtHQUNDO0VBV0Q7O0dBVEM7SUFDQyxZQUFZO0lBQ1osV0FBVztHQUNaOztFQU5EOztHQVFDLHlEQUF5RDtFQUkxRDtHQUhDO0lBQ0MsbUJBQW1CO0dBQ3BCOztBQW5DSDs7RUFzQ0UsOEVBQThFO0FBNkJoRjtFQTVCRTs7R0FFQyxtQ0FBbUM7R0FDbkMsbUNBQW1DOztHQUVuQyxnQkFBZ0I7R0FDaEIsU0FBUztHQUNUO0VBYUQ7RUFwQkE7O0lBVUU7RUFVRjtFQXBCQTs7SUFjRTtFQU1GOztJQUpFO0tBQ0MsbURBQW1EO0lBQ3BEO0dBS0Q7SUFDQyxtREFBbUQ7R0FDcEQ7Q0RwRUY7O0FuRVJEOztBcUVBQTs7O0VBR0U7O0FBRUY7Q0FDQyxjQUFjO0NBQ2QsV0FBVztDQUNYLGtCQUFrQjs7Q0FFbEIsOEZBQThGO0NBQzlGO0FBZUQ7O0FBYkM7RUFDQyxpRUFBaUU7RUFDakUsY0FBYzs7RUFFZCx1RUFBdUU7RUFDdkUsY0FBYzs7RUFFZCxtR0FBbUc7RUFDbkcsZUFBZTs7RUFFZiwrR0FBK0c7RUFDL0csZUFBZTtDQUNoQjs7QXJFekJEOztBc0VBQTs7O0VBR0U7O0FBRUY7Q0FDQyxrQkFBa0I7QUFDbkI7O0FBRUEseUJBQXlCOztBQUN6QjtDQUNDLGtCQUFrQjtDQUNsQixNQUFNO0NBQ04sT0FBTztBQUNSOztBdEVkQTs7QXVFQUE7OztFQUdFOztBQUVGO0NBQ0MsdUJBQXVCO0FBSXhCOztBQUhDO0VBQ0MsdUJBQXVCO0NBQ3hCOztBQUdELHlCQUF5Qjs7QUFDekI7Q0FDQyxXQUFXO0NBQ1gsUUFBUTtDQUNSLGlEQUFpRDtDQUNqRCx1QkFBdUI7QUFDeEI7O0FBRUE7Q0FDQyxPQUFPLFVBQVUsRUFBRTtDQUNuQixPQUFPLFVBQVUsRUFBRTtBQUNwQjs7QXZFdkJBOztBd0VBQTs7O0VBR0U7O0FBRUY7Q0FDQyxjQUFjO0NBQ2Qsa0JBQWtCO0NBQ2xCLFNBQVM7Q0FDVCxXQUFXO0NBQ1g7QUFNRDs7QUFKQztFQUNDLFdBQVc7RUFDWCxrQkFBa0I7Q0FDbkI7O0F4RWZEOztBeUVBQTs7O0VBR0U7O0FBRUY7Q0FDQyw4Q0FBOEM7Q0FDOUMsNERBQTREOztDQUU1RCxpQ0FBaUM7Q0FDakMsaUNBQWlDO0FBQ2xDOztBQUVBO0NBQ0MsdUNBQXVDO0NBQ3ZDLHdDQUF3QztDQUN4QyxVQUFVO0NBQ1Ysd0RBQXdEO0NBQ3hELDBFQUEwRTtDQUMxRSx1Q0FBdUM7Q0FDdkMsZ0NBQWdDOztDQUVoQyxnQ0FBZ0M7Q0FDaEMsMkNBQTJDOztDQUUzQyxnREFBZ0Q7Q0FDaEQsMkJBQTRCOztDQUU1Qiw2RUFBNkU7QUF1QjlFOztBQXRCQztFQUNDLDJFQUEyRTtFQUMzRSxTQUFTOztFQUVULFFBQVE7RUFDUixVQUFVO0VBQ1YsU0FBUztFQUNULFFBQVE7O0VBRVIsb0NBQW9DO0VBQ3BDLDBCQUEwQjtFQUMxQixxRkFBcUY7RUFDckYsdUZBQXVGOztFQUV2Riw2Q0FBNkM7RUFDN0MseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0Qiw2QkFBNkI7O0VBRTdCLG9HQUFvRztFQUNwRyxzQkFBc0I7Q0FDdkI7O0FBR0Q7Q0FDQztFQUNDLFVBQVU7Q0FDWDs7Q0FFQTtFQUNDLFVBQVU7Q0FDWDtBQUNEOztBQUVBO0NBQ0M7RUFDQyxVQUFVO0NBQ1g7O0NBRUE7RUFDQyxVQUFVO0NBQ1g7QUFDRDs7QUFFQTtDQUNDO0VBQ0MsVUFBVTtFQUNWLFFBQVE7RUFDUixTQUFTO0NBQ1Y7Q0FDQTtFQUNDLFlBQVk7RUFDWixTQUFTO0NBQ1Y7Q0FDQTtFQUNDLFVBQVU7RUFDVixZQUFZO0VBQ1osY0FBYztDQUNmO0FBQ0Q7O0F6RXhGQTs7QTBFQUE7OztFQUdFOztBQUVGO0NBQ0Msa0JBQWtCO0NBQ2xCLGFBQWE7Q0FDYixtQkFBbUI7Q0FDbkIsdUJBQXVCO0NBQ3ZCLE1BQU07Q0FDTjtBQU1EOztBQUpDO0VBQ0MsV0FBVztFQUNYLGtCQUFrQjtDQUNuQjs7QTFFaEJEOztBMkVBQTs7O0VBR0U7O0FBRUY7Q0FDQyxxREFBcUQ7Q0FDckQseUNBQXlDO0FBQzFDOztBQUVBO0NBQ0Msa0VBQWtFO0NBQ2xFLFdBQVc7Q0FDWCxTQUFTO0FBQ1Y7O0FBRUE7Q0FDQyxXQUFXO0NBQ1g7QUFVRDs7QUFSQztFQUNDLCtDQUErQztFQUMvQyxnREFBZ0Q7RUFDaEQsa0JBQWtCO0VBQ2xCLCtEQUErRDtFQUMvRCxtQ0FBbUM7RUFDbkMsMERBQTBEO0NBQzNEOztBQUdEO0NBQ0M7RUFDQywyQkFBMkI7Q0FDNUI7QUFDRDs7QTNFbENBOztBNEVBQTs7O0VBR0U7O0FBRUY7Q0FDQyxlQUFlO0FBQ2hCOztBQUVBO0NBQ0MsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyxpQkFBaUI7QUFDbEI7O0E1RW5CQTs7QTZFQUE7OztFQUdFOztBQUVGLG9DQUFvQzs7QUFFbkM7RUFDQyxVQUFVO0NBQ1g7O0FBRUE7RUFDQyxlQUFlO0NBQ2hCOztBN0ViRDs7QThFQUE7OztFQUdFOztBQUVGO0NBQ0Msc0JBQXNCO0NBQ3RCLG9CQUFvQjtDQUNwQixzQkFBc0I7Q0FDdEIsc0JBQXNCO0NBQ3RCLGlDQUFpQztDQUNqQyxhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLG9CQUFvQjtBQUNyQjs7QTlFZEE7O0ErRUFBOzs7RUFHRTs7QUFFRjtDQUNDLCtCQUErQjtBQUNoQzs7QUFHQztFQUNDLFlBQVk7RUFDWiwwQ0FBMEM7RUFDMUMsY0FBYztDQUNmOztBQUVBO0VBQ0MsV0FBVztFQUNYLDJDQUEyQztDQUM1Qzs7QUFFQTtFQUNDLGlCQUFpQjtFQUNqQixrQkFBa0I7Q0FDbkI7O0FBRUE7RUFDQyxZQUFZO0VBQ1osMENBQTBDO0NBQzNDOztBL0U3QkQ7O0FnRkFBOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBaEZURjs7QWlGQUE7OztFQUdFOztBQUVGLHFFQUFxRTs7QUFDckU7Q0FDQyxvREFBb0Q7QUFDckQ7O0FBRUE7OztFQUdFOztBQUNGO0NBQ0MsK0NBQStDO0FBQ2hEOztBQUVBLHVDQUF1Qzs7QUFDdkM7Q0FDQyxZQUFZO0NBQ1osaURBQWlEO0NBQ2pELGtCQUFrQjtDQUNsQix3Q0FBd0M7QUFDekM7O0FqRnhCQTs7QWtGQUE7OztFQUdFOztBakJIRjs7O0VBR0U7O0FpQklGO0NBQ0M7QUFpQkQ7O0FBZkM7RUFDQyxhQUFhO0NBQ2Q7O0FqQk5BOztBaUJDRDtFQVFFO0FBVUY7O0VBUkU7R0FDQyxnQkFBZ0I7RUFDakI7O0VBRUE7R0FDQyxlQUFlO0VBQ2hCO0NqQmZEOztBaUJtQkQ7OztFQUdFOztBQUNGO0NBQ0MsYUFBYzs7Q0FFZDs7O0dBR0U7QUFPSDs7QUFMRTs7R0FFQyxvQ0FBb0M7RUFDckM7O0FsRjFDRjs7QW1GQUE7OztFQUdFOztBQ0hGOzs7RUFHRTs7QURJRjs7O0VBR0U7O0FBQ0Y7Q0FDQyxVQUFVO0NBQ1Y7QUE4Q0Q7O0FBNUNDO0VBQ0M7Q0FNRDs7QUFKQztHQUNDLFlBQVk7R0FDWixXQUFXO0VBQ1o7O0FBR0Q7RUFDQyxtQ0FBbUM7RUFDbkMsU0FBUztFQUNULGdCQUFnQjtFQUNoQixTQUFTO0VBQ1QsaURBQWlEO0VBQ2pEO0NBYUQ7O0FBbkJBO0dBU0U7Q0FVRjs7QUFuQkE7R0FhRTtDQU1GOztBQUpFO0lBQ0MsbURBQW1EO0dBQ3BEOztBQTlCSDs7Q0FrQ0MsNEdBQTRHO0FBYzdHOztBQWJDO0VBQ0M7Q0FXRDs7QUFUQztHQUNDLFNBQVM7R0FDVCxVQUFVO0dBQ1Y7RUFLRDs7QUFIQztJQUNDLGdCQUFnQjtHQUNqQjs7QW5GeERIOztBcUZBQTs7O0VBR0U7O0FwQkhGOzs7RUFHRTs7QW9CSUY7Q0FDQyxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CO0FBcUJEOztBQW5CQztFQUNDO0NBS0Q7O0FBSEM7R0FDQyxnQkFBZ0I7RUFDakI7O0FwQlhEOztBb0JDRDtFQWNFO0FBVUY7O0VBUkU7R0FDQyxnQkFBZ0I7RUFDakI7O0VBRUE7R0FDQyxlQUFlO0VBQ2hCO0NwQnJCRDs7QWpFUkQ7O0FzRkFBOzs7RUFHRTs7QUNIRjs7O0VBR0U7O0FBRUY7OztFQUdFOztBQTJCRjs7RUFFRTs7QUFPRjs7O0VBR0U7O0FDL0NGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUpQRjs7O0VBR0U7O0E1QkhGOzs7RUFHRTs7QUFFRjs7RUFFRTs7QUNQRjs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBS0Y7O0VBRUU7O0FRZEY7OztFQUdFOztBcUJVRDtFQUNDLGVBQWU7RUFDZjtDQW1DRDs7QUFqQ0M7R0FDQyxtQ0FBbUM7R0FDbkMsbUNBQW1DO0dBQ25DLHVCQUF1QjtHQUN2QixlQUFlOztHQUVmO29FQUNpRTtHQUNqRSxxQ0FBcUM7R0FDckMsY0FBYztHQUNkO0VBS0Q7O0FBSEM7SUFDQywwQkFBMEI7R0FDM0I7O0FBR0Q7Ozs7R0FJQyxnQkFBZ0I7RUFDakI7O0FBRUE7R0FDQyxnQkFBZ0I7RUFDakI7O0FBR0M7SUFDQywwQkFBMEI7R0FDM0I7O0FBS0Q7R0FDQyx1Q0FBdUM7RUFDeEM7O0FBSUE7R0FDQyx1Q0FBdUM7RUFDeEM7O0FyQnZERDtFcUIyREM7R0FDQztFQU1EOztHQUpDO0lBQ0MsWUFBWTtJQUNaLGVBQWU7R0FDaEI7O0VBR0Q7SUFFRTtFQU1GOztFQVJBO0lBTUU7RUFFRjtDckIxRUQ7O0FqRVJEOztBeUZBQTs7O0VBR0U7O0FBRUY7Q0FDQyxhQUFhO0FBQ2Q7O0F6RlBBOztBMEZBQTs7O0VBR0U7O0F6RUhGOzs7RUFHRTs7QUFFRjs7OztFQUlFOztBeUVGRjtDQUNDLCtCQUErQjs7Q0FFL0I7OzREQUUyRDtDQUMzRCxnREFBZ0Q7QUFDakQ7O0FBRUE7Q0FDQyxhQUFhO0NBQ2IsWUFBWTtBQUNiOztBQUVBO0NBQ0MscUNBQXFDO0NBQ3JDLHNDQUFzQztDQUN0Qyx5Q0FBeUM7Q0FDekMsMENBQTBDO0NBQzFDLFVBQVU7Q0FDViwrQkFBK0I7Q0FDL0I7QUFtQ0Q7O0FBakNDO0VBQ0MsYUFBYTtFQUNiLGlCQUFpQjtDQUNsQjs7QUFFQTtFQUNDLGlEQUFpRDtDQUNsRDs7QUFFQTtFQUNDLGFBQWE7RUFDYiw0Q0FBNEM7Q0FDN0M7O0FBRUE7RUFDQztDQUtEOztBQUhDO0dBQ0MsY0FBYztFQUNmOztBQUdEOzs7RUFHQyxrREFBa0Q7RUFDbEQsU0FBUztDQUNWOztBQUVBOztFQUVDLG1HQUFtRztDQUNwRzs7QUFHRDtDQUNDLHFDQUFxQztBQUN0Qzs7QTFGbkVBOztBMkZBQTs7O0VBR0U7O0FBRUY7Q0FDQyxhQUFhO0NBQ2IsbUJBQW1CO0NBQ25CLFdBQVc7QUFDWjs7QUFFQTtDQUNDLGtCQUFrQjtBQUNuQjs7QTNGYkE7O0E0RkFBOzs7RUFHRTs7QVJIRjs7O0VBR0U7O0FRSUY7Q0FDQyx5RUFBeUU7Q0FDekUsNEJBQTRCO0NBQzVCO0FBZUQ7O0FBYkM7RUFDQyxvREFBb0Q7Q0FDckQ7O0FBRUE7R0FFRTtDQU1GOztBQVJBO0dBTUU7Q0FFRjs7QTVGeEJEOztBNkZBQTs7O0VBR0U7O0FBRUYscUhBQXFIOztBQUVySDt1REFDdUQ7O0FBRXREO0VBQ0MsZUFBZTtDQUNoQjs7QUFFQTtFQUNDLGdCQUFnQjtDQUNqQjs7QUFFQTtFQUNDLGdCQUFnQjtDQUNqQjs7QUFFQTtFQUNDLGdCQUFnQjtDQUNqQiIsImZpbGUiOiJ2ZW5kb3JzfmFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4vX2hpZGRlbi5jc3NcIjtcbkBpbXBvcnQgXCIuL19yZXNldC5jc3NcIjtcbkBpbXBvcnQgXCIuL196aW5kZXguY3NzXCI7XG5AaW1wb3J0IFwiLi9fdHJhbnNpdGlvbi5jc3NcIjtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIGNsYXNzIHdoaWNoIGhpZGVzIGFuIGVsZW1lbnQgaW4gRE9NLlxuICovXG4uY2staGlkZGVuIHtcblx0LyogT3ZlcnJpZGUgc2VsZWN0b3Igc3BlY2lmaWNpdHkuIE90aGVyd2lzZSwgYWxsIGVsZW1lbnRzIHdpdGggc29tZSBkaXNwbGF5XG5cdHN0eWxlIGRlZmluZWQgd2lsbCBvdmVycmlkZSB0aGlzIG9uZSwgd2hpY2ggaXMgbm90IGEgZGVzaXJlZCByZXN1bHQuICovXG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLmNrLXJlc2V0LFxuLmNrLmNrLXJlc2V0X2FsbCxcbi5jay5jay1yZXNldF9hbGwgKiB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdHdpZHRoOiBhdXRvO1xuXHRoZWlnaHQ6IGF1dG87XG5cdHBvc2l0aW9uOiBzdGF0aWM7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LS1jay16LWRlZmF1bHQ6IDE7XG5cdC0tY2stei1tb2RhbDogY2FsYyggdmFyKC0tY2stei1kZWZhdWx0KSArIDk5OSApO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEEgY2xhc3MgdGhhdCBkaXNhYmxlcyBhbGwgdHJhbnNpdGlvbnMgb2YgdGhlIGVsZW1lbnQgYW5kIGl0cyBjaGlsZHJlbi5cbiAqL1xuLmNrLXRyYW5zaXRpb25zLWRpc2FibGVkLFxuLmNrLXRyYW5zaXRpb25zLWRpc2FibGVkICoge1xuXHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCIuL19jb2xvcnMuY3NzXCI7XG5AaW1wb3J0IFwiLi9fZGlzYWJsZWQuY3NzXCI7XG5AaW1wb3J0IFwiLi9fZm9jdXMuY3NzXCI7XG5AaW1wb3J0IFwiLi9fZm9udHMuY3NzXCI7XG5AaW1wb3J0IFwiLi9fcmVzZXQuY3NzXCI7XG5AaW1wb3J0IFwiLi9fcm91bmRlZC5jc3NcIjtcbkBpbXBvcnQgXCIuL19zaGFkb3cuY3NzXCI7XG5AaW1wb3J0IFwiLi9fc3BhY2luZy5jc3NcIjtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuOnJvb3Qge1xuXHQtLWNrLWNvbG9yLWJhc2UtZm9yZWdyb3VuZDogXHRcdFx0XHRcdFx0XHRcdGhzbCgwLCAwJSwgOTglKTtcblx0LS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQ6IFx0XHRcdFx0XHRcdFx0XHRoc2woMCwgMCUsIDEwMCUpO1xuXHQtLWNrLWNvbG9yLWJhc2UtYm9yZGVyOiBcdFx0XHRcdFx0XHRcdFx0XHRoc2woMCwgMCUsIDc3JSk7XG5cdC0tY2stY29sb3ItYmFzZS1hY3Rpb246IFx0XHRcdFx0XHRcdFx0XHRcdGhzbCgxMDQsIDQ0JSwgNDglKTtcblx0LS1jay1jb2xvci1iYXNlLWZvY3VzOiBcdFx0XHRcdFx0XHRcdFx0XHRcdGhzbCgyMDksIDkyJSwgNzAlKTtcblx0LS1jay1jb2xvci1iYXNlLXRleHQ6IFx0XHRcdFx0XHRcdFx0XHRcdFx0aHNsKDAsIDAlLCAyMCUpO1xuXHQtLWNrLWNvbG9yLWJhc2UtYWN0aXZlOiBcdFx0XHRcdFx0XHRcdFx0XHRoc2woMjA4LCA4OCUsIDUyJSk7XG5cdC0tY2stY29sb3ItYmFzZS1hY3RpdmUtZm9jdXM6XHRcdFx0XHRcdFx0XHRcdGhzbCgyMDgsIDg4JSwgNDclKTtcblx0LS1jay1jb2xvci1iYXNlLWVycm9yOlx0XHRcdFx0XHRcdFx0XHRcdFx0aHNsKDE1LCAxMDAlLCA0MyUpO1xuXG5cdC8qIC0tIEdlbmVyaWMgY29sb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItZm9jdXMtYm9yZGVyLWNvb3JkaW5hdGVzOiBcdFx0XHRcdFx0XHQyMDgsIDc5JSwgNTElO1xuXHQtLWNrLWNvbG9yLWZvY3VzLWJvcmRlcjogXHRcdFx0XHRcdFx0XHRcdFx0aHNsKHZhcigtLWNrLWNvbG9yLWZvY3VzLWJvcmRlci1jb29yZGluYXRlcykpO1xuXHQtLWNrLWNvbG9yLWZvY3VzLW91dGVyLXNoYWRvdzpcdFx0XHRcdFx0XHRcdFx0aHNsKDIwNywgODklLCA4NiUpO1xuXHQtLWNrLWNvbG9yLWZvY3VzLWRpc2FibGVkLXNoYWRvdzpcdFx0XHRcdFx0XHRcdGhzbGEoMjA5LCA5MCUsIDcyJSwuMyk7XG5cdC0tY2stY29sb3ItZm9jdXMtZXJyb3Itc2hhZG93Olx0XHRcdFx0XHRcdFx0XHRoc2xhKDksMTAwJSw1NiUsLjMpO1xuXHQtLWNrLWNvbG9yLXRleHQ6IFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLXRleHQpO1xuXHQtLWNrLWNvbG9yLXNoYWRvdy1kcm9wOiBcdFx0XHRcdFx0XHRcdFx0XHRoc2xhKDAsIDAlLCAwJSwgMC4xNSk7XG5cdC0tY2stY29sb3Itc2hhZG93LWRyb3AtYWN0aXZlOlx0XHRcdFx0XHRcdFx0XHRoc2xhKDAsIDAlLCAwJSwgMC4yKTtcblx0LS1jay1jb2xvci1zaGFkb3ctaW5uZXI6IFx0XHRcdFx0XHRcdFx0XHRcdGhzbGEoMCwgMCUsIDAlLCAwLjEpO1xuXG5cdC8qIC0tIEJ1dHRvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItYnV0dG9uLWRlZmF1bHQtYmFja2dyb3VuZDogXHRcdFx0XHRcdFx0dHJhbnNwYXJlbnQ7XG5cdC0tY2stY29sb3ItYnV0dG9uLWRlZmF1bHQtaG92ZXItYmFja2dyb3VuZDogXHRcdFx0XHRoc2woMCwgMCUsIDkwJSk7XG5cdC0tY2stY29sb3ItYnV0dG9uLWRlZmF1bHQtYWN0aXZlLWJhY2tncm91bmQ6IFx0XHRcdFx0aHNsKDAsIDAlLCA4NSUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1kZWZhdWx0LWFjdGl2ZS1zaGFkb3c6IFx0XHRcdFx0XHRoc2woMCwgMCUsIDc1JSk7XG5cdC0tY2stY29sb3ItYnV0dG9uLWRlZmF1bHQtZGlzYWJsZWQtYmFja2dyb3VuZDogXHRcdFx0XHR0cmFuc3BhcmVudDtcblxuXHQtLWNrLWNvbG9yLWJ1dHRvbi1vbi1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0XHRcdGhzbCgwLCAwJSwgODclKTtcblx0LS1jay1jb2xvci1idXR0b24tb24taG92ZXItYmFja2dyb3VuZDogXHRcdFx0XHRcdFx0aHNsKDAsIDAlLCA3NyUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1vbi1hY3RpdmUtYmFja2dyb3VuZDogXHRcdFx0XHRcdGhzbCgwLCAwJSwgNzMlKTtcblx0LS1jay1jb2xvci1idXR0b24tb24tYWN0aXZlLXNoYWRvdzogXHRcdFx0XHRcdFx0aHNsKDAsIDAlLCA2MyUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1vbi1kaXNhYmxlZC1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0aHNsKDAsIDAlLCA4NyUpO1xuXG5cdC0tY2stY29sb3ItYnV0dG9uLWFjdGlvbi1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWFjdGlvbik7XG5cdC0tY2stY29sb3ItYnV0dG9uLWFjdGlvbi1ob3Zlci1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0aHNsKDEwNCwgNDQlLCA0MyUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1hY3Rpb24tYWN0aXZlLWJhY2tncm91bmQ6IFx0XHRcdFx0aHNsKDEwNCwgNDQlLCA0MSUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1hY3Rpb24tYWN0aXZlLXNoYWRvdzogXHRcdFx0XHRcdGhzbCgxMDQsIDQ0JSwgMzYlKTtcblx0LS1jay1jb2xvci1idXR0b24tYWN0aW9uLWRpc2FibGVkLWJhY2tncm91bmQ6IFx0XHRcdFx0aHNsKDEwNCwgNDQlLCA1OCUpO1xuXHQtLWNrLWNvbG9yLWJ1dHRvbi1hY3Rpb24tdGV4dDogXHRcdFx0XHRcdFx0XHRcdHZhcigtLWNrLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XG5cblx0LS1jay1jb2xvci1idXR0b24tc2F2ZTogXHRcdFx0XHRcdFx0XHRcdFx0aHNsKDEyMCwgMTAwJSwgMjclKTtcblx0LS1jay1jb2xvci1idXR0b24tY2FuY2VsOiBcdFx0XHRcdFx0XHRcdFx0XHRoc2woMTUsIDEwMCUsIDQzJSk7XG5cblx0LS1jay1jb2xvci1zd2l0Y2gtYnV0dG9uLW9mZi1iYWNrZ3JvdW5kOlx0XHRcdFx0XHRoc2woMCwgMCUsIDY5JSk7XG5cdC0tY2stY29sb3Itc3dpdGNoLWJ1dHRvbi1vZmYtaG92ZXItYmFja2dyb3VuZDpcdFx0XHRcdGhzbCgwLCAwJSwgNjQlKTtcblx0LS1jay1jb2xvci1zd2l0Y2gtYnV0dG9uLW9uLWJhY2tncm91bmQ6XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYnV0dG9uLWFjdGlvbi1iYWNrZ3JvdW5kKTtcblx0LS1jay1jb2xvci1zd2l0Y2gtYnV0dG9uLW9uLWhvdmVyLWJhY2tncm91bmQ6XHRcdFx0XHRoc2woMTA0LCA0NCUsIDQzJSk7XG5cdC0tY2stY29sb3Itc3dpdGNoLWJ1dHRvbi1pbm5lci1iYWNrZ3JvdW5kOlx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXHQtLWNrLWNvbG9yLXN3aXRjaC1idXR0b24taW5uZXItc2hhZG93Olx0XHRcdFx0XHRcdGhzbGEoMCwgMCUsIDAlLCAwLjEpO1xuXG5cdC8qIC0tIERyb3Bkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItZHJvcGRvd24tcGFuZWwtYmFja2dyb3VuZDogXHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcblx0LS1jay1jb2xvci1kcm9wZG93bi1wYW5lbC1ib3JkZXI6IFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXG5cdC8qIC0tIElucHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItaW5wdXQtYmFja2dyb3VuZDogXHRcdFx0XHRcdFx0XHRcdHZhcigtLWNrLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XG5cdC0tY2stY29sb3ItaW5wdXQtYm9yZGVyOiBcdFx0XHRcdFx0XHRcdFx0XHRoc2woMCwgMCUsIDc4JSk7XG5cdC0tY2stY29sb3ItaW5wdXQtZXJyb3ItYm9yZGVyOlx0XHRcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWVycm9yKTtcblx0LS1jay1jb2xvci1pbnB1dC10ZXh0OiBcdFx0XHRcdFx0XHRcdFx0XHRcdHZhcigtLWNrLWNvbG9yLWJhc2UtdGV4dCk7XG5cdC0tY2stY29sb3ItaW5wdXQtZGlzYWJsZWQtYmFja2dyb3VuZDogXHRcdFx0XHRcdFx0aHNsKDAsIDAlLCA5NSUpO1xuXHQtLWNrLWNvbG9yLWlucHV0LWRpc2FibGVkLWJvcmRlcjogXHRcdFx0XHRcdFx0XHRoc2woMCwgMCUsIDc4JSk7XG5cdC0tY2stY29sb3ItaW5wdXQtZGlzYWJsZWQtdGV4dDogXHRcdFx0XHRcdFx0XHRoc2woMCwgMCUsIDQ2JSk7XG5cblx0LyogLS0gTGlzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0LS1jay1jb2xvci1saXN0LWJhY2tncm91bmQ6IFx0XHRcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXHQtLWNrLWNvbG9yLWxpc3QtYnV0dG9uLWhvdmVyLWJhY2tncm91bmQ6IFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1idXR0b24tZGVmYXVsdC1ob3Zlci1iYWNrZ3JvdW5kKTtcblx0LS1jay1jb2xvci1saXN0LWJ1dHRvbi1vbi1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWFjdGl2ZSk7XG5cdC0tY2stY29sb3ItbGlzdC1idXR0b24tb24tYmFja2dyb3VuZC1mb2N1czogXHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWFjdGl2ZS1mb2N1cyk7XG5cdC0tY2stY29sb3ItbGlzdC1idXR0b24tb24tdGV4dDpcdFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcblxuXHQvKiAtLSBQYW5lbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQtLWNrLWNvbG9yLXBhbmVsLWJhY2tncm91bmQ6IFx0XHRcdFx0XHRcdFx0XHR2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXHQtLWNrLWNvbG9yLXBhbmVsLWJvcmRlcjogXHRcdFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXG5cdC8qIC0tIFRvb2xiYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItdG9vbGJhci1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1mb3JlZ3JvdW5kKTtcblx0LS1jay1jb2xvci10b29sYmFyLWJvcmRlcjogXHRcdFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXG5cdC8qIC0tIFRvb2x0aXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItdG9vbHRpcC1iYWNrZ3JvdW5kOiBcdFx0XHRcdFx0XHRcdFx0dmFyKC0tY2stY29sb3ItYmFzZS10ZXh0KTtcblx0LS1jay1jb2xvci10b29sdGlwLXRleHQ6IFx0XHRcdFx0XHRcdFx0XHRcdHZhcigtLWNrLWNvbG9yLWJhc2UtYmFja2dyb3VuZCk7XG5cblx0LyogLS0gRW5naW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0LS1jay1jb2xvci1lbmdpbmUtcGxhY2Vob2xkZXItdGV4dDogXHRcdFx0XHRcdFx0aHNsKDAsIDAlLCA0NCUpO1xuXG5cdC8qIC0tIFVwbG9hZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG5cdC0tY2stY29sb3ItdXBsb2FkLWJhci1iYWNrZ3JvdW5kOlx0XHQgXHRcdFx0XHRcdGhzbCgyMDksIDkyJSwgNzAlKTtcblxuXHQvKiAtLSBMaW5rIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0LS1jay1jb2xvci1saW5rLWRlZmF1bHQ6XHRcdFx0XHRcdFx0XHRcdFx0aHNsKDI0MCwgMTAwJSwgNDclKTtcblx0LS1jay1jb2xvci1saW5rLXNlbGVjdGVkLWJhY2tncm91bmQ6XHRcdFx0XHRcdFx0aHNsYSgyMDEsIDEwMCUsIDU2JSwgMC4xKTtcblx0LS1jay1jb2xvci1saW5rLWZha2Utc2VsZWN0aW9uOlx0XHRcdFx0XHRcdFx0XHRoc2xhKDIwMSwgMTAwJSwgNTYlLCAwLjMpO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC8qKlxuXHQgKiBBbiBvcGFjaXR5IHZhbHVlIG9mIGRpc2FibGVkIFVJIGl0ZW0uXG5cdCAqL1xuXHQtLWNrLWRpc2FibGVkLW9wYWNpdHk6IC41O1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC8qKlxuXHQgKiBUaGUgZ2VvbWV0cnkgb2YgdGhlIG9mIGZvY3VzZWQgZWxlbWVudCdzIG91dGVyIHNoYWRvdy5cblx0ICovXG5cdC0tY2stZm9jdXMtb3V0ZXItc2hhZG93LWdlb21ldHJ5OiAwIDAgMCAzcHg7XG5cblx0LyoqXG5cdCAqIEEgdmlzdWFsIHN0eWxlIG9mIGZvY3VzZWQgZWxlbWVudCdzIG91dGVyIHNoYWRvdy5cblx0ICovXG5cdC0tY2stZm9jdXMtb3V0ZXItc2hhZG93OiB2YXIoLS1jay1mb2N1cy1vdXRlci1zaGFkb3ctZ2VvbWV0cnkpIHZhcigtLWNrLWNvbG9yLWZvY3VzLW91dGVyLXNoYWRvdyk7XG5cblx0LyoqXG5cdCAqIEEgdmlzdWFsIHN0eWxlIG9mIGZvY3VzZWQgZWxlbWVudCdzIG91dGVyIHNoYWRvdyAod2hlbiBkaXNhYmxlZCkuXG5cdCAqL1xuXHQtLWNrLWZvY3VzLWRpc2FibGVkLW91dGVyLXNoYWRvdzogdmFyKC0tY2stZm9jdXMtb3V0ZXItc2hhZG93LWdlb21ldHJ5KSB2YXIoLS1jay1jb2xvci1mb2N1cy1kaXNhYmxlZC1zaGFkb3cpO1xuXG5cdC8qKlxuXHQgKiBBIHZpc3VhbCBzdHlsZSBvZiBmb2N1c2VkIGVsZW1lbnQncyBvdXRlciBzaGFkb3cgKHdoZW4gaGFzIGVycm9ycykuXG5cdCAqL1xuXHQtLWNrLWZvY3VzLWVycm9yLW91dGVyLXNoYWRvdzogdmFyKC0tY2stZm9jdXMtb3V0ZXItc2hhZG93LWdlb21ldHJ5KSB2YXIoLS1jay1jb2xvci1mb2N1cy1lcnJvci1zaGFkb3cpO1xuXG5cdC8qKlxuXHQgKiBBIHZpc3VhbCBzdHlsZSBvZiBmb2N1c2VkIGVsZW1lbnQncyBib3JkZXIgb3Igb3V0bGluZS5cblx0ICovXG5cdC0tY2stZm9jdXMtcmluZzogMXB4IHNvbGlkIHZhcigtLWNrLWNvbG9yLWZvY3VzLWJvcmRlcik7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LS1jay1mb250LXNpemUtYmFzZTogMTNweDtcblx0LS1jay1saW5lLWhlaWdodC1iYXNlOiAxLjg0NjE1O1xuXHQtLWNrLWZvbnQtZmFjZTogSGVsdmV0aWNhLCBBcmlhbCwgVGFob21hLCBWZXJkYW5hLCBTYW5zLVNlcmlmO1xuXG5cdC0tY2stZm9udC1zaXplLXRpbnk6IDAuN2VtO1xuXHQtLWNrLWZvbnQtc2l6ZS1zbWFsbDogMC43NWVtO1xuXHQtLWNrLWZvbnQtc2l6ZS1ub3JtYWw6IDFlbTtcblx0LS1jay1mb250LXNpemUtYmlnOiAxLjRlbTtcblx0LS1jay1mb250LXNpemUtbGFyZ2U6IDEuOGVtO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC8qIFRoaXMgaXMgc3VwZXItaW1wb3J0YW50LiBUaGlzIGlzICoqbWFudWFsbHkqKiBhZGp1c3RlZCBzbyBhIGJ1dHRvbiB3aXRob3V0IGFuIGljb25cblx0aXMgbmV2ZXIgc21hbGxlciB0aGFuIGEgYnV0dG9uIHdpdGggaWNvbiwgYWRkaXRpb25hbGx5IG1ha2luZyBzdXJlIHRoYXQgdGV4dC1sZXNzIGJ1dHRvbnNcblx0YXJlIHBlcmZlY3Qgc3F1YXJlcy4gVGhlIHZhbHVlIGlzIGFsc28gc2hhcmVkIGJ5IG90aGVyIGNvbXBvbmVudHMgd2hpY2ggc2hvdWxkIHN0YXkgXCJpbi1saW5lXCJcblx0d2l0aCBidXR0b25zLiAqL1xuXHQtLWNrLXVpLWNvbXBvbmVudC1taW4taGVpZ2h0OiAyLjNlbTtcbn1cblxuLyoqXG4gKiBSZXNldHMgYW4gZWxlbWVudCwgaWdub3JpbmcgaXRzIGNoaWxkcmVuLlxuICovXG4uY2suY2stcmVzZXQsXG4uY2suY2stcmVzZXRfYWxsLFxuLmNrLmNrLXJlc2V0X2FsbCAqIHtcblx0LyogRG8gbm90IGluY2x1ZGUgaW5oZXJpdGFibGUgcnVsZXMgaGVyZS4gKi9cblx0bWFyZ2luOiAwO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXI6IDA7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdHRyYW5zaXRpb246IG5vbmU7XG5cblx0LyogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS10aGVtZS1sYXJrL2lzc3Vlcy8xMDUgKi9cblx0d29yZC13cmFwOiBicmVhay13b3JkO1xufVxuXG4vKipcbiAqIFJlc2V0cyBhbiBlbGVtZW50IEFORCBpdHMgY2hpbGRyZW4uXG4gKi9cbi5jay5jay1yZXNldF9hbGwsXG4uY2suY2stcmVzZXRfYWxsICoge1xuXHQvKiBUaGVzZSBhcmUgcnVsZSBpbmhlcml0ZWQgYnkgYWxsIGNoaWxkcmVuIGVsZW1lbnRzLiAqL1xuXHRib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuXHRmb250OiBub3JtYWwgbm9ybWFsIG5vcm1hbCB2YXIoLS1jay1mb250LXNpemUtYmFzZSkvdmFyKC0tY2stbGluZS1oZWlnaHQtYmFzZSkgdmFyKC0tY2stZm9udC1mYWNlKTtcblx0Y29sb3I6IHZhcigtLWNrLWNvbG9yLXRleHQpO1xuXHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRjdXJzb3I6IGF1dG87XG5cdGZsb2F0OiBub25lO1xufVxuXG4uY2suY2stcmVzZXRfYWxsIHtcblx0JiAuY2stcnRsICoge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR9XG5cblx0JiBpZnJhbWUge1xuXHRcdC8qIEZvciBJRSAqL1xuXHRcdHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xuXHR9XG5cblx0JiB0ZXh0YXJlYSB7XG5cdFx0d2hpdGUtc3BhY2U6IHByZS13cmFwO1xuXHR9XG5cblx0JiB0ZXh0YXJlYSxcblx0JiBpbnB1dFt0eXBlPVwidGV4dFwiXSxcblx0JiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0ge1xuXHRcdGN1cnNvcjogdGV4dDtcblx0fVxuXG5cdCYgdGV4dGFyZWFbZGlzYWJsZWRdLFxuXHQmIGlucHV0W3R5cGU9XCJ0ZXh0XCJdW2Rpc2FibGVkXSxcblx0JiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl1bZGlzYWJsZWRdIHtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cblxuXHQmIGZpZWxkc2V0IHtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGJvcmRlcjogMnB4IGdyb292ZSBoc2woMjU1LCA3JSwgODglKTtcblx0fVxuXG5cdCYgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcblx0XHQvKiBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NTE3NzQ0L3JlbW92ZS1leHRyYS1idXR0b24tc3BhY2luZy1wYWRkaW5nLWluLWZpcmVmb3ggKi9cblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMFxuXHR9XG59XG5cbi8qKlxuICogRGVmYXVsdCBVSSBydWxlcyBmb3IgUlRMIGxhbmd1YWdlcy5cbiAqL1xuLmNrW2Rpcj1cInJ0bFwiXSxcbi5ja1tkaXI9XCJydGxcIl0gLmNrIHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi8qKlxuICogRGVmYXVsdCBib3JkZXItcmFkaXVzIHZhbHVlLlxuICovXG46cm9vdHtcblx0LS1jay1ib3JkZXItcmFkaXVzOiAycHg7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LyoqXG5cdCAqIEEgdmlzdWFsIHN0eWxlIG9mIGVsZW1lbnQncyBpbm5lciBzaGFkb3cgKGkuZS4gaW5wdXQpLlxuXHQgKi9cblx0LS1jay1pbm5lci1zaGFkb3c6IDJweCAycHggM3B4IHZhcigtLWNrLWNvbG9yLXNoYWRvdy1pbm5lcikgaW5zZXQ7XG5cblx0LyoqXG5cdCAqIEEgdmlzdWFsIHN0eWxlIG9mIGVsZW1lbnQncyBkcm9wIHNoYWRvdyAoaS5lLiBwYW5lbCkuXG5cdCAqL1xuXHQtLWNrLWRyb3Atc2hhZG93OiAwIDFweCAycHggMXB4IHZhcigtLWNrLWNvbG9yLXNoYWRvdy1kcm9wKTtcblxuXHQvKipcblx0ICogQSB2aXN1YWwgc3R5bGUgb2YgZWxlbWVudCdzIGFjdGl2ZSBzaGFkb3cgKGkuZS4gY29tbWVudCBvciBzdWdnZXN0aW9uKS5cblx0ICovXG5cdC0tY2stZHJvcC1zaGFkb3ctYWN0aXZlOiAwIDNweCA2cHggMXB4IHZhcigtLWNrLWNvbG9yLXNoYWRvdy1kcm9wLWFjdGl2ZSk7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LS1jay1zcGFjaW5nLXVuaXQ6IFx0XHRcdFx0XHRcdDAuNmVtO1xuXHQtLWNrLXNwYWNpbmctbGFyZ2U6IFx0XHRcdFx0XHRjYWxjKHZhcigtLWNrLXNwYWNpbmctdW5pdCkgKiAxLjUpO1xuXHQtLWNrLXNwYWNpbmctc3RhbmRhcmQ6IFx0XHRcdFx0XHR2YXIoLS1jay1zcGFjaW5nLXVuaXQpO1xuXHQtLWNrLXNwYWNpbmctbWVkaXVtOiBcdFx0XHRcdFx0Y2FsYyh2YXIoLS1jay1zcGFjaW5nLXVuaXQpICogMC44KTtcblx0LS1jay1zcGFjaW5nLXNtYWxsOiBcdFx0XHRcdFx0Y2FsYyh2YXIoLS1jay1zcGFjaW5nLXVuaXQpICogMC41KTtcblx0LS1jay1zcGFjaW5nLXRpbnk6IFx0XHRcdFx0XHRcdGNhbGModmFyKC0tY2stc3BhY2luZy11bml0KSAqIDAuMyk7XG5cdC0tY2stc3BhY2luZy1leHRyYS10aW55OiBcdFx0XHRcdGNhbGModmFyKC0tY2stc3BhY2luZy11bml0KSAqIDAuMTYpO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC8qIE1ha2Ugc3VyZSB0aGUgYmFsbG9vbiBhcnJvdyBkb2VzIG5vdCBmbG9hdCBvdmVyIGl0cyBjaGlsZHJlbi4gKi9cblx0LS1jay1iYWxsb29uLXBhbmVsLWFycm93LXotaW5kZXg6IGNhbGModmFyKC0tY2stei1kZWZhdWx0KSAtIDMpO1xufVxuXG4uY2suY2stYmFsbG9vbi1wYW5lbCB7XG5cdGRpc3BsYXk6IG5vbmU7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuXHR6LWluZGV4OiB2YXIoLS1jay16LW1vZGFsKTtcblxuXHQmLmNrLWJhbGxvb24tcGFuZWxfd2l0aC1hcnJvdyB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0fVxuXG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdHotaW5kZXg6IHZhcigtLWNrLWJhbGxvb24tcGFuZWwtYXJyb3ctei1pbmRleCk7XG5cdFx0fVxuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0ei1pbmRleDogY2FsYyh2YXIoLS1jay1iYWxsb29uLXBhbmVsLWFycm93LXotaW5kZXgpICsgMSk7XG5cdFx0fVxuXHR9XG5cblx0JltjbGFzcyo9XCJhcnJvd19uXCJdIHtcblx0XHQmOjpiZWZvcmUge1xuXHRcdFx0ei1pbmRleDogdmFyKC0tY2stYmFsbG9vbi1wYW5lbC1hcnJvdy16LWluZGV4KTtcblx0XHR9XG5cblx0XHQmOjphZnRlciB7XG5cdFx0XHR6LWluZGV4OiBjYWxjKHZhcigtLWNrLWJhbGxvb24tcGFuZWwtYXJyb3ctei1pbmRleCkgKyAxKTtcblx0XHR9XG5cdH1cblxuXHQmW2NsYXNzKj1cImFycm93X3NcIl0ge1xuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHR6LWluZGV4OiB2YXIoLS1jay1iYWxsb29uLXBhbmVsLWFycm93LXotaW5kZXgpO1xuXHRcdH1cblxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdHotaW5kZXg6IGNhbGModmFyKC0tY2stYmFsbG9vbi1wYW5lbC1hcnJvdy16LWluZGV4KSArIDEpO1xuXHRcdH1cblx0fVxuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF92aXNpYmxlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuXG46cm9vdCB7XG5cdC0tY2stYmFsbG9vbi1hcnJvdy1vZmZzZXQ6IDJweDtcblx0LS1jay1iYWxsb29uLWFycm93LWhlaWdodDogMTBweDtcblx0LS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGg6IDhweDtcblx0LS1jay1iYWxsb29uLWFycm93LWRyb3Atc2hhZG93OiAwIDJweCAycHggdmFyKC0tY2stY29sb3Itc2hhZG93LWRyb3ApO1xufVxuXG4uY2suY2stYmFsbG9vbi1wYW5lbCB7XG5cdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cdEBtaXhpbiBjay1kcm9wLXNoYWRvdztcblxuXHRtaW4taGVpZ2h0OiAxNXB4O1xuXG5cdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXBhbmVsLWJhY2tncm91bmQpO1xuXHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1wYW5lbC1ib3JkZXIpO1xuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF93aXRoLWFycm93IHtcblx0XHQmOjpiZWZvcmUsXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0d2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDA7XG5cdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdH1cblx0fVxuXG5cdCZbY2xhc3MqPVwiYXJyb3dfblwiXSB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGJvcmRlci13aWR0aDogMCB2YXIoLS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGgpIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGVpZ2h0KSB2YXIoLS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGgpO1xuXHRcdH1cblxuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHZhcigtLWNrLWNvbG9yLXBhbmVsLWJvcmRlcikgdHJhbnNwYXJlbnQ7XG5cdFx0fVxuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB2YXIoLS1jay1jb2xvci1wYW5lbC1iYWNrZ3JvdW5kKSB0cmFuc3BhcmVudDtcblx0XHRcdG1hcmdpbi10b3A6IHZhcigtLWNrLWJhbGxvb24tYXJyb3ctb2Zmc2V0KTtcblx0XHR9XG5cdH1cblxuXHQmW2NsYXNzKj1cImFycm93X3NcIl0ge1xuXHRcdCY6OmJlZm9yZSxcblx0XHQmOjphZnRlciB7XG5cdFx0XHRib3JkZXItd2lkdGg6IHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGVpZ2h0KSB2YXIoLS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGgpIDAgdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKTtcblx0XHR9XG5cblx0XHQmOjpiZWZvcmUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jay1jb2xvci1wYW5lbC1ib3JkZXIpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuXHRcdFx0ZmlsdGVyOiBkcm9wLXNoYWRvdyh2YXIoLS1jay1iYWxsb29uLWFycm93LWRyb3Atc2hhZG93KSk7XG5cdFx0fVxuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jay1jb2xvci1wYW5lbC1iYWNrZ3JvdW5kKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcblx0XHRcdG1hcmdpbi1ib3R0b206IHZhcigtLWNrLWJhbGxvb24tYXJyb3ctb2Zmc2V0KTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfbiB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGxlZnQ6IDUwJTtcblx0XHRcdG1hcmdpbi1sZWZ0OiBjYWxjKC0xICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKSk7XG5cdFx0XHR0b3A6IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhlaWdodCkpO1xuXHRcdH1cblx0fVxuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF9hcnJvd19udyB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGxlZnQ6IGNhbGMoMiAqIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGFsZi13aWR0aCkpO1xuXHRcdFx0dG9wOiBjYWxjKC0xICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oZWlnaHQpKTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfbmUge1xuXHRcdCY6OmJlZm9yZSxcblx0XHQmOjphZnRlciB7XG5cdFx0XHRyaWdodDogY2FsYygyICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKSk7XG5cdFx0XHR0b3A6IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhlaWdodCkpO1xuXHRcdH1cblx0fVxuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF9hcnJvd19zIHtcblx0XHQmOjpiZWZvcmUsXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGgpKTtcblx0XHRcdGJvdHRvbTogY2FsYygtMSAqIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGVpZ2h0KSk7XG5cdFx0fVxuXHR9XG5cblx0Ji5jay1iYWxsb29uLXBhbmVsX2Fycm93X3N3IHtcblx0XHQmOjpiZWZvcmUsXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0bGVmdDogY2FsYygyICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKSk7XG5cdFx0XHRib3R0b206IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhlaWdodCkpO1xuXHRcdH1cblx0fVxuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF9hcnJvd19zZSB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdHJpZ2h0OiBjYWxjKDIgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhhbGYtd2lkdGgpKTtcblx0XHRcdGJvdHRvbTogY2FsYygtMSAqIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGVpZ2h0KSk7XG5cdFx0fVxuXHR9XG5cblx0Ji5jay1iYWxsb29uLXBhbmVsX2Fycm93X3NtZSB7XG5cdFx0Jjo6YmVmb3JlLFxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdHJpZ2h0OiAyNSU7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGNhbGMoMiAqIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGFsZi13aWR0aCkpO1xuXHRcdFx0Ym90dG9tOiBjYWxjKC0xICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oZWlnaHQpKTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfc213IHtcblx0XHQmOjpiZWZvcmUsXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0bGVmdDogMjUlO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGNhbGMoMiAqIHZhcigtLWNrLWJhbGxvb24tYXJyb3ctaGFsZi13aWR0aCkpO1xuXHRcdFx0Ym90dG9tOiBjYWxjKC0xICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oZWlnaHQpKTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfbm1lIHtcblx0XHQmOjpiZWZvcmUsXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0cmlnaHQ6IDI1JTtcblx0XHRcdG1hcmdpbi1yaWdodDogY2FsYygyICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKSk7XG5cdFx0XHR0b3A6IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhlaWdodCkpO1xuXHRcdH1cblx0fVxuXG5cdCYuY2stYmFsbG9vbi1wYW5lbF9hcnJvd19ubXcge1xuXHRcdCY6OmJlZm9yZSxcblx0XHQmOjphZnRlciB7XG5cdFx0XHRsZWZ0OiAyNSU7XG5cdFx0XHRtYXJnaW4tbGVmdDogY2FsYygyICogdmFyKC0tY2stYmFsbG9vbi1hcnJvdy1oYWxmLXdpZHRoKSk7XG5cdFx0XHR0b3A6IGNhbGMoLTEgKiB2YXIoLS1jay1iYWxsb29uLWFycm93LWhlaWdodCkpO1xuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEltcGxlbWVudHMgcm91bmRlZCBjb3JuZXIgaW50ZXJmYWNlIGZvciAuY2stcm91bmRlZC1jb3JuZXJzIGNsYXNzLlxuICpcbiAqIEBzZWUgJGNrLWJvcmRlci1yYWRpdXNcbiAqL1xuQGRlZmluZS1taXhpbiBjay1yb3VuZGVkLWNvcm5lcnMge1xuXHRib3JkZXItcmFkaXVzOiAwO1xuXG5cdEBuZXN0IC5jay1yb3VuZGVkLWNvcm5lcnMgJixcblx0Ji5jay1yb3VuZGVkLWNvcm5lcnMge1xuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWNrLWJvcmRlci1yYWRpdXMpO1xuXHRcdEBtaXhpbi1jb250ZW50O1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi8qKlxuICogQSBoZWxwZXIgdG8gY29tYmluZSBtdWx0aXBsZSBzaGFkb3dzLlxuICovXG5AZGVmaW5lLW1peGluIGNrLWJveC1zaGFkb3cgJHNoYWRvd0EsICRzaGFkb3dCOiAwIDAge1xuXHRib3gtc2hhZG93OiAkc2hhZG93QSwgJHNoYWRvd0I7XG59XG5cbi8qKlxuICogR2l2ZXMgYW4gZWxlbWVudCBhIGRyb3Agc2hhZG93IHNvIGl0IGxvb2tzIGxpa2UgYSBmbG9hdGluZyBwYW5lbC5cbiAqL1xuQGRlZmluZS1taXhpbiBjay1kcm9wLXNoYWRvdyB7XG5cdEBtaXhpbiBjay1ib3gtc2hhZG93IHZhcigtLWNrLWRyb3Atc2hhZG93KTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLmNrLWljb24ge1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC0tY2staWNvbi1zaXplOiBjYWxjKHZhcigtLWNrLWxpbmUtaGVpZ2h0LWJhc2UpICogdmFyKC0tY2stZm9udC1zaXplLW5vcm1hbCkpO1xufVxuXG4uY2suY2staWNvbiB7XG5cdHdpZHRoOiB2YXIoLS1jay1pY29uLXNpemUpO1xuXHRoZWlnaHQ6IHZhcigtLWNrLWljb24tc2l6ZSk7XG5cblx0LyogTXVsdGlwbGllZCBieSB0aGUgaGVpZ2h0IG9mIHRoZSBsaW5lIGluIFwicHhcIiBzaG91bGQgZ2l2ZSBTVkcgXCJ2aWV3cG9ydFwiIGRpbWVuc2lvbnMgKi9cblx0Zm9udC1zaXplOiAuODMzMzM1MDY5NGVtO1xuXG5cdGNvbG9yOiBpbmhlcml0O1xuXG5cdC8qIEluaGVyaXQgY3Vyc29yIHN0eWxlICgjNSkuICovXG5cdGN1cnNvcjogaW5oZXJpdDtcblxuXHQvKiBUaGlzIHdpbGwgcHJldmVudCBibHVycnkgaWNvbnMgb24gRmlyZWZveC4gU2VlICMzNDAuICovXG5cdHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cblx0JiAqIHtcblx0XHQvKiBJbmhlcml0IGN1cnNvciBzdHlsZSAoIzUpLiAqL1xuXHRcdGN1cnNvcjogaW5oZXJpdDtcblxuXHRcdC8qIEFsbG93cyBkeW5hbWljIGNvbG9yaW5nIG9mIHRoZSBpY29ucy4gKi9cblx0XHRjb2xvcjogaW5oZXJpdDtcblxuXHRcdCY6bm90KFtmaWxsXSkge1xuXHRcdFx0LyogTmVlZGVkIGJ5IEZGLiAqL1xuXHRcdFx0ZmlsbDogY3VycmVudENvbG9yO1xuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2suY2stdG9vbHRpcCxcbi5jay5jay10b29sdGlwIC5jay10b29sdGlwX190ZXh0OjphZnRlciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuXHQvKiBXaXRob3V0IHRoaXMsIGhvdmVyaW5nIHRoZSB0b29sdGlwIGNvdWxkIGtlZXAgaXQgdmlzaWJsZS4gKi9cblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0LyogVGhpcyBpcyB0byBnZXQgcmlkIG9mIGZsaWNrZXJpbmcgd2hlbiB0cmFuc2l0aW9uaW5nIG9wYWNpdHkgaW4gQ2hyb21lLlxuXHRJdCdzIHdlaXJkIGJ1dCBpdCB3b3Jrcy4gKi9cblx0LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5jay5jay10b29sdGlwIHtcblx0LyogVG9vbHRpcCBpcyBoaWRkZW4gYnkgZGVmYXVsdC4gKi9cblx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHRvcGFjaXR5OiAwO1xuXHRkaXNwbGF5OiBub25lO1xuXHR6LWluZGV4OiB2YXIoLS1jay16LW1vZGFsKTtcblxuXHQmIC5jay10b29sdGlwX190ZXh0IHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHQmOjphZnRlciB7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0d2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDA7XG5cdFx0fVxuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi9taXhpbnMvX3JvdW5kZWQuY3NzXCI7XG5cbjpyb290IHtcblx0LS1jay10b29sdGlwLWFycm93LXNpemU6IDVweDtcbn1cblxuLmNrLmNrLXRvb2x0aXAge1xuXHRsZWZ0OiA1MCU7XG5cblx0Lypcblx0ICogUHJldmVudCBibHVycnkgdG9vbHRpcHMgaW4gTG9EUEkgZW52aXJvbm1lbnRzLlxuXHQgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvMTgwMi5cblx0ICovXG5cdHRvcDogMDtcblxuXHQvKlxuXHQgKiBGb3IgdGhlIHRyYW5zaXRpb24gdG8gd29yaywgdGhlIHRvb2x0aXAgbXVzdCBiZSBjb250cm9sbGVkXG5cdCAqIHVzaW5nIHZpc2liaWxpdHkrb3BhY2l0eS4gQSBkZWxheSBwcmV2ZW50cyBhIFwidG9vbHRpcCBhdmFsYW5jaGVcIlxuXHQgKiBpLmUuIHdoZW4gc2Nhbm5pbmcgdGhlIHRvb2xiYXIgd2l0aCBtb3VzZSBjdXJzb3IuXG5cdCAqL1xuXHR0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlLWluLW91dCAuMnM7XG5cblx0JiAuY2stdG9vbHRpcF9fdGV4dCB7XG5cdFx0QG1peGluIGNrLXJvdW5kZWQtY29ybmVycztcblxuXHRcdGZvbnQtc2l6ZTogLjllbTtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci10b29sdGlwLXRleHQpO1xuXHRcdHBhZGRpbmc6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpIHZhcigtLWNrLXNwYWNpbmctbWVkaXVtKTtcblx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci10b29sdGlwLWJhY2tncm91bmQpO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRsZWZ0OiAtNTAlO1xuXG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Lypcblx0XHRcdCAqIEZvciB0aGUgdHJhbnNpdGlvbiB0byB3b3JrLCB0aGUgdG9vbHRpcCBtdXN0IGJlIGNvbnRyb2xsZWRcblx0XHRcdCAqIHVzaW5nIHZpc2liaWxpdHkrb3BhY2l0eS4gQSBkZWxheSBwcmV2ZW50cyBhIFwidG9vbHRpcCBhdmFsYW5jaGVcIlxuXHRcdFx0ICogaS5lLiB3aGVuIHNjYW5uaW5nIHRoZSB0b29sYmFyIHdpdGggbW91c2UgY3Vyc29yLlxuXHRcdFx0ICovXG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlLWluLW91dCAuMnM7XG5cdFx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBIGNsYXNzIHRoYXQgZGlzcGxheXMgdGhlIHRvb2x0aXAgc291dGggb2YgdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqICAgICAgIFtlbGVtZW50XVxuXHQgKiAgICAgICAgICAgXlxuXHQgKiAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiAgICAgfCAgVG9vbHRpcCAgfFxuXHQgKiAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKi9cblx0Ji5jay10b29sdGlwX3MsXG5cdCYuY2stdG9vbHRpcF9zdyxcblx0Ji5jay10b29sdGlwX3NlIHtcblx0XHRib3R0b206IGNhbGMoLTEgKiB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpKTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIDEwMCUgKTtcblxuXHRcdCYgLmNrLXRvb2x0aXBfX3RleHQ6OmFmdGVyIHtcblx0XHRcdC8qIDFweCBhZGRyZXNzZXMgZ2xpY2hlcyBpbiByZW5kZXJpbmcgY2F1c2luZyBnYXAgYmV0d2VlbiB0aGUgdHJpYW5nbGUgYW5kIHRoZSB0ZXh0ICovXG5cdFx0XHR0b3A6IGNhbGMoLTEgKiB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpICsgMXB4KTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggLTUwJSApO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB2YXIoLS1jay1jb2xvci10b29sdGlwLWJhY2tncm91bmQpIHRyYW5zcGFyZW50O1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiAwIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkgdmFyKC0tY2stdG9vbHRpcC1hcnJvdy1zaXplKSB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBIGNsYXNzIHRoYXQgZGlzcGxheXMgdGhlIHRvb2x0aXAgc291dGgtd2VzdCBvZiB0aGUgZWxlbWVudC5cblx0ICpcblx0ICogICAgICAgIFtlbGVtZW50XVxuXHQgKiAgICAgICAgICAgIF5cblx0ICogICstLS0tLS0tLS0tLStcblx0ICogIHwgIFRvb2x0aXAgIHxcblx0ICogICstLS0tLS0tLS0tLStcblx0ICovXG5cblx0Ji5jay10b29sdGlwX3N3IHtcblx0XHRyaWdodDogNTAlO1xuXHRcdGxlZnQ6IGF1dG87XG5cblx0XHQmIC5jay10b29sdGlwX190ZXh0IHtcblx0XHRcdGxlZnQ6IGF1dG87XG5cdFx0XHRyaWdodDogY2FsYyggLTIgKiB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpKTtcblx0XHR9XG5cblx0XHQmIC5jay10b29sdGlwX190ZXh0OjphZnRlciB7XG5cdFx0XHRsZWZ0OiBhdXRvO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEEgY2xhc3MgdGhhdCBkaXNwbGF5cyB0aGUgdG9vbHRpcCBzb3V0aC1lYXN0IG9mIHRoZSBlbGVtZW50LlxuXHQgKlxuXHQgKiAgW2VsZW1lbnRdXG5cdCAqICAgICAgXlxuXHQgKiAgICArLS0tLS0tLS0tLS0rXG5cdCAqICAgIHwgIFRvb2x0aXAgIHxcblx0ICogICAgKy0tLS0tLS0tLS0tK1xuXHQgKi9cblx0Ji5jay10b29sdGlwX3NlIHtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0cmlnaHQ6IGF1dG87XG5cblx0XHQmIC5jay10b29sdGlwX190ZXh0IHtcblx0XHRcdHJpZ2h0OiBhdXRvO1xuXHRcdFx0bGVmdDogY2FsYyggLTIgKiB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpKTtcblx0XHR9XG5cblx0XHQmIC5jay10b29sdGlwX190ZXh0OjphZnRlciB7XG5cdFx0XHRyaWdodDogYXV0bztcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoIDUwJSApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBIGNsYXNzIHRoYXQgZGlzcGxheXMgdGhlIHRvb2x0aXAgbm9ydGggb2YgdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqICAgICArLS0tLS0tLS0tLS0rXG5cdCAqICAgICB8ICBUb29sdGlwICB8XG5cdCAqICAgICArLS0tLS0tLS0tLS0rXG5cdCAqICAgICAgICAgICBWXG5cdCAqICAgICAgIFtlbGVtZW50XVxuXHQgKi9cblx0Ji5jay10b29sdGlwX24ge1xuXHRcdHRvcDogY2FsYygtMSAqIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTEwMCUgKTtcblxuXHRcdCYgLmNrLXRvb2x0aXBfX3RleHQ6OmFmdGVyIHtcblx0XHRcdGJvdHRvbTogY2FsYygtMSAqIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKCAtNTAlICk7XG5cdFx0XHRib3JkZXItY29sb3I6IHZhcigtLWNrLWNvbG9yLXRvb2x0aXAtYmFja2dyb3VuZCkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdFx0XHRib3JkZXItd2lkdGg6IHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkgdmFyKC0tY2stdG9vbHRpcC1hcnJvdy1zaXplKSAwIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEEgY2xhc3MgdGhhdCBkaXNwbGF5cyB0aGUgdG9vbHRpcCBlYXN0IG9mIHRoZSBlbGVtZW50LlxuXHQgKlxuXHQgKiAgICAgICAgICAgICAgICArLS0tLS0tLS0tLStcblx0ICogICAgW2VsZW1lbnRdIDwgfCAgIGVhc3QgICB8XG5cdCAqICAgICAgICAgICAgICAgICstLS0tLS0tLS0tK1xuXHQgKi9cblx0Ji5jay10b29sdGlwX2Uge1xuXHRcdGxlZnQ6IGNhbGMoMTAwJSArIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdHRvcDogNTAlO1xuXG5cdFx0JiAuY2stdG9vbHRpcF9fdGV4dCB7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKCAtNTAlICk7XG5cblx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0bGVmdDogY2FsYygtMSAqIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdFx0XHR0b3A6IGNhbGMoNTAlIC0gMSAqIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHZhcigtLWNrLWNvbG9yLXRvb2x0aXAtYmFja2dyb3VuZCkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG5cdFx0XHRcdGJvcmRlci13aWR0aDogdmFyKC0tY2stdG9vbHRpcC1hcnJvdy1zaXplKSB2YXIoLS1jay10b29sdGlwLWFycm93LXNpemUpIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkgMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQSBjbGFzcyB0aGF0IGRpc3BsYXlzIHRoZSB0b29sdGlwIHdlc3Qgb2YgdGhlIGVsZW1lbnQuXG5cdCAqXG5cdCAqICAgICstLS0tLS0tLS0tK1xuXHQgKiAgICB8ICAgd2VzdCAgIHwgPiBbZWxlbWVudF1cblx0ICogICAgKy0tLS0tLS0tLS0rXG5cdCAqL1xuXHQmLmNrLXRvb2x0aXBfdyB7XG5cdFx0cmlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdGxlZnQ6IGF1dG87XG5cdFx0dG9wOiA1MCU7XG5cblx0XHQmIC5jay10b29sdGlwX190ZXh0IHtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC01MCUgKTtcblxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRsZWZ0OiAxMDAlO1xuXHRcdFx0XHR0b3A6IGNhbGMoNTAlIC0gMSAqIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHZhcigtLWNrLWNvbG9yLXRvb2x0aXAtYmFja2dyb3VuZCk7XG5cdFx0XHRcdGJvcmRlci13aWR0aDogdmFyKC0tY2stdG9vbHRpcC1hcnJvdy1zaXplKSAwIHZhcigtLWNrLXRvb2x0aXAtYXJyb3ctc2l6ZSkgdmFyKC0tY2stdG9vbHRpcC1hcnJvdy1zaXplKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uL21peGlucy9fdW5zZWxlY3RhYmxlLmNzc1wiO1xuQGltcG9ydCBcIi4uL3Rvb2x0aXAvbWl4aW5zL190b29sdGlwLmNzc1wiO1xuXG4uY2suY2stYnV0dG9uLFxuYS5jay5jay1idXR0b24ge1xuXHRAbWl4aW4gY2stdW5zZWxlY3RhYmxlO1xuXHRAbWl4aW4gY2stdG9vbHRpcF9lbmFibGVkO1xuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogbGVmdDtcblxuXHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0Ji5jay1idXR0b25fd2l0aC10ZXh0IHtcblx0XHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR9XG5cdH1cblxuXHQvKiBDZW50ZXIgdGhlIGljb24gaG9yaXpvbnRhbGx5IGluIGEgYnV0dG9uIHdpdGhvdXQgdGV4dC4gKi9cblx0Jjpub3QoLmNrLWJ1dHRvbl93aXRoLXRleHQpICB7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQmOmhvdmVyIHtcblx0XHRAbWl4aW4gY2stdG9vbHRpcF92aXNpYmxlO1xuXHR9XG5cblx0LyogR2V0IHJpZCBvZiB0aGUgbmF0aXZlIGZvY3VzIG91dGxpbmUgYXJvdW5kIHRoZSB0b29sdGlwIHdoZW4gZm9jdXNlZCAoYnV0IG5vdCA6aG92ZXIpLiAqL1xuXHQmOmZvY3VzOm5vdCg6aG92ZXIpIHtcblx0XHRAbWl4aW4gY2stdG9vbHRpcF9kaXNhYmxlZDtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIE1ha2VzIGVsZW1lbnQgdW5zZWxlY3RhYmxlLlxuICovXG5AZGVmaW5lLW1peGluIGNrLXVuc2VsZWN0YWJsZSB7XG5cdC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdC1tcy11c2VyLXNlbGVjdDogbm9uZTtcblx0dXNlci1zZWxlY3Q6IG5vbmVcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBFbmFibGVzIHRoZSB0b29sdGlwLCB3aGljaCBpcyB0aGUgdG9vbHRpcCBpcyBpbiBET00gYnV0XG4gKiBub3QgeWV0IGRpc3BsYXllZC5cbiAqL1xuQGRlZmluZS1taXhpbiBjay10b29sdGlwX2VuYWJsZWQge1xuXHQmIC5jay10b29sdGlwIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdC8qXG5cdFx0ICogRG9uJ3QgZGlzcGxheSB0b29sdGlwcyBpbiBkZXZpY2VzIHdoaWNoIGRvbid0IHN1cHBvcnQgOmhvdmVyLlxuXHRcdCAqIEluIGZhY3QsIGl0J3MgYWxsIGFib3V0IGlPUywgd2hpY2ggZm9yY2VzIHVzZXIgdG8gY2xpY2sgVUkgZWxlbWVudHMgdHdpY2UgdG8gZXhlY3V0ZVxuXHRcdCAqIHRoZSBwcmltYXJ5IGFjdGlvbiwgd2hlbiB0b29sdGlwcyBhcmUgZW5hYmxlZC5cblx0XHQgKlxuXHRcdCAqIFE6IE9LLCBidXQgd2h5IG5vdCB0aGUgZm9sbG93aW5nIHF1ZXJ5P1xuXHRcdCAqXG5cdFx0ICogICBAbWVkaWEgKGhvdmVyKSB7XG5cdFx0ICogICAgICAgZGlzcGxheTogYmxvY2s7XG5cdFx0ICogICB9XG5cdFx0ICpcblx0XHQgKiBBOiBCZWNhdXNlIEZGIGRvZXMgbm90IHN1cHBvcnQgaXQgYW5kIGl0IHdvdWxkIGNvbXBsZXRlbHkgZGlzYWJsZSB0b29sdGlwc1xuXHRcdCAqIGluIHRoYXQgYnJvd3Nlci5cblx0XHQgKlxuXHRcdCAqIE1vcmUgaW4gaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvOTIwLlxuXHRcdCAqL1xuXHRcdEBtZWRpYSAoaG92ZXI6bm9uZSkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBEaXNhYmxlcyB0aGUgdG9vbHRpcCBtYWtpbmcgaXQgZGlzYXBwZWFyIGZyb20gRE9NLlxuICovXG5AZGVmaW5lLW1peGluIGNrLXRvb2x0aXBfZGlzYWJsZWQge1xuXHQmIC5jay10b29sdGlwIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG59XG5cbi8qKlxuICogU2hvd3MgdGhlIHRvb2x0aXAsIHdoaWNoIGlzIGFscmVhZHkgaW4gRE9NLlxuICogUmVxdWlyZXMgYGNrLXRvb2x0aXBfZW5hYmxlZGAgZmlyc3QuXG4gKi9cbkBkZWZpbmUtbWl4aW4gY2stdG9vbHRpcF92aXNpYmxlIHtcblx0JiAuY2stdG9vbHRpcCB7XG5cdFx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi9taXhpbnMvX2ZvY3VzLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fZGlzYWJsZWQuY3NzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uL21peGlucy9fYnV0dG9uLmNzc1wiO1xuQGltcG9ydCBcIkBja2VkaXRvci9ja2VkaXRvcjUtdWkvdGhlbWUvbWl4aW5zL19kaXIuY3NzXCI7XG5cbi5jay5jay1idXR0b24sXG5hLmNrLmNrLWJ1dHRvbiB7XG5cdEBtaXhpbiBjay1idXR0b24tY29sb3JzIC0tY2stY29sb3ItYnV0dG9uLWRlZmF1bHQ7XG5cdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Y3Vyc29yOiBkZWZhdWx0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRwYWRkaW5nOiB2YXIoLS1jay1zcGFjaW5nLXRpbnkpO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0LyogQSB2ZXJ5IGltcG9ydGFudCBwaWVjZSBvZiBzdHlsaW5nLiBHbyB0byB2YXJpYWJsZSBkZWNsYXJhdGlvbiB0byBsZWFybiBtb3JlLiAqL1xuXHRtaW4td2lkdGg6IHZhcigtLWNrLXVpLWNvbXBvbmVudC1taW4taGVpZ2h0KTtcblx0bWluLWhlaWdodDogdmFyKC0tY2stdWktY29tcG9uZW50LW1pbi1oZWlnaHQpO1xuXG5cdC8qIE5vcm1hbGl6ZSB0aGUgaGVpZ2h0IG9mIHRoZSBsaW5lLiBSZW1vdmluZyB0aGlzIHdpbGwgYnJlYWsgY29uc2lzdGVudCBoZWlnaHRcblx0YW1vbmcgdGV4dCBhbmQgdGV4dC1sZXNzIGJ1dHRvbnMgKHdpdGggaWNvbnMpLiAqL1xuXHRsaW5lLWhlaWdodDogMTtcblxuXHQvKiBFbmFibGUgZm9udCBzaXplIGluaGVyaXRhbmNlLCB3aGljaCBhbGxvd3MgZmx1aWQgVUkgc2NhbGluZy4gKi9cblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXG5cdC8qIEF2b2lkIGZsaWNrZXJpbmcgd2hlbiB0aGUgZm91Y3MgYm9yZGVyIHNob3dzIHVwLiAqL1xuXHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuXHQvKiBBcHBseSBzb21lIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBib3gtc2hhZG93IGFuZCBib3JkZXIuICovXG5cdHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjJzIGVhc2UtaW4tb3V0LCBib3JkZXIgLjJzIGVhc2UtaW4tb3V0O1xuXG5cdC8qIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtdGhlbWUtbGFyay9pc3N1ZXMvMTg5ICovXG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblxuXHQmOmFjdGl2ZSxcblx0Jjpmb2N1cyB7XG5cdFx0QG1peGluIGNrLWZvY3VzLXJpbmc7XG5cdFx0QG1peGluIGNrLWJveC1zaGFkb3cgdmFyKC0tY2stZm9jdXMtb3V0ZXItc2hhZG93KTtcblx0fVxuXG5cdC8qIEFsbG93IGljb24gY29sb3JpbmcgdXNpbmcgdGhlIHRleHQgXCJjb2xvclwiIHByb3BlcnR5LiAqL1xuXHQmIC5jay1idXR0b25fX2ljb24ge1xuXHRcdCYgdXNlLFxuXHRcdCYgdXNlICoge1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0fVxuXHR9XG5cblx0JiAuY2stYnV0dG9uX19sYWJlbCB7XG5cdFx0LyogRW5hYmxlIGZvbnQgc2l6ZSBpbmhlcml0YW5jZSwgd2hpY2ggYWxsb3dzIGZsdWlkIFVJIHNjYWxpbmcuICovXG5cdFx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRcdGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGN1cnNvcjogaW5oZXJpdDtcblxuXHRcdC8qIE11c3QgYmUgY29uc2lzdGVudCB3aXRoIC5jay1pY29uJ3MgdmVydGljYWwgYWxpZ24uIE90aGVyd2lzZSwgYnV0dG9ucyB3aXRoIGFuZFxuXHRcdHdpdGhvdXQgbGFiZWxzIChidXQgd2l0aCBpY29ucykgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgaW4gQ2hyb21lICovXG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuXHRcdEBtaXhpbiBjay1kaXIgbHRyIHtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0fVxuXG5cdFx0QG1peGluIGNrLWRpciBydGwge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0JiAuY2stYnV0dG9uX19rZXlzdHJva2Uge1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXG5cdFx0QG1peGluIGNrLWRpciBsdHIge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpO1xuXHRcdH1cblxuXHRcdEBtaXhpbiBjay1kaXIgcnRsIHtcblx0XHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY2stc3BhY2luZy1sYXJnZSk7XG5cdFx0fVxuXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0b3BhY2l0eTogLjc7XG5cdH1cblxuXHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXRoZW1lLWxhcmsvaXNzdWVzLzcwICovXG5cdCYuY2stZGlzYWJsZWQge1xuXHRcdCY6YWN0aXZlLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0LyogVGhlIGRpc2FibGVkIGJ1dHRvbiBzaG91bGQgaGF2ZSBhIHNsaWdodGx5IGxlc3MgdmlzaWJsZSBzaGFkb3cgd2hlbiBmb2N1c2VkLiAqL1xuXHRcdFx0QG1peGluIGNrLWJveC1zaGFkb3cgdmFyKC0tY2stZm9jdXMtZGlzYWJsZWQtb3V0ZXItc2hhZG93KTtcblx0XHR9XG5cblx0XHQmIC5jay1idXR0b25fX2ljb24ge1xuXHRcdFx0QG1peGluIGNrLWRpc2FibGVkO1xuXHRcdH1cblxuXHRcdC8qIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtdGhlbWUtbGFyay9pc3N1ZXMvOTggKi9cblx0XHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdEBtaXhpbiBjay1kaXNhYmxlZDtcblx0XHR9XG5cblx0XHQmIC5jay1idXR0b25fX2tleXN0cm9rZSB7XG5cdFx0XHRvcGFjaXR5OiAuMztcblx0XHR9XG5cdH1cblxuXHQmLmNrLWJ1dHRvbl93aXRoLXRleHQge1xuXHRcdHBhZGRpbmc6IHZhcigtLWNrLXNwYWNpbmctdGlueSkgdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cblx0XHQvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVzY2VuZGluZy1zcGVjaWZpY2l0eSAqL1xuXHRcdCYgLmNrLWJ1dHRvbl9faWNvbiB7XG5cdFx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiBjYWxjKC0xICogdmFyKC0tY2stc3BhY2luZy1zbWFsbCkpO1xuXHRcdFx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHRcdFx0fVxuXG5cdFx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogY2FsYygtMSAqIHZhcigtLWNrLXNwYWNpbmctc21hbGwpKTtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuY2stYnV0dG9uX3dpdGgta2V5c3Ryb2tlIHtcblx0XHQvKiBzdHlsZWxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVzY2VuZGluZy1zcGVjaWZpY2l0eSAqL1xuXHRcdCYgLmNrLWJ1dHRvbl9fbGFiZWwge1xuXHRcdFx0ZmxleC1ncm93OiAxO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgc3R5bGUgb2YgdGhlIGJ1dHRvbiB3aGljaCBpcyBjdXJyZW50bHkgb24sIGUuZy4gaXRzIGZlYXR1cmUgaXMgYWN0aXZlLiAqL1xuXHQmLmNrLW9uIHtcblx0XHRAbWl4aW4gY2stYnV0dG9uLWNvbG9ycyAtLWNrLWNvbG9yLWJ1dHRvbi1vbjtcblx0fVxuXG5cdCYuY2stYnV0dG9uLXNhdmUge1xuXHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci1idXR0b24tc2F2ZSk7XG5cdH1cblxuXHQmLmNrLWJ1dHRvbi1jYW5jZWwge1xuXHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci1idXR0b24tY2FuY2VsKTtcblx0fVxufVxuXG4vKiBBIHN0eWxlIG9mIHRoZSBidXR0b24gd2hpY2ggaGFuZGxlcyB0aGUgcHJpbWFyeSBhY3Rpb24uICovXG4uY2suY2stYnV0dG9uLWFjdGlvbixcbmEuY2suY2stYnV0dG9uLWFjdGlvbiB7XG5cdEBtaXhpbiBjay1idXR0b24tY29sb3JzIC0tY2stY29sb3ItYnV0dG9uLWFjdGlvbjtcblxuXHRjb2xvcjogdmFyKC0tY2stY29sb3ItYnV0dG9uLWFjdGlvbi10ZXh0KTtcbn1cblxuLmNrLmNrLWJ1dHRvbi1ib2xkLFxuYS5jay5jay1idXR0b24tYm9sZCB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEEgdmlzdWFsIHN0eWxlIG9mIGZvY3VzZWQgZWxlbWVudCdzIGJvcmRlci5cbiAqL1xuQGRlZmluZS1taXhpbiBjay1mb2N1cy1yaW5nIHtcblx0LyogRGlzYWJsZSBuYXRpdmUgb3V0bGluZS4gKi9cblx0b3V0bGluZTogbm9uZTtcblx0Ym9yZGVyOiB2YXIoLS1jay1mb2N1cy1yaW5nKVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEEgY2xhc3Mgd2hpY2ggaW5kaWNhdGVzIHRoYXQgYW4gZWxlbWVudCBob2xkaW5nIGl0IGlzIGRpc2FibGVkLlxuICovXG5AZGVmaW5lLW1peGluIGNrLWRpc2FibGVkIHtcblx0b3BhY2l0eTogdmFyKC0tY2stZGlzYWJsZWQtb3BhY2l0eSk7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi8qKlxuICogSW1wbGVtZW50cyBhIGJ1dHRvbiBvZiBnaXZlbiBiYWNrZ3JvdW5kIGNvbG9yLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAkYmFja2dyb3VuZCAtIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGJ1dHRvbi5cbiAqIEBwYXJhbSB7U3RyaW5nfSAkYm9yZGVyIC0gQm9yZGVyIGNvbG9yIG9mIHRoZSBidXR0b24uXG4gKi9cbkBkZWZpbmUtbWl4aW4gY2stYnV0dG9uLWNvbG9ycyAkcHJlZml4IHtcblx0YmFja2dyb3VuZDogdmFyKCQocHJlZml4KS1iYWNrZ3JvdW5kKTtcblxuXHQmOm5vdCguY2stZGlzYWJsZWQpIHtcblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQ6IHZhcigkKHByZWZpeCktaG92ZXItYmFja2dyb3VuZCk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0YmFja2dyb3VuZDogdmFyKCQocHJlZml4KS1hY3RpdmUtYmFja2dyb3VuZCk7XG5cdFx0XHRib3gtc2hhZG93OiBpbnNldCAwIDJweCAycHggdmFyKCQocHJlZml4KS1hY3RpdmUtc2hhZG93KTtcblx0XHR9XG5cdH1cblxuXHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXRoZW1lLWxhcmsvaXNzdWVzLzk4ICovXG5cdCYuY2stZGlzYWJsZWQge1xuXHRcdGJhY2tncm91bmQ6IHZhcigkKHByZWZpeCktZGlzYWJsZWQtYmFja2dyb3VuZCk7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGRlZmluZS1taXhpbiBjay1kaXIgJGRpcmVjdGlvbiB7XG5cdEBuZXN0IFtkaXI9XCIkKGRpcmVjdGlvbilcIl0gJiB7XG5cdFx0QG1peGluLWNvbnRlbnQ7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrIC5jay1iYWxsb29uLXJvdGF0b3JfX25hdmlnYXRpb24ge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLyogQnV0dG9ucyBpbnNpZGUgYSB0b29sYmFyIHNob3VsZCBiZSBjZW50ZXJlZCB3aGVuIHJvdGF0b3IgYmFyIGlzIHdpZGVyLlxuICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXVpL2lzc3Vlcy80OTVcbiAqL1xuLmNrIC5jay1iYWxsb29uLXJvdGF0b3JfX2NvbnRlbnQgLmNrLXRvb2xiYXIge1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrIC5jay1iYWxsb29uLXJvdGF0b3JfX25hdmlnYXRpb24ge1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci10b29sYmFyLWJhY2tncm91bmQpO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItdG9vbGJhci1ib3JkZXIpO1xuXHRwYWRkaW5nOiAwIHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXG5cdC8qIExldCdzIGtlZXAgc2ltaWxhciBhcHBlYXJhbmNlIHRvIGBjay10b29sYmFyYC4gKi9cblx0JiA+ICoge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdFx0bWFyZ2luLXRvcDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdFx0bWFyZ2luLWJvdHRvbTogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdH1cblxuXHQvKiBHaXZlcyBjb3VudGVyIG1vcmUgYnJlYXRoIHRoYW4gYnV0dG9ucy4gKi9cblx0JiAuY2stYmFsbG9vbi1yb3RhdG9yX19jb3VudGVyIHtcblx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpO1xuXG5cdFx0LyogV2UgbmVlZCB0byB1c2Ugc21hbGxlciBtYXJnaW4gYmVjYXVzZSBvZiBwcmV2aW91cyBidXR0b24ncyByaWdodCBtYXJnaW4uICovXG5cdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHR9XG59XG5cbi5jayAuY2stYmFsbG9vbi1yb3RhdG9yX19jb250ZW50IHtcblxuXHQvKiBEaXNhYmxlIGRlZmF1bHQgYW5ub3RhdGlvbiBzaGFkb3cgaW5zaWRlIHJvdGF0b3Igd2l0aCBmYWtlIHBhbmVscy4gKi9cblx0JiAuY2suY2stYW5ub3RhdGlvbi13cmFwcGVyIHtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jayAuY2stZmFrZS1wYW5lbCB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuXHQvKiBGYWtlIHBhbmVscyBzaG91bGQgYmUgcGxhY2VkIHVuZGVyIG1haW4gYmFsbG9vbiBjb250ZW50LiAqL1xuXHR6LWluZGV4OiBjYWxjKHZhcigtLWNrLXotbW9kYWwpIC0gMSk7XG59XG5cbi5jayAuY2stZmFrZS1wYW5lbCBkaXYge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi5jayAuY2stZmFrZS1wYW5lbCBkaXY6bnRoLWNoaWxkKCAxICkge1xuXHR6LWluZGV4OiAyO1xufVxuXG4uY2sgLmNrLWZha2UtcGFuZWwgZGl2Om50aC1jaGlsZCggMiApIHtcblx0ei1pbmRleDogMTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuXG46cm9vdCB7XG5cdC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC1ob3Jpem9udGFsOiA2cHg7XG5cdC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC12ZXJ0aWNhbDogNnB4O1xufVxuXG4vKiBMZXQncyB1c2UgYC5jay1iYWxsb29uLXBhbmVsYCBhcHBlYXJhbmNlLiBTZWU6IGJhbGxvb25wYW5lbC5jc3MuICovXG4uY2sgLmNrLWZha2UtcGFuZWwgZGl2IHtcblx0QG1peGluIGNrLWRyb3Atc2hhZG93O1xuXG5cdG1pbi1oZWlnaHQ6IDE1cHg7XG5cblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItcGFuZWwtYmFja2dyb3VuZCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNrLWNvbG9yLXBhbmVsLWJvcmRlcik7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWNrLWJvcmRlci1yYWRpdXMpO1xuXG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG59XG5cbi5jayAuY2stZmFrZS1wYW5lbCBkaXY6bnRoLWNoaWxkKCAxICkge1xuXHRtYXJnaW4tbGVmdDogdmFyKC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC1ob3Jpem9udGFsKTtcblx0bWFyZ2luLXRvcDogdmFyKC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC12ZXJ0aWNhbCk7XG59XG5cbi5jayAuY2stZmFrZS1wYW5lbCBkaXY6bnRoLWNoaWxkKCAyICkge1xuXHRtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1jay1iYWxsb29uLWZha2UtcGFuZWwtb2Zmc2V0LWhvcml6b250YWwpICogMik7XG5cdG1hcmdpbi10b3A6IGNhbGModmFyKC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC12ZXJ0aWNhbCkgKiAyKTtcbn1cbi5jayAuY2stZmFrZS1wYW5lbCBkaXY6bnRoLWNoaWxkKCAzICkge1xuXHRtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1jay1iYWxsb29uLWZha2UtcGFuZWwtb2Zmc2V0LWhvcml6b250YWwpICogMyk7XG5cdG1hcmdpbi10b3A6IGNhbGModmFyKC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC12ZXJ0aWNhbCkgKiAzKTtcbn1cblxuLyogSWYgYmFsbG9vbiBpcyBwb3NpdGlvbmVkIGFib3ZlIGVsZW1lbnQsIHdlIG5lZWQgdG8gbW92ZSBmYWtlIHBhbmVsIHRvIHRoZSB0b3AuICovXG4uY2sgLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfcyArIC5jay1mYWtlLXBhbmVsLFxuLmNrIC5jay1iYWxsb29uLXBhbmVsX2Fycm93X3NlICsgLmNrLWZha2UtcGFuZWwsXG4uY2sgLmNrLWJhbGxvb24tcGFuZWxfYXJyb3dfc3cgKyAuY2stZmFrZS1wYW5lbCB7XG5cdC0tY2stYmFsbG9vbi1mYWtlLXBhbmVsLW9mZnNldC12ZXJ0aWNhbDogLTZweDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uL3Rvb2x0aXAvbWl4aW5zL190b29sdGlwLmNzc1wiO1xuXG46cm9vdCB7XG5cdC0tY2stZHJvcGRvd24tbWF4LXdpZHRoOiA3NXZ3O1xufVxuXG4uY2suY2stZHJvcGRvd24ge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQmIC5jay1kcm9wZG93bl9fYXJyb3cge1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdHotaW5kZXg6IHZhcigtLWNrLXotZGVmYXVsdCk7XG5cdH1cblxuXHQvKiBEcm9wZG93biBidXR0b24gc2hvdWxkIHNwYW4gaG9yaXpvbnRhbGx5LCBlLmcuIGluIHZlcnRpY2FsIHRvb2xiYXJzICovXG5cdCYgLmNrLWJ1dHRvbi5jay1kcm9wZG93bl9fYnV0dG9uIHtcblx0XHR3aWR0aDogMTAwJTtcblxuXHRcdC8qIERpc2FibGUgbWFpbiBidXR0b24ncyB0b29sdGlwIHdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4uIE90aGVyd2lzZSB0aGUgcGFuZWwgbWF5XG5cdFx0cGFydGlhbGx5IGNvdmVyIHRoZSB0b29sdGlwICovXG5cdFx0Ji5jay1vbiB7XG5cdFx0XHRAbWl4aW4gY2stdG9vbHRpcF9kaXNhYmxlZDtcblx0XHR9XG5cdH1cblxuXHQmIC5jay1kcm9wZG93bl9fcGFuZWwge1xuXHRcdC8qIFRoaXMgaXMgdG8gZ2V0IHJpZCBvZiBmbGlja2VyaW5nIHdoZW4gdGhlIHRvb2x0aXAgaXMgc2hvd24gdW5kZXIgdGhlIHBhbmVsLFxuXHRcdHdoaWNoIGxvb2tzIGxpa2UgdGhlIHBhbmVsIG1vdmVzIHZlcnRpY2FsbHkgYSBwaXhlbCBkb3duIGFuZCB1cC4gKi9cblx0XHQtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcblxuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0ei1pbmRleDogdmFyKC0tY2stei1tb2RhbCk7XG5cdFx0bWF4LXdpZHRoOiB2YXIoLS1jay1kcm9wZG93bi1tYXgtd2lkdGgpO1xuXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWwtdmlzaWJsZSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0fVxuXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbmUsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbncsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbixcblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9ubXcsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbm1lIHtcblx0XHRcdGJvdHRvbTogMTAwJTtcblx0XHR9XG5cblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9zZSxcblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9zdyxcblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9zbXcsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfc21lLFxuXHRcdCYuY2stZHJvcGRvd25fX3BhbmVsX3Mge1xuXHRcdFx0Lypcblx0XHRcdCAqIFVzaW5nIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoIDAsIDEwMCUsIDAgKSBjYXVzZXMgYmx1cnJ5IGRyb3Bkb3duIG9uIENocm9tZSA2Ny03OCsgb24gbm9uLXJldGluYSBkaXNwbGF5cy5cblx0XHRcdCAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy8xMDUzLlxuXHRcdFx0ICovXG5cdFx0XHR0b3A6IDEwMCU7XG5cdFx0XHRib3R0b206IGF1dG87XG5cdFx0fVxuXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbmUsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfc2Uge1xuXHRcdFx0bGVmdDogMHB4O1xuXHRcdH1cblxuXHRcdCYuY2stZHJvcGRvd25fX3BhbmVsX253LFxuXHRcdCYuY2stZHJvcGRvd25fX3BhbmVsX3N3IHtcblx0XHRcdHJpZ2h0OiAwcHg7XG5cdFx0fVxuXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfcyxcblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9uIHtcblx0XHRcdC8qIFBvc2l0aW9uaW5nIHBhbmVscyByZWxhdGl2ZSB0byB0aGUgY2VudGVyIG9mIHRoZSBidXR0b24gKi9cblx0XHRcdGxlZnQ6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0XHR9XG5cblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9ubXcsXG5cdFx0Ji5jay1kcm9wZG93bl9fcGFuZWxfc213IHtcblx0XHRcdC8qIFBvc2l0aW9uaW5nIHBhbmVscyByZWxhdGl2ZSB0byB0aGUgbWlkZGxlLXdlc3Qgb2YgdGhlIGJ1dHRvbiAqL1xuXHRcdFx0bGVmdDogNzUlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC03NSUpO1xuXHRcdH1cblxuXHRcdCYuY2stZHJvcGRvd25fX3BhbmVsX25tZSxcblx0XHQmLmNrLWRyb3Bkb3duX19wYW5lbF9zbWUge1xuXHRcdFx0LyogUG9zaXRpb25pbmcgcGFuZWxzIHJlbGF0aXZlIHRvIHRoZSBtaWRkbGUtZWFzdCBvZiB0aGUgYnV0dG9uICovXG5cdFx0XHRsZWZ0OiAyNSU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTI1JSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qXG4gKiBUb29sYmFyIGRyb3Bkb3duIHBhbmVscyBzaG91bGQgYmUgYWx3YXlzIGFib3ZlIHRoZSBVSSAoZWcuIG90aGVyIGRyb3Bkb3duIHBhbmVscykgZnJvbSB0aGUgZWRpdG9yJ3MgY29udGVudC5cbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy83ODc0XG4gKi9cbi5jay5jay10b29sYmFyIC5jay1kcm9wZG93bl9fcGFuZWwge1xuXHR6LWluZGV4OiBjYWxjKCB2YXIoLS1jay16LW1vZGFsKSArIDEgKTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fcm91bmRlZC5jc3NcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9taXhpbnMvX2Rpc2FibGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuQGltcG9ydCBcIkBja2VkaXRvci9ja2VkaXRvcjUtdWkvdGhlbWUvbWl4aW5zL19kaXIuY3NzXCI7XG5cbjpyb290IHtcblx0LS1jay1kcm9wZG93bi1hcnJvdy1zaXplOiBjYWxjKDAuNSAqIHZhcigtLWNrLWljb24tc2l6ZSkpO1xufVxuXG4uY2suY2stZHJvcGRvd24ge1xuXHQvKiBFbmFibGUgZm9udCBzaXplIGluaGVyaXRhbmNlLCB3aGljaCBhbGxvd3MgZmx1aWQgVUkgc2NhbGluZy4gKi9cblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXG5cdCYgLmNrLWRyb3Bkb3duX19hcnJvdyB7XG5cdFx0d2lkdGg6IHZhcigtLWNrLWRyb3Bkb3duLWFycm93LXNpemUpO1xuXHR9XG5cblx0QG1peGluIGNrLWRpciBsdHIge1xuXHRcdCYgLmNrLWRyb3Bkb3duX19hcnJvdyB7XG5cdFx0XHRyaWdodDogdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cblx0XHRcdC8qIEEgc3BhY2UgdG8gYWNjb21tb2RhdGUgdGhlIHRyaWFuZ2xlLiAqL1xuXHRcdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpO1xuXHRcdH1cblx0fVxuXG5cdEBtaXhpbiBjay1kaXIgcnRsIHtcblx0XHQmIC5jay1kcm9wZG93bl9fYXJyb3cge1xuXHRcdFx0bGVmdDogdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cblx0XHRcdC8qIEEgc3BhY2UgdG8gYWNjb21tb2RhdGUgdGhlIHRyaWFuZ2xlLiAqL1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWRpc2FibGVkIC5jay1kcm9wZG93bl9fYXJyb3cge1xuXHRcdEBtaXhpbiBjay1kaXNhYmxlZDtcblx0fVxuXG5cdCYgLmNrLWJ1dHRvbi5jay1kcm9wZG93bl9fYnV0dG9uIHtcblx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHQmOm5vdCguY2stYnV0dG9uX3dpdGgtdGV4dCkge1xuXHRcdFx0XHQvKiBNYWtlIHN1cmUgZHJvcGRvd25zIHdpdGgganVzdCBhbiBpY29uIGhhdmUgdGhlIHJpZ2h0IGlubmVyIHNwYWNpbmcgKi9cblx0XHRcdFx0cGFkZGluZy1sZWZ0OiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHQmOm5vdCguY2stYnV0dG9uX3dpdGgtdGV4dCkge1xuXHRcdFx0XHQvKiBNYWtlIHN1cmUgZHJvcGRvd25zIHdpdGgganVzdCBhbiBpY29uIGhhdmUgdGhlIHJpZ2h0IGlubmVyIHNwYWNpbmcgKi9cblx0XHRcdFx0cGFkZGluZy1yaWdodDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogIzIzICovXG5cdFx0JiAuY2stYnV0dG9uX19sYWJlbCB7XG5cdFx0XHR3aWR0aDogN2VtO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdC8qIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtdGhlbWUtbGFyay9pc3N1ZXMvNzAgKi9cblx0XHQmLmNrLWRpc2FibGVkIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdEBtaXhpbiBjay1kaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy84MTYgKi9cblx0XHQmLmNrLW9uIHtcblx0XHRcdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG5cdFx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcblx0XHR9XG5cblx0XHQmLmNrLWRyb3Bkb3duX19idXR0b25fbGFiZWwtd2lkdGhfYXV0byAuY2stYnV0dG9uX19sYWJlbCB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cblx0XHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy84Njk5ICovXG5cdFx0Ji5jay1vZmY6YWN0aXZlLFxuXHRcdCYuY2stb246YWN0aXZlIHtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRcblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRAbWl4aW4gY2stYm94LXNoYWRvdyB2YXIoLS1jay1mb2N1cy1vdXRlci1zaGFkb3cpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4uY2suY2stZHJvcGRvd25fX3BhbmVsIHtcblx0QG1peGluIGNrLXJvdW5kZWQtY29ybmVycztcblx0QG1peGluIGNrLWRyb3Atc2hhZG93O1xuXG5cdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWRyb3Bkb3duLXBhbmVsLWJhY2tncm91bmQpO1xuXHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1kcm9wZG93bi1wYW5lbC1ib3JkZXIpO1xuXHRib3R0b206IDA7XG5cblx0LyogTWFrZSBzdXJlIHRoZSBwYW5lbCBpcyBhdCBsZWFzdCBhcyB3aWRlIGFzIHRoZSBkcm9wLWRvd24ncyBidXR0b24uICovXG5cdG1pbi13aWR0aDogMTAwJTtcblxuXHQvKiBEaXNhYmxlZCBjb3JuZXIgYm9yZGVyIHJhZGl1cyB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIC5kcm9wZG93bl9fYnV0dG9uXG5cdGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzgxNiAqL1xuXHQmLmNrLWRyb3Bkb3duX19wYW5lbF9zZSB7XG5cdFx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcblx0fVxuXG5cdCYuY2stZHJvcGRvd25fX3BhbmVsX3N3IHtcblx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcblx0fVxuXG5cdCYuY2stZHJvcGRvd25fX3BhbmVsX25lIHtcblx0XHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuXHR9XG5cblx0Ji5jay1kcm9wZG93bl9fcGFuZWxfbncge1xuXHRcdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCIuLi8uLi9taXhpbnMvX3Vuc2VsZWN0YWJsZS5jc3NcIjtcblxuLmNrLmNrLWxpc3Qge1xuXHRAbWl4aW4gY2stdW5zZWxlY3RhYmxlO1xuXG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0JiAuY2stbGlzdF9faXRlbSxcblx0JiAuY2stbGlzdF9fc2VwYXJhdG9yIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdC8qIE1ha2Ugc3VyZSB0aGF0IHdoYXRldmVyIGNoaWxkIG9mIHRoZSBsaXN0IGl0ZW0gZ2V0cyBmb2N1cywgaXQgcmVtYWlucyBvbiB0aGVcblx0dG9wLiBUaGFua3MgdG8gdGhhdCwgc3R5bGVzIGxpa2UgYm94LXNoYWRvdywgb3V0bGluZSwgZXRjLiBhcmUgbm90IG1hc2tlZCBieVxuXHRhZGphY2VudCBsaXN0IGl0ZW1zLiAqL1xuXHQmIC5jay1saXN0X19pdGVtID4gKjpmb2N1cyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHotaW5kZXg6IHZhcigtLWNrLXotZGVmYXVsdCk7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fZGlzYWJsZWQuY3NzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuXG4uY2suY2stbGlzdCB7XG5cdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cblx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1saXN0LWJhY2tncm91bmQpO1xufVxuXG4uY2suY2stbGlzdF9faXRlbSB7XG5cdGN1cnNvcjogZGVmYXVsdDtcblx0bWluLXdpZHRoOiAxMmVtO1xuXG5cdCYgLmNrLWJ1dHRvbiB7XG5cdFx0bWluLWhlaWdodDogdW5zZXQ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRib3JkZXItcmFkaXVzOiAwO1xuXG5cdFx0LyogTGlzdCBpdGVtcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBoZWlnaHQuIFVzZSBhYnNvbHV0ZSB1bml0cyB0byBtYWtlIHN1cmUgaXQgaXMgc29cblx0XHQgICBiZWNhdXNlIGUuZy4gZGlmZmVyZW50IGhlYWRpbmcgc3R5bGVzIG1heSBoYXZlIGRpZmZlcmVudCBoZWlnaHRcblx0XHQgICBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LWhlYWRpbmcvaXNzdWVzLzYzICovXG5cdFx0cGFkZGluZzpcblx0XHRcdGNhbGMoLjIgKiB2YXIoLS1jay1saW5lLWhlaWdodC1iYXNlKSAqIHZhcigtLWNrLWZvbnQtc2l6ZS1iYXNlKSlcblx0XHRcdGNhbGMoLjQgKiB2YXIoLS1jay1saW5lLWhlaWdodC1iYXNlKSAqIHZhcigtLWNrLWZvbnQtc2l6ZS1iYXNlKSk7XG5cblx0XHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdC8qIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtaGVhZGluZy9pc3N1ZXMvNjMgKi9cblx0XHRcdGxpbmUtaGVpZ2h0OiBjYWxjKDEuMiAqIHZhcigtLWNrLWxpbmUtaGVpZ2h0LWJhc2UpICogdmFyKC0tY2stZm9udC1zaXplLWJhc2UpKTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdH1cblxuXHRcdCYuY2stb24ge1xuXHRcdFx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItbGlzdC1idXR0b24tb24tYmFja2dyb3VuZCk7XG5cdFx0XHRjb2xvcjogdmFyKC0tY2stY29sb3ItbGlzdC1idXR0b24tb24tdGV4dCk7XG5cblx0XHRcdCY6YWN0aXZlIHtcblx0XHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3Zlcjpub3QoLmNrLWRpc2FibGVkKSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWxpc3QtYnV0dG9uLW9uLWJhY2tncm91bmQtZm9jdXMpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmZvY3VzOm5vdCguY2stZGlzYWJsZWQpIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiB2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KC5jay1kaXNhYmxlZCkge1xuXHRcdFx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItbGlzdC1idXR0b24taG92ZXItYmFja2dyb3VuZCk7XG5cdFx0fVxuXHR9XG5cblx0LyogSXQncyB1bm5lY2Vzc2FyeSB0byBjaGFuZ2UgdGhlIGJhY2tncm91bmQvdGV4dCBvZiBhIHN3aXRjaCB0b2dnbGU7IGl0IGhhcyBkaWZmZXJlbnQgd2F5c1xuXHRvZiBjb252ZXlpbmcgaXRzIHN0YXRlIChsaWtlIHRoZSBzd2l0Y2hlcikgKi9cblx0JiAuY2stc3dpdGNoYnV0dG9uIHtcblx0XHQmLmNrLW9uIHtcblx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWxpc3QtYmFja2dyb3VuZCk7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblxuXHRcdFx0Jjpob3Zlcjpub3QoLmNrLWRpc2FibGVkKSB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWxpc3QtYnV0dG9uLWhvdmVyLWJhY2tncm91bmQpO1xuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLmNrLmNrLWxpc3RfX3NlcGFyYXRvciB7XG5cdGhlaWdodDogMXB4O1xuXHR3aWR0aDogMTAwJTtcblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2suY2stYnV0dG9uLmNrLXN3aXRjaGJ1dHRvbiB7XG5cdCYgLmNrLWJ1dHRvbl9fdG9nZ2xlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdCYgLmNrLWJ1dHRvbl9fdG9nZ2xlX19pbm5lciB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fcm91bmRlZC5jc3NcIjtcbkBpbXBvcnQgXCIuLi8uLi8uLi9taXhpbnMvX2Rpc2FibGVkLmNzc1wiO1xuQGltcG9ydCBcIkBja2VkaXRvci9ja2VkaXRvcjUtdWkvdGhlbWUvbWl4aW5zL19kaXIuY3NzXCI7XG5cbi8qIE5vdGU6IFRvIGF2b2lkIHJlbmRlcmluZyBpc3N1ZXMgKGFsaWFzaW5nKSBidXQgdG8gcHJlc2VydmUgdGhlIHJlc3BvbnNpdmUgbmF0dXJlXG5vZiB0aGUgY29tcG9uZW50LCBmbG9hdGluZ+KAk3BvaW50IG51bWJlcnMgaGF2ZSBiZWVuIHVzZWQgd2hpY2gsIGZvciB0aGUgZGVmYXVsdCBmb250IHNpemVcbihzZWU6IC0tY2stZm9udC1zaXplLWJhc2UpLCB3aWxsIGdlbmVyYXRlIHNpbXBsZSBpbnRlZ2Vycy4gKi9cbjpyb290IHtcblx0LyogMzRweCBhdCAxM3B4IGZvbnQtc2l6ZSAqL1xuXHQtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLXdpZHRoOiAyLjYxNTM4NDYxNTRlbTtcblx0LyogMTRweCBhdCAxM3B4IGZvbnQtc2l6ZSAqL1xuXHQtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLWlubmVyLXNpemU6IDEuMDc2OTIzMDc2OWVtO1xuXHQtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLXNwYWNpbmc6IDFweDtcblx0LS1jay1zd2l0Y2gtYnV0dG9uLXRyYW5zbGF0aW9uOiBjYWxjKFxuXHRcdHZhcigtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLXdpZHRoKSAtXG5cdFx0dmFyKC0tY2stc3dpdGNoLWJ1dHRvbi10b2dnbGUtaW5uZXItc2l6ZSkgLVxuXHRcdDIgKiB2YXIoLS1jay1zd2l0Y2gtYnV0dG9uLXRvZ2dsZS1zcGFjaW5nKVxuXHQpO1xufVxuXG4uY2suY2stYnV0dG9uLmNrLXN3aXRjaGJ1dHRvbiB7XG5cdCYgLmNrLWJ1dHRvbl9fbGFiZWwge1xuXHRcdEBtaXhpbiBjay1kaXIgbHRyIHtcblx0XHRcdC8qIFNlcGFyYXRlIHRoZSBsYWJlbCBmcm9tIHRoZSBzd2l0Y2ggKi9cblx0XHRcdG1hcmdpbi1yaWdodDogY2FsYygyICogdmFyKC0tY2stc3BhY2luZy1sYXJnZSkpO1xuXHRcdH1cblxuXHRcdEBtaXhpbiBjay1kaXIgcnRsIHtcblx0XHRcdC8qIFNlcGFyYXRlIHRoZSBsYWJlbCBmcm9tIHRoZSBzd2l0Y2ggKi9cblx0XHRcdG1hcmdpbi1sZWZ0OiBjYWxjKDIgKiB2YXIoLS1jay1zcGFjaW5nLWxhcmdlKSk7XG5cdFx0fVxuXHR9XG5cblx0JiAuY2stYnV0dG9uX190b2dnbGUge1xuXHRcdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cblx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHQvKiBNYWtlIHN1cmUgdGhlIHRvZ2dsZSBpcyBhbHdheXMgdG8gdGhlIHJpZ2h0IGFzIGZhciBhcyBwb3NzaWJsZS4gKi9cblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdH1cblxuXHRcdEBtaXhpbiBjay1kaXIgcnRsIHtcblx0XHRcdC8qIE1ha2Ugc3VyZSB0aGUgdG9nZ2xlIGlzIGFsd2F5cyB0byB0aGUgbGVmdCBhcyBmYXIgYXMgcG9zc2libGUuICovXG5cdFx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0fVxuXG5cdFx0LyogR2VudGx5IGFuaW1hdGUgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRvZ2dsZSBzd2l0Y2ggKi9cblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDQwMG1zIGVhc2U7XG5cblx0XHR3aWR0aDogdmFyKC0tY2stc3dpdGNoLWJ1dHRvbi10b2dnbGUtd2lkdGgpO1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXN3aXRjaC1idXR0b24tb2ZmLWJhY2tncm91bmQpO1xuXG5cdFx0JiAuY2stYnV0dG9uX190b2dnbGVfX2lubmVyIHtcblx0XHRcdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnMge1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiBjYWxjKC41ICogdmFyKC0tY2stYm9yZGVyLXJhZGl1cykpO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBMZWF2ZSBzb21lIHRpbnkgYml0IG9mIHNwYWNlIGFyb3VuZCB0aGUgaW5uZXIgcGFydCBvZiB0aGUgc3dpdGNoICovXG5cdFx0XHRtYXJnaW46IHZhcigtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLXNwYWNpbmcpO1xuXHRcdFx0d2lkdGg6IHZhcigtLWNrLXN3aXRjaC1idXR0b24tdG9nZ2xlLWlubmVyLXNpemUpO1xuXHRcdFx0aGVpZ2h0OiB2YXIoLS1jay1zd2l0Y2gtYnV0dG9uLXRvZ2dsZS1pbm5lci1zaXplKTtcblx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXN3aXRjaC1idXR0b24taW5uZXItYmFja2dyb3VuZCk7XG5cblx0XHRcdC8qIEdlbnRseSBhbmltYXRlIHRoZSBpbm5lciBwYXJ0IG9mIHRoZSB0b2dnbGUgc3dpdGNoICovXG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMzAwbXMgZWFzZTtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXN3aXRjaC1idXR0b24tb2ZmLWhvdmVyLWJhY2tncm91bmQpO1xuXG5cdFx0XHQmIC5jay1idXR0b25fX3RvZ2dsZV9faW5uZXIge1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCA1cHggdmFyKC0tY2stY29sb3Itc3dpdGNoLWJ1dHRvbi1pbm5lci1zaGFkb3cpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdCYuY2stZGlzYWJsZWQgLmNrLWJ1dHRvbl9fdG9nZ2xlIHtcblx0XHRAbWl4aW4gY2stZGlzYWJsZWQ7XG5cdH1cblxuXHQmLmNrLW9uIC5jay1idXR0b25fX3RvZ2dsZSB7XG5cdFx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3Itc3dpdGNoLWJ1dHRvbi1vbi1iYWNrZ3JvdW5kKTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3Itc3dpdGNoLWJ1dHRvbi1vbi1ob3Zlci1iYWNrZ3JvdW5kKTtcblx0XHR9XG5cblx0XHQmIC5jay1idXR0b25fX3RvZ2dsZV9faW5uZXIge1xuXHRcdFx0Lypcblx0XHRcdCAqIE1vdmUgdGhlIHRvZ2dsZSBzd2l0Y2ggdG8gdGhlIHJpZ2h0LiBJdCB3aWxsIGJlIGFuaW1hdGVkLlxuXHRcdFx0ICovXG5cdFx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggdmFyKCAtLWNrLXN3aXRjaC1idXR0b24tdHJhbnNsYXRpb24gKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCggY2FsYyggLTEgKiB2YXIoIC0tY2stc3dpdGNoLWJ1dHRvbi10cmFuc2xhdGlvbiApICkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuOnJvb3Qge1xuXHQtLWNrLXRvb2xiYXItZHJvcGRvd24tbWF4LXdpZHRoOiA2MHZ3O1xufVxuXG4uY2suY2stdG9vbGJhci1kcm9wZG93biA+IC5jay1kcm9wZG93bl9fcGFuZWwge1xuXHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy81NTg2ICovXG5cdHdpZHRoOiBtYXgtY29udGVudDtcblx0bWF4LXdpZHRoOiB2YXIoLS1jay10b29sYmFyLWRyb3Bkb3duLW1heC13aWR0aCk7XG5cblx0JiAuY2stYnV0dG9uIHtcblx0XHQmOmZvY3VzIHtcblx0XHRcdHotaW5kZXg6IGNhbGModmFyKC0tY2stei1kZWZhdWx0KSArIDEpO1xuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2suY2stdG9vbGJhci1kcm9wZG93biAuY2stdG9vbGJhciB7XG5cdGJvcmRlcjogMDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLypcbiAqIE5vdGU6IFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgd2lyZWZyYW1lIHN0eWxlcyBvbmx5LiBCdXQgc2luY2UgdGhlcmUgYXJlIG5vIHN1Y2ggc3R5bGVzLFxuICogaXQgYWN0cyBhcyBhIG1lc3NhZ2UgdG8gdGhlIGJ1aWxkZXIgdGVsbGluZyB0aGF0IGl0IHNob3VsZCBsb29rIGZvciB0aGUgY29ycmVzcG9uZGluZyBzdHlsZXNcbiAqICoqaW4gdGhlIHRoZW1lKiogd2hlbiBjb21waWxpbmcgdGhlIGVkaXRvci5cbiAqL1xuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuXG4uY2suY2stZHJvcGRvd24gLmNrLWRyb3Bkb3duX19wYW5lbCAuY2stbGlzdCB7XG5cdC8qIERpc2FibGVkIHJhZGl1cyBvZiB0b3AtbGVmdCBib3JkZXIgdG8gYmUgY29uc2lzdGVudCB3aXRoIC5kcm9wZG93bl9fYnV0dG9uXG5cdGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzgxNiAqL1xuXHRAbWl4aW4gY2stcm91bmRlZC1jb3JuZXJzIHtcblx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHR9XG5cblx0LyogTWFrZSBzdXJlIHRoZSBidXR0b24gYmVsb25naW5nIHRvIHRoZSBmaXJzdC9sYXN0IGNoaWxkIG9mIHRoZSBsaXN0IGdvZXMgd2VsbCB3aXRoIHRoZVxuXHRib3JkZXIgcmFkaXVzIG9mIHRoZSBlbnRpcmUgcGFuZWwuICovXG5cdCYgLmNrLWxpc3RfX2l0ZW0ge1xuXHRcdCY6Zmlyc3QtY2hpbGQgLmNrLWJ1dHRvbiB7XG5cdFx0XHRAbWl4aW4gY2stcm91bmRlZC1jb3JuZXJzIHtcblx0XHRcdFx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0JjpsYXN0LWNoaWxkIC5jay1idXR0b24ge1xuXHRcdFx0QG1peGluIGNrLXJvdW5kZWQtY29ybmVycyB7XG5cdFx0XHRcdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG5cdFx0XHRcdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vbWl4aW5zL191bnNlbGVjdGFibGUuY3NzXCI7XG5cbi5jay5jay10b29sYmFyIHtcblx0QG1peGluIGNrLXVuc2VsZWN0YWJsZTtcblxuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0JiA+IC5jay10b29sYmFyX19pdGVtcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWZsb3c6IHJvdyB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC1ncm93OiAxO1xuXG5cdH1cblxuXHQmIC5jay5jay10b29sYmFyX19zZXBhcmF0b3Ige1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdC8qXG5cdFx0ICogQSBsZWFkaW5nIG9yIHRyYWlsaW5nIHNlcGFyYXRvciBtYWtlcyBubyBzZW5zZSAoc2VwYXJhdGVzIGZyb20gbm90aGluZyBvbiBvbmUgc2lkZSkuXG5cdFx0ICogRm9yIGluc3RhbmNlLCBpdCBjYW4gaGFwcGVuIHdoZW4gdG9vbGJhciBpdGVtcyAoYWxzbyBzZXBhcmF0b3JzKSBhcmUgZ2V0dGluZyBncm91cGVkIG9uZSBieSBvbmUgYW5kXG5cdFx0ICogbW92ZWQgdG8gYW5vdGhlciB0b29sYmFyIGluIHRoZSBkcm9wZG93bi5cblx0XHQgKi9cblx0XHQmOmZpcnN0LWNoaWxkLFxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdCYgLmNrLXRvb2xiYXJfX2xpbmUtYnJlYWsge1xuXHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdH1cblxuXHQmLmNrLXRvb2xiYXJfZ3JvdXBpbmcgPiAuY2stdG9vbGJhcl9faXRlbXMge1xuXHRcdGZsZXgtd3JhcDogbm93cmFwO1xuXHR9XG5cblx0Ji5jay10b29sYmFyX3ZlcnRpY2FsID4gLmNrLXRvb2xiYXJfX2l0ZW1zIHtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHR9XG5cblx0Ji5jay10b29sYmFyX2Zsb2F0aW5nID4gLmNrLXRvb2xiYXJfX2l0ZW1zIHtcblx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0fVxuXG5cdCYgPiAuY2suY2stdG9vbGJhcl9fZ3JvdXBlZC1kcm9wZG93biB7XG5cdFx0JiA+IC5jay1kcm9wZG93bl9fYnV0dG9uIC5jay1kcm9wZG93bl9fYXJyb3cge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fcm91bmRlZC5jc3NcIjtcbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fZGlyLmNzc1wiO1xuXG4uY2suY2stdG9vbGJhciB7XG5cdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItdG9vbGJhci1iYWNrZ3JvdW5kKTtcblx0cGFkZGluZzogMCB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0Ym9yZGVyOiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItdG9vbGJhci1ib3JkZXIpO1xuXG5cdCYgLmNrLmNrLXRvb2xiYXJfX3NlcGFyYXRvciB7XG5cdFx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0XHR3aWR0aDogMXB4O1xuXHRcdG1pbi13aWR0aDogMXB4O1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXRvb2xiYXItYm9yZGVyKTtcblxuXHRcdC8qXG5cdFx0ICogVGhlc2UgbWFyZ2lucyBtYWtlIHRoZSBzZXBhcmF0b3JzIGxvb2sgYmV0dGVyIGluIGJhbGxvb24gdG9vbGJhcnMgKHdoZW4gYWxpZ25lZCB3aXRoIHRoZSBcInRpcFwiKS5cblx0XHQgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvNzQ5My5cblx0XHQgKi9cblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0XHRtYXJnaW4tYm90dG9tOiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0fVxuXG5cdCYgLmNrLXRvb2xiYXJfX2xpbmUtYnJlYWsge1xuXHRcdGhlaWdodDogMDtcblx0fVxuXG5cdCYgPiAuY2stdG9vbGJhcl9faXRlbXMge1xuXHRcdCYgPiAqOm5vdCguY2stdG9vbGJhcl9fbGluZS1icmVhaykge1xuXHRcdFx0LyogKCMxMSkgU2VwYXJhdGUgdG9vbGJhciBpdGVtcy4gKi9cblx0XHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdFx0fVxuXG5cdFx0LyogRG9uJ3QgZGlzcGxheSBhIHNlcGFyYXRvciBhZnRlciBhbiBlbXB0eSBpdGVtcyBjb250YWluZXIsIGZvciBpbnN0YW5jZSxcblx0XHR3aGVuIGFsbCBpdGVtcyB3ZXJlIGdyb3VwZWQgKi9cblx0XHQmOmVtcHR5ICsgLmNrLmNrLXRvb2xiYXJfX3NlcGFyYXRvciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdCYgPiAuY2stdG9vbGJhcl9faXRlbXMgPiAqOm5vdCguY2stdG9vbGJhcl9fbGluZS1icmVhayksXG5cdCYgPiAuY2suY2stdG9vbGJhcl9fZ3JvdXBlZC1kcm9wZG93biB7XG5cdFx0LyogTWFrZSBzdXJlIGl0ZW1zIHdyYXBwZWQgdG8gdGhlIG5leHQgbGluZSBoYXZlIHYtc3BhY2luZyAqL1xuXHRcdG1hcmdpbi10b3A6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHRcdG1hcmdpbi1ib3R0b206IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHR9XG5cblx0Ji5jay10b29sYmFyX3ZlcnRpY2FsIHtcblx0XHQvKiBJdGVtcyBpbiBhIHZlcnRpY2FsIHRvb2xiYXIgc3BhbiB0aGUgZW50aXJlIHdpZHRoLiAqL1xuXHRcdHBhZGRpbmc6IDA7XG5cblx0XHQvKiBTcGVjaWZpY2l0eSBtYXR0ZXJzIGhlcmUuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXRoZW1lLWxhcmsvaXNzdWVzLzE2OC4gKi9cblx0XHQmID4gLmNrLXRvb2xiYXJfX2l0ZW1zID4gLmNrIHtcblx0XHRcdC8qIEl0ZW1zIGluIGEgdmVydGljYWwgdG9vbGJhciBzaG91bGQgc3BhbiB0aGUgaG9yaXpvbnRhbCBzcGFjZS4gKi9cblx0XHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0XHQvKiBJdGVtcyBpbiBhIHZlcnRpY2FsIHRvb2xiYXIgc2hvdWxkIGhhdmUgbm8gbWFyZ2luLiAqL1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHQvKiBJdGVtcyBpbiBhIHZlcnRpY2FsIHRvb2xiYXIgc3BhbiB0aGUgZW50aXJlIHdpZHRoIHNvIHJvdW5kZWQgY29ybmVycyBhcmUgcG9pbnRsZXNzLiAqL1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcblxuXHRcdFx0LyogSXRlbXMgaW4gYSB2ZXJ0aWNhbCB0b29sYmFyIHNwYW4gdGhlIGVudGlyZSB3aWR0aCBzbyBhbnkgYm9yZGVyIGlzIHBvaW50bGVzcy4gKi9cblx0XHRcdGJvcmRlcjogMDtcblx0XHR9XG5cdH1cblxuXHQmLmNrLXRvb2xiYXJfY29tcGFjdCB7XG5cdFx0LyogTm8gc3BhY2luZyBhcm91bmQgaXRlbXMuICovXG5cdFx0cGFkZGluZzogMDtcblxuXHRcdCYgPiAuY2stdG9vbGJhcl9faXRlbXMgPiAqIHtcblx0XHRcdC8qIENvbXBhY3QgdG9vbGJhciBpdGVtcyBoYXZlIG5vIHNwYWNpbmcgYmV0d2VlbiB0aGVtLiAqL1xuXHRcdFx0bWFyZ2luOiAwO1xuXG5cdFx0XHQvKiBcIk1pZGRsZVwiIGNoaWxkcmVuIHNob3VsZCBoYXZlIG5vIHJvdW5kZWQgY29ybmVycy4gKi9cblx0XHRcdCY6bm90KDpmaXJzdC1jaGlsZCk6bm90KDpsYXN0LWNoaWxkKSB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0JiA+IC5jay5jay10b29sYmFyX19ncm91cGVkLWRyb3Bkb3duIHtcblx0XHQvKlxuXHRcdCAqIERyb3Bkb3duIGJ1dHRvbiBoYXMgYXN5bW1ldHJpYyBwYWRkaW5nIHRvIGZpdCB0aGUgYXJyb3cuXG5cdFx0ICogVGhpcyBidXR0b24gaGFzIG5vIGFycm93IHNvIGxldCdzIHJldmVydCB0aGF0IHBhZGRpbmcgYmFjayB0byBub3JtYWwuXG5cdFx0ICovXG5cdFx0JiA+IC5jay5jay1idXR0b24uY2stZHJvcGRvd25fX2J1dHRvbiB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctdGlueSk7XG5cdFx0fVxuXHR9XG5cblx0QG5lc3QgLmNrLXRvb2xiYXItY29udGFpbmVyICYge1xuXHRcdGJvcmRlcjogMDtcblx0fVxufVxuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuXG4vKlxuICogU3R5bGVzIGZvciBSVEwgdG9vbGJhcnMuXG4gKlxuICogTm90ZTogSW4gc29tZSBjYXNlcyAoZS5nLiBhIGRlY291cGxlZCBlZGl0b3IpLCB0aGUgdG9vbGJhciBoYXMgaXRzIG93biBcImRpclwiXG4gKiBiZWNhdXNlIGl0cyBwYXJlbnQgaXMgbm90IGNvbnRyb2xsZWQgYnkgdGhlIGVkaXRvciBmcmFtZXdvcmsuXG4gKi9cbltkaXI9XCJydGxcIl0gLmNrLmNrLXRvb2xiYXIsXG4uY2suY2stdG9vbGJhcltkaXI9XCJydGxcIl0ge1xuXHQmID4gLmNrLXRvb2xiYXJfX2l0ZW1zID4gLmNrIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdH1cblxuXHQmOm5vdCguY2stdG9vbGJhcl9jb21wYWN0KSA+IC5jay10b29sYmFyX19pdGVtcyA+IC5jayB7XG5cdFx0LyogKCMxMSkgU2VwYXJhdGUgdG9vbGJhciBpdGVtcy4gKi9cblx0XHRtYXJnaW4tbGVmdDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdH1cblxuXHQmID4gLmNrLXRvb2xiYXJfX2l0ZW1zID4gLmNrOmxhc3QtY2hpbGQge1xuXHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHR9XG5cblx0Ji5jay10b29sYmFyX2NvbXBhY3QgPiAuY2stdG9vbGJhcl9faXRlbXMgPiAuY2sge1xuXHRcdC8qIE5vIHJvdW5kZWQgY29ybmVycyBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZmlyc3QgY2hpbGQuICovXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcblx0XHR9XG5cblx0XHQvKiBObyByb3VuZGVkIGNvcm5lcnMgb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgbGFzdCBjaGlsZC4gKi9cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG5cdFx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBTZXBhcmF0ZSB0aGUgdGhlIHNlcGFyYXRvciBmb3JtIHRoZSBncm91cGluZyBkcm9wZG93biB3aGVuIHNvbWUgaXRlbXMgYXJlIGdyb3VwZWQuICovXG5cdCYgPiAuY2suY2stdG9vbGJhcl9fc2VwYXJhdG9yIHtcblx0XHRtYXJnaW4tbGVmdDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdH1cblxuXHQvKiBTb21lIHNwYWNpbmcgYmV0d2VlbiB0aGUgaXRlbXMgYW5kIHRoZSBzZXBhcmF0b3IgYmVmb3JlIHRoZSBncm91cGVkIGl0ZW1zIGRyb3Bkb3duLiAqL1xuXHQmLmNrLXRvb2xiYXJfZ3JvdXBpbmcgPiAuY2stdG9vbGJhcl9faXRlbXM6bm90KDplbXB0eSk6bm90KDpvbmx5LWNoaWxkKSB7XG5cdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHR9XG59XG5cbi8qXG4gKiBTdHlsZXMgZm9yIExUUiB0b29sYmFycy5cbiAqXG4gKiBOb3RlOiBJbiBzb21lIGNhc2VzIChlLmcuIGEgZGVjb3VwbGVkIGVkaXRvciksIHRoZSB0b29sYmFyIGhhcyBpdHMgb3duIFwiZGlyXCJcbiAqIGJlY2F1c2UgaXRzIHBhcmVudCBpcyBub3QgY29udHJvbGxlZCBieSB0aGUgZWRpdG9yIGZyYW1ld29yay5cbiAqL1xuW2Rpcj1cImx0clwiXSAuY2suY2stdG9vbGJhcixcbi5jay5jay10b29sYmFyW2Rpcj1cImx0clwiXSB7XG5cdCYgPiAuY2stdG9vbGJhcl9faXRlbXMgPiAuY2s6bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHR9XG5cblx0Ji5jay10b29sYmFyX2NvbXBhY3QgPiAuY2stdG9vbGJhcl9faXRlbXMgPiAuY2sge1xuXHRcdC8qIE5vIHJvdW5kZWQgY29ybmVycyBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZmlyc3QgY2hpbGQuICovXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcblx0XHRcdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXHRcdH1cblxuXHRcdC8qIE5vIHJvdW5kZWQgY29ybmVycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsYXN0IGNoaWxkLiAqL1xuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBTZXBhcmF0ZSB0aGUgdGhlIHNlcGFyYXRvciBmb3JtIHRoZSBncm91cGluZyBkcm9wZG93biB3aGVuIHNvbWUgaXRlbXMgYXJlIGdyb3VwZWQuICovXG5cdCYgPiAuY2suY2stdG9vbGJhcl9fc2VwYXJhdG9yIHtcblx0XHRtYXJnaW4tcmlnaHQ6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHR9XG5cblx0LyogU29tZSBzcGFjaW5nIGJldHdlZW4gdGhlIGl0ZW1zIGFuZCB0aGUgc2VwYXJhdG9yIGJlZm9yZSB0aGUgZ3JvdXBlZCBpdGVtcyBkcm9wZG93bi4gKi9cblx0Ji5jay10b29sYmFyX2dyb3VwaW5nID4gLmNrLXRvb2xiYXJfX2l0ZW1zOm5vdCg6ZW1wdHkpOm5vdCg6b25seS1jaGlsZCkge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdH1cbn1cblxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKiBTZWUgY2tlZGl0b3IvY2tlZGl0b3I1IzkzNi4gKi9cbi5jay5jay1wbGFjZWhvbGRlcixcbi5jayAuY2stcGxhY2Vob2xkZXIge1xuXHQmOjpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IGF0dHIoZGF0YS1wbGFjZWhvbGRlcik7XG5cblx0XHQvKiBTZWUgY2tlZGl0b3IvY2tlZGl0b3I1IzQ2OS4gKi9cblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0fVxufVxuXG4vKiBTZWUgY2tlZGl0b3IvY2tlZGl0b3I1IzE5ODcuICovXG4uY2suY2stcmVhZC1vbmx5IC5jay1wbGFjZWhvbGRlciB7XG5cdCY6OmJlZm9yZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKiBTZWUgY2tlZGl0b3IvY2tlZGl0b3I1IzkzNi4gKi9cbi5jay5jay1wbGFjZWhvbGRlciwgLmNrIC5jay1wbGFjZWhvbGRlciB7XG5cdCY6OmJlZm9yZSB7XG5cdFx0Y3Vyc29yOiB0ZXh0O1xuXHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci1lbmdpbmUtcGxhY2Vob2xkZXItdGV4dCk7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLypcbiAqIE5vdGU6IFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgd2lyZWZyYW1lIHN0eWxlcyBvbmx5LiBCdXQgc2luY2UgdGhlcmUgYXJlIG5vIHN1Y2ggc3R5bGVzLFxuICogaXQgYWN0cyBhcyBhIG1lc3NhZ2UgdG8gdGhlIGJ1aWxkZXIgdGVsbGluZyB0aGF0IGl0IHNob3VsZCBsb29rIGZvciB0aGUgY29ycmVzcG9uZGluZyBzdHlsZXNcbiAqICoqaW4gdGhlIHRoZW1lKiogd2hlbiBjb21waWxpbmcgdGhlIGVkaXRvci5cbiAqL1xuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fZGlzYWJsZWQuY3NzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19zaGFkb3cuY3NzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19mb2N1cy5jc3NcIjtcbkBpbXBvcnQgXCIuLi8uLi9taXhpbnMvX2J1dHRvbi5jc3NcIjtcblxuOnJvb3Qge1xuXHQtLWNrLWNvbG9yLWVkaXRhYmxlLWJsdXItc2VsZWN0aW9uOiBoc2woMCwgMCUsIDg1JSk7XG59XG5cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlOm5vdCguY2stZWRpdG9yX19uZXN0ZWQtZWRpdGFibGUpIHtcblx0QG1peGluIGNrLXJvdW5kZWQtY29ybmVycztcblxuXHQmLmNrLWZvY3VzZWQge1xuXHRcdEBtaXhpbiBjay1mb2N1cy1yaW5nO1xuXHRcdEBtaXhpbiBjay1ib3gtc2hhZG93IHZhcigtLWNrLWlubmVyLXNoYWRvdyk7XG5cdH1cbn1cblxuLmNrLmNrLWVkaXRvcl9fZWRpdGFibGVfaW5saW5lIHtcblx0b3ZlcmZsb3c6IGF1dG87XG5cdHBhZGRpbmc6IDAgdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG5cdCZbZGlyPVwibHRyXCJdIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG5cblx0JltkaXI9XCJydGxcIl0ge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHR9XG5cblx0LyogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS10aGVtZS1sYXJrL2lzc3Vlcy8xMTYgKi9cblx0JiA+ICo6Zmlyc3QtY2hpbGQge1xuXHRcdG1hcmdpbi10b3A6IHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpO1xuXHR9XG5cblx0LyogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvODQ3ICovXG5cdCYgPiAqOmxhc3QtY2hpbGQge1xuXHRcdG1hcmdpbi1ib3R0b206IHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpO1xuXHR9XG5cblx0LyogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvNjUxNyAqL1xuXHQmLmNrLWJsdXJyZWQgOjpzZWxlY3Rpb24ge1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWVkaXRhYmxlLWJsdXItc2VsZWN0aW9uKTtcblx0fVxufVxuXG4vKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXRoZW1lLWxhcmsvaXNzdWVzLzExMSAqL1xuLmNrLmNrLWJhbGxvb24tcGFuZWwuY2stdG9vbGJhci1jb250YWluZXJbY2xhc3MqPVwiYXJyb3dfblwiXSB7XG5cdCY6OmFmdGVyIHtcblx0XHRib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1jay1jb2xvci1iYXNlLWZvcmVncm91bmQpO1xuXHR9XG59XG5cbi5jay5jay1iYWxsb29uLXBhbmVsLmNrLXRvb2xiYXItY29udGFpbmVyW2NsYXNzKj1cImFycm93X3NcIl0ge1xuXHQmOjphZnRlciB7XG5cdFx0Ym9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY2stY29sb3ItYmFzZS1mb3JlZ3JvdW5kKTtcblx0fVxufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLWNvbnRlbnQgYmxvY2txdW90ZSB7XG5cdC8qIFNlZSAjMTIgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHQvKiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LWJsb2NrLXF1b3RlL2lzc3Vlcy8xNSAqL1xuXHRwYWRkaW5nLXJpZ2h0OiAxLjVlbTtcblx0cGFkZGluZy1sZWZ0OiAxLjVlbTtcblxuXHRtYXJnaW4tbGVmdDogMDtcblx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdGJvcmRlci1sZWZ0OiBzb2xpZCA1cHggaHNsKDAsIDAlLCA4MCUpO1xufVxuXG4uY2stY29udGVudFtkaXI9XCJydGxcIl0gYmxvY2txdW90ZSB7XG5cdGJvcmRlci1sZWZ0OiAwO1xuXHRib3JkZXItcmlnaHQ6IHNvbGlkIDVweCBoc2woMCwgMCUsIDgwJSk7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jayAuY2std2lkZ2V0IHtcblx0Lypcblx0ICogU3R5bGVzIG9mIHRoZSB0eXBlIGFyb3VuZCBidXR0b25zXG5cdCAqL1xuXHQmIC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b24ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHotaW5kZXg6IHZhcigtLWNrLXotZGVmYXVsdCk7XG5cblx0XHQmIHN2ZyB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdGxlZnQ6IDUwJTtcblx0XHRcdHotaW5kZXg6IGNhbGModmFyKC0tY2stei1kZWZhdWx0KSArIDIpO1xuXHRcdH1cblxuXHRcdCYuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fYnV0dG9uX2JlZm9yZSB7XG5cdFx0XHQvKiBQbGFjZSBpdCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvdXRsaW5lICovXG5cdFx0XHR0b3A6IGNhbGMoLTAuNSAqIHZhcigtLWNrLXdpZGdldC1vdXRsaW5lLXRoaWNrbmVzcykpO1xuXHRcdFx0bGVmdDogbWluKDEwJSwgMzBweCk7XG5cblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHR9XG5cblx0XHQmLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2J1dHRvbl9hZnRlciB7XG5cdFx0XHQvKiBQbGFjZSBpdCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvdXRsaW5lICovXG5cdFx0XHRib3R0b206IGNhbGMoLTAuNSAqIHZhcigtLWNrLXdpZGdldC1vdXRsaW5lLXRoaWNrbmVzcykpO1xuXHRcdFx0cmlnaHQ6IG1pbigxMCUsIDMwcHgpO1xuXG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNTAlKTtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBTdHlsZXMgZm9yIHRoZSBidXR0b25zIHdoZW46XG5cdCAqIC0gdGhlIHdpZGdldCBpcyBzZWxlY3RlZCxcblx0ICogLSBvciB0aGUgYnV0dG9uIGlzIGJlaW5nIGhvdmVyZWQgKHJlZ2FyZGxlc3Mgb2YgdGhlIHdpZGdldCBzdGF0ZSkuXG5cdCAqL1xuXHQmLmNrLXdpZGdldF9zZWxlY3RlZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2J1dHRvbixcblx0JiA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2J1dHRvbjpob3ZlciB7XG5cdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAxcHg7XG5cdFx0XHRsZWZ0OiAxcHg7XG5cdFx0XHR6LWluZGV4OiBjYWxjKHZhcigtLWNrLXotZGVmYXVsdCkgKyAxKTtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBTdHlsZXMgZm9yIHRoZSBob3Jpem9udGFsIFwiZmFrZSBjYXJldFwiIHdoaWNoIGlzIGRpc3BsYXllZCB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyB1c2luZyB0aGUga2V5Ym9hcmQuXG5cdCAqL1xuXHQmID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmQgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fZmFrZS1jYXJldCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0fVxuXG5cdC8qXG5cdCAqIFdoZW4gdGhlIHdpZGdldCBpcyBob3ZlcmVkIHRoZSBcImZha2UgY2FyZXRcIiB3b3VsZCBub3JtYWxseSBiZSBuYXJyb3dlciB0aGFuIHRoZVxuXHQgKiBleHRyYSBvdXRsaW5lIGRpc3BsYXllZCBhcm91bmQgdGhlIHdpZGdldC4gTGV0J3MgZXh0ZW5kIHRoZSBcImZha2UgY2FyZXRcIiB0byBtYXRjaFxuXHQgKiB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgd2lkZ2V0LlxuXHQgKi9cblx0Jjpob3ZlciA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2Zha2UtY2FyZXQge1xuXHRcdGxlZnQ6IGNhbGMoIC0xICogdmFyKC0tY2std2lkZ2V0LW91dGxpbmUtdGhpY2tuZXNzKSApO1xuXHRcdHJpZ2h0OiBjYWxjKCAtMSAqIHZhcigtLWNrLXdpZGdldC1vdXRsaW5lLXRoaWNrbmVzcykgKTtcblx0fVxuXG5cdC8qXG5cdCAqIFN0eWxlcyBmb3IgdGhlIGhvcml6b250YWwgXCJmYWtlIGNhcmV0XCIgd2hlbiBpdCBzaG91bGQgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgd2lkZ2V0IChiYWNrd2FyZCBrZXlib2FyZCBuYXZpZ2F0aW9uKS5cblx0ICovXG5cdCYuY2std2lkZ2V0X3R5cGUtYXJvdW5kX3Nob3ctZmFrZS1jYXJldF9iZWZvcmUgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19mYWtlLWNhcmV0IHtcblx0XHR0b3A6IGNhbGMoIC0xICogdmFyKC0tY2std2lkZ2V0LW91dGxpbmUtdGhpY2tuZXNzKSAtIDFweCApO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0Lypcblx0ICogU3R5bGVzIGZvciB0aGUgaG9yaXpvbnRhbCBcImZha2UgY2FyZXRcIiB3aGVuIGl0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIHdpZGdldCAoZm9yd2FyZCBrZXlib2FyZCBuYXZpZ2F0aW9uKS5cblx0ICovXG5cdCYuY2std2lkZ2V0X3R5cGUtYXJvdW5kX3Nob3ctZmFrZS1jYXJldF9hZnRlciA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2Zha2UtY2FyZXQge1xuXHRcdGJvdHRvbTogY2FsYyggLTEgKiB2YXIoLS1jay13aWRnZXQtb3V0bGluZS10aGlja25lc3MpIC0gMXB4ICk7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLypcbiAqIEludGVncmF0aW9uIHdpdGggdGhlIHJlYWQtb25seSBtb2RlIG9mIHRoZSBlZGl0b3IuXG4gKi9cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlLmNrLXJlYWQtb25seSAuY2std2lkZ2V0X190eXBlLWFyb3VuZCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qXG4gKiBJbnRlZ3JhdGlvbiB3aXRoIHRoZSByZXN0cmljdGVkIGVkaXRpbmcgbW9kZSAoZmVhdHVyZSkgb2YgdGhlIGVkaXRvci5cbiAqL1xuLmNrLmNrLWVkaXRvcl9fZWRpdGFibGUuY2stcmVzdHJpY3RlZC1lZGl0aW5nX21vZGVfcmVzdHJpY3RlZCAuY2std2lkZ2V0X190eXBlLWFyb3VuZCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qXG4gKiBJbnRlZ3JhdGlvbiB3aXRoIHRoZSAjaXNFbmFibGVkIHByb3BlcnR5IG9mIHRoZSBXaWRnZXRUeXBlQXJvdW5kIHBsdWdpbi5cbiAqL1xuLmNrLmNrLWVkaXRvcl9fZWRpdGFibGUuY2std2lkZ2V0X190eXBlLWFyb3VuZF9kaXNhYmxlZCAuY2std2lkZ2V0X190eXBlLWFyb3VuZCB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LS1jay13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLXNpemU6IDIwcHg7XG5cdC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1hY3RpdmU6IHZhcigtLWNrLWNvbG9yLWZvY3VzLWJvcmRlcik7XG5cdC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1ob3ZlcjogdmFyKC0tY2stY29sb3Itd2lkZ2V0LWhvdmVyLWJvcmRlcik7XG5cdC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1ibHVycmVkLWVkaXRhYmxlOiB2YXIoLS1jay1jb2xvci13aWRnZXQtYmx1cnJlZC1ib3JkZXIpO1xuXHQtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tcmFkYXItc3RhcnQtYWxwaGE6IDA7XG5cdC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1yYWRhci1lbmQtYWxwaGE6IC4zO1xuXHQtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taWNvbjogdmFyKC0tY2stY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcbn1cblxuQGRlZmluZS1taXhpbiBjay13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLXZpc2libGUge1xuXHRvcGFjaXR5OiAxO1xuXHRwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuQGRlZmluZS1taXhpbiBjay13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLWhpZGRlbiB7XG5cdG9wYWNpdHk6IDA7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uY2sgLmNrLXdpZGdldCB7XG5cdC8qXG5cdCAqIFN0eWxlcyBvZiB0aGUgdHlwZSBhcm91bmQgYnV0dG9uc1xuXHQgKi9cblx0JiAuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fYnV0dG9uIHtcblx0XHR3aWR0aDogdmFyKC0tY2std2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1zaXplKTtcblx0XHRoZWlnaHQ6IHZhcigtLWNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tc2l6ZSk7XG5cdFx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbik7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTAwcHg7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWNrLXdpZGdldC1oYW5kbGVyLWFuaW1hdGlvbi1jdXJ2ZSksIGJhY2tncm91bmQgdmFyKC0tY2std2lkZ2V0LWhhbmRsZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1hbmltYXRpb24tY3VydmUpO1xuXG5cdFx0QG1peGluIGNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taGlkZGVuO1xuXG5cdFx0JiBzdmcge1xuXHRcdFx0d2lkdGg6IDEwcHg7XG5cdFx0XHRoZWlnaHQ6IDhweDtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsLTUwJSk7XG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjVzIGVhc2U7XG5cdFx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cblx0XHRcdCYgKiB7XG5cdFx0XHRcdHN0cm9rZS1kYXNoYXJyYXk6IDEwO1xuXHRcdFx0XHRzdHJva2UtZGFzaG9mZnNldDogMDtcblxuXHRcdFx0XHRmaWxsOiBub25lO1xuXHRcdFx0XHRzdHJva2U6IHZhcigtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taWNvbik7XG5cdFx0XHRcdHN0cm9rZS13aWR0aDogMS41cHg7XG5cdFx0XHRcdHN0cm9rZS1saW5lY2FwOiByb3VuZDtcblx0XHRcdFx0c3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcblx0XHRcdH1cblxuXHRcdFx0JiBsaW5lIHtcblx0XHRcdFx0c3Ryb2tlLWRhc2hhcnJheTogNztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdC8qXG5cdFx0XHQgKiBEaXNwbGF5IHRoZSBcInNvbmFyXCIgYXJvdW5kIHRoZSBidXR0b24gd2hlbiBob3ZlcmVkLlxuXHRcdFx0ICovXG5cdFx0XHRhbmltYXRpb246IGNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tc29uYXIgMXMgZWFzZSBpbmZpbml0ZTtcblxuXHRcdFx0Lypcblx0XHRcdCAqIEFuaW1hdGUgYWN0aXZlIGJ1dHRvbidzIGljb24uXG5cdFx0XHQgKi9cblx0XHRcdCYgc3ZnIHtcblx0XHRcdFx0JiBwb2x5bGluZSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uOiBjay13aWRnZXQtdHlwZS1hcm91bmQtYXJyb3ctZGFzaCAycyBsaW5lYXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmIGxpbmUge1xuXHRcdFx0XHRcdGFuaW1hdGlvbjogY2std2lkZ2V0LXR5cGUtYXJvdW5kLWFycm93LXRpcC1kYXNoIDJzIGxpbmVhcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIFNob3cgdHlwZSBhcm91bmQgYnV0dG9ucyB3aGVuIHRoZSB3aWRnZXQgZ2V0cyBzZWxlY3RlZCBvciBiZWluZyBob3ZlcmVkLlxuXHQgKi9cblx0Ji5jay13aWRnZXRfc2VsZWN0ZWQsXG5cdCY6aG92ZXIge1xuXHRcdCYgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b24ge1xuXHRcdFx0QG1peGluIGNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tdmlzaWJsZTtcblx0XHR9XG5cdH1cblxuXHQvKlxuXHQgKiBTdHlsZXMgZm9yIHRoZSBidXR0b25zIHdoZW4gdGhlIHdpZGdldCBpcyBOT1Qgc2VsZWN0ZWQgKGJ1dCB0aGUgYnV0dG9ucyBhcmUgdmlzaWJsZVxuXHQgKiBhbmQgc3RpbGwgY2FuIGJlIGhvdmVyZWQpLlxuXHQgKi9cblx0Jjpub3QoLmNrLXdpZGdldF9zZWxlY3RlZCkgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b24ge1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taG92ZXIpO1xuXHR9XG5cblx0Lypcblx0ICogU3R5bGVzIGZvciB0aGUgYnV0dG9ucyB3aGVuOlxuXHQgKiAtIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQsXG5cdCAqIC0gb3IgdGhlIGJ1dHRvbiBpcyBiZWluZyBob3ZlcmVkIChyZWdhcmRsZXNzIG9mIHRoZSB3aWRnZXQgc3RhdGUpLlxuXHQgKi9cblx0Ji5jay13aWRnZXRfc2VsZWN0ZWQgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b24sXG5cdCYgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b246aG92ZXIge1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tYWN0aXZlKTtcblxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdHdpZHRoOiBjYWxjKHZhcigtLWNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tc2l6ZSkgLSAycHgpO1xuXHRcdFx0aGVpZ2h0OiBjYWxjKHZhcigtLWNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tc2l6ZSkgLSAycHgpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTAwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBoc2xhKDAsMCUsMTAwJSwwKSAwJSwgaHNsYSgwLDAlLDEwMCUsLjMpIDEwMCUpO1xuXHRcdH1cblx0fVxuXG5cdC8qXG5cdCAqIFN0eWxlcyBmb3IgdGhlIFwiYmVmb3JlXCIgYnV0dG9uIHdoZW4gdGhlIHdpZGdldCBoYXMgYSBzZWxlY3Rpb24gaGFuZGxlLiBCZWNhdXNlIHNvbWUgc3BhY2Vcblx0ICogaXMgY29uc3VtZWQgYnkgdGhlIGhhbmRsZSwgdGhlIGJ1dHRvbiBtdXN0IGJlIG1vdmVkIHNsaWdodGx5IHRvIHRoZSByaWdodCB0byBsZXQgaXQgYnJlYXRoZS5cblx0ICovXG5cdCYuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZSA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmRfX2J1dHRvbl9iZWZvcmUge1xuXHRcdG1hcmdpbi1sZWZ0OiAyMHB4O1xuXHR9XG5cblx0Lypcblx0ICogU3R5bGVzIGZvciB0aGUgaG9yaXpvbnRhbCBcImZha2UgY2FyZXRcIiB3aGljaCBpcyBkaXNwbGF5ZWQgd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdXNpbmcgdGhlIGtleWJvYXJkLlxuXHQgKi9cblx0JiAuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fZmFrZS1jYXJldCB7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0aGVpZ2h0OiAxcHg7XG5cdFx0YW5pbWF0aW9uOiBjay13aWRnZXQtdHlwZS1hcm91bmQtZmFrZS1jYXJldC1wdWxzZSBsaW5lYXIgMXMgaW5maW5pdGUgbm9ybWFsIGZvcndhcmRzO1xuXG5cdFx0Lypcblx0XHQgKiBUaGUgc2VtaS10cmFuc3BhcmVudC1vdXRsaW5lK2JhY2tncm91bmQgY29tYm8gaW1wcm92ZXMgdGhlIGNvbnRyYXN0XG5cdFx0ICogd2hlbiB0aGUgYmFja2dyb3VuZCB1bmRlcm5lYXRoIHRoZSBmYWtlIGNhcmV0IGlzIGRhcmsuXG5cdFx0ICovXG5cdFx0b3V0bGluZTogc29saWQgMXB4IGhzbGEoMCwgMCUsIDEwMCUsIC41KTtcblx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1iYXNlLXRleHQpO1xuXHR9XG5cblx0Lypcblx0ICogU3R5bGVzIG9mIHRoZSB3aWRnZXQgd2hlbiB0aGUgXCJmYWtlIGNhcmV0XCIgaXMgYmxpbmtpbmcgKGUuZy4gdXBvbiBrZXlib2FyZCBuYXZpZ2F0aW9uKS5cblx0ICogRGVzcGl0ZSB0aGUgd2lkZ2V0IGJlaW5nIHBoeXNpY2FsbHkgc2VsZWN0ZWQgaW4gdGhlIG1vZGVsLCBpdHMgb3V0bGluZSBzaG91bGQgZGlzYXBwZWFyLlxuXHQgKi9cblx0Ji5jay13aWRnZXRfc2VsZWN0ZWQge1xuXHRcdCYuY2std2lkZ2V0X3R5cGUtYXJvdW5kX3Nob3ctZmFrZS1jYXJldF9iZWZvcmUsXG5cdFx0Ji5jay13aWRnZXRfdHlwZS1hcm91bmRfc2hvdy1mYWtlLWNhcmV0X2FmdGVyIHtcblx0XHRcdG91dGxpbmUtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblx0fVxuXG5cdCYuY2std2lkZ2V0X3R5cGUtYXJvdW5kX3Nob3ctZmFrZS1jYXJldF9iZWZvcmUsXG5cdCYuY2std2lkZ2V0X3R5cGUtYXJvdW5kX3Nob3ctZmFrZS1jYXJldF9hZnRlciB7XG5cdFx0Lypcblx0XHQgKiBXaGVuIHRoZSBcImZha2UgY2FyZXRcIiBpcyB2aXNpYmxlIHdlIHNpbXVsYXRlIHRoYXQgdGhlIHdpZGdldCBpcyBub3Qgc2VsZWN0ZWRcblx0XHQgKiAoZGVzcGl0ZSBiZWluZyBwaHlzaWNhbGx5IHNlbGVjdGVkKSwgc28gdGhlIG91dGxpbmUgY29sb3Igc2hvdWxkIGJlIGZvciB0aGVcblx0XHQgKiB1bnNlbGVjdGVkIHdpZGdldC5cblx0XHQgKi9cblx0XHQmLmNrLXdpZGdldF9zZWxlY3RlZDpob3ZlciB7XG5cdFx0XHRvdXRsaW5lLWNvbG9yOiB2YXIoLS1jay1jb2xvci13aWRnZXQtaG92ZXItYm9yZGVyKTtcblx0XHR9XG5cblx0XHQvKlxuXHRcdCAqIFN0eWxlcyBvZiB0aGUgdHlwZSBhcm91bmQgYnV0dG9ucyB3aGVuIHRoZSBcImZha2UgY2FyZXRcIiBpcyBibGlua2luZyAoZS5nLiB1cG9uIGtleWJvYXJkIG5hdmlnYXRpb24pLlxuXHRcdCAqIEluIHRoaXMgc3RhdGUsIHRoZSB0eXBlIGFyb3VuZCBidXR0b25zIHdvdWxkIGNvbGxpZGUgd2l0aCB0aGUgZmFrZSBjYXJldHMgc28gdGhleSBzaG91bGQgZGlzYXBwZWFyLlxuXHRcdCAqL1xuXHRcdCYgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b24ge1xuXHRcdFx0QG1peGluIGNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taGlkZGVuO1xuXHRcdH1cblxuXHRcdC8qXG5cdFx0ICogRmFrZSBob3Jpem9udGFsIGNhcmV0IGludGVncmF0aW9uIHdpdGggdGhlIHNlbGVjdGlvbiBoYW5kbGUuIFdoZW4gdGhlIGNhcmV0IGlzIHZpc2libGUsIHNpbXBseVxuXHRcdCAqIGhpZGUgdGhlIGhhbmRsZSBiZWNhdXNlIGl0IGludGVyc2VjdHMgd2l0aCB0aGUgY2FyZXQgKGFuZCBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgYW55d2F5KS5cblx0XHQgKi9cblx0XHQmLmNrLXdpZGdldF93aXRoLXNlbGVjdGlvbi1oYW5kbGUge1xuXHRcdFx0Ji5jay13aWRnZXRfc2VsZWN0ZWQsXG5cdFx0XHQmLmNrLXdpZGdldF9zZWxlY3RlZDpob3ZlciB7XG5cdFx0XHRcdCYgPiAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAwXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKlxuXHRcdCAqIEZha2UgaG9yaXpvbnRhbCBjYXJldCBpbnRlZ3JhdGlvbiB3aXRoIHRoZSByZXNpemUgVUkuIFdoZW4gdGhlIGNhcmV0IGlzIHZpc2libGUsIHNpbXBseVxuXHRcdCAqIGhpZGUgdGhlIHJlc2l6ZSBVSSBiZWNhdXNlIGl0IGNyZWF0ZXMgdG9vIG11Y2ggbm9pc2UuIEl0IGNhbiBiZSB2aXNpYmxlIHdoZW4gdGhlIHVzZXJcblx0XHQgKiBob3ZlcnMgdGhlIHdpZGdldCwgdGhvdWdoLlxuXHRcdCAqL1xuXHRcdCYuY2std2lkZ2V0X3NlbGVjdGVkLmNrLXdpZGdldF93aXRoLXJlc2l6ZXIgPiAuY2std2lkZ2V0X19yZXNpemVyIHtcblx0XHRcdG9wYWNpdHk6IDBcblx0XHR9XG5cdH1cbn1cblxuLypcbiAqIFN0eWxlcyBmb3IgdGhlIFwiYmVmb3JlXCIgYnV0dG9uIHdoZW4gdGhlIHdpZGdldCBoYXMgYSBzZWxlY3Rpb24gaGFuZGxlIGluIGFuIFJUTCBlbnZpcm9ubWVudC5cbiAqIFRoZSBzZWxlY3Rpb24gaGFuZGxlciBpcyBhbGlnbmVkIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSB3aWRnZXQgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjcmVhdGVcbiAqIGFkZGl0aW9uYWwgc3BhY2UgZm9yIGl0IG5leHQgdG8gdGhlIFwiYmVmb3JlXCIgYnV0dG9uLlxuICovXG4uY2tbZGlyPVwicnRsXCJdIC5jay13aWRnZXQuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZSAuY2std2lkZ2V0X190eXBlLWFyb3VuZCA+IC5jay13aWRnZXRfX3R5cGUtYXJvdW5kX19idXR0b25fYmVmb3JlIHtcblx0bWFyZ2luLWxlZnQ6IDA7XG5cdG1hcmdpbi1yaWdodDogMjBweDtcbn1cblxuLypcbiAqIEhpZGUgdHlwZSBhcm91bmQgYnV0dG9ucyB3aGVuIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQgYXMgYSBjaGlsZCBvZiBhIHNlbGVjdGVkXG4gKiBuZXN0ZWQgZWRpdGFibGUgKGUuZy4gbXVsaXQtY2VsbCB0YWJsZSBzZWxlY3Rpb24pLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy83MjYzLlxuICovXG4uY2stZWRpdG9yX19uZXN0ZWQtZWRpdGFibGUuY2stZWRpdG9yX19lZGl0YWJsZV9zZWxlY3RlZCB7XG5cdCYgLmNrLXdpZGdldCB7XG5cdFx0Ji5jay13aWRnZXRfc2VsZWN0ZWQsXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHQmID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmQgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fYnV0dG9uIHtcblx0XHRcdFx0QG1peGluIGNrLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24taGlkZGVuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKlxuICogU3R5bGVzIGZvciB0aGUgYnV0dG9ucyB3aGVuIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQgYnV0IHRoZSB1c2VyIGNsaWNrZWQgb3V0c2lkZSBvZiB0aGUgZWRpdG9yIChibHVycmVkIHRoZSBlZGl0b3IpLlxuICovXG4uY2stZWRpdG9yX19lZGl0YWJsZS5jay1ibHVycmVkIC5jay13aWRnZXQuY2std2lkZ2V0X3NlbGVjdGVkID4gLmNrLXdpZGdldF9fdHlwZS1hcm91bmQgPiAuY2std2lkZ2V0X190eXBlLWFyb3VuZF9fYnV0dG9uOm5vdCg6aG92ZXIpIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3Itd2lkZ2V0LXR5cGUtYXJvdW5kLWJ1dHRvbi1ibHVycmVkLWVkaXRhYmxlKTtcblxuXHQmIHN2ZyAqIHtcblx0XHRzdHJva2U6IGhzbCgwLDAlLDYwJSk7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBjay13aWRnZXQtdHlwZS1hcm91bmQtYXJyb3ctZGFzaCB7XG5cdDAlIHtcblx0XHRzdHJva2UtZGFzaG9mZnNldDogMTA7XG5cdH1cblx0MjAlLCAxMDAlIHtcblx0XHRzdHJva2UtZGFzaG9mZnNldDogMDtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGNrLXdpZGdldC10eXBlLWFyb3VuZC1hcnJvdy10aXAtZGFzaCB7XG5cdDAlLCAyMCUge1xuXHRcdHN0cm9rZS1kYXNob2Zmc2V0OiA3O1xuXHR9XG5cdDQwJSwgMTAwJSB7XG5cdFx0c3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBjay13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLXNvbmFyIHtcblx0MCUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDAgaHNsYSh2YXIoLS1jay1jb2xvci1mb2N1cy1ib3JkZXItY29vcmRpbmF0ZXMpLCB2YXIoLS1jay1jb2xvci13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLXJhZGFyLXN0YXJ0LWFscGhhKSk7XG5cdH1cblx0NTAlIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCA1cHggaHNsYSh2YXIoLS1jay1jb2xvci1mb2N1cy1ib3JkZXItY29vcmRpbmF0ZXMpLCB2YXIoLS1jay1jb2xvci13aWRnZXQtdHlwZS1hcm91bmQtYnV0dG9uLXJhZGFyLWVuZC1hbHBoYSkpO1xuXHR9XG5cdDEwMCUge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDVweCBoc2xhKHZhcigtLWNrLWNvbG9yLWZvY3VzLWJvcmRlci1jb29yZGluYXRlcyksIHZhcigtLWNrLWNvbG9yLXdpZGdldC10eXBlLWFyb3VuZC1idXR0b24tcmFkYXItc3RhcnQtYWxwaGEpKTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGNrLXdpZGdldC10eXBlLWFyb3VuZC1mYWtlLWNhcmV0LXB1bHNlIHtcblx0MCUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cblx0NDklIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG5cdDUwJSB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxuXHQ5OSUge1xuXHRcdG9wYWNpdHk6IDA7XG5cdH1cblx0MTAwJSB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC0tY2stY29sb3ItcmVzaXplcjogdmFyKC0tY2stY29sb3ItZm9jdXMtYm9yZGVyKTtcblx0LS1jay1jb2xvci1yZXNpemVyLXRvb2x0aXAtYmFja2dyb3VuZDogaHNsKDAsIDAlLCAxNSUpO1xuXHQtLWNrLWNvbG9yLXJlc2l6ZXItdG9vbHRpcC10ZXh0OiBoc2woMCwgMCUsIDk1JSk7XG5cblx0LS1jay1yZXNpemVyLWJvcmRlci1yYWRpdXM6IHZhcigtLWNrLWJvcmRlci1yYWRpdXMpO1xuXHQtLWNrLXJlc2l6ZXItdG9vbHRpcC1vZmZzZXQ6IDEwcHg7XG59XG5cbi5jayAuY2std2lkZ2V0IHtcblx0LyogVGhpcyBpcyBuZWNjZXNzYXJ5IGZvciB0eXBlIGFyb3VuZCBVSSB0byBiZSBwb3NpdGlvbmVkIHByb3Blcmx5LiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5jayAuY2std2lkZ2V0LmNrLXdpZGdldF93aXRoLXNlbGVjdGlvbi1oYW5kbGUge1xuXHQvKiBNYWtlIHRoZSB3aWRnZXQgd3JhcHBlciBhIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGNvbnRhaW5lciBmb3IgdGhlIGRyYWcgaGFuZGxlLiAqL1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0JiAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cblx0XHQmIC5jay1pY29uIHtcblx0XHRcdC8qIE1ha2Ugc3VyZSB0aGUgaWNvbiBpbiBub3QgYSBzdWJqZWN0IHRvIGZvbnQtc2l6ZSBvciBsaW5lLWhlaWdodCB0byBhdm9pZFxuXHRcdFx0dW5uZWNlc3Nhcnkgc3BhY2luZyBhcm91bmQgaXQuICovXG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdH1cblxuXHQvKiBTaG93IHRoZSBzZWxlY3Rpb24gaGFuZGxlIG9uIG1vdXNlIGhvdmVyIG92ZXIgdGhlIHdpZGdldC4gKi9cblx0Jjpob3ZlciB7XG5cdFx0JiAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlIHtcblx0XHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdFx0fVxuXHR9XG5cblx0LyogU2hvdyB0aGUgc2VsZWN0aW9uIGhhbmRsZSB3aGVuIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQuICovXG5cdCYuY2std2lkZ2V0X3NlbGVjdGVkIC5jay13aWRnZXRfX3NlbGVjdGlvbi1oYW5kbGUge1xuXHRcdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdH1cbn1cblxuLmNrIC5jay1zaXplLXZpZXcge1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1yZXNpemVyLXRvb2x0aXAtYmFja2dyb3VuZCk7XG5cdGNvbG9yOiB2YXIoLS1jay1jb2xvci1yZXNpemVyLXRvb2x0aXAtdGV4dCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNrLWNvbG9yLXJlc2l6ZXItdG9vbHRpcC10ZXh0KTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tY2stcmVzaXplci1ib3JkZXItcmFkaXVzKTtcblx0Zm9udC1zaXplOiB2YXIoLS1jay1mb250LXNpemUtdGlueSk7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwYWRkaW5nOiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblxuXHQmLmNrLW9yaWVudGF0aW9uLXRvcC1sZWZ0LFxuXHQmLmNrLW9yaWVudGF0aW9uLXRvcC1yaWdodCxcblx0Ji5jay1vcmllbnRhdGlvbi1ib3R0b20tcmlnaHQsXG5cdCYuY2stb3JpZW50YXRpb24tYm90dG9tLWxlZnQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0fVxuXG5cdCYuY2stb3JpZW50YXRpb24tdG9wLWxlZnQge1xuXHRcdHRvcDogdmFyKC0tY2stcmVzaXplci10b29sdGlwLW9mZnNldCk7XG5cdFx0bGVmdDogdmFyKC0tY2stcmVzaXplci10b29sdGlwLW9mZnNldCk7XG5cdH1cblxuXHQmLmNrLW9yaWVudGF0aW9uLXRvcC1yaWdodCB7XG5cdFx0dG9wOiB2YXIoLS1jay1yZXNpemVyLXRvb2x0aXAtb2Zmc2V0KTtcblx0XHRyaWdodDogdmFyKC0tY2stcmVzaXplci10b29sdGlwLW9mZnNldCk7XG5cdH1cblxuXHQmLmNrLW9yaWVudGF0aW9uLWJvdHRvbS1yaWdodCB7XG5cdFx0Ym90dG9tOiB2YXIoLS1jay1yZXNpemVyLXRvb2x0aXAtb2Zmc2V0KTtcblx0XHRyaWdodDogdmFyKC0tY2stcmVzaXplci10b29sdGlwLW9mZnNldCk7XG5cdH1cblxuXHQmLmNrLW9yaWVudGF0aW9uLWJvdHRvbS1sZWZ0IHtcblx0XHRib3R0b206IHZhcigtLWNrLXJlc2l6ZXItdG9vbHRpcC1vZmZzZXQpO1xuXHRcdGxlZnQ6IHZhcigtLWNrLXJlc2l6ZXItdG9vbHRpcC1vZmZzZXQpO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCIuLi9taXhpbnMvX2ZvY3VzLmNzc1wiO1xuQGltcG9ydCBcIi4uL21peGlucy9fc2hhZG93LmNzc1wiO1xuXG46cm9vdCB7XG5cdC0tY2std2lkZ2V0LW91dGxpbmUtdGhpY2tuZXNzOiAzcHg7XG5cdC0tY2std2lkZ2V0LWhhbmRsZXItaWNvbi1zaXplOiAxNnB4O1xuXHQtLWNrLXdpZGdldC1oYW5kbGVyLWFuaW1hdGlvbi1kdXJhdGlvbjogMjAwbXM7XG5cdC0tY2std2lkZ2V0LWhhbmRsZXItYW5pbWF0aW9uLWN1cnZlOiBlYXNlO1xuXG5cdC0tY2stY29sb3Itd2lkZ2V0LWJsdXJyZWQtYm9yZGVyOiBoc2woMCwgMCUsIDg3JSk7XG5cdC0tY2stY29sb3Itd2lkZ2V0LWhvdmVyLWJvcmRlcjogaHNsKDQzLCAxMDAlLCA2MiUpO1xuXHQtLWNrLWNvbG9yLXdpZGdldC1lZGl0YWJsZS1mb2N1cy1iYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xuXHQtLWNrLWNvbG9yLXdpZGdldC1kcmFnLWhhbmRsZXItaWNvbi1jb2xvcjogdmFyKC0tY2stY29sb3ItYmFzZS1iYWNrZ3JvdW5kKTtcbn1cblxuLmNrIC5jay13aWRnZXQge1xuXHRvdXRsaW5lLXdpZHRoOiB2YXIoLS1jay13aWRnZXQtb3V0bGluZS10aGlja25lc3MpO1xuXHRvdXRsaW5lLXN0eWxlOiBzb2xpZDtcblx0b3V0bGluZS1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdHRyYW5zaXRpb246IG91dGxpbmUtY29sb3IgdmFyKC0tY2std2lkZ2V0LWhhbmRsZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1hbmltYXRpb24tY3VydmUpO1xuXG5cdCYuY2std2lkZ2V0X3NlbGVjdGVkLFxuXHQmLmNrLXdpZGdldF9zZWxlY3RlZDpob3ZlciB7XG5cdFx0b3V0bGluZTogdmFyKC0tY2std2lkZ2V0LW91dGxpbmUtdGhpY2tuZXNzKSBzb2xpZCB2YXIoLS1jay1jb2xvci1mb2N1cy1ib3JkZXIpO1xuXHR9XG5cblx0Jjpob3ZlciB7XG5cdFx0b3V0bGluZS1jb2xvcjogdmFyKC0tY2stY29sb3Itd2lkZ2V0LWhvdmVyLWJvcmRlcik7XG5cdH1cbn1cblxuLmNrIC5jay1lZGl0b3JfX25lc3RlZC1lZGl0YWJsZSB7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXG5cdC8qIFRoZSA6Zm9jdXMgc3R5bGUgaXMgYXBwbGllZCBiZWZvcmUgLmNrLWVkaXRvcl9fbmVzdGVkLWVkaXRhYmxlX2ZvY3VzZWQgY2xhc3MgaXMgcmVuZGVyZWQgaW4gdGhlIHZpZXcuXG5cdFRoZXNlIHN0eWxlcyBzaG93IGEgZGlmZmVyZW50IGJvcmRlciBmb3IgYSBibGluayBvZiBhbiBleWUsIHNvIGA6Zm9jdXNgIG5lZWQgdG8gaGF2ZSBzYW1lIHN0eWxlcyBhcHBsaWVkLiAqL1xuXHQmLmNrLWVkaXRvcl9fbmVzdGVkLWVkaXRhYmxlX2ZvY3VzZWQsXG5cdCY6Zm9jdXMge1xuXHRcdEBtaXhpbiBjay1mb2N1cy1yaW5nO1xuXHRcdEBtaXhpbiBjay1ib3gtc2hhZG93IHZhcigtLWNrLWlubmVyLXNoYWRvdyk7XG5cblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jay1jb2xvci13aWRnZXQtZWRpdGFibGUtZm9jdXMtYmFja2dyb3VuZCk7XG5cdH1cbn1cblxuLmNrIC5jay13aWRnZXQuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZSB7XG5cdCYgLmNrLXdpZGdldF9fc2VsZWN0aW9uLWhhbmRsZSB7XG5cdFx0cGFkZGluZzogNHB4O1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblx0XHQvKiBCYWNrZ3JvdW5kIGFuZCBvcGFjaXR5IHdpbGwgYmUgYW5pbWF0ZWQgYXMgdGhlIGhhbmRsZXIgc2hvd3MgdXAgb3IgdGhlIHdpZGdldCBnZXRzIHNlbGVjdGVkLiAqL1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdG9wYWNpdHk6IDA7XG5cblx0XHQvKiBUcmFuc2l0aW9uOlxuXHRcdCAgICogYmFja2dyb3VuZC1jb2xvciBmb3IgdGhlIC5jay13aWRnZXRfc2VsZWN0ZWQgc3RhdGUgY2hhbmdlLFxuXHRcdCAgICogdmlzaWJpbGl0eSBmb3IgaGlkaW5nIHRoZSBoYW5kbGVyLFxuXHRcdCAgICogb3BhY2l0eSBmb3IgdGhlIHByb3BlciBsb29rIG9mIHRoZSBpY29uIHdoZW4gdGhlIGhhbmRsZXIgZGlzYXBwZWFycy4gKi9cblx0XHR0cmFuc2l0aW9uOlxuXHRcdFx0YmFja2dyb3VuZC1jb2xvciB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1hbmltYXRpb24tZHVyYXRpb24pIHZhcigtLWNrLXdpZGdldC1oYW5kbGVyLWFuaW1hdGlvbi1jdXJ2ZSksXG5cdFx0XHR2aXNpYmlsaXR5IHZhcigtLWNrLXdpZGdldC1oYW5kbGVyLWFuaW1hdGlvbi1kdXJhdGlvbikgdmFyKC0tY2std2lkZ2V0LWhhbmRsZXItYW5pbWF0aW9uLWN1cnZlKSxcblx0XHRcdG9wYWNpdHkgdmFyKC0tY2std2lkZ2V0LWhhbmRsZXItYW5pbWF0aW9uLWR1cmF0aW9uKSB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1hbmltYXRpb24tY3VydmUpO1xuXG5cdFx0LyogTWFrZSBvbmx5IHRvcCBjb3JuZXJzIHJvdW5kLiAqL1xuXHRcdGJvcmRlci1yYWRpdXM6IHZhcigtLWNrLWJvcmRlci1yYWRpdXMpIHZhcigtLWNrLWJvcmRlci1yYWRpdXMpIDAgMDtcblxuXHRcdC8qIFBsYWNlIHRoZSBkcmFnIGhhbmRsZXIgb3V0c2lkZSB0aGUgd2lkZ2V0IHdyYXBwZXIuICovXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcblx0XHRsZWZ0OiBjYWxjKDBweCAtIHZhcigtLWNrLXdpZGdldC1vdXRsaW5lLXRoaWNrbmVzcykpO1xuXG5cdFx0JiAuY2staWNvbiB7XG5cdFx0XHQvKiBNYWtlIHN1cmUgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGljb24gYXJlIGluZGVwZW5kZW50IG9mIHRoZSBmb24tc2l6ZSBvZiB0aGUgY29udGVudC4gKi9cblx0XHRcdHdpZHRoOiB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1pY29uLXNpemUpO1xuXHRcdFx0aGVpZ2h0OiB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1pY29uLXNpemUpO1xuXHRcdFx0Y29sb3I6IHZhcigtLWNrLWNvbG9yLXdpZGdldC1kcmFnLWhhbmRsZXItaWNvbi1jb2xvcik7XG5cblx0XHRcdC8qIFRoZSBcInNlbGVjdGVkXCIgcGFydCBvZiB0aGUgaWNvbiBpcyBpbnZpc2libGUgYnkgZGVmYXVsdCAqL1xuXHRcdFx0JiAuY2staWNvbl9fc2VsZWN0ZWQtaW5kaWNhdG9yIHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblxuXHRcdFx0XHQvKiBOb3RlOiBUaGUgYW5pbWF0aW9uIGlzIGxvbmdlciBvbiBwdXJwb3NlLiBTaW1wbHkgZmVlbHMgYmV0dGVyLiAqL1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIHZhcigtLWNrLXdpZGdldC1oYW5kbGVyLWFuaW1hdGlvbi1jdXJ2ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogQWR2ZXJ0aXNlIHVzaW5nIHRoZSBsb29rIG9mIHRoZSBpY29uIHRoYXQgb25jZSBjbGlja2VkIHRoZSBoYW5kbGVyLCB0aGUgd2lkZ2V0IHdpbGwgYmUgc2VsZWN0ZWQuICovXG5cdFx0Jjpob3ZlciAuY2staWNvbiAuY2staWNvbl9fc2VsZWN0ZWQtaW5kaWNhdG9yIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0fVxuXHR9XG5cblx0LyogU2hvdyB0aGUgc2VsZWN0aW9uIGhhbmRsZXIgb24gbW91c2UgaG92ZXIgb3ZlciB0aGUgd2lkZ2V0LiAqL1xuXHQmOmhvdmVyIC5jay13aWRnZXRfX3NlbGVjdGlvbi1oYW5kbGUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2stY29sb3Itd2lkZ2V0LWhvdmVyLWJvcmRlcik7XG5cdH1cblxuXHQvKiBTaG93IHRoZSBzZWxlY3Rpb24gaGFuZGxlciB3aGVuIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQuICovXG5cdCYuY2std2lkZ2V0X3NlbGVjdGVkLFxuXHQmLmNrLXdpZGdldF9zZWxlY3RlZDpob3ZlciB7XG5cdFx0JiAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jay1jb2xvci1mb2N1cy1ib3JkZXIpO1xuXG5cdFx0XHQvKiBXaGVuIHRoZSB3aWRnZXQgaXMgc2VsZWN0ZWQsIG5vdGlmeSB0aGUgdXNlciB1c2luZyB0aGUgcHJvcGVyIGxvb2sgb2YgdGhlIGljb24uICovXG5cdFx0XHQmIC5jay1pY29uIC5jay1pY29uX19zZWxlY3RlZC1pbmRpY2F0b3Ige1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiBJbiBhIFJUTCBlbnZpcm9ubWVudCwgYWxpZ24gdGhlIHNlbGVjdGlvbiBoYW5kbGVyIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSB3aWRnZXQgKi9cbi8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZXNjZW5kaW5nLXNwZWNpZmljaXR5ICovXG4uY2tbZGlyPVwicnRsXCJdIC5jay13aWRnZXQuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZSAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlIHtcblx0bGVmdDogYXV0bztcblx0cmlnaHQ6IGNhbGMoMHB4IC0gdmFyKC0tY2std2lkZ2V0LW91dGxpbmUtdGhpY2tuZXNzKSk7XG59XG5cbi8qIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzY0MTUgKi9cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlLmNrLXJlYWQtb25seSAuY2std2lkZ2V0IHtcblx0LyogUHJldmVudCB0aGUgOmhvdmVyIG91dGxpbmUgZnJvbSBzaG93aW5nIHVwIGJlY2F1c2Ugb2YgdGhlIHVzZWQgb3V0bGluZS1jb2xvciB0cmFuc2l0aW9uLiAqL1xuXHR0cmFuc2l0aW9uOiBub25lO1xuXG5cdCY6bm90KC5jay13aWRnZXRfc2VsZWN0ZWQpIHtcblx0XHQvKiBEaXNhYmxlIHZpc3VhbCBlZmZlY3RzIG9mIGhvdmVyL2FjdGl2ZSB3aWRnZXQgd2hlbiBDS0VkaXRvciBpcyBpbiByZWFkT25seSBtb2RlLlxuXHRcdCAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvMTI2MVxuXHRcdCAqXG5cdFx0ICogTGVhdmUgdGhlIHVuaXQgYmVjYXVzZSB0aGlzIGN1c3RvbSBwcm9wZXJ0eSBpcyB1c2VkIGluIGNhbGMoKSBieSBvdGhlciBmZWF0dXJlcy5cblx0XHQgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzY3NzVcblx0XHQgKi9cblx0XHQtLWNrLXdpZGdldC1vdXRsaW5lLXRoaWNrbmVzczogMHB4O1xuXHR9XG5cblx0Ji5jay13aWRnZXRfd2l0aC1zZWxlY3Rpb24taGFuZGxlIHtcblx0XHQmIC5jay13aWRnZXRfX3NlbGVjdGlvbi1oYW5kbGUsXG5cdFx0JiAuY2std2lkZ2V0X19zZWxlY3Rpb24taGFuZGxlOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLXdpZGdldC1ibHVycmVkLWJvcmRlcik7XG5cdFx0fVxuXHR9XG59XG5cbi8qIFN0eWxlIHRoZSB3aWRnZXQgd2hlbiBpdCdzIHNlbGVjdGVkIGJ1dCB0aGUgZWRpdGFibGUgaXQgYmVsb25ncyB0byBsb3N0IGZvY3VzLiAqL1xuLyogc3R5bGVsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWRlc2NlbmRpbmctc3BlY2lmaWNpdHkgKi9cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlLmNrLWJsdXJyZWQgLmNrLXdpZGdldCB7XG5cdCYuY2std2lkZ2V0X3NlbGVjdGVkLFxuXHQmLmNrLXdpZGdldF9zZWxlY3RlZDpob3ZlciB7XG5cdFx0b3V0bGluZS1jb2xvcjogdmFyKC0tY2stY29sb3Itd2lkZ2V0LWJsdXJyZWQtYm9yZGVyKTtcblxuXHRcdCYuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZSB7XG5cdFx0XHQmIC5jay13aWRnZXRfX3NlbGVjdGlvbi1oYW5kbGUsXG5cdFx0XHQmIC5jay13aWRnZXRfX3NlbGVjdGlvbi1oYW5kbGU6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci13aWRnZXQtYmx1cnJlZC1ib3JkZXIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4uY2suY2stZWRpdG9yX19lZGl0YWJsZSA+IC5jay13aWRnZXQuY2std2lkZ2V0X3dpdGgtc2VsZWN0aW9uLWhhbmRsZTpmaXJzdC1jaGlsZCxcbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlIGJsb2NrcXVvdGUgPiAuY2std2lkZ2V0LmNrLXdpZGdldF93aXRoLXNlbGVjdGlvbi1oYW5kbGU6Zmlyc3QtY2hpbGQge1xuXHQvKiBEbyBub3QgY3JvcCBzZWxlY3Rpb24gaGFuZGxlciBpZiBhIHdpZGdldCBpcyBhIGZpcnN0LWNoaWxkIGluIHRoZSBibG9ja3F1b3RlIG9yIGluIHRoZSByb290IGVkaXRhYmxlLlxuXHRJbiBmYWN0LCBhbnl0aGluZyB3aXRoIG92ZXJmbG93OiBoaWRkZW4uXG5cdGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtYmxvY2stcXVvdGUvaXNzdWVzLzI4XG5cdGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtd2lkZ2V0L2lzc3Vlcy80NFxuXHRodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1LXdpZGdldC9pc3N1ZXMvNjYgKi9cblx0bWFyZ2luLXRvcDogY2FsYygxZW0gKyB2YXIoLS1jay13aWRnZXQtaGFuZGxlci1pY29uLXNpemUpKTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIHZpc3VhbCBzdHlsZSBvZiBmb2N1c2VkIGVsZW1lbnQncyBib3JkZXIuXG4gKi9cbkBkZWZpbmUtbWl4aW4gY2stZm9jdXMtcmluZyB7XG5cdC8qIERpc2FibGUgbmF0aXZlIG91dGxpbmUuICovXG5cdG91dGxpbmU6IG5vbmU7XG5cdGJvcmRlcjogdmFyKC0tY2stZm9jdXMtcmluZylcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBBIGhlbHBlciB0byBjb21iaW5lIG11bHRpcGxlIHNoYWRvd3MuXG4gKi9cbkBkZWZpbmUtbWl4aW4gY2stYm94LXNoYWRvdyAkc2hhZG93QSwgJHNoYWRvd0I6IDAgMCB7XG5cdGJveC1zaGFkb3c6ICRzaGFkb3dBLCAkc2hhZG93Qjtcbn1cblxuLyoqXG4gKiBHaXZlcyBhbiBlbGVtZW50IGEgZHJvcCBzaGFkb3cgc28gaXQgbG9va3MgbGlrZSBhIGZsb2F0aW5nIHBhbmVsLlxuICovXG5AZGVmaW5lLW1peGluIGNrLWRyb3Atc2hhZG93IHtcblx0QG1peGluIGNrLWJveC1zaGFkb3cgdmFyKC0tY2stZHJvcC1zaGFkb3cpO1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2suY2stbGFiZWwge1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLmNrLmNrLXZvaWNlLWxhYmVsIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLmNrLWxhYmVsIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jay5jay1sYWJlbGVkLWZpZWxkLXZpZXcge1xuXHQmID4gLmNrLmNrLWxhYmVsZWQtZmllbGQtdmlld19faW5wdXQtd3JhcHBlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cblxuXHQmIC5jay5jay1sYWJlbCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fZGlyLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fcm91bmRlZC5jc3NcIjtcblxuOnJvb3Qge1xuXHQtLWNrLWxhYmVsZWQtZmllbGQtdmlldy10cmFuc2l0aW9uOiAuMXMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMjQsIDAuOTUpO1xuXHQtLWNrLWxhYmVsZWQtZmllbGQtZW1wdHktdW5mb2N1c2VkLW1heC13aWR0aDogMTAwJSAtIDIgKiB2YXIoLS1jay1zcGFjaW5nLW1lZGl1bSk7XG5cdC0tY2stY29sb3ItbGFiZWxlZC1maWVsZC1sYWJlbC1iYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpO1xufVxuXG4uY2suY2stbGFiZWxlZC1maWVsZC12aWV3IHtcblx0QG1peGluIGNrLXJvdW5kZWQtY29ybmVycztcblxuXHQmID4gLmNrLmNrLWxhYmVsZWQtZmllbGQtdmlld19faW5wdXQtd3JhcHBlciB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cblx0XHQmID4gLmNrLmNrLWxhYmVsIHtcblx0XHRcdHRvcDogMHB4O1xuXG5cdFx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRcdGxlZnQ6IDBweDtcblx0XHRcdH1cblxuXHRcdFx0QG1peGluIGNrLWRpciBydGwge1xuXHRcdFx0XHRyaWdodDogMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdHRyYW5zZm9ybS1vcmlnaW46IDAgMDtcblxuXHRcdFx0LyogQnkgZGVmYXVsdCwgZGlzcGxheSB0aGUgbGFiZWwgc2NhbGVkIGRvd24gYWJvdmUgdGhlIGZpZWxkLiAqL1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUodmFyKC0tY2stc3BhY2luZy1tZWRpdW0pLCAtNnB4KSBzY2FsZSguNzUpO1xuXG5cdFx0XHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci1sYWJlbGVkLWZpZWxkLWxhYmVsLWJhY2tncm91bmQpO1xuXHRcdFx0cGFkZGluZzogMCBjYWxjKC41ICogdmFyKC0tY2stZm9udC1zaXplLXRpbnkpKTtcblx0XHRcdGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblxuXHRcdFx0LyogUHJldmVudCBvdmVyZmxvdyB3aGVuIHRoZSBsYWJlbCBpcyBsb25nZXIgdGhhbiB0aGUgaW5wdXQgKi9cblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXG5cdFx0XHR0cmFuc2l0aW9uOlxuXHRcdFx0XHR0cmFuc2Zvcm0gdmFyKC0tY2stbGFiZWxlZC1maWVsZC12aWV3LXRyYW5zaXRpb24pLFxuXHRcdFx0XHRwYWRkaW5nIHZhcigtLWNrLWxhYmVsZWQtZmllbGQtdmlldy10cmFuc2l0aW9uKSxcblx0XHRcdFx0YmFja2dyb3VuZCB2YXIoLS1jay1sYWJlbGVkLWZpZWxkLXZpZXctdHJhbnNpdGlvbik7XG5cdFx0fVxuXHR9XG5cblx0Ji5jay1lcnJvciB7XG5cdFx0JiA+IC5jay5jay1sYWJlbGVkLWZpZWxkLXZpZXdfX2lucHV0LXdyYXBwZXIgPiAuY2suY2stbGFiZWwge1xuXHRcdFx0Y29sb3I6IHZhcigtLWNrLWNvbG9yLWJhc2UtZXJyb3IpO1xuXHRcdH1cblxuXHRcdCYgLmNrLWlucHV0Om5vdChbcmVhZG9ubHldKSArIC5jay5jay1sYWJlbCB7XG5cdFx0XHRjb2xvcjogdmFyKC0tY2stY29sb3ItYmFzZS1lcnJvcik7XG5cdFx0fVxuXHR9XG5cblx0JiAuY2stbGFiZWxlZC1maWVsZC12aWV3X19zdGF0dXMge1xuXHRcdGZvbnQtc2l6ZTogdmFyKC0tY2stZm9udC1zaXplLXNtYWxsKTtcblx0XHRtYXJnaW4tdG9wOiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblxuXHRcdC8qIExldCB0aGUgaW5mbyB3cmFwIHRvIHRoZSBuZXh0IGxpbmUgdG8gYXZvaWQgc3RyZXRjaGluZyB0aGUgbGF5b3V0IGhvcml6b250YWxseS5cblx0XHRUaGUgc3RhdHVzIGNvdWxkIGJlIHZlcnkgbG9uZy4gKi9cblx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXG5cdFx0Ji5jay1sYWJlbGVkLWZpZWxkLXZpZXdfX3N0YXR1c19lcnJvciB7XG5cdFx0XHRjb2xvcjogdmFyKC0tY2stY29sb3ItYmFzZS1lcnJvcik7XG5cdFx0fVxuXHR9XG5cblx0LyogRGlzYWJsZWQgZmllbGRzIGFuZCBmaWVsZHMgdGhhdCBoYXZlIG5vIGZvY3VzIHNob3VsZCBmYWRlIG91dC4gKi9cblx0Ji5jay1kaXNhYmxlZCA+IC5jay5jay1sYWJlbGVkLWZpZWxkLXZpZXdfX2lucHV0LXdyYXBwZXIgPiAuY2suY2stbGFiZWwsXG5cdCYuY2stbGFiZWxlZC1maWVsZC12aWV3X2VtcHR5Om5vdCguY2stbGFiZWxlZC1maWVsZC12aWV3X2ZvY3VzZWQpID4gLmNrLmNrLWxhYmVsZWQtZmllbGQtdmlld19faW5wdXQtd3JhcHBlciA+IC5jay5jay1sYWJlbCB7XG5cdFx0Y29sb3I6IHZhcigtLWNrLWNvbG9yLWlucHV0LWRpc2FibGVkLXRleHQpO1xuXHR9XG5cblx0LyogRmllbGRzIHRoYXQgYXJlIGRpc2FibGVkIG9yIG5vdCBmb2N1c2VkIGFuZCB3aXRob3V0IGEgcGxhY2Vob2xkZXIgc2hvdWxkIGhhdmUgZnVsbC1zaXplZCBsYWJlbHMuICovXG5cdC8qIHN0eWxlbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZXNjZW5kaW5nLXNwZWNpZmljaXR5ICovXG5cdCYuY2stZGlzYWJsZWQgPiAuY2suY2stbGFiZWxlZC1maWVsZC12aWV3X19pbnB1dC13cmFwcGVyID4gLmNrLmNrLWxhYmVsLFxuXHQmLmNrLWxhYmVsZWQtZmllbGQtdmlld19lbXB0eTpub3QoLmNrLWxhYmVsZWQtZmllbGQtdmlld19mb2N1c2VkKTpub3QoLmNrLWxhYmVsZWQtZmllbGQtdmlld19wbGFjZWhvbGRlcikgPiAuY2suY2stbGFiZWxlZC1maWVsZC12aWV3X19pbnB1dC13cmFwcGVyID4gLmNrLmNrLWxhYmVsIHtcblx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSh2YXIoLS1jay1zcGFjaW5nLW1lZGl1bSksIGNhbGMoMC42ICogdmFyKC0tY2stZm9udC1zaXplLWJhc2UpKSkgc2NhbGUoMSk7XG5cdFx0fVxuXG5cdFx0QG1peGluIGNrLWRpciBydGwge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGUoY2FsYygtMSAqIHZhcigtLWNrLXNwYWNpbmctbWVkaXVtKSksIGNhbGMoMC42ICogdmFyKC0tY2stZm9udC1zaXplLWJhc2UpKSkgc2NhbGUoMSk7XG5cdFx0fVxuXG5cdFx0LyogQ29tcGVuc2F0ZSBmb3IgdGhlIGRlZmF1bHQgdHJhbnNsYXRlIHBvc2l0aW9uLiAqL1xuXHRcdG1heC13aWR0aDogY2FsYyh2YXIoLS1jay1sYWJlbGVkLWZpZWxkLWVtcHR5LXVuZm9jdXNlZC1tYXgtd2lkdGgpKTtcblxuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxuXHQvKi0tLS0tLSBEcm9wZG93blZpZXcgaW50ZWdyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvKiBNYWtlIHN1cmUgZHJvcGRvd24nIGJhY2tncm91bmQgY29sb3IgaW4gYW55IG9mIGRyb3Bkb3duJ3Mgc3RhdGUgZG9lcyBub3QgY29sbGlkZSB3aXRoIGxhYmVsZWQgZmllbGQuICovXG5cdCYgPiAuY2suY2stbGFiZWxlZC1maWVsZC12aWV3X19pbnB1dC13cmFwcGVyID4gLmNrLWRyb3Bkb3duID4gLmNrLmNrLWJ1dHRvbiB7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdH1cblxuXHQvKiBXaGVuIHRoZSBkcm9wZG93biBpcyBcImVtcHR5XCIsIHRoZSBsYWJlbGVkIGZpZWxkIGxhYmVsIHJlcGxhY2VzIGl0cyBsYWJlbC4gKi9cblx0Ji5jay1sYWJlbGVkLWZpZWxkLXZpZXdfZW1wdHkgPiAuY2suY2stbGFiZWxlZC1maWVsZC12aWV3X19pbnB1dC13cmFwcGVyID4gLmNrLWRyb3Bkb3duID4gLmNrLWJ1dHRvbiA+IC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG5cblx0LyogTWFrZSBzdXJlIHRoZSBsYWJlbCBvZiB0aGUgZW1wdHksIHVuZm9jdXNlZCBpbnB1dCBkb2VzIG5vdCBjb3ZlciB0aGUgZHJvcGRvd24gYXJyb3cuICovXG5cdCYuY2stbGFiZWxlZC1maWVsZC12aWV3X2VtcHR5Om5vdCguY2stbGFiZWxlZC1maWVsZC12aWV3X2ZvY3VzZWQpOm5vdCguY2stbGFiZWxlZC1maWVsZC12aWV3X3BsYWNlaG9sZGVyKSA+IC5jay5jay1sYWJlbGVkLWZpZWxkLXZpZXdfX2lucHV0LXdyYXBwZXIgPiAuY2stZHJvcGRvd24gKyAuY2stbGFiZWwge1xuXHRcdG1heC13aWR0aDogY2FsYyh2YXIoLS1jay1sYWJlbGVkLWZpZWxkLWVtcHR5LXVuZm9jdXNlZC1tYXgtd2lkdGgpIC0gdmFyKC0tY2stZHJvcGRvd24tYXJyb3ctc2l6ZSkgLSB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKSk7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLypcbiAqIE5vdGU6IFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgd2lyZWZyYW1lIHN0eWxlcyBvbmx5LiBCdXQgc2luY2UgdGhlcmUgYXJlIG5vIHN1Y2ggc3R5bGVzLFxuICogaXQgYWN0cyBhcyBhIG1lc3NhZ2UgdG8gdGhlIGJ1aWxkZXIgdGVsbGluZyB0aGF0IGl0IHNob3VsZCBsb29rIGZvciB0aGUgY29ycmVzcG9uZGluZyBzdHlsZXNcbiAqICoqaW4gdGhlIHRoZW1lKiogd2hlbiBjb21waWxpbmcgdGhlIGVkaXRvci5cbiAqL1xuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19yb3VuZGVkLmNzc1wiO1xuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fZm9jdXMuY3NzXCI7XG5AaW1wb3J0IFwiLi4vLi4vLi4vbWl4aW5zL19zaGFkb3cuY3NzXCI7XG5cbjpyb290IHtcblx0LS1jay1pbnB1dC10ZXh0LXdpZHRoOiAxOGVtO1xufVxuXG4uY2suY2staW5wdXQtdGV4dCB7XG5cdEBtaXhpbiBjay1yb3VuZGVkLWNvcm5lcnM7XG5cblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItaW5wdXQtYmFja2dyb3VuZCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNrLWNvbG9yLWlucHV0LWJvcmRlcik7XG5cdHBhZGRpbmc6IHZhcigtLWNrLXNwYWNpbmctZXh0cmEtdGlueSkgdmFyKC0tY2stc3BhY2luZy1tZWRpdW0pO1xuXHRtaW4td2lkdGg6IHZhcigtLWNrLWlucHV0LXRleHQtd2lkdGgpO1xuXG5cdC8qIFRoaXMgaXMgaW1wb3J0YW50IHRvIHN0YXkgb2YgdGhlIHNhbWUgaGVpZ2h0IGFzIHN1cnJvdW5kaW5nIGJ1dHRvbnMgKi9cblx0bWluLWhlaWdodDogdmFyKC0tY2stdWktY29tcG9uZW50LW1pbi1oZWlnaHQpO1xuXG5cdC8qIEFwcGx5IHNvbWUgc21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIGJveC1zaGFkb3cgYW5kIGJvcmRlci4gKi9cblx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyAuMXMgZWFzZS1pbi1vdXQsIGJvcmRlciAuMXMgZWFzZS1pbi1vdXQ7XG5cblx0Jjpmb2N1cyB7XG5cdFx0QG1peGluIGNrLWZvY3VzLXJpbmc7XG5cdFx0QG1peGluIGNrLWJveC1zaGFkb3cgdmFyKC0tY2stZm9jdXMtb3V0ZXItc2hhZG93KTtcblx0fVxuXG5cdCZbcmVhZG9ubHldIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1pbnB1dC1kaXNhYmxlZC1ib3JkZXIpO1xuXHRcdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWlucHV0LWRpc2FibGVkLWJhY2tncm91bmQpO1xuXHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci1pbnB1dC1kaXNhYmxlZC10ZXh0KTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0LyogVGhlIHJlYWQtb25seSBpbnB1dCBzaG91bGQgaGF2ZSBhIHNsaWdodGx5IGxlc3MgdmlzaWJsZSBzaGFkb3cgd2hlbiBmb2N1c2VkLiAqL1xuXHRcdFx0QG1peGluIGNrLWJveC1zaGFkb3cgdmFyKC0tY2stZm9jdXMtZGlzYWJsZWQtb3V0ZXItc2hhZG93KTtcblx0XHR9XG5cdH1cblxuXHQmLmNrLWVycm9yIHtcblx0XHRib3JkZXItY29sb3I6IHZhcigtLWNrLWNvbG9yLWlucHV0LWVycm9yLWJvcmRlcik7XG5cdFx0YW5pbWF0aW9uOiBjay10ZXh0LWlucHV0LXNoYWtlIC4zcyBlYXNlIGJvdGg7XG5cblx0XHQmOmZvY3VzIHtcblx0XHRcdEBtaXhpbiBjay1ib3gtc2hhZG93IHZhcigtLWNrLWZvY3VzLWVycm9yLW91dGVyLXNoYWRvdyk7XG5cdFx0fVxuXHR9XG59XG5cbkBrZXlmcmFtZXMgY2stdGV4dC1pbnB1dC1zaGFrZSB7XG5cdDIwJSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0ycHgpO1xuXHR9XG5cblx0NDAlIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcblx0fVxuXG5cdDYwJSB7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xcHgpO1xuXHR9XG5cblx0ODAlIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX3J3ZC5jc3NcIjtcblxuLmNrLmNrLXRleHQtYWx0ZXJuYXRpdmUtZm9ybSB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGZsZXgtd3JhcDogbm93cmFwO1xuXG5cdCYgLmNrLWxhYmVsZWQtZmllbGQtdmlldyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cblx0JiAuY2stbGFiZWwge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHRAbWl4aW4gY2stbWVkaWEtcGhvbmUge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblxuXHRcdCYgLmNrLWxhYmVsZWQtZmllbGQtdmlldyB7XG5cdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdH1cblxuXHRcdCYgLmNrLWJ1dHRvbiB7XG5cdFx0XHRmbGV4LWJhc2lzOiA1MCU7XG5cdFx0fVxuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBkZWZpbmUtbWl4aW4gY2stbWVkaWEtcGhvbmUge1xuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xuXHRcdEBtaXhpbi1jb250ZW50O1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fcndkLmNzc1wiO1xuXG4uY2stdmVydGljYWwtZm9ybSAuY2stYnV0dG9uOjphZnRlciB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHdpZHRoOiAwO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAtMXB4O1xuXHR0b3A6IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHRib3R0b206IHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXHR6LWluZGV4OiAxO1xufVxuXG4uY2suY2stcmVzcG9uc2l2ZS1mb3JtIHtcblx0QG1peGluIGNrLW1lZGlhLXBob25lIHtcblx0XHQmIC5jay1idXR0b246OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHR3aWR0aDogMDtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHJpZ2h0OiAtMXB4O1xuXHRcdFx0dG9wOiB2YXIoLS1jay1zcGFjaW5nLXNtYWxsKTtcblx0XHRcdGJvdHRvbTogdmFyKC0tY2stc3BhY2luZy1zbWFsbCk7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AZGVmaW5lLW1peGluIGNrLW1lZGlhLXBob25lIHtcblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIHtcblx0XHRAbWl4aW4tY29udGVudDtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX3J3ZC5jc3NcIjtcbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fZGlyLmNzc1wiO1xuXG4uY2stdmVydGljYWwtZm9ybSA+IC5jay1idXR0b246bnRoLWxhc3QtY2hpbGQoMik6OmFmdGVyIHtcblx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xufVxuXG4uY2suY2stcmVzcG9uc2l2ZS1mb3JtIHtcblx0cGFkZGluZzogdmFyKC0tY2stc3BhY2luZy1sYXJnZSk7XG5cblx0Jjpmb2N1cyB7XG5cdFx0LyogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy80NzczICovXG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXG5cdEBtaXhpbiBjay1kaXIgbHRyIHtcblx0XHQmID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKTtcblx0XHR9XG5cdH1cblxuXHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0JiA+IDpub3QoOmxhc3QtY2hpbGQpIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKTtcblx0XHR9XG5cdH1cblxuXHRAbWl4aW4gY2stbWVkaWEtcGhvbmUge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0d2lkdGg6IGNhbGMoLjggKiB2YXIoLS1jay1pbnB1dC10ZXh0LXdpZHRoKSk7XG5cblx0XHQmIC5jay1sYWJlbGVkLWZpZWxkLXZpZXcge1xuXHRcdFx0bWFyZ2luOiB2YXIoLS1jay1zcGFjaW5nLWxhcmdlKSB2YXIoLS1jay1zcGFjaW5nLWxhcmdlKSAwO1xuXG5cdFx0XHQmIC5jay1pbnB1dC10ZXh0IHtcblx0XHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblxuXHRcdFx0LyogTGV0IHRoZSBsb25nIGVycm9yIG1lc3NhZ2VzIHdyYXAgaW4gdGhlIG5hcnJvdyBmb3JtLiAqL1xuXHRcdFx0JiAuY2stbGFiZWxlZC1maWVsZC12aWV3X19lcnJvciB7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogU3R5bGVzIGZvciB0d28gbGFzdCBidXR0b25zIGluIHRoZSBmb3JtIChzYXZlJmNhbmNlbCwgZWRpdCZ1bmxpbmssIGV0Yy4pLiAqL1xuXHRcdCYgPiAuY2stYnV0dG9uOm50aC1sYXN0LWNoaWxkKDEpLFxuXHRcdCYgPiAuY2stYnV0dG9uOm50aC1sYXN0LWNoaWxkKDIpIHtcblx0XHRcdHBhZGRpbmc6IHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpO1xuXHRcdFx0bWFyZ2luLXRvcDogdmFyKC0tY2stc3BhY2luZy1sYXJnZSk7XG5cblx0XHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXG5cdFx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdFx0fVxuXG5cdFx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXG5cdFx0XHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1iYXNlLWJvcmRlcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQmID4gLmNrLWJ1dHRvbjpudGgtbGFzdC1jaGlsZCgyKSB7XG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWNrLWNvbG9yLWJhc2UtYm9yZGVyKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLWNvbnRlbnQgLmltYWdlIHtcblx0ZGlzcGxheTogdGFibGU7XG5cdGNsZWFyOiBib3RoO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0LyogTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWUgc3BhY2UgYmV0d2VlbiB0aGUgY29udGVudCBhbmQgdGhlIGltYWdlLiBDZW50ZXIgaW1hZ2UgYnkgZGVmYXVsdC4gKi9cblx0bWFyZ2luOiAxZW0gYXV0bztcblxuXHQmIGltZyB7XG5cdFx0LyogUHJldmVudCB1bm5lY2Vzc2FyeSBtYXJnaW5zIGNhdXNlZCBieSBsaW5lLWhlaWdodCAoc2VlICM0NCkuICovXG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHQvKiBDZW50ZXIgdGhlIGltYWdlIGlmIGl0cyB3aWR0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGNvbnRlbnQncyB3aWR0aC4gKi9cblx0XHRtYXJnaW46IDAgYXV0bztcblxuXHRcdC8qIE1ha2Ugc3VyZSB0aGUgaW1hZ2UgbmV2ZXIgZXhjZWVkcyB0aGUgc2l6ZSBvZiB0aGUgcGFyZW50IGNvbnRhaW5lciAoY2tlZGl0b3IvY2tlZGl0b3I1LXVpIzY3KS4gKi9cblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cblx0XHQvKiBNYWtlIHN1cmUgdGhlIGNhcHRpb24gd2lsbCBiZSBkaXNwbGF5ZWQgcHJvcGVybHkgKFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2NrZWRpdG9yL2NrZWRpdG9yNS9pc3N1ZXMvMTg3MCkuICovXG5cdFx0bWluLXdpZHRoOiA1MHB4O1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlIC5pbWFnZSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogVXBsb2FkIHByb2dyZXNzIGJhci4gKi9cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlIC5pbWFnZSAuY2stcHJvZ3Jlc3MtYmFyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlIC5pbWFnZSB7XG5cdC8qIFNob3dpbmcgYW5pbWF0aW9uLiAqL1xuXHQmLmNrLWFwcGVhciB7XG5cdFx0YW5pbWF0aW9uOiBmYWRlSW4gNzAwbXM7XG5cdH1cbn1cblxuLyogVXBsb2FkIHByb2dyZXNzIGJhci4gKi9cbi5jay5jay1lZGl0b3JfX2VkaXRhYmxlIC5pbWFnZSAuY2stcHJvZ3Jlc3MtYmFyIHtcblx0aGVpZ2h0OiAycHg7XG5cdHdpZHRoOiAwO1xuXHRiYWNrZ3JvdW5kOiB2YXIoLS1jay1jb2xvci11cGxvYWQtYmFyLWJhY2tncm91bmQpO1xuXHR0cmFuc2l0aW9uOiB3aWR0aCAxMDBtcztcbn1cblxuQGtleWZyYW1lcyBmYWRlSW4ge1xuXHRmcm9tIHsgb3BhY2l0eTogMDsgfVxuXHR0byAgIHsgb3BhY2l0eTogMTsgfVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2staW1hZ2UtdXBsb2FkLWNvbXBsZXRlLWljb24ge1xuXHRkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDEwcHg7XG5cdHJpZ2h0OiAxMHB4O1xuXHRib3JkZXItcmFkaXVzOiA1MCU7XG5cblx0Jjo6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbjpyb290IHtcblx0LS1jay1jb2xvci1pbWFnZS11cGxvYWQtaWNvbjogaHNsKDAsIDAlLCAxMDAlKTtcblx0LS1jay1jb2xvci1pbWFnZS11cGxvYWQtaWNvbi1iYWNrZ3JvdW5kOiBoc2woMTIwLCAxMDAlLCAyNyUpO1xuXG5cdC0tY2staW1hZ2UtdXBsb2FkLWljb24tc2l6ZTogMjBweDtcblx0LS1jay1pbWFnZS11cGxvYWQtaWNvbi13aWR0aDogMnB4O1xufVxuXG4uY2staW1hZ2UtdXBsb2FkLWNvbXBsZXRlLWljb24ge1xuXHR3aWR0aDogdmFyKC0tY2staW1hZ2UtdXBsb2FkLWljb24tc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tY2staW1hZ2UtdXBsb2FkLWljb24tc2l6ZSk7XG5cdG9wYWNpdHk6IDA7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWltYWdlLXVwbG9hZC1pY29uLWJhY2tncm91bmQpO1xuXHRhbmltYXRpb24tbmFtZTogY2stdXBsb2FkLWNvbXBsZXRlLWljb24tc2hvdywgY2stdXBsb2FkLWNvbXBsZXRlLWljb24taGlkZTtcblx0YW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHMsIGZvcndhcmRzO1xuXHRhbmltYXRpb24tZHVyYXRpb246IDUwMG1zLCA1MDBtcztcblxuXHQvKiBUbyBtYWtlIGFuaW1hdGlvbiBzY2FsYWJsZS4gKi9cblx0Zm9udC1zaXplOiB2YXIoLS1jay1pbWFnZS11cGxvYWQtaWNvbi1zaXplKTtcblxuXHQvKiBIaWRlIGNvbXBsZXRlZCB1cGxvYWQgaWNvbiBhZnRlciAzIHNlY29uZHMuICovXG5cdGFuaW1hdGlvbi1kZWxheTogMG1zLCAzMDAwbXM7XG5cblx0LyogVGhpcyBpcyBjaGVjayBpY29uIGVsZW1lbnQgbWFkZSBmcm9tIGJvcmRlci13aWR0aCBtaXhlZCB3aXRoIGFuaW1hdGlvbnMuICovXG5cdCY6OmFmdGVyIHtcblx0XHQvKiBCZWNhdXNlIG9mIGJvcmRlciB0cmFuc2Zvcm1hdGlvbiB3ZSBuZWVkIHRvIFwiaGFyZCBjb2RlXCIgbGVmdCBwb3NpdGlvbi4gKi9cblx0XHRsZWZ0OiAyNSU7XG5cblx0XHR0b3A6IDUwJTtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdGhlaWdodDogMDtcblx0XHR3aWR0aDogMDtcblxuXHRcdHRyYW5zZm9ybTogc2NhbGVYKC0xKSByb3RhdGUoMTM1ZGVnKTtcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IHRvcDtcblx0XHRib3JkZXItdG9wOiB2YXIoLS1jay1pbWFnZS11cGxvYWQtaWNvbi13aWR0aCkgc29saWQgdmFyKC0tY2stY29sb3ItaW1hZ2UtdXBsb2FkLWljb24pO1xuXHRcdGJvcmRlci1yaWdodDogdmFyKC0tY2staW1hZ2UtdXBsb2FkLWljb24td2lkdGgpIHNvbGlkIHZhcigtLWNrLWNvbG9yLWltYWdlLXVwbG9hZC1pY29uKTtcblxuXHRcdGFuaW1hdGlvbi1uYW1lOiBjay11cGxvYWQtY29tcGxldGUtaWNvbi1jaGVjaztcblx0XHRhbmltYXRpb24tZHVyYXRpb246IDUwMG1zO1xuXHRcdGFuaW1hdGlvbi1kZWxheTogNTAwbXM7XG5cdFx0YW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XG5cblx0XHQvKiAjMTA5NS4gV2hpbGUgcmVzZXQgaXMgbm90IHByb3ZpZGluZyBwcm9wZXIgYm94LXNpemluZyBmb3IgcHNldWRvZWxlbWVudHMsIHdlIG5lZWQgdG8gaGFuZGxlIGl0LiAqL1xuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdH1cbn1cblxuQGtleWZyYW1lcyBjay11cGxvYWQtY29tcGxldGUtaWNvbi1zaG93IHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgY2stdXBsb2FkLWNvbXBsZXRlLWljb24taGlkZSB7XG5cdGZyb20ge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cblxuXHR0byB7XG5cdFx0b3BhY2l0eTogMDtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGNrLXVwbG9hZC1jb21wbGV0ZS1pY29uLWNoZWNrIHtcblx0MCUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0d2lkdGg6IDA7XG5cdFx0aGVpZ2h0OiAwO1xuXHR9XG5cdDMzJSB7XG5cdFx0d2lkdGg6IDAuM2VtO1xuXHRcdGhlaWdodDogMDtcblx0fVxuXHQxMDAlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHdpZHRoOiAwLjNlbTtcblx0XHRoZWlnaHQ6IDAuNDVlbTtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4uY2sgLmNrLXVwbG9hZC1wbGFjZWhvbGRlci1sb2FkZXIge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cblx0Jjo6YmVmb3JlIHtcblx0XHRjb250ZW50OiAnJztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuOnJvb3Qge1xuXHQtLWNrLWNvbG9yLXVwbG9hZC1wbGFjZWhvbGRlci1sb2FkZXI6IGhzbCgwLCAwJSwgNzAlKTtcblx0LS1jay11cGxvYWQtcGxhY2Vob2xkZXItbG9hZGVyLXNpemU6IDMycHg7XG59XG5cbi5jayAuY2staW1hZ2UtdXBsb2FkLXBsYWNlaG9sZGVyIHtcblx0LyogV2UgbmVlZCB0byBjb250cm9sIHRoZSBmdWxsIHdpZHRoIG9mIHRoZSBTVkcgZ3JheSBiYWNrZ3JvdW5kLiAqL1xuXHR3aWR0aDogMTAwJTtcblx0bWFyZ2luOiAwO1xufVxuXG4uY2sgLmNrLXVwbG9hZC1wbGFjZWhvbGRlci1sb2FkZXIge1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAxMDAlO1xuXG5cdCY6OmJlZm9yZSB7XG5cdFx0d2lkdGg6IHZhcigtLWNrLXVwbG9hZC1wbGFjZWhvbGRlci1sb2FkZXItc2l6ZSk7XG5cdFx0aGVpZ2h0OiB2YXIoLS1jay11cGxvYWQtcGxhY2Vob2xkZXItbG9hZGVyLXNpemUpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRib3JkZXItdG9wOiAzcHggc29saWQgdmFyKC0tY2stY29sb3ItdXBsb2FkLXBsYWNlaG9sZGVyLWxvYWRlcik7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0YW5pbWF0aW9uOiBjay11cGxvYWQtcGxhY2Vob2xkZXItbG9hZGVyIDFzIGxpbmVhciBpbmZpbml0ZTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIGNrLXVwbG9hZC1wbGFjZWhvbGRlci1sb2FkZXIge1xuXHR0byB7XG5cdFx0dHJhbnNmb3JtOiByb3RhdGUoIDM2MGRlZyApO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jay5jay1oZWFkaW5nX2hlYWRpbmcxIHtcblx0Zm9udC1zaXplOiAyMHB4O1xufVxuXG4uY2suY2staGVhZGluZ19oZWFkaW5nMiB7XG5cdGZvbnQtc2l6ZTogMTdweDtcbn1cblxuLmNrLmNrLWhlYWRpbmdfaGVhZGluZzMge1xuXHRmb250LXNpemU6IDE0cHg7XG59XG5cbi5ja1tjbGFzcyo9XCJjay1oZWFkaW5nX2hlYWRpbmdcIl0ge1xuXHRmb250LXdlaWdodDogYm9sZDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyogUmVzaXplIGRyb3Bkb3duJ3MgYnV0dG9uIGxhYmVsLiAqL1xuLmNrLmNrLWRyb3Bkb3duLmNrLWhlYWRpbmctZHJvcGRvd24ge1xuXHQmIC5jay1kcm9wZG93bl9fYnV0dG9uIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHR3aWR0aDogOGVtO1xuXHR9XG5cblx0JiAuY2stZHJvcGRvd25fX3BhbmVsIC5jay1saXN0X19pdGVtIHtcblx0XHRtaW4td2lkdGg6IDE4ZW07XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrLWNvbnRlbnQgLmltYWdlID4gZmlnY2FwdGlvbiB7XG5cdGRpc3BsYXk6IHRhYmxlLWNhcHRpb247XG5cdGNhcHRpb24tc2lkZTogYm90dG9tO1xuXHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHRjb2xvcjogaHNsKDAsIDAlLCAyMCUpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMCwgMCUsIDk3JSk7XG5cdHBhZGRpbmc6IC42ZW07XG5cdGZvbnQtc2l6ZTogLjc1ZW07XG5cdG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG46cm9vdCB7XG5cdC0tY2staW1hZ2Utc3R5bGUtc3BhY2luZzogMS41ZW07XG59XG5cbi5jay1jb250ZW50IHtcblx0JiAuaW1hZ2Utc3R5bGUtc2lkZSB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdG1hcmdpbi1sZWZ0OiB2YXIoLS1jay1pbWFnZS1zdHlsZS1zcGFjaW5nKTtcblx0XHRtYXgtd2lkdGg6IDUwJTtcblx0fVxuXG5cdCYgLmltYWdlLXN0eWxlLWFsaWduLWxlZnQge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY2staW1hZ2Utc3R5bGUtc3BhY2luZyk7XG5cdH1cblxuXHQmIC5pbWFnZS1zdHlsZS1hbGlnbi1jZW50ZXIge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0fVxuXG5cdCYgLmltYWdlLXN0eWxlLWFsaWduLXJpZ2h0IHtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bWFyZ2luLWxlZnQ6IHZhcigtLWNrLWltYWdlLXN0eWxlLXNwYWNpbmcpO1xuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi8qXG4gKiBOb3RlOiBUaGlzIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIHdpcmVmcmFtZSBzdHlsZXMgb25seS4gQnV0IHNpbmNlIHRoZXJlIGFyZSBubyBzdWNoIHN0eWxlcyxcbiAqIGl0IGFjdHMgYXMgYSBtZXNzYWdlIHRvIHRoZSBidWlsZGVyIHRlbGxpbmcgdGhhdCBpdCBzaG91bGQgbG9vayBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGVzXG4gKiAqKmluIHRoZSB0aGVtZSoqIHdoZW4gY29tcGlsaW5nIHRoZSBlZGl0b3IuXG4gKi9cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyogQ2xhc3MgYWRkZWQgdG8gc3BhbiBlbGVtZW50IHN1cnJvdW5kaW5nIGN1cnJlbnRseSBzZWxlY3RlZCBsaW5rLiAqL1xuLmNrIC5jay1saW5rX3NlbGVjdGVkIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY2stY29sb3ItbGluay1zZWxlY3RlZC1iYWNrZ3JvdW5kKTtcbn1cblxuLypcbiAqIENsYXNzZXMgdXNlZCBieSB0aGUgXCJmYWtlIHZpc3VhbCBzZWxlY3Rpb25cIiBkaXNwbGF5ZWQgaW4gdGhlIGNvbnRlbnQgd2hlbiBhbiBpbnB1dFxuICogaW4gdGhlIGxpbmsgVUkgaGFzIGZvY3VzICh0aGUgYnJvd3NlciBkb2VzIG5vdCByZW5kZXIgdGhlIG5hdGl2ZSBzZWxlY3Rpb24gaW4gdGhpcyBzdGF0ZSkuXG4gKi9cbi5jayAuY2stZmFrZS1saW5rLXNlbGVjdGlvbiB7XG5cdGJhY2tncm91bmQ6IHZhcigtLWNrLWNvbG9yLWxpbmstZmFrZS1zZWxlY3Rpb24pO1xufVxuXG4vKiBBIGNvbGxhcHNlZCBmYWtlIHZpc3VhbCBzZWxlY3Rpb24uICovXG4uY2sgLmNrLWZha2UtbGluay1zZWxlY3Rpb25fY29sbGFwc2VkIHtcblx0aGVpZ2h0OiAxMDAlO1xuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1iYXNlLXRleHQpO1xuXHRtYXJnaW4tcmlnaHQ6IC0xcHg7XG5cdG91dGxpbmU6IHNvbGlkIDFweCBoc2xhKDAsIDAlLCAxMDAlLCAuNSk7XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fcndkLmNzc1wiO1xuXG4uY2suY2stbGluay1mb3JtIHtcblx0ZGlzcGxheTogZmxleDtcblxuXHQmIC5jay1sYWJlbCB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdEBtaXhpbiBjay1tZWRpYS1waG9uZSB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXG5cdFx0JiAuY2stbGFiZWxlZC1maWVsZC12aWV3IHtcblx0XHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdFx0fVxuXG5cdFx0JiAuY2stYnV0dG9uIHtcblx0XHRcdGZsZXgtYmFzaXM6IDUwJTtcblx0XHR9XG5cdH1cbn1cblxuLypcbiAqIFN0eWxlIGxpbmsgZm9ybSBkaWZmZXJlbnRseSB3aGVuIG1hbnVhbCBkZWNvcmF0b3JzIGFyZSBhdmFpbGFibGUuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtbGluay9pc3N1ZXMvMTg2LlxuICovXG4uY2suY2stbGluay1mb3JtX2xheW91dC12ZXJ0aWNhbCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdC8qXG5cdCAqIFdoZXRoZXIgdGhlIGZvcm0gaXMgaW4gdGhlIHJlc3BvbnNpdmUgbW9kZSBvciBub3QsIGlmIHRoZXJlIGFyZSBkZWNvcmF0b3IgYnV0dG9uc1xuXHQgKiBrZWVwIHRoZSB0b3AgbWFyZ2luIG9mIGFjdGlvbiBidXR0b25zIG1lZGl1bS5cblx0ICovXG5cdCYgLmNrLWJ1dHRvbiB7XG5cdFx0Ji5jay1idXR0b24tc2F2ZSxcblx0XHQmLmNrLWJ1dHRvbi1jYW5jZWwge1xuXHRcdFx0bWFyZ2luLXRvcDogdmFyKC0tY2stc3BhY2luZy1tZWRpdW0pO1xuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX2Rpci5jc3NcIjtcblxuLypcbiAqIFN0eWxlIGxpbmsgZm9ybSBkaWZmZXJlbnRseSB3aGVuIG1hbnVhbCBkZWNvcmF0b3JzIGFyZSBhdmFpbGFibGUuXG4gKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUtbGluay9pc3N1ZXMvMTg2LlxuICovXG4uY2suY2stbGluay1mb3JtX2xheW91dC12ZXJ0aWNhbCB7XG5cdHBhZGRpbmc6IDA7XG5cdG1pbi13aWR0aDogdmFyKC0tY2staW5wdXQtdGV4dC13aWR0aCk7XG5cblx0JiAuY2stbGFiZWxlZC1maWVsZC12aWV3IHtcblx0XHRtYXJnaW46IHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpIHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpIHZhcigtLWNrLXNwYWNpbmctc21hbGwpO1xuXG5cdFx0JiAuY2staW5wdXQtdGV4dCB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cblxuXHQmIC5jay1idXR0b24ge1xuXHRcdHBhZGRpbmc6IHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpO1xuXHRcdG1hcmdpbjogMDtcblx0XHRib3JkZXItcmFkaXVzOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXHRcdHdpZHRoOiA1MCU7XG5cblx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cblx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblxuXHRcdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jay1jb2xvci1iYXNlLWJvcmRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVXNpbmcgYWRkaXRpb25hbCBgLmNrYCBjbGFzcyBmb3Igc3Ryb25nZXIgQ1NTIHNwZWNpZmljaXR5IHRoYW4gYC5jay5jay1saW5rLWZvcm0gPiA6bm90KDpmaXJzdC1jaGlsZClgLiAqL1xuXHQmIC5jay5jay1saXN0IHtcblx0XHRtYXJnaW46IHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpIHZhcigtLWNrLXNwYWNpbmctbGFyZ2UpO1xuXG5cdFx0JiAuY2stYnV0dG9uLmNrLXN3aXRjaGJ1dHRvbiB7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AZGVmaW5lLW1peGluIGNrLWRpciAkZGlyZWN0aW9uIHtcblx0QG5lc3QgW2Rpcj1cIiQoZGlyZWN0aW9uKVwiXSAmIHtcblx0XHRAbWl4aW4tY29udGVudDtcblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX3J3ZC5jc3NcIjtcblxuLmNrLmNrLWxpbmstYWN0aW9ucyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGZsZXgtd3JhcDogbm93cmFwO1xuXG5cdCYgLmNrLWxpbmstYWN0aW9uc19fcHJldmlldyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0JiAuY2stYnV0dG9uX19sYWJlbCB7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdH1cblx0fVxuXG5cdEBtaXhpbiBjay1tZWRpYS1waG9uZSB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXG5cdFx0JiAuY2stbGluay1hY3Rpb25zX19wcmV2aWV3IHtcblx0XHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdFx0fVxuXG5cdFx0JiAuY2stYnV0dG9uOm5vdCguY2stbGluay1hY3Rpb25zX19wcmV2aWV3KSB7XG5cdFx0XHRmbGV4LWJhc2lzOiA1MCU7XG5cdFx0fVxuXHR9XG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL2NvbXBvbmVudHMvdG9vbHRpcC9taXhpbnMvX3Rvb2x0aXAuY3NzXCI7XG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX3Vuc2VsZWN0YWJsZS5jc3NcIjtcbkBpbXBvcnQgXCJAY2tlZGl0b3IvY2tlZGl0b3I1LXVpL3RoZW1lL21peGlucy9fZGlyLmNzc1wiO1xuQGltcG9ydCBcIi4uL21peGlucy9fZm9jdXMuY3NzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zL19zaGFkb3cuY3NzXCI7XG5AaW1wb3J0IFwiQGNrZWRpdG9yL2NrZWRpdG9yNS11aS90aGVtZS9taXhpbnMvX3J3ZC5jc3NcIjtcblxuLmNrLmNrLWxpbmstYWN0aW9ucyB7XG5cdCYgLmNrLWJ1dHRvbi5jay1saW5rLWFjdGlvbnNfX3ByZXZpZXcge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXG5cdFx0JiAuY2stYnV0dG9uX19sYWJlbCB7XG5cdFx0XHRwYWRkaW5nOiAwIHZhcigtLWNrLXNwYWNpbmctbWVkaXVtKTtcblx0XHRcdGNvbG9yOiB2YXIoLS1jay1jb2xvci1saW5rLWRlZmF1bHQpO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdC8qIE1hdGNoIHRoZSBib3ggbW9kZWwgb2YgdGhlIGxpbmsgZWRpdG9yIGZvcm0ncyBpbnB1dCBzbyB0aGUgYmFsbG9vblxuXHRcdFx0ZG9lcyBub3QgY2hhbmdlIHdpZHRoIHdoZW4gbW92aW5nIGJldHdlZW4gYWN0aW9ucyBhbmQgdGhlIGZvcm0uICovXG5cdFx0XHRtYXgtd2lkdGg6IHZhcigtLWNrLWlucHV0LXRleHQtd2lkdGgpO1xuXHRcdFx0bWluLXdpZHRoOiAzZW07XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLFxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyxcblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdH1cblxuXHRcdCY6YWN0aXZlIHtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QG1peGluIGNrLWRpciBsdHIge1xuXHRcdCYgLmNrLWJ1dHRvbjpub3QoOmZpcnN0LWNoaWxkKSB7XG5cdFx0XHRtYXJnaW4tbGVmdDogdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cdFx0fVxuXHR9XG5cblx0QG1peGluIGNrLWRpciBydGwge1xuXHRcdCYgLmNrLWJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKTtcblx0XHR9XG5cdH1cblxuXHRAbWl4aW4gY2stbWVkaWEtcGhvbmUge1xuXHRcdCYgLmNrLWJ1dHRvbi5jay1saW5rLWFjdGlvbnNfX3ByZXZpZXcge1xuXHRcdFx0bWFyZ2luOiB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKSB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKSAwO1xuXG5cdFx0XHQmIC5jay1idXR0b25fX2xhYmVsIHtcblx0XHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0JiAuY2stYnV0dG9uOm5vdCguY2stbGluay1hY3Rpb25zX19wcmV2aWV3KSB7XG5cdFx0XHRAbWl4aW4gY2stZGlyIGx0ciB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdFx0fVxuXG5cdFx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAwMy0yMDIxLCBDS1NvdXJjZSAtIEZyZWRlcmljbyBLbmFiYmVuLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEVuYWJsZXMgdGhlIHRvb2x0aXAsIHdoaWNoIGlzIHRoZSB0b29sdGlwIGlzIGluIERPTSBidXRcbiAqIG5vdCB5ZXQgZGlzcGxheWVkLlxuICovXG5AZGVmaW5lLW1peGluIGNrLXRvb2x0aXBfZW5hYmxlZCB7XG5cdCYgLmNrLXRvb2x0aXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0Lypcblx0XHQgKiBEb24ndCBkaXNwbGF5IHRvb2x0aXBzIGluIGRldmljZXMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCA6aG92ZXIuXG5cdFx0ICogSW4gZmFjdCwgaXQncyBhbGwgYWJvdXQgaU9TLCB3aGljaCBmb3JjZXMgdXNlciB0byBjbGljayBVSSBlbGVtZW50cyB0d2ljZSB0byBleGVjdXRlXG5cdFx0ICogdGhlIHByaW1hcnkgYWN0aW9uLCB3aGVuIHRvb2x0aXBzIGFyZSBlbmFibGVkLlxuXHRcdCAqXG5cdFx0ICogUTogT0ssIGJ1dCB3aHkgbm90IHRoZSBmb2xsb3dpbmcgcXVlcnk/XG5cdFx0ICpcblx0XHQgKiAgIEBtZWRpYSAoaG92ZXIpIHtcblx0XHQgKiAgICAgICBkaXNwbGF5OiBibG9jaztcblx0XHQgKiAgIH1cblx0XHQgKlxuXHRcdCAqIEE6IEJlY2F1c2UgRkYgZG9lcyBub3Qgc3VwcG9ydCBpdCBhbmQgaXQgd291bGQgY29tcGxldGVseSBkaXNhYmxlIHRvb2x0aXBzXG5cdFx0ICogaW4gdGhhdCBicm93c2VyLlxuXHRcdCAqXG5cdFx0ICogTW9yZSBpbiBodHRwczovL2dpdGh1Yi5jb20vY2tlZGl0b3IvY2tlZGl0b3I1L2lzc3Vlcy85MjAuXG5cdFx0ICovXG5cdFx0QG1lZGlhIChob3Zlcjpub25lKSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIERpc2FibGVzIHRoZSB0b29sdGlwIG1ha2luZyBpdCBkaXNhcHBlYXIgZnJvbSBET00uXG4gKi9cbkBkZWZpbmUtbWl4aW4gY2stdG9vbHRpcF9kaXNhYmxlZCB7XG5cdCYgLmNrLXRvb2x0aXAge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn1cblxuLyoqXG4gKiBTaG93cyB0aGUgdG9vbHRpcCwgd2hpY2ggaXMgYWxyZWFkeSBpbiBET00uXG4gKiBSZXF1aXJlcyBgY2stdG9vbHRpcF9lbmFibGVkYCBmaXJzdC5cbiAqL1xuQGRlZmluZS1taXhpbiBjay10b29sdGlwX3Zpc2libGUge1xuXHQmIC5jay10b29sdGlwIHtcblx0XHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBNYWtlcyBlbGVtZW50IHVuc2VsZWN0YWJsZS5cbiAqL1xuQGRlZmluZS1taXhpbiBjay11bnNlbGVjdGFibGUge1xuXHQtbW96LXVzZXItc2VsZWN0OiBub25lO1xuXHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuXHQtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG5cdHVzZXItc2VsZWN0OiBub25lXG59XG4iLCIvKlxuICogQ29weXJpZ2h0IChjKSAyMDAzLTIwMjEsIENLU291cmNlIC0gRnJlZGVyaWNvIEtuYWJiZW4uIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBGb3IgbGljZW5zaW5nLCBzZWUgTElDRU5TRS5tZCBvciBodHRwczovL2NrZWRpdG9yLmNvbS9sZWdhbC9ja2VkaXRvci1vc3MtbGljZW5zZVxuICovXG5cbi5jay5jay1jb2xvci1ncmlkIHtcblx0ZGlzcGxheTogZ3JpZDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIi4uLy4uLy4uL21peGlucy9fcm91bmRlZC5jc3NcIjtcblxuOnJvb3Qge1xuXHQtLWNrLWNvbG9yLWdyaWQtdGlsZS1zaXplOiAyNHB4O1xuXG5cdC8qIE5vdCB1c2luZyBnbG9iYWwgY29sb3JzIGhlcmUgYmVjYXVzZSB0aGVzZSBtYXkgY2hhbmdlIGJ1dCBzb21lIGNvbG9ycyBpbiBhIHBhbGxldHRlXG5cdCAqIHJlcXVpcmUgc3BlY2lhbCB0cmVhdG1lbnQuIEZvciBpbnN0YW5jZSwgdGhpcyBlbnN1cmVzIG5vIG1hdHRlciB3aGF0IHRoZSBVSSB0ZXh0IGNvbG9yIGlzLFxuXHQgKiB0aGUgY2hlY2sgaWNvbiB3aWxsIGxvb2sgZ29vZCBvbiB0aGUgYmxhY2sgY29sb3IgdGlsZS4gKi9cblx0LS1jay1jb2xvci1jb2xvci1ncmlkLWNoZWNrLWljb246IGhzbCgwLCAwJSwgMCUpO1xufVxuXG4uY2suY2stY29sb3ItZ3JpZCB7XG5cdGdyaWQtZ2FwOiA1cHg7XG5cdHBhZGRpbmc6IDhweDtcbn1cblxuLmNrLmNrLWNvbG9yLWdyaWRfX3RpbGUge1xuXHR3aWR0aDogdmFyKC0tY2stY29sb3ItZ3JpZC10aWxlLXNpemUpO1xuXHRoZWlnaHQ6IHZhcigtLWNrLWNvbG9yLWdyaWQtdGlsZS1zaXplKTtcblx0bWluLXdpZHRoOiB2YXIoLS1jay1jb2xvci1ncmlkLXRpbGUtc2l6ZSk7XG5cdG1pbi1oZWlnaHQ6IHZhcigtLWNrLWNvbG9yLWdyaWQtdGlsZS1zaXplKTtcblx0cGFkZGluZzogMDtcblx0dHJhbnNpdGlvbjogLjJzIGVhc2UgYm94LXNoYWRvdztcblx0Ym9yZGVyOiAwO1xuXG5cdCYuY2stZGlzYWJsZWQge1xuXHRcdGN1cnNvcjogdW5zZXQ7XG5cdFx0dHJhbnNpdGlvbjogdW5zZXQ7XG5cdH1cblxuXHQmLmNrLWNvbG9yLXRhYmxlX19jb2xvci10aWxlX2JvcmRlcmVkIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXHR9XG5cblx0JiAuY2suY2staWNvbiB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRjb2xvcjogdmFyKC0tY2stY29sb3ItY29sb3ItZ3JpZC1jaGVjay1pY29uKTtcblx0fVxuXG5cdCYuY2stb24ge1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCB2YXIoLS1jay1jb2xvci1iYXNlLWJhY2tncm91bmQpLCAwIDAgMCAycHggdmFyKC0tY2stY29sb3ItYmFzZS10ZXh0KTtcblxuXHRcdCYgLmNrLmNrLWljb24ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXHR9XG5cblx0Ji5jay1vbixcblx0Jjpmb2N1czpub3QoIC5jay1kaXNhYmxlZCApLFxuXHQmOmhvdmVyOm5vdCggLmNrLWRpc2FibGVkICkge1xuXHRcdC8qIERpc2FibGUgdGhlIGRlZmF1bHQgLmNrLWJ1dHRvbidzIGJvcmRlciByaW5nLiAqL1xuXHRcdGJvcmRlcjogMDtcblx0fVxuXG5cdCY6Zm9jdXM6bm90KCAuY2stZGlzYWJsZWQgKSxcblx0Jjpob3Zlcjpub3QoIC5jay1kaXNhYmxlZCApIHtcblx0XHRib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggdmFyKC0tY2stY29sb3ItYmFzZS1iYWNrZ3JvdW5kKSwgMCAwIDAgMnB4IHZhcigtLWNrLWNvbG9yLWZvY3VzLWJvcmRlcik7XG5cdH1cbn1cblxuLmNrLmNrLWNvbG9yLWdyaWRfX2xhYmVsIHtcblx0cGFkZGluZzogMCB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKTtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLmNrIC5jay1idXR0b24uY2stY29sb3ItdGFibGVfX3JlbW92ZS1jb2xvciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdHdpZHRoOiAxMDAlO1xufVxuXG5sYWJlbC5jay5jay1jb2xvci1ncmlkX19sYWJlbCB7XG5cdGZvbnQtd2VpZ2h0OiB1bnNldDtcbn1cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuQGltcG9ydCBcIkBja2VkaXRvci9ja2VkaXRvcjUtdWkvdGhlbWUvbWl4aW5zL19kaXIuY3NzXCI7XG5cbi5jayAuY2stYnV0dG9uLmNrLWNvbG9yLXRhYmxlX19yZW1vdmUtY29sb3Ige1xuXHRwYWRkaW5nOiBjYWxjKHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpIC8gMiApIHZhcigtLWNrLXNwYWNpbmctc3RhbmRhcmQpO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcblxuXHQmOm5vdCg6Zm9jdXMpIHtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY2stY29sb3ItYmFzZS1ib3JkZXIpO1xuXHR9XG5cblx0JiAuY2suY2staWNvbiB7XG5cdFx0QG1peGluIGNrLWRpciBsdHIge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jay1zcGFjaW5nLXN0YW5kYXJkKTtcblx0XHR9XG5cblx0XHRAbWl4aW4gY2stZGlyIHJ0bCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogdmFyKC0tY2stc3BhY2luZy1zdGFuZGFyZCk7XG5cdFx0fVxuXHR9XG59XG5cbiIsIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAyMSwgQ0tTb3VyY2UgLSBGcmVkZXJpY28gS25hYmJlbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIEZvciBsaWNlbnNpbmcsIHNlZSBMSUNFTlNFLm1kIG9yIGh0dHBzOi8vY2tlZGl0b3IuY29tL2xlZ2FsL2NrZWRpdG9yLW9zcy1saWNlbnNlXG4gKi9cblxuLyogVGhlIHZhbHVlcyBzaG91bGQgYmUgc3luY2hyb25pemVkIHdpdGggdGhlIFwiRk9OVF9TSVpFX1BSRVNFVF9VTklUU1wiIG9iamVjdCBpbiB0aGUgXCIvc3JjL2ZvbnRzaXplL3V0aWxzLmpzXCIgZmlsZS4gKi9cblxuLyogU3R5bGVzIHNob3VsZCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBgLmNrLWNvbnRlbnRgIGNsYXNzLlxuU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ja2VkaXRvci9ja2VkaXRvcjUvaXNzdWVzLzY2MzYgKi9cbi5jay1jb250ZW50IHtcblx0JiAudGV4dC10aW55IHtcblx0XHRmb250LXNpemU6IC43ZW07XG5cdH1cblxuXHQmIC50ZXh0LXNtYWxsIHtcblx0XHRmb250LXNpemU6IC44NWVtO1xuXHR9XG5cblx0JiAudGV4dC1iaWcge1xuXHRcdGZvbnQtc2l6ZTogMS40ZW07XG5cdH1cblxuXHQmIC50ZXh0LWh1Z2Uge1xuXHRcdGZvbnQtc2l6ZTogMS44ZW07XG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=*/