/* =================================================================== */
/* ! Core Brand Palette
/* =================================================================== */
/* Pale navy tint - settings headings, icon chips */
/* The brand purple. $purple is redefined below, so it does not compile to this */
/* The line colour of the nav's line icons (tasks, waitlist, imports, forms) and the copy-eye icon */
/* =================================================================== */
/* ! Theme Colors
/* =================================================================== */
/* Primary Action Color */
/* Used for 'Coming Soon' banner and CTA buttons. */
/* Success / Secondary Theme Color */
/* Accent / Tertiary Theme Color */
/* Eyes: right (OD) red and left (OS) blue, as eye charts and clinical records mark them */
/* Danger / Error Colors */
/* A failure counted in a report, rather than an error to act on */
/* Specific UI Colors */
/* For Admin note border */
/* For Nurse note border */
/* =================================================================== */
/* ! Greys & Neutrals
/* =================================================================== */
/* Text */
/* Primary text on light backgrounds */
/* Subtitles and helper text */
/* Modal body text */
/* Borders & UI */
/* Form control borders */
/* btn-lost border */
/* Navigation component */
/* Rules inside a toolbar box - AI Assist, claimable items */
/* Backgrounds */
/* Alternate table color */
/* Disabled button background */
/* =================================================================== */
/* ! Dark Theme (Navy)
/* Used for website landing pages
/* =================================================================== */
/* Modal titles, processing text */
/* Modal backdrop */
/* Sticky header */
/* =================================================================== */
/* ! Transparent Whites
/* =================================================================== */
/* Card backgrounds */
/* Borders */
/* Body text on dark bg */
/* =================================================================== */
/* ! Transparent Blacks
/* =================================================================== */
/* =================================================================== */
/* ! Transparent Theme Colors
/* =================================================================== */
/* Cyan Tints */
/* Form focus shadow */
/* Green Tints */
/* Yellow Tints */
/* Red Tints */
/* Navy Tints */
/* Lavender Tints */
/* =================================================================== */
/* ! Practice leave
/* Slate rather than red, so the whole practice being closed reads
/* differently from one clinician's leave.
/* =================================================================== */
/* =================================================================== */
/* ! Warning Callout
/* =================================================================== */
/* =================================================================== */
/* ! Notification Urgency
/* One colour per urgency, shared by the banner, the notification modal
/* and the admin console so an urgency reads the same everywhere.
/* Backgrounds are opaque - the banner floats over page content.
/* =================================================================== */
/* =================================================================== */
/* ! Typography
/* =================================================================== */
/* Font Family */
/* Font Weights */
/* Font Sizes */
/* Line Heights */
/* =================================================================== */
/* ! Sizing & Layout
/* =================================================================== */
/* Border Radius */
/* =================================================================== */
/* ! Shadows
/* =================================================================== */
@font-face {
    font-family: 'Gordita Heavy Italic';
    src: url('./fonts/gorditablackitalic-webfont.woff2') format('woff2'), url('./fonts/gorditablackitalic-webfont.woff') format('woff'), url('./fonts/gorditablackitalic-webfont.ttf') format('truetype');
    font-weight: 900;
    font-style: italic;
}
.font-heavy-italic {
    font-family: 'Gordita Heavy Italic';
}
@font-face {
    font-family: 'Gordita Heavy';
    src: url('./fonts/gorditablack-webfont.woff2') format('woff2'), url('./fonts/gorditablack-webfont.woff') format('woff'), url('./fonts/gorditablack-webfont.ttf') format('truetype');
    font-weight: 900;
    font-style: normal;
}
.font-heavy {
    font-family: 'Gordita Heavy';
}
@font-face {
    font-family: 'Gordita Bold Italic';
    src: url('./fonts/gorditabolditalic-webfont.woff2') format('woff2'), url('./fonts/gorditabolditalic-webfont.woff') format('woff'), url('./fonts/gorditabolditalic-webfont.ttf') format('truetype');
    font-weight: 700;
    font-style: italic;
}
.font-bold-italic, .selected-doc-wrap .selected-doc-name, .retinopathy-popup .table-bordered th, .maculopathy-popup .table-bordered th {
    font-family: 'Gordita Bold Italic';
}
@font-face {
    font-family: 'Gordita Bold';
    src: url('./fonts/gorditabold-webfont.woff2') format('woff2'), url('./fonts/gorditabold-webfont.woff') format('woff'), url('./fonts/gorditabold-webfont.ttf') format('truetype');
    font-weight: 700;
    font-style: normal;
}
.font-bold, .form-impact .radio-flex-wrap .radio-inline .marker, .table-complete th, .question-wrap span, .terms h1, .btn-next, .blue-box .header .h4, .pre-op-header h3, .pre-op-header h4, .patients-empty h4, .menu-section h4, .menu-item h4, .patient-header h3, .patient-header h4, .patient-header h5, .operation-form label, .operation-note-header h3, .operation-note-header h4, .injection-block .injection-block-title {
    font-family: 'Gordita Bold';
}
@font-face {
    font-family: 'Gordita Medium Italic';
    src: url('./fonts/gorditamediumitalic-webfont.woff2') format('woff2'), url('./fonts/gorditamediumitalic-webfont.woff') format('woff'), url('./fonts/gorditamediumitalic-webfont.ttf') format('truetype');
    font-weight: 600;
    font-style: italic;
}
.font-medium-italic {
    font-family: 'Gordita Medium Italic';
}
@font-face {
    font-family: 'Gordita Medium';
    src: url('./fonts/gorditamedium-webfont.woff2') format('woff2'), url('./fonts/gorditamedium-webfont.woff') format('woff'), url('./fonts/gorditamedium-webfont.ttf') format('truetype');
    font-weight: 600;
    font-style: normal;
}
.font-medium, .form-impact .form-group-header .radio-flex-wrap .radio-inline, .popover h3.popover-title, .popover-normal h3.popover-title, .impact-review-wrap .impact-review-expired, .terms h3 {
    font-family: 'Gordita Medium';
}
@font-face {
    font-family: 'Gordita Regular Italic';
    src: url('./fonts/gorditaregularitalic-webfont.woff2') format('woff2'), url('./fonts/gorditaregularitalic-webfont.woff') format('woff'), url('./fonts/gorditaregularitalic-webfont.ttf') format('truetype');
    font-weight: 500;
    font-style: italic;
}
.font-regular-italic, .text-area-wrap .count-remaining, .retinopathy-popup td, .retinopathy-popup p, .maculopathy-popup td, .maculopathy-popup p, .table-incisions th, .table-incisions td {
    font-family: 'Gordita Regular Italic';
}
@font-face {
    font-family: 'Gordita Regular';
    src: url('./fonts/gorditaregular-webfont.woff2') format('woff2'), url('./fonts/gorditaregular-webfont.woff') format('woff'), url('./fonts/gorditaregular-webfont.ttf') format('truetype');
    font-weight: 500;
    font-style: normal;
}
.font-regular, .head-no-link, .search-form .form-group .form-control, .filter-select, .form-impact label.control-label, .popover .popover-content, .popover-normal .popover-content, .table-complete td:nth-child(1), .selected-doc-wrap .selected-doc-practice, .impact-review-wrap .impact-review-date, .form-exam, .form-exam select, .form-exam .form-control, .terms, .pre-op-form, .pre-op-form select, .pre-op-form .form-control, .pre-op-header .head-link, .popover-preop-wrap label, .popover-preop-wrap .form-control, .operation-form, .operation-form select, .operation-form .form-control, .operation-form .marker, .operation-note-header .head-link, .head-link {
    font-family: 'Gordita Regular';
}
@font-face {
    font-family: 'Gordita Light Italic';
    src: url('./fonts/gorditalightitalic-webfont.woff2') format('woff2'), url('./fonts/gorditalightitalic-webfont.woff') format('woff'), url('./fonts/gorditalightitalic-webfont.ttf') format('truetype');
    font-weight: 200;
    font-style: italic;
}
.font-light-italic, .optional {
    font-family: 'Gordita Light Italic';
}
@font-face {
    font-family: 'Gordita Light';
    src: url('./fonts/gorditalight-webfont.woff2') format('woff2'), url('./fonts/gorditalight-webfont.woff') format('woff'), url('./fonts/gorditalight-webfont.ttf') format('truetype');
    font-weight: 200;
    font-style: normal;
}
.font-light {
    font-family: 'Gordita Light';
}
html, body {
	height: 100%;
	font-size: 12px;
	-webkit-font-smoothing: unset !important;
	/*letter-spacing: 1px;*/
}
main {
	min-height: 100vh;
}
.bg-white {
	background: #ffffff;
}
.text-white {
	color: #ffffff;
}
.bg-navy {
	background: #0035d2;
}
.text-navy, .container-welcome-footer .footer-wrap ul a, .selected-doc-wrap .selected-doc-name, .terms h3, .blue-box .header, .pre-op-save-wrap .progression-wrap .save-progress, .table-medication, .pre-op-header h3, .pre-op-header h4, .patients-empty h4, .menu-section h4, .menu-item h4, .patient-header h3, .patient-header h4, .patient-header h5, .operation-note-save-wrap .progression-wrap .save-progress, .table-incisions, .operation-note-header h3, .operation-note-header h4, .operation-note-header h6, .injection-block .injection-block-title {
	color: #0035d2;
}
.bg-darkNavy {
	background: #2a307f;
}
.text-darkNavy {
	color: #2a307f;
}
.bg-cyan {
	background: #00bcd4;
}
.text-cyan {
	color: #00bcd4;
}
.bg-blue {
	background: #2072bb;
}
.text-blue {
	color: #2072bb;
}
.bg-purple {
	background: #9C27B0;
}
.text-purple, .optional {
	color: #9C27B0;
}
.bg-paleBlue {
	background: #f2f6fb;
}
.text-paleBlue {
	color: #f2f6fb;
}
.bg-navGrey {
	background: #e7e9e9;
}
.text-navGrey {
	color: #e7e9e9;
}
.bg-pageBackGround {
	background: #ebecea;
}
.text-pageBackGround {
	color: #ebecea;
}
.bg-textGrey {
	background: #343a40;
}
.text-textGrey, .form-impact label.control-label, .form-impact .form-group-header .radio-flex-wrap .radio-inline, .selected-doc-wrap .selected-doc-practice, .terms {
	color: #343a40;
}
.bg-logoutGrey {
	background: #404141;
}
.text-logoutGrey, .terms h1 {
	color: #404141;
}
.text-red {
	color: #a94442 !important;
}
.text-bright-red {
	color: red;
}
.outline {
	outline: 1px dotted red;
}
.unstyled {
	color: inherit;
	text-decoration: inherit;
	cursor: inherit;
}
.unstyled:active, .unstyled:focus {
    outline: none;
}
.unstyled:hover {
    text-decoration: underline !important;
    color: inherit;
}
.pointer {
	cursor: pointer !important;
}
.text-small {
	font-size: 0.8em;
}
.mb-0, .selected-doc-wrap .selected-doc-practice {
	margin-bottom: 0;
}
.th-no-border {
	/* border-width: 0px !important; */
	border-left-width: 0px !important;
	border-right-width: 0px !important;
	border-bottom-color: #2072bb !important;
	vertical-align:middle !important;
}
.th-border-top {
	border-top-color: #2072bb;
}
.toast-container {
	margin-top: 25%;
}
.flex-half-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	-ms-flex-align: baseline;
	    align-items: baseline;
	padding-left: 2em;
	padding-right: 2em;
	padding-top: 8px;
	padding-bottom: 8px;
}
.flex-half-cell {
	width: 50%;
}
.flex-three-cell {
	width: 33%;
	text-align: center;
}
.navy-thin-line {
	height: 1px;
	background-color: #ddd;
	margin-left: 1.5em;
	margin-right: 1.5em;
}
.remove-diagnosis {
	padding: 0;
	margin: 0;
	border: 1px solid #0035d2;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background-color: white;
}
.remove-diagnosis:hover {
    background-color: #0035d2;
    color: white;
}
.remove-procedure {
	padding: 0;
	margin: 0;
	border: 1px solid #ff0000;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background-color: white;
}
.remove-procedure:hover {
    background-color: #ff0000;
    color: white;
}
.arrow-right {
	border: solid #0035d2;
	border-width: 0 2px 2px 0;
	display: inline-block;
	padding: 3px;
	margin-bottom: 2px;
	margin-left: 2px;
	transform: rotate(-45deg);
	-webkit-transform: rotate(-45deg);
}
.text-grey-light {
	color: #343a40;
	font-family: 'Gordita Light';
}
.text-procedure {
	color: #ff0000;
}
.title-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: baseline;
	    align-items: baseline;
	margin-bottom: 0.2em;
}
.filter-grey{
	filter: invert(66%) sepia(6%) saturate(173%) hue-rotate(190deg) brightness(89%) contrast(85%);
}
.time-picker {
	margin-left: 1em;
	padding-left: 1em;
    height: 3.0em;
    border-width: 1px;
    border-color: #0035d2;
    border-radius: 24px;
}
.scroll-container {
	position:absolute;
    width: 42.5em;
    height:80%;
	overflow-y: scroll;
	overflow-x: hidden;
	margin-left: 1.5em;
	margin-top: 2em;
}
.scroll-container::-webkit-scrollbar {
	width: 5px; /* Set the width of the scrollbar */
	background: transparent;
	/* position: absolute; */
 }
.scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2; /* Set the color of the thumb */
 }
/* Caps the diagnosis list height on the patient dashboard so a long list */
/* doesn't blow out the overall page scroll. */
.diagnosis-scroll-container {
	max-height: 24em;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 0.5em;
}
.diagnosis-scroll-container::-webkit-scrollbar {
	width: 5px;
	background: transparent;
}
.diagnosis-scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2;
	border-radius: 3px;
}
/* The documents list scrolls in place instead of paging, so the section keeps a fixed height */
/* however many documents a patient has. The scrollbar is left visible rather than overlaid so */
/* the position in the list is always readable. */
.documents-scroll-container {
	max-height: 32em;
	overflow-y: auto;
	overflow-x: hidden;
	padding-right: 0.5em;
	scrollbar-width: thin;
	scrollbar-color: #0035d2 rgba(0, 53, 210, 0.12);
}
.documents-scroll-container::-webkit-scrollbar {
	width: 8px;
}
.documents-scroll-container::-webkit-scrollbar-track {
	background: rgba(0, 53, 210, 0.12);
	border-radius: 4px;
}
.documents-scroll-container::-webkit-scrollbar-thumb {
	background-color: #0035d2;
	border-radius: 4px;
}
.documents-scroll-more {
	padding: 0.5em 0 0.25em;
	text-align: center;
	color: #0035d2;
	font-size: 0.85em;
}
/* Whether the list is still arriving, empty, or short of one of its two halves. Kept above the */
/* scrolling area so it is readable without scrolling to find it. */
.documents-status {
	padding: 0.5em 0 0.25em;
	color: #0035d2;
	font-size: 0.85em;
}
.documents-status--error {
	color: #a94442;
}
/* Paging is replaced by the scrolling above, so ng-table's pager is not shown. */
patient-file-table .ng-table-pager {
	display: none;
}
.progress-note-container {
	border-width: 2px;
	border-style: solid;
	border-color: #0035d2;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-delete {
	border-width: 2px;
	border-style: solid;
	border-color: #343a40;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-admin {
	border-width: 2px;
	border-style: solid;
	border-color: #d87d4a;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-nurse {
	border-width: 2px;
	border-style: solid;
	border-color: #2e7d32;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-scheduled {
	border-width: 2px;
	border-style: solid;
	border-color: #00796b;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-container-injection {
	border-width: 2px;
	border-style: solid;
	border-color: #9C27B0;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
}
.progress-note-bold {
	font-family: 'Gordita Bold';
	font-size: 12px;
	color: black !important;
}
.progress-note-bold-delete {
	font-family: 'Gordita Bold';
	font-size: 12px;
	color: #343a40 !important;
}
.progress-note-link {
	text-decoration: underline;
	font-family: 'Gordita Bold';
}
.panel-title {
    font-size: 14px;
    font-family: 'Gordita Bold';
}
#scrollable-dropdown-menu .dropdown-menu {
	height: 10em;
	overflow-y: auto;
	margin-top: -12.5em;
  }
.error-message {
	color: #a94442;
	display: block;
	margin-top: 5px;
}
.dialog-content-box {
	position: relative;
	height:32rem;
	width: 100%;
}
.invoice-item-cell {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
.invoice-code-label {
	border-width: 1px;
	border-color: #0035d2;
	border-style: solid;
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}
.invoice-item-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: baseline;
	    align-items: baseline;
	gap: 1rem;
}
.invoice-reference-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: baseline;
	    align-items: baseline;
	gap: 1rem;
	overflow-wrap: anywhere;
}
.invoice-details-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
	margin-left: 60%;
	margin-right: 4%;
}
.invoice-details-section {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
	padding-bottom: 1rem;
	border-bottom-width: 1px;
	border-bottom-color: gray;
	border-bottom-style: solid;
}
.invoice-details-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
	color: #0035d2;
	-ms-flex-pack: justify;
	    justify-content: space-between;
}
.view-invoice-modal {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-align: center;
	    align-items: center;
}
.header-group {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.dismiss-close-icon {
	color: #ffffff;
	font-size: 20px;
	-ms-flex-item-align: end;
	    -ms-grid-row-align: end;
	    align-self: end;
	margin-right: 11%;
}
/* A row of action icons inside a table cell. Not a flex container: this class sits on the <td>, and a flex
   table cell drops out of the table's row layout - the browser sizes it to its own content, so the cell's
   bottom border is drawn at the height of the icons and no longer lines up with the cells either side. */
.icons-row {
	white-space: nowrap;
}
.icons-row > * {
    display: inline-block;
    vertical-align: middle;
}
.icons-row > * + * {
    margin-left: 1rem;
}
.md-dialog-container {
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
#billing-dropdown-menu .dropdown-menu {
	max-height: 20rem;
	overflow-y: auto;
  }
.progress-note-header {
	margin-left: 0px;
	margin-right: 0px;
	display: -ms-flexbox;
	display: flex;
	width: 100%;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	margin-bottom: 1rem;
}
.progress-note-header-child {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	gap: 1rem;
}
.fc-toolbar h2 {
	font-size: 16px;
	padding-top: 0.5rem;
}
.nhi-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
}
.nhi-container-left {
	width: 50%;
}
.nhi-container-right {
	width: 50%;
}
.name-row-container {
	display: -ms-flexbox;
	display: flex;
	gap: 0.5rem;
}
.red-label {
	color: red !important;
}
.nhi-column {
	max-width: 10rem;
	text-wrap: wrap;
	word-wrap: break-word;
}
.nhi-label {
	text-wrap: wrap;
	word-wrap: break-word;
	max-width: 80%;
}
.progress-note-procedure {
		display: -ms-flexbox;
		display: flex;
		-ms-flex-direction: row;
		    flex-direction: row;
		gap: 1rem;
}
.fc-more-popover {
	max-height: 95%;
	overflow-y: auto;
}
.search-radio-label {
	color: #0035d2 !important;
	font-family: 'Gordita Medium' !important;
	font-size: 16px;
}
.patient-table-text {
	color: #0035d2 !important;
}
.red-text {
	color: red;
}
.task-label-container {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: row;
      flex-direction: row;
}
.task-label-child {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  width: 100%;
}
.task-list-patient {
	width: 15%;
	/* text-align: center; */
}
.task-list-assigned {
	width: 20%;
	/* text-align: center; */
}
.task-list-description {
	width: 30%;
	/* text-align: center; */
	
}
.task-list-status {
	width: 5%;
	/* text-align: center; */
}
.task-list-delete {
	width: 3%;
	text-align: center;
}
.task-list-due {
	width: 7%;
	/* text-align: center; */
}
.task-list-label {
	width: 12%;
	/* text-align: center; */
}
.task-list-color {
	width: 2rem;
	height: 2rem;
	/* text-align: center; */
	border-radius: 0.5rem;
}
.task-done {
	text-decoration: line-through;
}
.button-footer {
	display: -ms-flexbox;
	display: flex;
	gap: 1rem;
}
.nav-li {
	height: 2.5rem;
    line-height: 2.5rem;
}
.md-badge {
	z-index: 80 !important;
 }
.sign-buttons-group {
 	display: -ms-flexbox;
 	display: flex;
 	-ms-flex-direction: row;
 	    flex-direction: row;
 	gap: 1rem;
	width: 100%;
	margin-left: 1rem;
 }
.sign-buttons-container {
 	display: -ms-flexbox;
 	display: flex;
 	-ms-flex-direction: row;
 	    flex-direction: row;
	-ms-flex-pack:justify;
	    justify-content:space-between;
 }
.header-left-align > thead > tr > th {
	text-align: left;
}
.lvl-over {
	/* applied to a drop target when a draggable object is over it */
	border: 2px dashed black !important;
}
.lvl-target {
	/* applied to all drop targets when a drag operation begins, used to indicate drop targets on a page */
	background-color: #ddd;
	opacity: .5;
}
[draggable] {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	    user-select: none;
	/* Required to make elements draggable in old WebKit */
	-khtml-user-drag: element;
	-webkit-user-drag: element;
	cursor: move;
	border:1px solid black;
}
.peg {
	font-weight: bold;
	border-width: 0px;
	border-radius: 4px;
	width: auto;
	height:3rem;
	margin: 10px;
	padding: 0.5rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-align: center;
	    align-items: center;
	background-color: #019CD2;
	color: white;
}
.slot {
	margin-right:2px;
	margin-top:2px;
	width:25px;
	height:25px;
    display:inline-block;
    border: none;
}
.grey {
	background-color: grey;
}
pre strong {
	font-size:12pt;
}
.modal-close {
	z-index: 1;
	position: absolute;
	top: 7rem;
}
.my-drop-zone {
	border: dotted 3px lightgray;
}
.nv-file-over {
	border: dotted 3px red;
}
/* Default class applied to drop zones on over */
.another-file-over-class {
	border: dotted 3px green;
}
.location-container {
	margin-top: 0.5rem;
	border-width: 1px;
	border-color: #0035d2;
	border-radius: 4px;
	border-style: solid;
	padding: 0.5rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	color: #0035d2;
}
.popover-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 1rem;
	-ms-flex-align: baseline;
	    align-items: baseline;
}
div.printControls
{
	background-color:#edf0ec;
	height:100px;
	padding: 5px;
	bottom:0;
	display: -ms-flexbox;
	display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    gap: 1rem;
}
#labelImageDiv
{
	background-color: #b2b2b2;
	padding: 5px;
	margin: 0px;
}
#printDiv
{
	float:right;
	width:126px;
}
#printersDiv
{
	float:left;
}
.progress-bar-warning {
	background-color: #0035d2;
}
.clinic-letters-frame {
	width: 100%;
	max-height: 50vh;
	overflow-y: scroll;
	scrollbar-width: none;
}
.clinic-letters-container {
	border-width: 2px;
	border-style: solid;
	border-color: #0035d2;
	border-radius: 8px;
	margin-bottom: 1em;
	width: 100%;
	min-height: 5em;
	padding: 0.5em;
	cursor: pointer;
}
.clinic-letters-container:hover {
    background-color: #0035d2;
    color: white !important;
}
.clinic-letters-container:hover .clinic-letters-bold {
    color: white !important;
}
.clinic-letters-container .clinic-letters-bold {
    font-family: 'Gordita Bold';
    font-size: 12px;
    color: black !important;
    cursor: pointer;
}
.clinic-letters-content {
	width: 100%;
	display: -ms-flexbox;
	display: flex; 
	-ms-flex-direction: column; 
	    flex-direction: column;
}
.clinic-template-menu {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: end;
	    align-items: end;
}
.clinic-letter-footer {
	margin-left: -55px !important;
	margin-right: -55px !important;
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: row-reverse !important;
	    flex-direction: row-reverse !important;
	padding-top: 1rem !important;
	padding-bottom: 1rem !important;
	margin-bottom: -3rem !important;
}
.md-chips {
	box-shadow: none !important;
}
.care-team-width {
	width: 36rem !important;
}
.note-editor .note-frame .note-editing-area .note-editable {
	color: #000000;
	font-family: 'Gordita Regular', sans-serif;
}
.note-editable>p {
	color: #000000;
}
.note-editor.note-airframe .note-status-output, .note-editor.note-frame .note-status-output {
	border-top-width: 0px !important;
}
@media print {
	@page {
        margin-left: 0.5in;
        margin-right: 0.5in;
        margin-top: 0.3in;
        margin-bottom: 0.3in;
      }
  }
.note-editor-diagnosis-table {
    width: 60%;
	margin-left: 20%;
	table-layout: fixed;
}
.note-editor-diagnosis-table th, .note-editor-diagnosis-table td {
    width: 50%;
    overflow: hidden;
}
.head-no-link {
	color: #0035d2;
	font-size: 14px;
}
.intro-customTooltip * {
  color: #4a4a4a;
  font-size: 15px
}
.intro-customTooltip .introjs-tooltip-title {
  color: #0035d2;
}
.dropdown-menu[uib-typeahead-popup] {
    max-height: 250px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index: 1050;
}
/* .mui-alert {
  padding: 12px 16px;
  margin: 1rem;
  border-radius: 4px;
  font-size: 14px;
  display: flex;
  align-items: center;
  margin-bottom: 12px;
  border: 1px solid transparent;
} */
.mui-alert-info {
  background: #e8f4fd;
  color: #055160;
  border-color: #b6e0fe;
}
.mui-alert-success {
  background: #edf7ed;
  color: #1e4620;
  border-color: #c8e6c9;
}
.mui-alert-warning {
  background: #fff4e5;
  color: #663c00;
  border-color: #ffecb5;
}
.mui-alert-error {
  background: #fdecea;
  color: #611a15;
  border-color: #f5c2c7;
}
.mui-alert {
  position: relative;
  padding: 12px 40px 12px 16px;
  margin: 1rem;
  border-radius: 4px;
  font-size: 14px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  margin-bottom: 12px;
  border: 1px solid transparent;
}
.mui-alert-close {
  position: absolute;
  right: 8px;
  top: 8px;
  background: transparent;
  border: none;
  font-size: 16px;
  cursor: pointer;
  color: inherit;
  opacity: 0.6;
}
.mui-alert-close:hover {
  opacity: 1;
}
.no-class {
	width: 100%;
	height: 100%;
}
/* Sits beside a document's name while its file is still being analysed. The app's spinner is
   configured page-sized, so this box gives the inline one somewhere its own size to centre in -
   spin.js positions itself against the nearest positioned ancestor. */
.inline-spinner {
	display: inline-block;
	position: relative;
	width: 14px;
	height: 14px;
	vertical-align: middle;
	margin-right: 6px;
}
/* =================================================================== */
/* ! Section divider
/* -------------------------------------------------------------------
/* The rule that breaks a long clinical form into sections - what the
/* progress note has always drawn inline. Given a class so the spacing
/* is decided once, and so the collapse rule below can find one.
/* =================================================================== */
.section-divider {
	border: none;
	border-top: 2px solid #e0e6ed;
	margin: 2.5em 0;
}
/* The automation task carries its own trailing divider, inside the guard that
   decides whether it renders at all - it is hidden whenever the practice has no
   automation setting for that note type, which the surrounding view has no way
   of knowing. Where a section divider already follows it, that would draw two
   rules with nothing between them, so the standing one stands down for the
   component's.
   :has() is what lets a sibling ask whether the component actually drew
   anything; an empty <automation-task> element is left behind either way. On a
   browser without it the fallback is the double rule we had before - cosmetic,
   not broken. */
automation-task:has(.pre-op-form) + .section-divider {
	display: none;
}
/* =================================================================== */
/* ! Copy-to-the-other-eye icon (copy-eye-icon component)
/* =================================================================== */
.copy-eye-icon {
	display: inline-block;
	width: 19px;
	height: 24px;
	vertical-align: middle;
	color: #1e1e5e;
}
button.btn {
	border-radius: 24px;
}
.btn-dropdown-multiselect {
	height: 34px;
	text-align: start;
	border-color: #0035d2;
	background-color: #ffffff;
	color: #0035d2;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	min-width: 16em;
	transition: all 0.3s ease;
}
.btn-dropdown-multiselect:hover, .btn-dropdown-multiselect:active {
    color: #ffffff;
    background-color: rgb(0, 45, 179);
    outline: 0;
}
.btn-dropdown-multiselect:focus {
    color: #0035d2;
    outline: 0;
}
.btn-dropdown-multiselect:hover:focus {
    color: #ffffff;
}
.btn-navy {
	background-color: #0035d2;
	color: #ffffff;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: all 0.3s ease;
}
.btn-navy:hover, .btn-navy:active {
    color: #ffffff;
    background-color: rgb(0, 45, 179);
    outline: 0;
}
.btn-navy:focus {
    color: #ffffff;
    outline: 0;
}
/* For a navy button whose label does not fit the 220px cap above. Bootstrap's .btn is nowrap, so an
   oversized label runs out past the button's edge rather than wrapping inside it.

   Sizing to the content keeps the label whole and the button around it. min-width holds the floor at
   the 220px every other navy button gets, so a button whose label changes between a long and a short
   one - as the patient save button does - does not shrink to a stub when the short one is showing.
   max-width and normal wrapping are the ceiling: if the label or the font ever outgrows the space
   available, the button stays inside its container and the text wraps within it. */
.btn.btn-navy.btn-fit-label {
	width: auto;
	min-width: 220px;
	max-width: 100%;
	white-space: normal;
}
.btn-cancel {
	background-color: transparent;
	color: #343a40;
	padding: 4px 18px;
	font-size: 12px;
	border: 1px solid #bdbec1;
	width: 100%;
	max-width: 220px;
	transition: all 0.3s ease;
}
.btn-cancel:hover, .btn-cancel:active {
    color: #404141;
    background-color: rgb(230, 230, 230);
    outline: 0;
}
.btn-cancel:focus {
    outline: 0;
}
.btn-cyan {
	background-color: #ffffff;
	color: #00bcd4;
	border: 1px solid #00bcd4;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: background-color 0.3s ease;
}
.btn-cyan:hover, .btn-cyan:active {
    color: #00bcd4;
    background-color: rgb(235, 235, 235);
}
.btn-cyan:focus {
    color: #00bcd4;
    outline: 0;
}
.btn-cyan-solid {
	background-color: #00bcd4;
	color: #ffffff;
	border: 1px solid #00bcd4;
	padding: 4px 18px;
	font-size: 12px;
	width: 100%;
	max-width: 220px;
	transition: background-color 0.3s ease;
}
.btn-cyan-solid:hover, .btn-cyan-solid:active {
    color: #ffffff;
    background-color: rgb(0, 167, 189);
}
.btn-cyan-solid:focus {
    color: #ffffff;
    outline: 0;
}
.btn-morph-wrap {
	position: relative;
	overflow: visible;
}
.btn-morph-wrap .btn-morph {
    width: 270px;
    max-width: 270px;
    padding-left: 10px;
    padding-right: 10px;
}
.btn-morph-wrap .morph-result {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: 280px;
    width: 120px;
}
#download-referral-button {
	width: 240px;
}
/* Container for the AI elements */
.ai-verification-group {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-right: 6px;
    /* Same height as .diagnosis-row-actions and pinned to the line top rather than the text
       baseline, so the badge sits level with the info/edit icons beside it. */
    height: 1.5em;
    vertical-align: top;
}
/* Subtle, theme-matching badge (Soft cyan/blue background, Navy text) */
.ai-badge {
    background-color: #E8F4F8; /* matches a soft version of your bg-cyan */
    color: #1A2942; /* matches your text-darkNavy */
    padding: 2px 8px;
    border-radius: 12px; /* pill shape */
    font-size: 10px;
    font-family: 'Gordita Medium', sans-serif;
    border: 1px solid #D0E4EA;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
}
/* Minimalist base style for the buttons */
.ai-btn-action {
    background: transparent;
    border: 1px solid #E0E0E0;
    border-radius: 4px;
    padding: 2px 6px;
    font-size: 10px;
    cursor: pointer;
    transition: all 0.2s ease-in-out;
    color: #888; /* Soft grey by default */
}
/* Hover effect for Accept: Fills in with your Navy theme */
.ai-btn-action.accept:hover {
    background-color: #1A2942; 
    color: #ffffff;
    border-color: #1A2942;
}
/* Hover effect for Decline: Slightly darker grey to signify removal without screaming "DANGER" */
.ai-btn-action.decline:hover {
    background-color: #F0F0F0;
    color: #333333;
    border-color: #CCCCCC;
}
/* Info + edit icons at the start of a diagnosis row, centred on the first line of its text */
.diagnosis-row-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    height: 1.5em;
}
/* about one line of row text */
.diagnosis-row-actions .fa-info-circle {
    font-size: 14px;
    cursor: pointer;
}
/* Edit (pencil) button on a diagnosis row - bare icon, no chrome */
.diagnosis-edit-btn {
    background: transparent;
    border: none;
    padding: 2px;
    line-height: 0;
    cursor: pointer;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    opacity: 0.7;
    transition: opacity 0.2s ease-in-out;
}
.diagnosis-edit-btn img {
    width: 15px;
    height: 15px;
    display: block;
}
.diagnosis-edit-btn:hover:not([disabled]) {
    opacity: 1;
}
.diagnosis-edit-btn[disabled] {
    cursor: default;
    opacity: 0.35;
}
main {
	min-height: 100vh;
	padding: 0;
	margin: 0;
	color: #343a40;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	background-image: linear-gradient(rgba(10, 37, 64, 0.95), rgba(10, 37, 64, 0.85)), url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	background-position: center;
	background-repeat: no-repeat;
	background-size: cover;
}
.nav-wrap-flex {
	padding: 30px 0;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
}
.nav-wrap-flex .nav-logo-wrap {
    height: 120px;
}
.nav-wrap-flex .nav-logo-wrap img {
    height: 100%;
}
.nav-wrap-flex .nav-nav-wrap {
    -ms-flex-item-align: end;
        align-self: flex-end;
}
.nav-wrap-flex .nav-nav-wrap ul {
    display: -ms-flexbox;
    display: flex;
    padding: 5px;
    margin: 0;
    list-style-type: none;
    background: #f8f9fa;
    border-radius: 25px;
    letter-spacing: 1.2px;
    color: #343a40;
}
.nav-wrap-flex .nav-nav-wrap ul li {
    border-radius: 24px;
    padding: 2px 10px;
    font-size: 12px;
}
.nav-wrap-flex .nav-nav-wrap ul li a {
    color: #00bcd4;
}
.nav-wrap-flex .nav-nav-wrap ul li a:hover {
    text-decoration: none;
}
.nav-wrap-flex .nav-nav-wrap ul li.active {
    background: #00bcd4;
}
.nav-wrap-flex .nav-nav-wrap ul li.active a {
    color: #ffffff;
}
.nav-wrap-flex .nav-user-wrap {
    -ms-flex-item-align: start;
        align-self: flex-start;
    color: #343a40;
}
.nav-wrap-flex .nav-user-wrap ul {
    letter-spacing: 1.1px;
    display: -ms-flexbox;
    display: flex;
    padding: 8px;
    margin: 0;
    list-style-type: none;
    background: #f8f9fa;
    border-radius: 24px;
    color: #343a40;
}
.nav-wrap-flex .nav-user-wrap ul li {
    border-radius: 24px;
    padding: 0px 10px;
}
.nav-wrap-flex .nav-user-wrap ul li a {
    color: #343a40;
}
.nav-wrap-flex .nav-user-wrap ul li.active {
    background: linear-gradient(90deg, #660195, #0035d2);
}
.nav-wrap-flex .nav-user-wrap ul li.active a {
    color: #ffffff;
}
.patient-header .nav-nav-wrap ul li a {
    color: #0035d2;
    font-weight: 600;
}
.patient-header .nav-nav-wrap ul li a:hover {
    color: #0000CD;
    text-decoration: underline;
}
.btn-logout {
	height: 20px;
	padding: 0px 12px;
	font-size: 12px;
	color: #343a40;
}
p.btn-logout {
	margin-bottom: 0;
	padding-left: 0;
	padding-top: 2px;
	vertical-align: center;
	color: #343a40;
}
.lock {
	height: 12px;
	position: relative;
	bottom: 2px;
	margin-left: 10px;
}
.no-pad-left {
	padding-left: 0 !important;
}
.consult-timer-box {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row-reverse;
	    flex-direction: row-reverse;
	gap: 1rem;
	position: absolute;
	right: 1rem;
}
.timer-box {
	border-width: 1px;
	border-color: rgba(255, 255, 255, 0.2);
	border-style: solid;
	border-radius: 4px;
	padding-left: 0.5rem;
	padding-right: 0.5rem;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
	gap: 1rem;
	min-width: 10rem;
	background: rgba(255, 255, 255, 0.05);
}
.container-welcome {
	background: #ffffff;
	min-height: 100%;
	padding: 0;
	border-radius: 1rem;
}
.container-welcome .welcome-wrap {
    padding: 70px;
    padding-bottom: 30px;
}
.container-welcome .welcome-wrap .h1 {
    font-size: 50px;
    margin-top: 0;
}
.container-welcome .welcome-wrap .welcome-question {
    margin-bottom: 20px;
    font-size: 16px;
}
.container-welcome .welcome-wrap select.form-control {
    width: 400px;
    border-radius: 18px;/* border-top-right-radius: 18px;
			border-top-left-radius: 18px; */
}
.container-welcome-footer {
	padding: 0;
	background-color: #f8faff; /* Off-white background */
	border-top: 1px solid #e0e6ed; /* Light border for separation */
}
.container-welcome-footer .footer-wrap {
		padding: 1.5rem 5%;
	}
.container-welcome-footer .footer-wrap ul {
			font-weight: 500;
			list-style-type: none;
			padding-left: 0;
			display: -ms-flexbox;
			display: flex;
			-ms-flex-direction: row;
			    flex-direction: row;
			-ms-flex-pack: center;
			    justify-content: center;
			gap: 4rem;
			margin: 0;
		}
.container-welcome-footer .footer-wrap ul li {
				margin: 0;
			}
/* Applying the navy color to the links */
.container-welcome-footer .footer-wrap ul a {
				text-decoration: none;
				transition: text-decoration 0.2s ease;
			}
/* Adding a simple hover effect */
.container-welcome-footer .footer-wrap ul a:hover {
					text-decoration: underline;
				}
iframe {
	/*border:3px solid #ddd;*/
	box-shadow: 0 0 3px 0px rgba(0,0,0,0.3);
	margin: 0 auto;
	display: block;
}
.close-btn {
	position: absolute;
	right: 1em;
	top: 0.5em;
	background: transparent;
	border: none;
	font-size: 1.2em;
	color: inherit;
	cursor: pointer;
}
/* =================================================================== */
/* ! Appointment list downloads (calendar day header)
/* =================================================================== */
.appointment-list-downloads {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.75rem;
	margin-right: 0.5rem;
}
.appointment-list-downloads a {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 16px;
    height: 16px;
    line-height: 1;
    color: #0035d2;
}
.appointment-list-downloads i {
    font-size: 15px;
}
.appointment-list-downloads img {
    display: block;
}
.container-refer, .container-dashboard {
	background-color: #ffffff;
	padding: 10px;
	/*padding-bottom: 20px;*/
	margin-bottom: 20px;
	border-radius: 1rem;
}
.to-top {
	position:fixed;
	bottom: 4em;
	right: 4em;
	/* padding: 5px; */
	/* border: 1px solid #ccc; */
	/* background: red; */
	/* color: white; */
	font-weight: bold;
	cursor: pointer;
	/* display: none; */
  }
.container-dashboard {
	background-color: #ffffff;
	border-radius: 1rem;
}
.refer-nav {
	height: 100px;
	background-color: #ebecea;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: distribute;
	    justify-content: space-around;
	-ms-flex-align: center;
	    align-items: center;
}
.view-wrap {
	padding: 25px;
	padding-top: 0;
}
hr.subtitle-line-break {
	border-top-color: #bccad2;
}
hr.cyan {
	border-top-color: #00bcd4;
	border-top-width: 1px;
}
/* =================================================================== */
/* ! Impact on life review (answers still inside the validity window)
/* =================================================================== */
.impact-review .impact-review-answers {
    width: 100%;
    max-width: 700px;
}
.impact-review .impact-review-answers td {
    border-bottom: 1px solid #e0e6ed;
    padding: 10px 0;
}
.impact-review .impact-review-answers .impact-review-question {
    padding-right: 20px;
}
.impact-review .impact-review-answers .impact-review-answer {
    text-align: right;
    white-space: nowrap;
}
.impact-review .impact-review-actions button {
    width: 180px;
}
.impact-review .impact-review-actions button:first-child {
    margin-right: 20px;
}
.refer-nav-animation {
	height: 100px;
	background-color: #ebecea;
	/*background-color: #EBECEA;*/
	/*background-color: pink;*/
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;


}
/*align-items: center;*/
.refer-nav-animation .word-wrapper {/*background: lightblue;*/
    padding: 0 140px;
    padding: 0 100px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    margin-bottom: 5px;
}
.refer-nav-animation .word-wrapper p {
    margin-bottom: 0;
}
.refer-nav-animation .animation-outter-wrapper {
    margin: 0 140px;
    position: relative;
    overflow: hidden;
    height: 6px;
    background: #D2D3D5;
}
.refer-nav-animation .animation-outter-wrapper .prog {
    position: absolute;
    z-index: 2;
    width: 100%;
    height: auto;
}
.refer-nav-animation .animation-outter-wrapper .indicator {
    position: absolute;
    background: linear-gradient(90deg, #0035d2 0%, #0035d2 90%, #00bcd4 98%, #00bcd4 100%);
    height: 6px;
    width: 100%;
    left:0;
    top:0;
    transition: all 1.5s ease;
    transform: translateX(-100%);/*border-radius: 50%;*/
    border-top-right-radius: 10px 10px;
    border-bottom-right-radius: 10px 10px;
}
.refer-nav-animation .animation-outter-wrapper .indicator.search {
    transform: translateX(-95%) !important;
}
.refer-nav-animation .animation-outter-wrapper .indicator.examination {
    transform: translateX(-50%);
}
.refer-nav-animation .animation-outter-wrapper .indicator.impact, .refer-nav-animation .animation-outter-wrapper .indicator.complete {
    transform: translateX(0%);
    border-top-right-radius: 0px 0px;
    border-bottom-right-radius: 0px 0px;
}
.search-wrap {
}
.search-form {
	padding-top: 10px;
}
/* padding-bottom: 10px; */
.search-form .form-group {
    position: relative;
}
.search-form .form-group .form-control {
    font-size: 12px !important;
    border-radius: 0;
    box-shadow: none;
    border-radius: 20px;
    color: #0035d2;
    border: 1px solid #0035d2;
}
.search-form .form-group .form-control:focus {
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6);
}
.search-form .form-group label {
    margin-right: 10px;
}
.search-form .form-group-lastName input {
    width: 250px;
}
.search-form .form-group-DOB {/* margin-bottom: 1rem; */
}
/* margin-left: 50px; */
.search-form .form-group-DOB .form-control {
    width: 80px;
}
.search-form .form-group-DOB .form-control:nth-child(3) {
    margin: 0 3px;
}
.search-form .form-group-buttons {/*position: relative;*/
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    float: right;
    margin-right: 0;
    position: relative;
    top: -10px;
}
.search-form .form-group-buttons button:first-child {
    margin-bottom: 10px;
}
.search-form .form-group-search-buttons {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 4rem;
}
.search-results table {
    margin-bottom: 0;
}
.search-results table tr:first-child {
    background-color: #ffffff !important;
}
.search-results table tr th {
}
.search-results-v2 table {
    margin-bottom: 0;
}
.search-results-v2 table tr:first-child {
}
.search-results-v2 table tr th {
}
.table-striped > tbody > tr:nth-of-type(even) {
	/* background-color: $paleBlue; */
	background-color: #ffffff;
}
.table-striped > tbody > tr:nth-of-type(odd) {
	background-color: #ffffff;
}
.table-blue-striped > tbody > tr:nth-of-type(even) {
	background-color: #f2f6fb;
}
.table-blue-striped > tbody > tr:nth-of-type(odd) {
	background-color: #ffffff;
}
.table-hover > tbody > tr:hover {
	background-color: #0035d2;
}
.table-hover > tbody > tr:hover td {
    color: #ffffff;
}
.table-no-border {
	border-width: 0px;
	border-top-width: 0.1em;
	border-top-color: #0035d2;
}
.table-no-border th {
    color: #0035d2;
    font-family: 'Gordita Heavy';
}
.table-no-border > tbody > tr[disabled] td {
	filter: blur(1px);
	pointer-events: none;
  }
.filter-dropdown {
	color: #0035d2;
    font-size: 12px;
}
.filter-select {
	border-radius: 20px;
	box-shadow: none;
	// color: #343a40;
	color: #0035d2;
	font-size: 12px;
	border: 1px solid #0035d2;
}
.search-label {
	color: #0035d2 !important;
}
.or-line {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
	margin-top: -1rem;
	width: 100%;
}
.or-seperator {
	width: 100%;
	margin-top: -5px;
	margin-bottom: 0px;
	border-color: #0035d2;
}
.address-icon {
	width: 2rem; 
	height: 2rem;
	margin-top: -0.5rem;
}
.score_text {
	color: #0035d2;
	font-family: 'Gordita Light Italic';
}
.flex-column-layout {
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 0.5rem;
}
.lastname-input {
	width: 250px !important;
	margin-right: 1rem;
}
.flex-row-layout {
	display: -ms-flexbox !important;
	display: flex !important;
	-ms-flex-direction: row;
	    flex-direction: row;
	gap: 0.5rem;
	-ms-flex-align: baseline;
	    align-items: baseline;
}
.hyper-link {
	color: #0035d2;
	text-decoration: underline;
	cursor: pointer;
	margin-left: 1rem;
}
.highlight-row {
	background-color: #0035d2;
	color: white;
	cursor: pointer !important;
}
/* Navy on the navy highlight otherwise. */
.highlight-row .score_text {
    color: #ffffff;
}
.normal-row {
	background-color: white;
	color: #0035d2;
	cursor: pointer !important;
}
.modal-backdrop.am-fade {
	background: rgba(10, 37, 64, 0.65);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
	opacity: 1;
	transition: opacity 0.3s ease;
}
.modal-backdrop.am-fade.ng-enter {
    opacity: 0;
}
.modal-backdrop.am-fade.ng-enter.ng-enter-active {
    opacity: 1;
}
.modal-backdrop.am-fade.ng-leave {
    opacity: 1;
}
.modal-backdrop.am-fade.ng-leave.ng-leave-active {
    opacity: 0;
}
.modal-dialog {
	border: 0;

}
.modal-dialog .modal-content {
    border: none;
    outline: none;
    border-radius: 16px;
    background-color: #ffffff;
    color: #333333;
    box-shadow: rgba(0, 0, 0, 0.4);
    overflow: hidden;
}
.modal-dialog .modal-content .dismiss {
    position: absolute;
    z-index: 10;
    top: 1rem;
    right: 1rem;
    font-size: 2.2rem;
    font-weight: 300;
    color: #888888;
    background: none;
    border: none;
    opacity: 0.7;
    cursor: pointer;
    transition: all 0.2s ease;
}
.modal-dialog .modal-content .dismiss:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
.modal-dialog.modal-center {
    margin: 0;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.my-modal-header {
	padding: 1.5rem 2rem;
	background-color: #f8faff;
	border-bottom: 1px solid #e0e6ed;
}
.my-modal-body {
	padding: 2.5rem 2rem;
}
/* Lets the datepicker pop-up extend past the modal edge. .modal-content normally clips its
   children to its rounded corners, so the header and footer round their own outer corners here. */
.diagnosis-modal-content {
	overflow: visible !important;
}
.diagnosis-modal-content .my-modal-header {
    border-radius: 16px 16px 0 0;
}
.diagnosis-modal-content .my-modal-footer {
    border-radius: 0 0 16px 16px;
}
/* The date-of-onset input is readonly only so the datepicker owns its value; Bootstrap greys
   readonly inputs as if disabled, which reads as "not editable". Keep it looking like a field. */
.diagnosis-edit-form .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* Save, with the bin beside it, on the right - Cancel stays on the left as in every modal footer. */
.diagnosis-edit-form .diagnosis-edit-footer-end {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
/* Remove: a small red bin to the right of Save, the same height. It asks in place. */
.diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis {
    width: auto;
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    padding: 4px 10px;
    font-size: 14px;
    border: none;
    background-color: #d9534f;
    color: #ffffff;
    transition: all 0.3s ease;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:hover, .diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:active, .diagnosis-edit-form .my-modal-footer .btn.btn-remove-diagnosis:focus {
    background-color: #a94442;
    color: #ffffff;
    outline: 0;
}
/* The question on the left, the answers together on the right - wrapping as a pair if narrow. */
.diagnosis-edit-form .confirm-remove-diagnosis {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    color: #a94442;
}
.diagnosis-edit-form .confirm-remove-diagnosis .confirm-remove-diagnosis-text i {
    margin-right: 4px;
    color: #d9534f;
}
.diagnosis-edit-form .confirm-remove-diagnosis-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    gap: 10px;
    margin-left: auto;
}
.diagnosis-edit-form .my-modal-footer .confirm-remove-diagnosis .btn {
    width: auto;
    padding: 4px 18px;
    font-size: 12px;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis {
    border: none;
    background-color: #d9534f;
    color: #ffffff;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis:hover {
    background-color: #a94442;
    color: #ffffff;
}
.diagnosis-edit-form .my-modal-footer .btn.btn-confirm-remove-diagnosis:disabled {
    opacity: 0.6;
}
/* The footer swaps its buttons with ng-if, and ngAnimate holds a leaving element on screen for as
	   long as its CSS transition runs - so for a moment both sets would show. !important to beat .btn's own. */
.diagnosis-edit-form .my-modal-footer .ng-enter, .diagnosis-edit-form .my-modal-footer .ng-leave {
    transition: none !important;
}
.my-modal-footer {
	border-top: 1px solid #e0e6ed;
	padding: 30px 30px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;

}
.my-modal-footer .btn {
    width: 180px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.my-modal-footer--right {
	-ms-flex-pack: end;
	    justify-content: flex-end;

}
.my-modal-footer--right .btn + .btn {
    margin-left: 1rem;
}
.my-modal-footer--center {
	-ms-flex-pack: center;
	    justify-content: center;

}
.my-modal-footer--center .btn {
    width: 100%;
    max-width: 220px;
}
.form-control:focus {
	border-color: #00bcd4;
	outline: 0;
	box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.override-modal .form-control {
    border-radius: 8px;
}
.override-modal .additional-message {
    position: relative;
}
.override-modal .additional-message .message {
    padding: 10px;
}
.override-modal .additional-message .count-remaining {
    position: absolute;
    font-size: 0.75rem;
    bottom: 5px;
    right: 8px;
    color: #6c757d;
}
.override-modal .select-override, .override-modal .message {
    font-size: 1rem;
}
.table-details {
	width: 100%;
	max-width: 600px;
	border-collapse: collapse;
}
.table-details td {
    border: none !important;
    font-weight: 400;
    padding: 0.5rem;
}
.table-details td:first-child {
    width: 40%;
    text-align: right;
    color: #6c757d;
    padding-right: 1rem;
}
.table-details td:last-child {
    width: 60%;
    font-weight: 500;
    color: #333333;
}
.double-line-header {
	padding: 1rem 0;
	height: auto;
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 0.25rem;
}
.icon-wrap-success {
	height: 100px;
	text-align: center;
	margin-bottom: 1rem;

}
.icon-wrap-success img {
    height: 100%;
}
.limit-width {
	max-width: 450px;
	margin: 0 auto;
}
.limit-width-wide {
	max-width: 650px;
	margin: 0 auto;
}
.form-group-override-select {
	margin: 0 auto;
	max-width: 700px;
}
.help-modal .subtitle-line-break {
    margin: 10px 0;
}
.help-modal .q-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
}
.help-modal .q-header-flex .h5 {
    max-width: 85%;
}
.help-modal .q-header-flex .q-icon-wrap {
    height: 35px;
    overflow: hidden;
    cursor: pointer;
}
.help-modal .q-header-flex .q-icon-wrap img {
    height: 100%;
}
.q-icon-wrap {
	transition: transform 0.3s ease;
}
.rotate {
	transform: rotate(-45deg);
}
.q-body-wrap {
	display: none;
	padding-right: 60px;
	color: #6c757d;
}
.my-modal-body-help {
	max-width: 800px;
	margin: 0 auto;
}
.table-contact {
	margin-bottom: 0;
}
.table-contact td {
    border: 0 !important;
    font-weight: 400;
    color: #6c757d;
    padding: 3px 0 !important;
}
.table-contact td:first-child {
    width: 123px;
}
.contact-name {
	margin-top: 20px;
	margin-bottom: 10px;
	font-weight: 600;
}
.morph-modal {
	color: #6c757d;

}
.morph-modal .form-control {
    border-radius: 8px;
    color: #333333;
    font-weight: 400;
    font-size: 1rem;
}
.morph-modal .form-control option {
    color: #333333;
}
.morph-modal .lens-wrap {
    margin-bottom: 5px;
}
.morph-modal .lens-wrap img {
    width: 100%;
    border-radius: 8px;
}
.morph-modal .lens-wrap-1 {
    margin-top: 20px;
}
@media (min-width: 992px) {
	.modal-lg-morph {
		width: 984px;
	}
}
.referral-radio-wrap {
	margin-top: 15px;

}
.referral-radio-wrap .radio-inline .marker {
    position: relative;
    left: -3px;
    top: 0px;
}
.referral-radio-wrap .form-group {
    margin-bottom: 10px;
}
.referral-radio-wrap input[type="radio"] {
    margin-top: 1px;
}
.referral-radio-wrap .help-block {
    position: absolute;
    top: 10px;
}
/* Leaving the patient dashboard mid-transcription: two choices, centred side by side. */
.leave-transcription-modal .my-modal-footer {
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 15px;
}
.notification-body {
	max-width: 450px;
	margin: 0 auto;
	font-weight: 400;
	color: #6c757d;

}
.notification-body ul {
    padding-left: 0;
    list-style-type: none;
}
.notification-body ul > li > ul {
    padding-left: 40px;
}
.notification-body li {
    margin-bottom: 10px;
}
.hidden {
	display: none;
}
.flex-double-rows {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	padding-top: 1em !important;
	border-top-width: 0px !important;
}
.pharmacy-option {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.pharmacy-title {
	padding-top: 0.1em;
	font-weight: 500;
}
.pharmacy-address {
	padding-top: 0.1em;
	padding-bottom: 0.1em;
	font-size: 0.9rem;
	color: #6c757d;
}
.md-dialog-customer-container {
	border: none;
	outline: none;
	border-radius: 16px;
	background-color: #ffffff;
	color: #333333;
	box-shadow: rgba(0, 0, 0, 0.4);
	overflow: hidden;
}
.md-dialog-customer-container .dialog-toolbar {
    -ms-flex-pack: center;
        justify-content: center;/* center all items */
    position: relative;
}
.md-dialog-customer-container .dialog-title {
    -ms-flex: none;
        flex: none;/* prevent stretching */
    text-align: center;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}
.md-dialog-customer-container .dialog-subtitle {
    -ms-flex: none;
        flex: none;
    font-size: 12pt;/* prevent stretching */
    text-align: center;
    position: absolute;
    width: 100%;
    left: 50%;
    top: 2.5rem;
    transform: translateX(-50%);
}
.md-dialog-customer-container .dialog-toolbar md-button {
    position: absolute;
    right: 0;
}
.md-dialog-customer-container .dismiss {
    position: absolute;
    z-index: 10;
    top: 1rem;
    right: 1rem;
    font-size: 2.2rem;
    font-weight: 300;
    color: #888888;
    background: none;
    border: none;
    opacity: 0.7;
    cursor: pointer;
    transition: all 0.2s ease;
}
.md-dialog-customer-container .dismiss:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
.md-dialog-customer-container .dialog-title {
    color: #0a2540 !important;
    font-size: 1.65rem;
    font-weight: 700;
    margin: 0;
    text-transform: none;
}
/* =================================================================== */
/* ! NHI suggested patients dialog (modal.select-patient-v2)
/* =================================================================== */
.nhi-select-dialog {
	min-width: 80%;
	/* Its height otherwise follows the table, so a search with one or two results left the record
	   preview a few hundred pixels tall. */
	min-height: min(640px, 80vh);
	overflow: hidden;
}
/* The record preview slides over the table and is only as tall as the dialog: its details scroll,
	   and its SELECT button stays in view below them. */
.nhi-select-dialog md-sidenav {
    min-width: 60%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow: hidden;
}
.nhi-select-dialog md-sidenav md-content {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.nhi-select-dialog .nhi-preview-title {
    color: #0a2540;
}
.register-edit-form .col-sm-3 {
    padding-right: 0;
    padding-left: 0;
}
.register-edit-form label.control-label {
    padding-top: 8px;
}
.register-edit-form .form-control {
    font-size:12px !important;
    border-radius: 0;
    box-shadow: none;
}
.register-edit-form .dob-group {
    display: -ms-flexbox !important;
    display: flex !important;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.register-edit-form .dob-group .form-control {
    width: 31%;
    margin: 0;
}
.register-edit-form .dob-group span.help-block {
    position: absolute;
    top: 100%;
    margin-top: 0;
}
.register-edit-form .dob-group .form-control:nth-child(2) {/*margin: 0 15px;*/
}
.register-edit-form .radio-inline {
    width: 80px;
}
/*text-align: center;*/
.register-edit-form .radio-inline input {
    position: relative;/*right: 10px;*/
}
.register-edit-form .radio-inline .marker {
    position: relative;
    left: 7px;
    top: -1px;
}
.register-edit-form .ethnicity-group {
}
.register-edit-form-v2 .col-sm-3 {
    padding-right: 0;
    padding-left: 0;
}
.register-edit-form-v2 label.control-label {
    padding-top: 8px;
}
.register-edit-form-v2 .form-control {
    font-size:12px !important;
    border-radius: 0;
    box-shadow: none;
}
.register-edit-form-v2 .dob-group {
    display: -ms-flexbox !important;
    display: flex !important;/* flex-direction: row; */
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.register-edit-form-v2 .dob-group .form-control {
    width: 31%;
    margin: 0;
}
.register-edit-form-v2 .dob-group span.help-block {
    position: absolute;
    margin-top: 3em;
}
.register-edit-form-v2 .dob-group .form-control:nth-child(2) {/*margin: 0 15px;*/
}
.register-edit-form-v2 .radio-inline {
    width: 80px;
}
/*text-align: center;*/
.register-edit-form-v2 .radio-inline input {
    position: relative;/*right: 10px;*/
}
.register-edit-form-v2 .radio-inline .marker {
    position: relative;
    left: 7px;
    top: -1px;
}
.register-edit-form-v2 .ethnicity-group {
}
.animate-show-hide.ng-hide {
	opacity: 0;
}
.animate-show-hide.ng-hide-add, .animate-show-hide.ng-hide-remove {
	transition: all ease 0.3s;
}
.animate-me {
	opacity: 1;
}
.checkbox-inline {
	min-width: 25%
}
.form-group-ethnicity {
	margin-bottom: 9px;
}
.form-group-ethnicity label.checkbox-inline:first-child {
    margin-left: 10px;
}
.form-group-ethnicity label.checkbox-inline span.marker {
    position: relative;
    bottom:-2px;
}
.form-group-ethnicity .checkbox-inline-other {
    position: relative;
    left: -4px;
}
.form-group-ethnicity .col-sm-9 {
    position: relative;
}
.form-group-ethnicity span.help-block {
    position: absolute;
    top:100%;
}
/*Google Places API to bring autocomplete higher z-index than bootstrap modal*/
.pac-container {z-index: 10000 !important;}
.form-impact .form-group {
    margin-bottom: 25px;
}
.form-impact label.control-label {
    text-align: left !important;
}
.form-impact label.control-label .question-mark {
    position: relative;
    display: inline-block;
    height: 20px;
    bottom:2px;
    margin-right: 10px;
}
.form-impact label.control-label .question-mark img {
    height: 100%;
    overflow:hidden;
}
.form-impact .radio-flex-wrap {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.form-impact .radio-flex-wrap .radio-inline {
    width: 80px;
    text-align: center;
}
.form-impact .radio-flex-wrap .radio-inline .marker {
    position: relative;
    top:2px;
}
.form-impact .control-label-left {
    padding-right: 0;
}
.form-impact .form-group-header .radio-flex-wrap .radio-inline {
    text-align: center;
    padding-left: 0;
    padding-right: 0;
    width: 80px;
}
.life-quality .form-group.has-error {
    outline: 1px solid #a94442;
    padding-top: 16px;
    padding-bottom: 16px;
}
.life-quality .form-group.has-error .radio-flex-wrap {/*padding-bottom: 6px;*/
    margin-bottom: 10px;
    position: relative;
}
.life-quality .form-group.has-error .radio-flex-wrap .help-block {
    position: absolute;
    top: 240%;/* bottom: -45px; */
    left: 80%;/* width: 100%;
				text-align: center; */
}
.form-footer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
}
.form-footer .submit-wrap-flex {
    padding: 20px 30px 20px 50px;
    border-radius: 50px;
    background: #ffffff;/*background: linear-gradient(270deg, $purple, $navy) !important;*/
    display: -ms-flexbox;
    display: flex;
}
.form-footer .submit-wrap-flex .note-wrap {
    width: 400px;
    margin-right: 20px;
}
.form-footer .submit-wrap-flex .note-wrap p {
    margin: 0;
}
.form-footer .submit-wrap-flex .note-wrap p:first-child {
    margin-bottom: 10px;
}
.form-footer .submit-wrap-flex .button-wrap {
    width: 200px;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
.form-footer .showing-warning {
    background: linear-gradient(270deg, #9C27B0, #0035d2) !important;
}
.form-login {
	width: 280px;
	padding-top: 15px;
}
.form-login .form-group {
    margin-bottom: 30px;
}
.form-login .form-group input {
    border-radius: 24px;
}
.form-login .form-group:last-child {
    margin-bottom: 15px;
}
.form-login button {
    font-size: 12px;
}
.form-login .btn-login {
    float: left;
    width: 34%;
    padding: 6px 18px;
}
.form-login .btn-lost {
    color: #343a40;
    float: right;
    width: 60%;
    transition: background-color .1s linear;
}
.form-login .btn-lost:hover, .form-login .btn-lost:active {
    color: #343a40;
    background-color: #ffffff;
}
form[name=search] span.help-block {
    text-align: center;
    position: absolute;
    width: 100%;
}
.has-success .form-control {
	border-color: #00bcd4;
}
.has-success .form-control:focus {
    border-color: #00bcd4;
    box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 4px #00bcd4;
}
.has-error .form-control {
	border-color: #a94442;
}
.has-error .form-control:focus {
    border-color: #a94442;
}
form[name=loginForm] .help-block {
    text-align: left;
    position: absolute;
    color: #ffffff;
    margin-bottom: 0;
    padding-left: 13px;
}
label {
	color: #343a40 !important;
}
form[name=setPassword] .form-control {
    border-radius: 0;
}
form[name=setPassword] .help-block {
    position: absolute;
}
form[name=formImpact] .form-group.has-error {
    outline: 1px solid #a94442;
    padding-top: 2px;
}
form[name=formImpact] .form-group.has-error .radio-flex-wrap {/*padding-bottom: 6px;*/
    margin-bottom: 10px;
    position: relative;
}
form[name=formImpact] .form-group.has-error .radio-flex-wrap .help-block {
    position: absolute;/*top: 100%;*/
    bottom: -40px;
    width: 100%;
    text-align: center;
}
form[name=exam] span.help-block {
    position: absolute;
    white-space: nowrap;
    margin-top: 0;
}
.btn-switch {
    position: relative;
    display: block;
    width: 50px;
    height: 28px;
    cursor: pointer;
    background-color: #F27878;
    border: 2px solid #F27878;
    border-radius: 40px;
}
.btn-switch .btn-switch-circle {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    height: 25px;
    width: 25px;
    background-color: #fff;
    border-radius: 40px;
}
.btn-switch--on {
    background-color: #80CDBE;
    border: 2px solid #80CDBE;
}
.btn-switch--on .btn-switch-circle--on {
    left: auto;
    right: 0;
}
.surgery-agreement-form-footer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
}
.surgery-agreement-form-footer .submit-wrap-flex {
    padding: 12px 15px 12px 25px;
    border-radius: 50px;
    background: #ffffff;/*background: linear-gradient(270deg, $purple, $navy) !important;*/
    display: -ms-flexbox;
    display: flex;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap {
    width: 400px;
    margin-right: 20px;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap p {
    margin: 0;
}
.surgery-agreement-form-footer .submit-wrap-flex .note-wrap p:first-child {
    margin-bottom: 10px;
}
.surgery-agreement-form-footer .submit-wrap-flex .button-wrap {/* width: 200px; */
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
.surgery-agreement-form-footer .showing-warning {
    background: linear-gradient(270deg, #9C27B0, #0035d2) !important;
}
.premium-lens-recommend-checkboxes {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
}
.recommended-option-highlight {
	background-color: #e6f2ff;
	color: #007BFF;
	font-weight: bold;
}
.recommended-label {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	background: #0d6efd;
	color: #fff;
	font-size: 1.1rem;
	font-weight: 600;
	padding: 4px 6px;
	text-align: center;
	line-height: 1.2;
	border-radius: 4px 4px 0 0;
	pointer-events: none;
	margin-bottom:0.5rem;
}
/* One-time-code boxes for the MFA config and MFA verify modals. The login page and the patient
   contact verification page each have their own copy, scoped under .modern-login-page and
   .patient-verification-form, because neither is a modal. */
.create-modal .verify-input-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	gap: 0.75rem;
	margin: 2rem auto;
}
.create-modal .verify-input-container input {
    width: 45px;
    height: 55px;
    font-size: 20px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
/* Verified / unverified pill shown beside the email and mobile fields in patient details. */
.contact-verified-pill {
	display: inline-block;
	font-size: 10px;
	font-weight: 600;
	line-height: 1.4;
	padding: 1px 6px;
	border-radius: 8px;
	margin-left: 4px;
	white-space: nowrap;
	/* Status, not a control. The detail - including the date it was verified - is in
	   the tooltip. Matches .comms-verified-icon, which says the same state in the
	   patient header and has carried this affordance since it was written. */
	cursor: help;
}
.contact-verified-pill.is-verified {
    background: #e4f4ea;
    color: #1c7a41;
}
.contact-verified-pill.is-unverified {
    background: #fdeaea;
    color: #a94442;
}
.popover {
	outline:none;
	max-width: 100%;
	padding: 0;
	padding-bottom: 10px;
}
.popover h3.popover-title {
    background: #00bcd4;
    color: #ffffff;
    font-size: 12px;
}
.popover .popover-content {
    font-size: 12px;
}
.popover-normal {
	outline:none;
	max-width: 12rem;
	padding: 0;
}
/* padding-bottom: 10px; */
.popover-normal h3.popover-title {
    background: #00bcd4;
    color: #ffffff;
    font-size: 12px;
}
.popover-normal .popover-content {
    font-size: 12px;
}
.am-popover {
	opacity: 1;
	transform: translateX(0px);
}
/*transition: all .15s ease-in;*/
.am-popover.ng-enter {
    opacity: 0;
}
/*transform: translateX(-30px);*/
.am-popover.ng-enter.ng-enter-active {
}
.am-popover.ng-leave {
    opacity: 1;
}
.am-popover.ng-leave.ng-leave-active {
    opacity: 0;
}
.popover.info-detail-popover {
	max-width: 26rem;
	width: auto;
	z-index: 1100;
}
.popover.info-detail-popover .popover-content {
	word-wrap: break-word;
	overflow-wrap: break-word;
	color: #343a40 !important;
}
.popover.info-detail-popover .popover-content label {
    color: #333333 !important;
    margin-bottom: 0;
}
.info-popover-comment {
	white-space: pre-wrap;
	word-break: break-word;
	max-width: 24rem;
}
.diagnosis-info-popover-anchor {
	pointer-events: none;
}
.wider-popover {
	max-width: 24rem;
	opacity: 1;
	transform: translateX(12rem);
}
/*transition: all .15s ease-in;*/
.wider-popover.ng-enter {
    opacity: 0;
}
/*transform: translateX(-30px);*/
.wider-popover.ng-enter.ng-enter-active {
}
.wider-popover.ng-leave {
    opacity: 1;
}
.wider-popover.ng-leave.ng-leave-active {
    opacity: 0;
}
/* .popover has no max-width of its own, so a sentence renders as one long line. */
.popover.contact-verified-popover {
	max-width: 22rem;
}
/* Insurance summary chips shown in the patient header, with a hover popover
   on the "+N" pill that reveals the insurers not shown inline. */
.insurance-summary {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	gap: 3px;
}
.insurance-summary .ins-chip {
	display: inline-block;
	border-radius: 11px;
	padding: 1px 8px;
	font-size: 11.5px;
	font-weight: 600;
}
.insurance-summary .ins-more {
	position: relative;
	display: inline-block;
	border-radius: 11px;
	padding: 1px 7px;
	font-size: 11.5px;
	font-weight: 700;
	background: #E8F4F8;
	color: #0035d2;
	cursor: default;
}
.insurance-summary .ins-pop {
	display: none;
	position: absolute;
	bottom: calc(100% + 9px);
	left: 50%;
	transform: translateX(-50%);
	z-index: 1050;
	min-width: 150px;
	padding: 10px 11px;
	background: #fff;
	border: 1px solid #dce3ee;
	border-radius: 10px;
	box-shadow: 0 10px 28px rgba(26, 41, 66, .18);
	white-space: normal;
	text-align: left;
}
.insurance-summary .ins-more:hover .ins-pop, .insurance-summary .ins-more:focus .ins-pop {
	display: block;
}
.insurance-summary .ins-pop::after {
	content: "";
	position: absolute;
	top: 100%;
	left: 50%;
	transform: translateX(-50%);
	border: 7px solid transparent;
	border-top-color: #fff;
}
.insurance-summary .ins-pop-h {
	display: block;
	margin-bottom: 7px;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: .5px;
	text-transform: uppercase;
	color: #7a869a;
}
.insurance-summary .ins-pop-chips {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 6px;
}
/* Collapsible wrapper used where the picker sits in a crowded form. The header
   doubles as the summary of what is currently selected. */
.insurance-multiselect .ins-collapse {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	gap: 10px;
	width: 100%;
	padding: 7px 11px;
	background: #fff;
	border: 1px solid #dce3ee;
	border-radius: 8px;
	color: #1A2942;
	font-family: inherit;
	font-size: 13px;
	text-align: left;
	cursor: pointer;
}
.insurance-multiselect .ins-collapse:hover, .insurance-multiselect .ins-collapse:focus {
	border-color: #b9c6de;
}
.insurance-multiselect .ins-collapse-text {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
.insurance-multiselect .ins-collapse-caret {
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
	width: 0;
	height: 0;
	border-right: 5px solid transparent;
	border-left: 5px solid transparent;
	border-top: 6px solid #5b6576;
	transition: transform .15s ease;
}
.insurance-multiselect .ins-collapse-caret.is-open {
	transform: rotate(180deg);
}
.insurance-multiselect .ins-collapse-body {
	margin-top: 8px;
}
/* A checkbox that sits directly beside its own text, rather than being split
   across the form grid's label and field columns. */
.ins-inline-check {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 8px;
	margin: 0;
	font-weight: normal;
	cursor: pointer;
}
.ins-inline-check input[type="checkbox"] {
	-ms-flex: 0 0 auto;
	    flex: 0 0 auto;
	margin: 0;
}
/* The Payer box on the operation note. Sits in the same blue-box shell as the
   "NHI not set" panel above it, so the two read as one column of prompts. */
.op-note-payer-head {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	gap: 12px;
	margin-bottom: 3px;
}
.op-note-payer-title {
	margin: 0;
	font-size: 15px;
	font-weight: 700;
	color: #0035d2;
}
.op-note-payer-note {
	margin: 0 0 11px;
	font-size: 12px;
	font-style: italic;
	color: #6c757d;
}
.op-note-payer-eye {
	display: block;
	margin-bottom: 5px;
	font-size: 11px;
	font-weight: 700;
	color: #2a307f;
}
.op-note-payer-error {
	margin: 9px 0 0;
	font-size: 12px;
	font-weight: 600;
	color: #a94442;
}
.table-complete th, .table-complete td {
    border-top: 0 !important;
    vertical-align: middle !important;
}
.table-complete th {
    color: #0035d2;
    font-size: 16px;
}
.table-complete td:nth-child(1) {/*background: pink;*/
    color: #343a40;
    font-size: 14px;/*width: 50%;*/
}
.table-complete td:nth-child(2) {
    text-align: center;
    height: 60px;
    width: 160px;
}
.table-complete td:nth-child(2) img {
    height: 100%;
    overflow: hidden;
}
.table-complete td:nth-child(3) {/*background: pink;*/
    width: 240px;
}
.table-complete th:nth-child(2) {
    text-align: center;
    width: 200px;
}
.table-complete .indent {
    padding-left: 30px;
    font-size: 12px;
    display: inline-block;
}
.complete-flex-wrap {
	display:-ms-flexbox;
	display:flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
}
.question-wrap {
	height: 44px;
	width: 44px;
	border: 2px solid gold;
	display: inline-block;
	border-radius: 50%;
	position: relative;
}
.question-wrap span {
    color: gold;
    font-size: 16px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.patient-summary-details {
	font-size: 10px;
}
.doc-flex-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	max-height: 400px;
	margin-bottom: 15px;
    overflow-y: auto;
    border: 1px solid lightgrey;
    padding: 5px;
	border-radius: 5px;
}
.doc-flex-wrap.doc-warning {
    background-color: rgba(255, 182, 193, 0.4);
}
.doc-flex-wrap .doc-card {
    border: 1px solid #ddd;
    width: 32.5%;
    margin-bottom: 8px;
    padding: 10px;
    cursor: pointer;
    border-radius: 6px;
    background-color: #fff;
}
.doc-flex-wrap .doc-card:hover {
    box-shadow: 0px 0px 3px 0px rgba(0,0,0,0.3);
}
.doc-flex-wrap .doc-card.selected {
    background-color: #f2f6fb;
}
.doc-flex-wrap .doc-card.doc-card-ghost {
    border:none;
    height: 0;
    padding: 0;
    margin: 0;
}
.doc-flex-wrap .doc-card p {
    margin-bottom: 0;
}
.selected-doc-wrap {
	text-align: center;
	background-color: #f2f6fb;
	border: 1px solid #bccad2;
	padding: 10px;
	margin-bottom: 10px;
	border-radius: 6px;
}
.doctor-filter-group input[type=radio] {
    top: -2px;
}
.doctor-filter-group .radio-inline:first-child {
    margin-left: 15px;
}
/* =================================================================== */
/* ! Impact on life age (how old the answers behind the public score are)
/* =================================================================== */
.impact-review-wrap {
	margin-top: 8px;
	max-width: 260px;
}
.impact-review-wrap .impact-review-date {
    color: #343a40;
    display: block;
    font-size: 11px;
}
/* Answers past the validity window - the public score is pending until the
	   questions are answered again, so this has to read as a prompt, not a note. */
.impact-review-wrap .impact-review-expired {
    color: #856404;
    display: block;
    font-size: 11px;
}
.exam-wrap {

}
.form-exam {
	color: #343a40;
	font-size: 12px;
}
.form-exam select, .form-exam .form-control {
    border-radius: 0;
    box-shadow: none;
    color: #343a40;
    font-size: 12px;
}
.form-exam .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.form-exam .form-group-label .control-label {
    text-align: right;/*align-self: center;*/
}
.form-exam .snellen {
    display: -ms-flexbox;
    display: flex;/*justify-content: space-between;*/
    padding: 0;
    position: relative;
}
.form-exam .snellen select, .form-exam .snellen .mark-wrap {
    margin-right: 20px;/*width: calc(50% - 60px);*/
    width: 100px;
}
.form-exam .mark-wrap, .form-exam .mark-wrap-deg {
    position: relative;
}
.form-exam .mark-wrap .six-pre, .form-exam .mark-wrap-deg .six-pre {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    left:-20px;
}
.form-exam .mark-wrap .stripe-post, .form-exam .mark-wrap-deg .stripe-post {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    right:-15px;
}
.form-exam .mark-wrap .stripe-pre, .form-exam .mark-wrap-deg .stripe-pre {
    position: absolute;
    top:50%;
    transform:translateY(-50%);
    left:-12px;
}
.form-exam .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.form-exam .mark-wrap-deg .stripe-post {
    right: -37px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.terms h1 {
    margin: 30px 0;
}
.terms h3 {
    margin-bottom: 15px;
}
.terms p {
    margin-bottom: 15px;
}
.terms a {
    color: #0035d2;
}
.terms .image1 {
    float: left;
    width: 50%;
    margin-right: 10px;
}
.op-header {
	color: #ffffff;
	text-align: center;
	padding: 5px 0;
	margin-bottom: 10px;
}
.op-header h4 {
    font-size: 1em;
}
.navy-text {
	color: #0035d2 !important;
}
.navy-line {
	height: 2px;
	background-color: #0035d2;
	margin-left: 1.5em;
	margin-right: 1.5em;
	margin-top: 1em;
}
.pre-op-form {
	color: #343a40;
	font-size: 12px;
	// background-color: pink;
	padding: 0 20px;
}
.pre-op-form select, .pre-op-form .form-control {
    border-radius: 20px;
    box-shadow: none;
    // color: #343a40;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.pre-op-form .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.pre-op-form .form-group-label .control-label {
    text-align: right;
}
.pre-op-form .flex {
    display: -ms-flexbox;
    display: flex;
    padding: 0;
    position: relative;
}
.pre-op-form .flex select, .pre-op-form .flex .input, .pre-op-form .flex .inline-number, .pre-op-form .flex .mark-wrap {
    margin-right: 20px;
    width: 100px;
}
.pre-op-form .mark-wrap, .pre-op-form .mark-wrap-deg {
    position: relative;
}
.pre-op-form .mark-wrap .six-pre, .pre-op-form .mark-wrap-deg .six-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -20px;
}
.pre-op-form .mark-wrap .stripe-post, .pre-op-form .mark-wrap-deg .stripe-post {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: -15px;
}
.pre-op-form .mark-wrap .stripe-pre, .pre-op-form .mark-wrap-deg .stripe-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -12px;
}
.pre-op-form .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.pre-op-form .mark-wrap-deg .stripe-post {
    right: -37px;
}
.pre-op-form label {
    color: #0035d2 !important;
}
.pre-op-form .marker {
    position: relative;
    top: 2px;
}
.btn-next {
	width: 120px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.pressure-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	max-width: 460px;
}
.pressure-wrap .form-group {
    width: 47%;
}
.half-width {
	max-width: 50%;
}
.quarter-width {
	max-width: 25%;
}
.blue-box {
	border: 1px solid #0035d2;
	padding: 15px;
	background-color: #f2f6fb;
	margin-bottom: 15px;
	border-radius: 8px;
}
.blue-box .header .h4 {
    margin-bottom: 5px;
    margin-top: 0;
}
.eye-heading {
	margin-bottom: 20px;
}
.pre-op-save-wrap {
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	margin: 20px 0;
}
.pre-op-save-wrap .progression-wrap {
    min-width: 250px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
}
.pre-op-save-wrap .progression-wrap .save-progress {
    cursor: pointer;
    margin-right: 20px;
}
.pre-op-save-wrap .progression-alert-wrap {
    width: calc(100% - 280px);
}
.pre-op-save-wrap .progression-alert-wrap .alert {
    margin-bottom: 0;
}
.pre-op-save-wrap .progression-alert-wrap .alert + .alert {
    margin-top: 10px;
}
.stack-vert {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	position: relative;
	top: 2px;
	margin-left: 10px;
}
.stack-vert .radio-inline + .radio-inline {
    margin-left: 0;
    margin-top: 5px;
}
.flex-biometry {
	-ms-flex-align: center;
	    align-items: center;
}
.flex-biometry .control-label {
    margin-right: 15px;
    margin-bottom: 0;
}
.biometry-input {
	width: 100px;
	margin-right: 20px;
}
.axis-wrap {
	position: relative;
}
.axis-times, .axis-deg {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	transform: translateY(-50%);
}
.axis-times {
	right: calc(100% + 6px);
}
.axis-deg {
	left: 110px;
}
.section-label {
	margin-bottom: 10px;
}
.biometry .form-row {
    margin-bottom: 15px;
}
.biometry .left-column {
    width: 28px;
}
.biometry .form-group {
    margin-bottom: 0px;
}
.biometry .help-block {
    position: absolute;
    width: 300px;
    margin-top: 0;
}
.bio-internal-flex {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-align: center;
	    align-items: center;
}
.table-medication th, .table-medication td {
    border-color: #0035d2 !important;
    vertical-align: middle !important;
}
.table-medication td:last-child {
    text-align: right;
}
.table-medication .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: white;
}
.table-medication .remove-med:hover {
    background-color: #0035d2;
    color: white;
}
.btn-add-allergy {
	height: 34px;
	width: 34px;
	margin: 0;
	padding: 0;
}
.flex-allergy {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.flex-allergy .grow {
    -ms-flex: 1 0;
        flex: 1 0;
    margin-right: 20px;
}
.anaesthetic-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.anaesthetic-wrap .form-group {
    width: 260px;
    margin-right: 20px;
}
.anaesthetic-wrap .help-block {
    position: absolute;
    margin-top: 0;
}
.text-area-wrap {
	position: relative;
}
.text-area-wrap .count-remaining {
    position: absolute;
    font-size: 10px;
    bottom: 0;
    right: 15px;
    color: #0035d2;
}
.diabetes-pop-up-wrap {
	width: 50%;
	position: relative;
}
.retinopathy-pop-up-OD .retinopathy-popup {
    left: calc(100% + 10px);
}
.retinopathy-pop-up-OS .retinopathy-popup {
    right: calc(100% + 10px);
}
.showRetinopathy .retinopathy-popup {
    display: block;
}
.maculopathy-pop-up-OD .maculopathy-popup {
    left: calc(100% + 10px);
}
.maculopathy-pop-up-OS .maculopathy-popup {
    right: calc(100% + 10px);
}
.showMaculopathy .maculopathy-popup {
    display: block;
}
.retinopathy-popup, .maculopathy-popup {
	border: 1px solid #0035d2;
	padding: 15px;
	font-size: 10px;
	color: #0035d2;
	background-color: white;
	width: 480px;
	position: absolute;
	z-index: 1;
	top: 0;
	display: none;
}
.retinopathy-popup .table-bordered, .maculopathy-popup .table-bordered {
    border: none !important;
    margin-bottom: 10px;
}
.retinopathy-popup .table-bordered th, .retinopathy-popup .table-bordered td, .maculopathy-popup .table-bordered th, .maculopathy-popup .table-bordered td {
    border-right: 1px solid #0035d2;
    border-left: 1px solid #0035d2;
}
.retinopathy-popup .table-bordered th:first-child, .retinopathy-popup .table-bordered td:first-child, .maculopathy-popup .table-bordered th:first-child, .maculopathy-popup .table-bordered td:first-child {
    border-left: none;
}
.retinopathy-popup .table-bordered th:last-child, .retinopathy-popup .table-bordered td:last-child, .maculopathy-popup .table-bordered th:last-child, .maculopathy-popup .table-bordered td:last-child {
    border-right: none;
}
.retinopathy-popup .table-bordered tr:last-child td, .maculopathy-popup .table-bordered tr:last-child td {
    border-bottom: none;
    padding-bottom: 0;
}
.retinopathy-popup td, .retinopathy-popup th, .maculopathy-popup td, .maculopathy-popup th {
    border-color: #0035d2 !important;
}
.retinopathy-popup p, .maculopathy-popup p {
    margin-bottom: 0;
}
.retinopathy-popup th:first-child, .retinopathy-popup td:first-child {
    width: 120px;
}
.pre-op-form .flex-lens {
    display: -ms-flexbox;
    display: flex;
}
.pre-op-form .flex-lens .form-group {
    width: 150px;
    margin-right: 20px;
}
.pre-op-form .flex-lens .form-group-axis {
    margin-right: 0;
    width: 110px;
}
/* =================================================================== */
/* ! AU PBS prescription fields (medication form)
/* =================================================================== */
/* The PBS details printed onto the pre-printed PB023 form. Grouped in a light
   panel under the dose row so they read as one set; flex rather than Bootstrap
   columns so the checkboxes line up with the inputs beside them and the rows
   wrap cleanly when the modal is narrow. */
.pbs-fields {
	margin-bottom: 15px;
	padding: 10px 12px 2px;
	border-left: 3px solid #00bcd4;
	border-radius: 8px;
	background-color: rgba(0, 188, 212, 0.05);
}
.pbs-fields .pbs-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 0 16px;
}
.pbs-fields .pbs-field {
    margin-bottom: 8px;
}
.pbs-fields .pbs-field .control-label {
    display: block;
    margin-bottom: 2px;
}
.pbs-fields .pbs-field-sm {
    width: 7rem;
}
.pbs-fields .pbs-field-md {
    width: 11rem;
}
.pbs-fields .pbs-field-full {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
}
/* Same height as .form-control so the label sits level with the inputs. */
.pbs-fields .pbs-field-check {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    height: 34px;
}
.pbs-fields .pbs-check {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: normal;
    cursor: pointer;
}
.pbs-fields .pbs-check input[type="checkbox"] {
    margin: 0;
}
.pbs-fields .pbs-check.is-disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.allergy-form-wrap .help-block {
    position: absolute;
}
.locsiii-wrap {
	position: relative;
	width: 50%;
}
.locsiii-img-wrap {
	position: absolute;
	width: 500px;
}
.locsiii-img-wrap img {
    width: 100%;
}
.locsiii-img-wrap-OD {
	position: absolute;
	width: 700px;
	left: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OD img {
    width: 100%;
}
.locsiii-img-wrap-OS {
	position: absolute;
	width: 500px;
	right: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OS img {
    width: 100%;
}
.showOpal, .showColour, .showCortical, .showPupil, .showSub {
	display: block !important;
}
.pre-op-header {
	// outline: 1px dotted pink;
	margin-bottom: 20px;
}
.pre-op-header .head-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: end;
        align-items: flex-end;
}
.pre-op-header .head-flex:last-child {
    margin-top: 10px;
}
.pre-op-header h3, .pre-op-header h4 {
    margin: 0;
}
.pre-op-header .head-link {
    color: #0035d2;
    cursor: pointer;
    font-size: 14px;
    text-decoration: underline;
}
.pre-op-header .head-name {
    margin-right: 20px;
}
.pre-op-header .header-left, .pre-op-header .header-right {
    // outline: 1px solid green;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
}
.pre-op-header .header-right {
    // margin-right: 80px;
    // outline: 1px solid blue;
}
.graphs-container {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
}
.card, .patients-empty, .menu-section, .patient-header .patient-card {
    background-color: #fff;
    border: none;
    border-radius: 8px;
    box-shadow: 0 0 4px rgb(0 0 0 / 20%);
    box-sizing: border-box;
	margin: 1em;
	margin-right: 0;
}
.card:hover, .patients-empty:hover, .menu-section:hover, .patient-header .patient-card:hover {
	/* box-shadow: 0 8px 28px 0 rgba(0,0,0,0.2); */
  }
.card-container {
	padding-left: 1em;
	padding-right: 1em;
	/* padding: 2px 16px; */
}
.patients-empty {
	background-color: #f4f7fe; 
	margin: 0;
	height: 'auto';
}
.patients-empty h4 {
    padding: 2em;
}
.menu-section {
	background-color: #f4f7fe; 
	min-height: 10em;
	margin-left: 0;
	margin-top: 0;
}
.menu-section h4 {
    text-align: left;
    padding-left: 1em;
    padding-top: 1em;
    padding-bottom: 0.4em;
}
.menu-container {
}
.menu-list {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
	-ms-flex-align: start;
	    align-items: flex-start;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
}
.menu-arrow {
	border-width: 11px;
	/* position: absolute; */
	display: block;
	width: 0;
	height: 0;
	border-color: transparent;
	border-style: solid;
	margin-top: -11px;
	margin-left: -11px;
	border-top-width: 0;
	border-bottom-color: #f4f7fe;
	margin-left: 48%;
	/* left: 50%; */
}
.vertical-bar {
	width: 4px;
	background-color: #0035d2;
	-ms-flex-item-align: stretch;
	    -ms-grid-row-align: stretch;
	    align-self: stretch;
	margin-left: 2em;
	margin-top: 1em;
	margin-bottom: 1em;
}
.menu-block {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: start;
	    justify-content: flex-start;
}
.right-arrow {
	margin-top: 1em;
	width: 16px;
	height: 16px;
}
.menu-item {
	width: 11em;
}
.menu-item h4 {
    margin: 0;
    font-size: 12px;
}
.menu-item p {
    padding-left: 1em;
    padding-right: 0.2em;
    text-align: left;
    font-size: 12px;
}
.patient-header {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: row;
	    flex-direction: row;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;

}
.patient-header .header-title {
    -ms-flex: 1;
        flex: 1;
    position: absolute;
    top: 10rem;
}
.patient-header .menu-container {
    -ms-flex: 12;
        flex: 12;
}
.patient-header .link-disabled {
    pointer-events: none;
    cursor: default;
    opacity: 0.6;
}
.patient-header .arrow-down {
    border: solid #0035d2;
    border-width: 0 2px 2px 0;
    display: inline-block;
    padding: 3px;
    margin-bottom: 2px;
    margin-left: 2px;
    transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
}
.patient-header .arrow-right {
    border: solid #0035d2;
    border-width: 0 2px 2px 0;
    display: inline-block;
    padding: 3px;
    margin-bottom: 2px;
    margin-left: 2px;
    transform: rotate(-45deg);
    -webkit-transform: rotate(-45deg);
}
.patient-header h3, .patient-header h4 {
    margin: 0;
}
.patient-header h5 {
    margin: 0;
    font-size: 16px;
}
.patient-header .patient-card {
    padding-bottom: 1em;
}
.patient-header .patient-detail-section {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    padding-top: 0.5em;
}
.patient-header .patient-detail-section h4 {
    font-size: 14px;
}
/* Verified/unverified comms icons beside the mobile number. The state behind them is the same one
	   .contact-verified-pill (_forms.css) spells out in words on the patient edit form; up here there
	   is no room for a word, so each channel keeps its own glyph with a tick or a cross badged on it.

	   Deliberately no margin-top or align-self: the row is baseline-aligned, which puts the glyphs on
	   the same line as the number they belong to without having to match the link's own offset. */
.patient-header .comms-verified {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    margin-left: .75em;
    margin-right: .75em;
}
.patient-header .comms-verified-icon {
    position: relative;
    display: inline-block;/* Wide enough that the badge on one glyph clears the next glyph entirely. The badge hangs
		   half outside its own box, so a gap the size of the badge is the minimum that reads as two
		   separate icons rather than one smudge. */
    margin-right: 1em;
    font-size: 16px;
    line-height: 1;/* Status, not a control. The detail - including the date it was verified - is in the title. */
    cursor: help;
}
.patient-header .comms-verified-icon:last-child {
    margin-right: 0;
}
/* Palette colours rather than a one-off green: these sit among the header's other glyphs and
		   have to belong to the same set. Navy reads as "on file and confirmed" without competing
		   with the red, which is the one that wants to be noticed. */
.patient-header .comms-verified-icon.is-verified {
    color: #0035d2;
}
.patient-header .comms-verified-icon.is-unverified {
    color: #a94442;
}
/* Badged on the bottom right of the channel glyph. The card behind is white, so a white disc
	   keeps the badge legible where it overlaps the glyph. Pulled in tighter than the glyph's own
	   edge so it reads as attached to it rather than as a third floating icon. */
.patient-header .comms-verified-badge {
    position: absolute;
    right: -0.35em;
    bottom: -0.1em;
    font-size: 10px;
    background: #ffffff;
    border-radius: 50%;
}
.patient-header .vertical-section {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.popover-preop-wrap {
	padding: 20px;
	padding-bottom: 0;
	width: 300px;
	text-align: center;
}
.popover-preop-wrap label {
    color: #0035d2 !important;
    font-size: 12px;
    margin-bottom: 10px;
}
.popover-preop-wrap .form-control {
    border-radius: 20px;
    box-shadow: none;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.popover-preop-wrap .form-group:last-child {
    margin-bottom: 10px;
}
.popover {
	border-color: #0035d2;
}
/* width: 20em;
	max-width: 20em; */
.popover .marker {
    position: relative;
    top: 2px;
}
.popover.bottom > .arrow {
	border-bottom-color: #0035d2;
}
.spinner-wrap {
	position: relative;
}
.vertical-buttons {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.vertical-buttons button + button {
    margin-top: 10px;
}
.vertical-radio-groups {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	margin-top: 1em;
}
.radio-button-inline {
	margin-left: 0px !important;
	margin-bottom: 1em;
}
.my-modal-footer-patient-details .btn-navy {
    width: 220px;
}
.width_35_em{
	width: 35em;
}
hr.life-quality-line-break {
	border-top-color: #3850a2;
	margin-top: 0;
	margin-bottom: 0;
}
.customer_checkbox_red input[type=checkbox]:before {
    content: "";
    display: block;
    position: absolute;
    width: 13px;
    height: 13px;
    border: solid red;
    border-radius: 2px;
    background-color: transparent;
}
.customer_checkbox_red input[type=checkbox]:checked:before {
    content: "";
    display: block;
    position: absolute;
    width: 15px;
    height: 15px;
    background-color: red;
}
.customer_checkbox_red input[type=checkbox]:checked:after {
    content: "";
    display: block;
    width: 5px;
    height: 10px;
    border: solid white;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    position: absolute;
    top: 5px;
    left: 5px;
}
.customer_checkbox_red span {
    position: relative;
    top: -1px;
    padding-left: 0.5em;
}
.customer_checkbox_green input[type=checkbox]:before {
    content: "";
    display: block;
    position: absolute;
    width: 13px;
    height: 13px;
    border: solid green;
    border-radius: 2px;
    background-color: transparent;
}
.customer_checkbox_green input[type=checkbox]:checked:before {
    content: "";
    display: block;
    position: absolute;
    width: 15px;
    height: 15px;
    background-color: green;
}
.customer_checkbox_green input[type=checkbox]:checked:after {
    content: "";
    display: block;
    width: 5px;
    height: 10px;
    border: solid white;
    border-width: 0 2px 2px 0;
    transform: rotate(45deg);
    position: absolute;
    top: 5px;
    left: 5px;
}
.customer_checkbox_green span {
    position: relative;
    top: -1px;
    padding-left: 0.5em;
}
.customer_radio_red .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
    color: red !important;
}
.customer_radio_red input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_red input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: red;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_green .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
    color: green !important;
}
.customer_radio_green input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_green input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: green;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_normal .marker {
    margin-left: 0.5em;
    margin-right: 1em;
    font-size: 1.6em;
}
.customer_radio_normal input[type="radio"]:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #d1d3d1;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.customer_radio_normal input[type="radio"]:checked:after {
    width: 16px;
    height: 16px;
    border-radius: 16px;
    top: -2px;
    left: -1px;
    position: relative;
    background-color: #0035d2;
    content: '';
    display: inline-block;
    visibility: visible;
    border: 0px solid white;
}
.pagination {
	margin-top: 2em !important;
}
.pagination>li>a, .pagination>li>span {
  border: 0px;
  padding: 3px 6px;
}
.pagination>li.active>a {
	background: transparent;
	color: #337ab7;
	font-weight: bold;
	font-size: 16px;
	margin-top: -0.2em;
  }
/* .pagination>li.active>a {
  background: purple;
  color: #fff;
} */
/* .pagination {
	display: inline-block;
	padding-left: 0;
	.li {
		background-color: red;
	}
} */
.popover_ul {
	margin-left: -2em;
}
.popover_container .popover {
    width: 40em;
    max-width: 40em;
}
.popover_label {
	margin-right: 0px !important;
	font-family: 'Gordita Bold';
}
.pink_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: #EEE6FF;
}
.purple_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: rgb(217,210,233);
}
.blue_header {
	padding-left: 2%;
	padding-right: 2%;
	-ms-flex-direction: column !important;
	    flex-direction: column !important;
	background-color: rgb(207,226,243);
}
.long_section{
	width: 30% !important;
	margin-left: -5%;
	margin-right:15%;
}
/* =================================================================== */
/* ! IOL calculator hand-off (surgical plan)
/* =================================================================== */
/* The lens type select keeps its half-width; the button sits in the space that leaves. */
.lens-type-controls {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.lens-type-controls .iol-calculator {
    margin-left: 20px;
}
.iol-calculator {
	text-align: center;
}
.iol-calculator .iol-calculator-btn {
    width: auto;
    max-width: none;
    white-space: nowrap;
}
/* The small italic line under the button, following the subtext under the verify button in the
	   CatTrax emails (.verify_cattrax_subtext in patient_email_verification_html.ftl). */
.iol-calculator .iol-calculator-attribution {
    margin-top: 4px;
    font-size: 10px;
    font-style: italic;
    color: #343a40;
}
.iol-calculator .iol-calculator-error {
    margin-top: 6px;
    max-width: 220px;
    font-size: 11px;
    color: #a94442;
}
/* =================================================================== */
/* ! Vision module: prism value + base, and the copy-adds button
/* =================================================================== */
.pre-op-form .prism-input-group {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
}
.pre-op-form .prism-input-group .inline-number {
    width: 100px;
}
.pre-op-form .prism-input-group .prism-base {
    width: 110px;
}
/* The icon-only copy-adds-to-the-other-eye button, lined up with the add inputs */
.pre-op-form .md-button.md-fab.btn-copy-adds {
    margin: 0;
    width: 36px;
    height: 36px;
    min-height: 36px;
    line-height: 36px;
}
/* .op-header {
	color: $white;
	text-align: center;
	padding: 5px 0;
	margin-bottom: 10px;
    color: $navy !important;
	h4 {
		font-size: 1em;
	}
} */
.operation-form {
	color: #343a40;
	font-size: 12px;
	// background-color: pink;
	padding: 0 20px;
	border-top: 2px solid #0035d2;
	border-radius: 0rem;
	padding-top: 3em;
}
.operation-form select, .operation-form .form-control {
    border-radius: 20px;
    box-shadow: none;
    // color: #343a40;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;/* Do not set appearance (e.g. radio): Chrome misaligns text in inputs, selects, and div.form-control. */
}
.operation-form .single-value-control {
    width: 40%;
    margin-left: 100px;
}
.operation-form .form-group-label {
    padding-right: 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-bottom: 25px;
}
.operation-form .form-group-label .control-label {
    text-align: right;
}
.operation-form .flex {
    display: -ms-flexbox;
    display: flex;
    padding: 0;
    position: relative;
}
.operation-form .flex select, .operation-form .flex .input, .operation-form .flex .inline-number, .operation-form .flex .mark-wrap {
    margin-right: 20px;
    width: 100px;
}
.operation-form .mark-wrap, .operation-form .mark-wrap-deg {
    position: relative;
}
.operation-form .mark-wrap .six-pre, .operation-form .mark-wrap-deg .six-pre {
    position: absolute;
    top: 20%;
    transform: translateY(-50%);/* left: -20px; */
    color: #0035d2 !important;
}
.operation-form .mark-wrap .stripe-post, .operation-form .mark-wrap-deg .stripe-post {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    right: -15px;
}
.operation-form .mark-wrap .stripe-pre, .operation-form .mark-wrap-deg .stripe-pre {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    left: -12px;
}
.operation-form .mark-wrap-deg .deg {
    width: 80px;
    padding-left: 6px;
    padding-right: 6px;
}
.operation-form .mark-wrap-deg .stripe-post {
    right: -37px;
}
.operation-form label {
    color: #0035d2 !important;
}
.operation-form .marker {
    position: relative;
    top: 2px;
}
.btn-next {
	width: 120px;
}
.check-label {
	position: relative;
}
.check-label .check-span {
    position: relative;
    top: 2px;
}
.lens {
	width: 220px;
}
.lens-label {
	margin-top: 34px;
}
.visual-label {
	margin-top: 70px;
}
.form-group-label-top {
	margin-top: 40px;
}
.col-bin {
	padding-left: 60px;
}
.pressure-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack:start;
	    justify-content:flex-start;
}
/* max-width: 460px; */
.pressure-wrap .form-group {
    width: 40%;
}
.half-width {
	max-width: 50%;
}
.quarter-width {
	max-width: 25%;
}
.blue-box {
	border: 1px solid #0035d2;
	padding: 15px;
	background-color: #f2f6fb;
	margin-bottom: 15px;
	border-radius: 8px;
}
.blue-box .header .h4 {
    margin-bottom: 5px;
    margin-top: 0;
}
.eye-heading {
	margin-bottom: 20px;
}
.operation-note-save-wrap {
	min-height: 80px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	margin: 20px 0;
}
.operation-note-save-wrap .progression-wrap {
    min-width: 250px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
}
.operation-note-save-wrap .progression-wrap .save-progress {
    cursor: pointer;
    margin-right: 20px;
}
.operation-note-save-wrap .progression-alert-wrap {
    width: calc(100% - 280px);
}
.operation-note-save-wrap .progression-alert-wrap .alert {
    margin-bottom: 0;
}
.operation-note-save-wrap .progression-alert-wrap .alert + .alert {
    margin-top: 10px;
}
.stack-vert {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	position: relative;
	top: 2px;
	margin-left: 10px;
}
.stack-vert .radio-inline + .radio-inline {
    margin-left: 0;
    margin-top: 5px;
}
.flex-biometry {
	-ms-flex-align: center;
	    align-items: center;
}
.flex-biometry .control-label {
    margin-right: 15px;
    margin-bottom: 0;
}
.biometry-input {
	width: 100px;
	margin-right: 20px;
}
.axis-wrap {
	position: relative;
}
.axis-times, .axis-deg {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	transform: translateY(-50%);
}
.axis-times {
	right: calc(100% + 6px);
}
.axis-deg {
	left: 110px;
}
.section-label {
	margin-bottom: 10px;
}
.biometry .form-row {
    margin-bottom: 15px;
}
.biometry .left-column {
    width: 18px;
}
.biometry .form-group {
    margin-bottom: 0px;
}
.biometry .help-block {
    position: absolute;
    width: 300px;
    margin-top: 0;
}
.table-incisions th, .table-incisions td {
    border-color: #0035d2 !important;
    vertical-align: middle !important;
    border-top: 0 !important;
}
.table-incisions td:last-child {
    text-align: right;
}
.table-incisions .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: white;
}
.table-incisions .remove-med:hover {
    background-color: #0035d2;
    color: white;
}
.btn-add-incision {
	height: 34px;
	width: 34px;
	margin-left: 0.5em;
	padding: 0;
}
.flex-allergy {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.flex-allergy .grow {
    -ms-flex: 1 0;
        flex: 1 0;
    margin-right: 20px;
}
.anaesthetic-wrap {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
}
.anaesthetic-wrap .form-group {
    width: 260px;
    margin-right: 20px;
}
.anaesthetic-wrap .help-block {
    position: absolute;
    margin-top: 0;
}
.text-area-wrap {
	position: relative;
}
.text-area-wrap .count-remaining {
    position: absolute;
    font-size: 10px;
    bottom: 0;
    right: 15px;
    color: #0035d2;
}
.diabetes-pop-up-wrap {
	width: 50%;
	position: relative;
}
.retinopathy-pop-up-OD .retinopathy-popup {
    left: calc(100% + 10px);
}
.retinopathy-pop-up-OS .retinopathy-popup {
    right: calc(100% + 10px);
}
.showRetinopathy .retinopathy-popup {
    display: block;
}
.maculopathy-pop-up-OD .maculopathy-popup {
    left: calc(100% + 10px);
}
.maculopathy-pop-up-OS .maculopathy-popup {
    right: calc(100% + 10px);
}
.showMaculopathy .maculopathy-popup {
    display: block;
}
.retinopathy-popup, .maculopathy-popup {
	border: 1px solid #0035d2;
	padding: 15px;
	font-size: 10px;
	color: #0035d2;
	background-color: white;
	width: 480px;
	position: absolute;
	z-index: 1;
	top: 0;
	display: none;
}
.retinopathy-popup .table-bordered, .maculopathy-popup .table-bordered {
    border: none !important;
    margin-bottom: 10px;
}
.retinopathy-popup .table-bordered th, .retinopathy-popup .table-bordered td, .maculopathy-popup .table-bordered th, .maculopathy-popup .table-bordered td {
    border-right: 1px solid #0035d2;
    border-left: 1px solid #0035d2;
}
.retinopathy-popup .table-bordered th:first-child, .retinopathy-popup .table-bordered td:first-child, .maculopathy-popup .table-bordered th:first-child, .maculopathy-popup .table-bordered td:first-child {
    border-left: none;
}
.retinopathy-popup .table-bordered th:last-child, .retinopathy-popup .table-bordered td:last-child, .maculopathy-popup .table-bordered th:last-child, .maculopathy-popup .table-bordered td:last-child {
    border-right: none;
}
.retinopathy-popup .table-bordered tr:last-child td, .maculopathy-popup .table-bordered tr:last-child td {
    border-bottom: none;
    padding-bottom: 0;
}
.retinopathy-popup td, .retinopathy-popup th, .maculopathy-popup td, .maculopathy-popup th {
    border-color: #0035d2 !important;
}
.retinopathy-popup p, .maculopathy-popup p {
    margin-bottom: 0;
}
.retinopathy-popup th:first-child, .retinopathy-popup td:first-child {
    width: 120px;
}
.operation-form .flex-lens {
    display: -ms-flexbox;
    display: flex;
}
.operation-form .flex-lens .form-group {
    width: 150px;
    margin-right: 20px;
}
.operation-form .flex-lens .form-group-axis {
    margin-right: 0;
    width: 110px;
}
.allergy-form-wrap .help-block {
    position: absolute;
}
.locsiii-wrap {
	position: relative;
	width: 50%;
}
.locsiii-img-wrap {
	position: absolute;
	width: 500px;
}
.locsiii-img-wrap img {
    width: 100%;
}
.locsiii-img-wrap-OD {
	position: absolute;
	width: 700px;
	left: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OD img {
    width: 100%;
}
.locsiii-img-wrap-OS {
	position: absolute;
	width: 500px;
	right: calc(100% + 15px);
	top: 0;
	z-index: 1;
	display: none;
}
.locsiii-img-wrap-OS img {
    width: 100%;
}
.showOpal, .showColour, .showCortical, .showPupil, .showSub {
	display: block !important;
}
.operation-note-header {
	// outline: 1px dotted pink;
	margin-bottom: 20px;
}
.operation-note-header .head-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: end;
        align-items: flex-end;
}
.operation-note-header .head-flex:last-child {
    margin-top: 10px;
}
.operation-note-header h3, .operation-note-header h4 {
    margin: 0;
}
.operation-note-header h6 {
    margin: 0;
    padding-left: 1.5em;
    font-size: 16px;
}
.operation-note-header .head-link {
    color: #0035d2;
    cursor: pointer;
    font-size: 14px;
    text-decoration: underline;
}
.operation-note-header .head-name {
    margin-right: 20px;
}
.operation-note-header .header-left, .operation-note-header .header-right {
    // outline: 1px solid green;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
}
.operation-note-header .header-right {
    // margin-right: 80px;
    // outline: 1px solid blue;
}
.popover-preop-wrap {
	padding: 20px;
	padding-bottom: 0;
	width: 300px;
	text-align: center;
}
.popover-preop-wrap label {
    color: #0035d2 !important;
    font-size: 12px;
    margin-bottom: 10px;
}
.popover-preop-wrap .form-control {
    border-radius: 20px;
    box-shadow: none;
    color: #0035d2;
    font-size: 12px;
    border: 1px solid #0035d2;
}
.popover-preop-wrap .form-group:last-child {
    margin-bottom: 10px;
}
.popover {
	border-color: #0035d2;
}
.popover .marker {
    position: relative;
    top: 2px;
}
.popover.bottom > .arrow {
	border-bottom-color: #0035d2;
}
.spinner-wrap {
	position: relative;
}
.vertical-buttons {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.vertical-buttons button + button {
    margin-top: 10px;
}
.my-modal-footer-patient-details .btn-navy {
    width: 220px;
}
.incisions-image {
	width: 100%;
	padding-left: 5em;
	padding-right: 5em;
	margin-top: 1em;
	margin-bottom: 2em;
}
.margin-top-2em {
	margin-top: 2em;
}
.margin-top-1em {
	margin-top: 1em;
}
.padding-top-dot-4em {
	padding-top: 0.4em;
}
.custom-slider.rzslider :focus {outline:none;}
.custom-slider.rzslider {
	margin-top: 1em;
	margin-bottom: 1em;
}
.custom-slider.rzslider .rz-bar {
	height: 8px;
	border-radius: 4px;
  }
.custom-slider.rzslider .rz-pointer {
	width: 16px;
	height: 16px;
	top: auto; /* to remove the default positioning */
	bottom: 0;
	margin-bottom: -6px;
  }
.custom-slider.rzslider .rz-pointer:after {
	display: none;
  }
.custom-slider.rzslider .rz-bubble {
	bottom: 14px;
  }
.custom-slider.rzslider .rz-limit {
	font-weight: bold;
  }
.custom-slider.rzslider .rz-tick-value {
	top:0px;
	color: transparent;
  }
.custom-slider.rzslider .rz-tick {
	width: 1px;
	height: 10px;
	margin-left: 8px;
	border-radius: 0;
	top: -1px;
  }
.transparent-color {
	  color:transparent !important;
  }
.btn-white {
	background-color: #ffffff;
	color: #0035d2;
	width: 200px;
	border-color: #0035d2;
}
.margin-middle {
	margin-left: 1em;
	margin-right: 1em;
}
.head-link {
	color: #0035d2;
	cursor: pointer;
	font-size: 14px;
	text-decoration: underline;
}
.font-size-16 {
	font-size: 16px;
}
.postoperative-header {
	width: 100%;
	text-align: center;
	margin-top: 2em;
	margin-bottom: 2em;
}
.caret {
	display: inline-block;
	width: 0;
	height: 0;
	margin-left: 2px;
	vertical-align: middle;
	border-top: 0px dashed;
	border-top: 0px solid \9;
	border-right: 0px solid transparent;
	border-left: 0px solid transparent;
  }
.font-regular, .head-no-link, .search-form .form-group .form-control, .filter-select, .form-impact label.control-label, .popover .popover-content, .popover-normal .popover-content, .table-complete td:nth-child(1), .selected-doc-wrap .selected-doc-practice, .impact-review-wrap .impact-review-date, .form-exam, .form-exam select, .form-exam .form-control, .terms, .pre-op-form, .pre-op-form select, .pre-op-form .form-control, .pre-op-header .head-link, .popover-preop-wrap label, .popover-preop-wrap .form-control, .operation-form, .operation-form select, .operation-form .form-control, .operation-form .marker, .operation-note-header .head-link, .head-link {
	font-family: 'Gordita Regular' !important;
}
.font-size-8 {
	font-size: 8px !important;
}
.margin-to-right {
	margin-left: 50%;
}
.grid-column-no-padding {
	padding-left: 0px;
	padding-right: 0px;

}
.select-no-margin {
	margin-right: 0px !important;
	width: 100% !important;
}
/* =================================================================== */
/* ! Injection note injections (per-injection block + drug batch)
/* =================================================================== */
/* Each injection is edited in place in its own card, so a pre-filled one is
   visible in the fields rather than summarised underneath them. */
.injection-block .injection-block-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    margin-bottom: 10px;
}
.injection-block .injection-block-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.injection-block .remove-med {
    padding: 0;
    margin: 0;
    border: 1px solid #0035d2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #ffffff;
}
.injection-block .remove-med:hover {
    background-color: #0035d2;
    color: #ffffff;
}
.btn-add-injection {
	width: auto;
	max-width: none;
	padding: 6px 16px;
}
/* Batch number and expiry sit beside the medication they belong to. Everything
   else on an injection is usually pre-filled from the patient's settings, so the
   pair gets a light accent to set it apart — enough to catch the eye on the way
   past, not enough to shout. */
.batch-fields {
	display: -ms-flexbox;
	display: flex;
	gap: 10px;
	padding: 8px 10px;
	border-left: 3px solid #FFB627;
	border-radius: 8px;
	background-color: rgba(255, 182, 39, 0.1);
}
.batch-fields .batch-field {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
}
/* <datepicker> is a custom element, so it needs a box of its own before the
	   input inside it can fill the field and the calendar can anchor to it. */
.batch-fields datepicker {
    display: block;
    position: relative;
}
.batch-fields .control-label {
    margin-bottom: 2px;
}
.batch-warning {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	font-style: normal;
	color: #a94442;
}
/*!
 * ui-select
 * http://github.com/angular-ui/ui-select
 * Version: 0.18.0 - 2016-06-14T06:54:43.159Z
 * License: MIT
 */
/* Style when highlighting a search. */
.ui-select-highlight {
    font-weight: bold;
}
.ui-select-offscreen {
    clip: rect(0 0 0 0) !important;
    width: 1px !important;
    height: 1px !important;
    border: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    position: absolute !important;
    outline: 0 !important;
    left: 0px !important;
    top: 0px !important;
}
.ui-select-choices-row:hover {
    background-color: #f5f5f5;
}
.ui-select-choices-row {
    background-color: white !important;
}
.selectize-control.single .selectize-input {
    background-image: none !important;
}
/* Select2 theme */
/* Mark invalid Select2 */
.ng-dirty.ng-invalid > a.select2-choice {
    border-color: #d44950;
}
.select2-result-single {
    padding-left: 0;
}
.select2-locked > .select2-search-choice-close {
    display: none;
}
.select-locked > .ui-select-match-close {
    display: none;
}
body > .select2-container.open {
    z-index: 9999; /* The z-index Select2 applies to the select2-drop */
}
/* Handle up direction Select2 */
.ui-select-container[theme="select2"].direction-up .ui-select-match {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}
.ui-select-container[theme="select2"].direction-up .ui-select-dropdown {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;

    border-top-width: 1px; /* FIXME hardcoded value :-/ */
    border-top-style: solid;

    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);

    margin-top: -4px; /* FIXME hardcoded value :-/ */
}
.ui-select-container[theme="select2"].direction-up .ui-select-dropdown .select2-search {
    margin-top: 4px; /* FIXME hardcoded value :-/ */
}
.ui-select-container[theme="select2"].direction-up.select2-dropdown-open .ui-select-match {
    border-bottom-color: #5897fb;
}
/* Selectize theme */
/* Helper class to show styles when focus */
.selectize-input.selectize-focus {
    border-color: transparent !important;
}
.selectize-input > input:focus {
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
    outline-color: red;
    /* outline: none !important; */
}
.selectize-control.single .selectize-input, .selectize-dropdown.single {
    border-color: transparent;
}
/* Fix input width for Selectize theme */
.selectize-control > .selectize-input > input {
    width: 100%;
}
/* Fix dropdown width for Selectize theme */
.selectize-control > .selectize-dropdown {
    width: 100%;
}
.selectize-control.single .selectize-input, .selectize-dropdown.single {
    border-color: #3850a2 !important;
    /* border: 1px solid #3850a2 !important; */
    border-radius: 20px;
    margin-bottom: -4px;
    box-shadow: none !important;
}
/* Mark invalid Selectize */
.ng-dirty.ng-invalid > div.selectize-input {
    border-color: #d44950;
}
.selectize-dropdown {
    border: 0px solid transparent !important;
    background: transparent !important;
}
/* Handle up direction Selectize */
.ui-select-container[theme="selectize"].direction-up .ui-select-dropdown {
    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);

    margin-top: -2px; /* FIXME hardcoded value :-/ */
}
/* Bootstrap theme */
/* Helper class to show styles when focus */
.btn-default-focus {
    color: #333;
    background-color: #ebebeb;
    border-color: #adadad;
    text-decoration: none;
    outline: 5px auto -webkit-focus-ring-color;
    outline-offset: -2px;
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.ui-select-bootstrap .ui-select-toggle {
    position: relative;
}
.ui-select-bootstrap .ui-select-toggle > .caret {
    position: absolute;
    height: 10px;
    top: 50%;
    right: 10px;
    margin-top: -2px;
}
/* Fix Bootstrap dropdown position when inside a input-group */
.input-group > .ui-select-bootstrap.dropdown {
    /* Instead of relative */
    position: static;
}
.input-group > .ui-select-bootstrap > input.ui-select-search.form-control {
    border-radius: 4px; /* FIXME hardcoded value :-/ */
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
.input-group > .ui-select-bootstrap > input.ui-select-search.form-control.direction-up {
    border-radius: 4px !important; /* FIXME hardcoded value :-/ */
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}
.ui-select-bootstrap > .ui-select-match > .btn {
    /* Instead of center because of .btn */
    text-align: left !important;
}
.ui-select-bootstrap > .ui-select-match > .caret {
    position: absolute;
    top: 45%;
    right: 15px;
}
/* See Scrollable Menu with Bootstrap 3 http://stackoverflow.com/questions/19227496 */
.ui-select-bootstrap > .ui-select-choices, .ui-select-bootstrap > .ui-select-no-choice {
    width: 100%;
    height: auto;
    max-height: 200px;
    overflow-x: hidden;
    margin-top: -1px;
}
body > .ui-select-bootstrap.open {
    z-index: 1000; /* Standard Bootstrap dropdown z-index */
}
.ui-select-multiple.ui-select-bootstrap {
    height: auto;
    padding: 3px 3px 0 3px;
}
.ui-select-multiple.ui-select-bootstrap input.ui-select-search {
    background-color: transparent !important; /* To prevent double background when disabled */
    border: none;
    outline: none;
    height: 1.666666em;
    margin-bottom: 3px;
}
.ui-select-multiple.ui-select-bootstrap .ui-select-match .close {
    font-size: 1.6em;
    line-height: 0.75;
}
.ui-select-multiple.ui-select-bootstrap .ui-select-match-item {
    outline: 0;
    margin: 0 3px 3px 0;
}
.ui-select-multiple .ui-select-match-item {
    position: relative;
}
.ui-select-multiple .ui-select-match-item.dropping .ui-select-match-close {
    pointer-events: none;
}
.ui-select-multiple:hover .ui-select-match-item.dropping-before:before {
    content: "";
    position: absolute;
    top: 0;
    right: 100%;
    height: 100%;
    margin-right: 2px;
    border-left: 1px solid #428bca;
}
.ui-select-multiple:hover .ui-select-match-item.dropping-after:after {
    content: "";
    position: absolute;
    top: 0;
    left: 100%;
    height: 100%;
    margin-left: 2px;
    border-right: 1px solid #428bca;
}
.ui-select-bootstrap .ui-select-choices-row > a {
    display: block;
    padding: 3px 20px;
    clear: both;
    font-weight: 400;
    line-height: 1.42857143;
    color: #333;
    white-space: nowrap;
}
.ui-select-bootstrap .ui-select-choices-row > a:hover, .ui-select-bootstrap .ui-select-choices-row > a:focus {
    text-decoration: none;
    color: #262626;
    background-color: #f5f5f5;
}
.ui-select-bootstrap .ui-select-choices-row.active > a {
    color: #fff;
    text-decoration: none;
    outline: 0;
    background-color: #428bca;
}
.ui-select-bootstrap .ui-select-choices-row.disabled > a, .ui-select-bootstrap .ui-select-choices-row.active.disabled > a {
    color: #777;
    cursor: not-allowed;
    background-color: #fff;
}
/* fix hide/show angular animation */
.ui-select-match.ng-hide-add, .ui-select-search.ng-hide-add {
    display: none !important;
}
/* Mark invalid Bootstrap */
.ui-select-bootstrap.ng-dirty.ng-invalid > button.btn.ui-select-match {
    border-color: #d44950;
}
/* Handle up direction Bootstrap */
.ui-select-container[theme="bootstrap"].direction-up .ui-select-dropdown {
    box-shadow: 0 -4px 8px rgba(0, 0, 0, 0.25);
}
.selectize-control.single .selectize-input:after {
    position: absolute;
    top: 50%;
    right: 5px !important;
    display: block;
    width: 7px !important;
    height: 7px !important;
    margin-top: -5px !important;
    border-color: #0035d2 #0035d2 transparent transparent !important;
    border-style: solid !important;
    border-width: 2px 2px 0px 0px !important;
    transform: rotate(135deg);
}
.listclass {
    border-radius: 2px !important;
    border-width: 1px !important;
}
.premium-lens-price-box {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    margin-right: -15px;
    margin-left: -15px;
    /* border-bottom: 1px solid $navy; */
}
.h4-medium {
    font-size: 1.2em;
}
.navy-color {
    color: #0035d2 !important;
}
.flex-row {
    width: 20%;
    text-align: center;
    font-size: 1em;
}
.dollar {
    margin-left: -6em;
    position: absolute;
    padding-top: 0.8em;
}
.dollar-non-toric {
    margin-left: -6em;
    position: absolute;
    padding-top: 0.8em;
}
.padding-zero {
    padding-top: 0px;
    padding-bottom: 0px;
    margin-top: 1em;
    margin-bottom: 1em;
}
.align-left {
    text-align: left;
}
.next-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row-reverse;
        flex-direction: row-reverse;
}
/* =================================================================== */
/* ! Premium lens prices (settings)
/* A practice's own price for each lens, toric and non-toric. The
/* cards, fee inputs, notices and action bar come from _settings.css.
/* =================================================================== */
.settings-shell .premium-lens-prices .card-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
}
.settings-shell .premium-lens-prices .plp-table {
    width: 100%;
    max-width: 620px;
    border-collapse: collapse;
    font-size: 13px;
}
.settings-shell .premium-lens-prices .plp-table > thead > tr > th {
    padding: 0 12px 8px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table > tbody > tr > th, .settings-shell .premium-lens-prices .plp-table > tbody > tr > td {
    padding: 5px 12px;
    vertical-align: middle;
}
.settings-shell .premium-lens-prices .plp-table > tbody > tr > th[scope="row"] {
    font-weight: 600;
    color: #2a307f;
    white-space: nowrap;
}
.settings-shell .premium-lens-prices .plp-table .plp-price-col {
    width: 170px;
}
.settings-shell .premium-lens-prices .plp-table .fee-input .form-control {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* Pale enough to read as "nothing set" rather than as a price of zero */
.settings-shell .premium-lens-prices .plp-table .form-control:-ms-input-placeholder {
    color: #c3c9da;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table .form-control::placeholder {
    color: #c3c9da;
    text-align: left;
}
.settings-shell .premium-lens-prices .plp-table .has-error .form-control {
    border-color: #d9534f;
    box-shadow: 0 0 0 3px rgba(217, 83, 79, 0.15);
}
/* A heading across the table between the two kinds of lens */
.settings-shell .premium-lens-prices .plp-group-row > th {
    padding: 16px 12px 6px;
    border-bottom: 1px dashed #e0e6ed;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #0035d2;
}
.settings-shell .premium-lens-prices .plp-group-row > th span {
    text-transform: none;
    letter-spacing: 0;
    font-weight: 400;
    color: #a3aac0;
}
.settings-shell .premium-lens-prices tbody > .plp-group-row:first-child > th {
    padding-top: 4px;
}
.settings-shell .premium-lens-prices .plp-included {
    font-size: 12px;
    font-style: italic;
    color: #a3aac0;
}
.settings-shell .premium-lens-prices .plp-email-field {
    max-width: 420px;
}
/* Read only for anyone who cannot change the prices; otherwise just the stack of cards */
.settings-shell .premium-lens-prices .plp-fieldset {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}
.settings-shell .premium-lens-prices .plp-retry {
    width: auto;
    margin: -3px 0 -3px auto;
    padding: 4px 14px;
}
.settings-shell .premium-lens-prices .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
}
/* Toric / non-toric: each choice is one button - the whole label is what is clicked and what shows it is
   chosen, in the step's own colours: green recommended, red use with caution, navy with no suggestion. The
   radio stays for the keyboard and screen readers, hidden; the label fills with its colour when chosen. */
.premium-lens-type-option {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    min-width: 104px;
    margin: 0 3px 6px;
    padding: 3px 12px;
    border: 1.5px solid #0035d2;
    border-radius: 16px;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.premium-lens-type-option input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
/* The marker is the label's text now, not a caption beside a dot: drop the caption's spacing, size and the
       2px nudge it gets from the step's own .marker rule, so the text sits in the middle of the button */
.premium-lens-type-option .marker {
    position: static !important;
    margin: 0 !important;
    padding: 0 !important;
    font-size: 13px !important;
    letter-spacing: 0.3px;
    line-height: inherit;
}
.premium-lens-type-option:hover {
    background-color: #e7f0ff;
}
.premium-lens-type-option:focus-within {
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Border colours are set outright: the step makes every label's text navy !important, so currentColor
       would always be navy */
.premium-lens-type-option.customer_radio_green {
    border-color: green;
}
.premium-lens-type-option.customer_radio_red {
    border-color: red;
}
/* The colours above are !important on .marker (_pre-op.css), so chosen text needs it to turn white */
.premium-lens-type-option.is-checked {
    background-color: #0035d2;
    border-color: #0035d2;
}
.premium-lens-type-option.is-checked .marker {
    color: #ffffff !important;
}
.premium-lens-type-option.is-checked.customer_radio_green {
    background-color: green;
    border-color: green;
}
.premium-lens-type-option.is-checked.customer_radio_red {
    background-color: red;
    border-color: red;
}
/* The patient-facing contact verification page. Styled to sit alongside the premium lens selection
   form - both are standalone pages a patient reaches from an emailed link, not app screens.

   Two things drive the choices below. First, the page inherits `font-size: 12px` from html/body
   (_util.css), which is too small for a patient-facing page, so type sizes here are explicit px
   rather than rem. Second, this is opened from a text message on whatever phone the patient owns,
   so spacing uses margins rather than flex `gap` (ignored below iOS 14.1) and controls are sized
   for a thumb. Everything is scoped so none of it leaks into app screens. */
.patient-verification-page {
	/* Replaces a spacer <div style="height:10rem"> that used to sit above the card. */
	padding: 3rem 0;
}
.patient-verification-form .view-wrap {
    padding: 2rem 1.5rem 2.5rem;
}
/* One centred measure for the whole card, so the heading, code boxes, consents and button share
	   a left and right edge instead of each block picking its own grid columns. */
.patient-verification-form .pv-panel {
    max-width: 440px;
    margin: 0 auto;
}
.patient-verification-form .pv-status {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 4rem 0;
}
.patient-verification-form .pv-logo {
    display: block;
    width: 180px;
    max-width: 60%;
    margin: 0 auto 2rem;
}
.patient-verification-form .pv-title {
    margin: 0 0 1rem;
    font-size: 24px;
    line-height: 1.3;
    font-weight: 600;
    text-align: center;
    color: #0035d2;
}
.patient-verification-form .pv-lede {
    margin: 0 0 2.5rem;
    font-size: 15px;
    line-height: 1.6;
    text-align: center;
    color: #6c757d;
}
/* Fieldsets carry the grouping semantics for the code boxes and the consents. Bootstrap's legend
	   defaults (100% wide, 21px, bottom border) would draw a rule across the card, so reset them. */
.patient-verification-form .pv-fieldset {
    margin: 0 0 2.5rem;
    padding: 0;
    border: 0;
}
/* width:100%, not auto. A <legend> shrink-wraps its content, so `text-align: center` has nothing
	   to centre within and the heading sits against the left edge of the fieldset. This restores the
	   block/full-width part of Bootstrap's own legend rule while still dropping the border and size
	   it also brings. */
.patient-verification-form .pv-legend {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 15px;
    line-height: 1.5;
    font-weight: 600;
    text-align: center;
    color: #0035d2;
}
/* Progress header. The page is one step at a time now, and a patient reading this on a phone
	   needs to know how much is left before they start rather than discovering it a step at a time.
	   The bar is decorative - the count beneath it is what carries the information, and it is the
	   part a screen reader announces. */
.patient-verification-form .pv-progress {
    margin: 0 0 2rem;
}
.patient-verification-form .pv-progress-bar {
    display: -ms-flexbox;
    display: flex;
    margin: 0 0 0.5rem;
}
/* Margin rather than flex `gap`, which is ignored below iOS 14.1 - the segments would run into
	   one continuous bar there and stop reading as steps at all. */
.patient-verification-form .pv-progress-seg {
    -ms-flex: 1;
        flex: 1;
    height: 4px;
    margin-right: 6px;
    border-radius: 2px;
    background: #e0e6ed;
    transition: background 0.25s ease;
}
.patient-verification-form .pv-progress-seg:last-child {
    margin-right: 0;
}
/* Done and current are told apart by hue, not just lightness: cyan reads as behind you and
		   navy as where you are, which survives being viewed on a phone in daylight. */
.patient-verification-form .pv-progress-seg.is-done {
    background: #0097a7;
}
.patient-verification-form .pv-progress-seg.is-current {
    background: #0035d2;
}
.patient-verification-form .pv-progress-text {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
.patient-verification-form .pv-progress-text b {
    font-weight: 600;
    color: #0a2540;
}
/* Sits under a legend to say what the step is for. Muted so the legend stays the heading. */
.patient-verification-form .pv-sublegend {
    margin: 0 0 1rem;
    font-size: 13px;
    line-height: 1.55;
    text-align: center;
    color: #6c757d;
}
/* Date of birth. Three boxes rather than a native date input: a patient born in the 1940s should
	   not have to scroll a calendar back eighty years on a phone, and the keyboard that opens for
	   inputmode="numeric" is the one they want. */
.patient-verification-form .pv-dob {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: end;
        align-items: flex-end;
    margin: 1.5rem auto 0;
}
.patient-verification-form .pv-dob-field {
    text-align: center;
}
.patient-verification-form .pv-dob-field label {
    display: block;
    margin: 0 0 0.35rem;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #6c757d;
}
.patient-verification-form .pv-dob-field input {
    height: 52px;
    font-size: 19px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
.patient-verification-form .pv-dob-field input:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Driven by aria-invalid, so the visual state and the state announced to a screen reader
			   can never drift apart - the same rule the code boxes follow. */
.patient-verification-form .pv-dob-field input[aria-invalid="true"] {
    border-color: #a94442;
}
.patient-verification-form .pv-dob-day input, .patient-verification-form .pv-dob-month input {
    width: 60px;
}
.patient-verification-form .pv-dob-year input {
    width: 88px;
}
.patient-verification-form .pv-dob-sep {
    padding: 0 0.5rem 1rem;
    font-size: 19px;
    font-weight: 600;
    color: #c0cde0;
}
/* How many wrong answers are left. Shown from the first failure on, and on both credential steps
	   because they share one budget - springing the limit on the patient at the last attempt would be
	   the one moment they could least afford the surprise. */
.patient-verification-form .pv-attempts {
    margin: 1rem 0 0;
    font-size: 12px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
/* One-time-code boxes. The login page has its own copy of these scoped under
	   .modern-login-page, which does not reach this page. */
.patient-verification-form .verify-input-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    margin: 1.5rem auto 0;
}
.patient-verification-form .verify-input-container input {
    width: 48px;
    height: 56px;
    margin: 0 0.375rem;
    font-size: 20px;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0035d2;
}
.patient-verification-form .verify-input-container input:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Driven by aria-invalid on the inputs, so the visual state and the state announced to a
			   screen reader can never drift apart. */
.patient-verification-form .verify-input-container input[aria-invalid="true"] {
    border-color: #a94442;
}
.patient-verification-form .pv-error {
    margin: 1rem 0 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
    color: #a94442;
}
/* Resend control. Styled as a link rather than a second button so it never competes with "Verify
	   my details" for the primary action - a patient who did get the code should not have to work out
	   which of two buttons is the one they want. */
.patient-verification-form .pv-resend {
    margin-top: 1rem;
    text-align: center;
}
.patient-verification-form .pv-resend-button {
    display: inline-block;
    padding: 0.5rem 0;
    font-size: 13px;
    line-height: 1.5;
    color: #0097a7;
    background: none;
    border: 0;
    cursor: pointer;
}
.patient-verification-form .pv-resend-button:hover, .patient-verification-form .pv-resend-button:focus {
    text-decoration: underline;
}
/* Greyed out through the cooldown and while the request is in flight. The hint below says
		   why, so this never reads as a dead control. */
.patient-verification-form .pv-resend-button[disabled] {
    color: #6c757d;
    cursor: default;
    text-decoration: none;
}
.patient-verification-form .pv-resend-hint, .patient-verification-form .pv-resend-status {
    margin: 0.25rem 0 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: center;
    color: #6c757d;
}
/* Consent block. Rows are left-aligned inside the centred panel: the help text runs to two or
	   three lines, and centred multi-line text under a checkbox reads as a ragged blob. Each option
	   gets its own wrapper so Bootstrap's `.checkbox-inline + .checkbox-inline { margin-left: 10px }`
	   never matches and both rows share a left edge. */
.patient-verification-form .consent-options {
    text-align: left;
}
.patient-verification-form .consent-options .pv-legend {
    margin-bottom: 1rem;
}
.patient-verification-form .consent-options .consent-intro {
    margin: 0 0 1.5rem;
    font-size: 13px;
    line-height: 1.5;
    color: #6c757d;
}
.patient-verification-form .consent-options .consent-option {
    margin-bottom: 1.5rem;
}
/* The consent itself, as a statement rather than a label: the answer is a pair of buttons
		   below it, so there is nothing for a <label> to point at. */
.patient-verification-form .consent-options .consent-statement {
    margin: 0 0 1rem;
    font-size: 15px;
    line-height: 1.55;
    font-weight: 600;
    color: #0a2540;
}
.patient-verification-form .consent-options .consent-radios {
    margin: 0 0 0.5rem;
}
/* Full-width rows rather than inline radios. Consent has to be an active choice, so Yes and No
		   are given identical weight - neither is styled as the default, and neither is small enough
		   to hit by accident. 52px clears the 44px touch target a thumb needs. */
.patient-verification-form .consent-options .consent-radio {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
    min-height: 52px;
    padding: 0.75rem 1rem;
    margin: 0 0 0.625rem;
    border: 1px solid #e0e6ed;
    border-radius: 6px;
    background: #fff;
    cursor: pointer;
    font-size: 15px;
    font-weight: 600;
    text-align: left;
    color: #0a2540;
}
.patient-verification-form .consent-options .consent-radio:hover {
    border-color: #c0cde0;
}
.patient-verification-form .consent-options .consent-radio:focus {
    outline: none;
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* Selection is carried by the border and the filled dot together, not by colour alone. */
.patient-verification-form .consent-options .consent-radio.is-selected {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.12);
}
.patient-verification-form .consent-options .consent-radio-dot {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    position: relative;
    width: 20px;
    height: 20px;
    margin-right: 0.7rem;
    border: 2px solid #c0cde0;
    border-radius: 50%;
    background: #fff;
}
.patient-verification-form .consent-options .consent-radio.is-selected .consent-radio-dot {
    border-color: #0035d2;
}
.patient-verification-form .consent-options .consent-radio.is-selected .consent-radio-dot::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #0035d2;
}
/* Only shown once the patient has tried to move on without answering, so the step does not
		   open already telling them off. */
.patient-verification-form .consent-options .consent-required {
    margin: 0 0 0.75rem;
    font-size: 12px;
    line-height: 1.5;
    color: #a94442;
}
/* Link-styled, but a real <button> so it is keyboard reachable and announced as a control.
		   The vertical padding is there to give it a thumb-sized hit area, and is cancelled by the
		   margin-top so it still sits tight under its label. */
.patient-verification-form .consent-options .consent-help-toggle {
    display: inline-block;
    padding: 0.5rem 0;
    margin-top: 0;
    font-size: 13px;
    line-height: 1.5;
    text-align: left;
    color: #0097a7;
    background: none;
    border: 0;
    cursor: pointer;
}
.patient-verification-form .consent-options .consent-help-toggle:hover, .patient-verification-form .consent-options .consent-help-toggle:focus {
    color: #008c9e;
    text-decoration: underline;
}
.patient-verification-form .consent-options .consent-help-toggle .glyphicon {
    font-size: 10px;
    margin-right: 0.4rem;
    vertical-align: baseline;
}
.patient-verification-form .consent-options .consent-help p {
    margin: 0 0 0.5rem;
    font-size: 13px;
    line-height: 1.5;
    color: #6c757d;
}
.patient-verification-form .consent-options .consent-help p:last-child {
    margin-bottom: 0;
}
/* The legislation the consent is given under. Left-aligned and ruled off rather than centred:
		   it runs to two or three lines, and centred multi-line text under a question reads as a
		   ragged blob. Repeated on both consent steps because it describes how the data is handled,
		   not what either question is asking. */
.patient-verification-form .consent-options .consent-legal {
    margin: 1rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.6;
    color: #6c757d;
}
/* Keeps each reference whole. The names are legislation titles, and one broken across a
			   line reads as two separate things - which on a consent notice is the wrong impression
			   to give. The paragraph still wraps between them. */
.patient-verification-form .consent-options .consent-legal a {
    white-space: nowrap;
}
.patient-verification-form .pv-actions {
    text-align: center;
}
/* Overrides .btn-navy's 12px / 4px padding from _buttons.css, which is sized for dense app
	   screens and lands well under a 44px touch target. */
.patient-verification-form .pv-submit {
    width: 100%;
    max-width: 320px;
    min-height: 48px;
    padding: 0.75rem 1.5rem;
    font-size: 15px;
    font-weight: 600;
}
/* Offered on the consent steps only - the code and date of birth lock once the server has
	   accepted them.

	   An outlined button rather than the bare link this used to be. As a link it read as fine print
	   under the primary action and was easy to miss entirely, which matters here: it is the only way
	   back to a consent answer the patient wants to change. Outlined rather than filled keeps the
	   hierarchy - Continue is still the one that carries colour - while giving this a real edge, a
	   real hit area and the same width as the button above it. */
.patient-verification-form .pv-back {
    display: inline-block;
    width: 100%;
    max-width: 320px;
    min-height: 44px;
    margin-top: 0.75rem;
    padding: 0.625rem 1.5rem;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.5;
    color: #0035d2;
    background: none;
    border: 1px solid #c0cde0;
    border-radius: 4px;
    cursor: pointer;
}
.patient-verification-form .pv-back:hover, .patient-verification-form .pv-back:focus {
    color: #0035d2;
    border-color: #0035d2;
    background: rgba(0, 53, 210, 0.04);
    text-decoration: none;
}
/* Success and expired-link panels. Both replace the form entirely, so each owns the page's only
	   <h1> and neither competes with the other. */
.patient-verification-form .pv-outcome {
    margin: 0;
    padding: 1.5rem;
    text-align: center;
}
.patient-verification-form .pv-outcome p {
    margin: 0 0 0.5rem;
    font-size: 15px;
    line-height: 1.6;
}
.patient-verification-form .pv-outcome p:last-child {
    margin-bottom: 0;
}
.patient-verification-form .pv-outcome-title {
    margin: 0 0 1rem;
    font-size: 20px;
    line-height: 1.3;
    font-weight: 600;
}
.slideIn {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.slideIn.ng-enter, .slideIn.ng-leave {
    transition: all 1s ease;
}
.slideIn.ng-enter {
    left: 100%;
}
.slideIn.ng-enter-active {
    left: 0;
}
.slideIn.ng-leave {
    left: 0;
}
.slideIn.ng-leave-active {
    left: 100%;
}
.slideOut {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
}
.slideOut.ng-enter, .slideOut.ng-leave {
    transition: all 1s ease;
}
.slideOut.ng-enter {
    left: -100%;
}
.slideOut.ng-enter-active {
    left: 0;
}
.slideOut.ng-leave {
    left: 0;
}
.slideOut.ng-leave-active {
    left: -100%;
}
.slidedown {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.slidedown.ng-enter, .slidedown.ng-leave {
    transition: all 1s ease;
}
.slidedown.ng-enter {
    top: -100%;
}
.slidedown.ng-enter-active {
    top: 0;
}
.slidedown.ng-leave {
    top: 0;
}
.slidedown.ng-leave-active {
    top: 100%;
}
.slideup {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 100%;
}
.slideup.ng-enter, .slideup.ng-leave {
    transition: all 1s ease;
}
.slideup.ng-enter {
    top: 100%;
}
.slideup.ng-enter-active {
    top: 0;
}
.slideup.ng-leave {
    top: 0;
}
.slideup.ng-leave-active {
    top: -100%;
}
.ai-full-content {
    height: 100%;
}
/* --- Main Layout Container --- */
.ai-agent-main {
    /* Changed from margin to padding so height: 100% works correctly */
    height: 100%;
    width: 100%;
    padding: 2rem; 
    box-sizing: border-box;
    
    /* ENABLES THE STICKY FOOTER LAYOUT */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* --- Scrollable Content Area --- */
/* This targets the container holding the tables and forms */
.dialog-content-box, .ai-scroll {
    /* Grow to fill empty space */
    -ms-flex: 1;
        flex: 1; 
    
    /* Handle Scrolling */
    overflow-y: auto; 
    overflow-x: hidden;
    
    /* Remove fixed heights */
    height: auto; 
    width: 100%;
    
    /* Add breathing room for scrollbar */
    padding-right: 5px; 
    padding-left: 1rem;
    
    /* Fix for Firefox flex scrolling */
    min-height: 0; 
}
/* --- Footer Buttons --- */
.ai-agent-footer {
    width: 100%;
    
    /* Layout */
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 1rem;
    position: relative; 
    bottom: auto;
    -ms-flex-negative: 0;
        flex-shrink: 0; 
    padding-top: 1.5rem;
    margin-top: auto; 
    background-color: inherit;
    z-index: 10;
}
/* --- Utility Classes --- */
.ai-agent-item-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 1rem;
}
/* --- Animations --- */
.playing i {
    animation: flash 1s infinite;
    color: #e91e63;
}
@keyframes flash {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}
/* --- Transcription styles --- */
.tr-compact-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    padding: 6px 10px;
    border-radius: 4px;
    min-height: 42px;
}
/* Standardized 30x30 square buttons for icons */
.tr-icon-btn {
    height: 30px;
    width: 32px;
    padding: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.tr-mic-selector {
    margin-bottom: 0;
    max-width: 160px;
}
.tr-mic-selector .form-control {
        height: 30px;
        padding: 4px 8px;
    }
.tr-mic-icon-addon {
    padding: 4px 8px;
    border: none;
    background: transparent;
}
.tr-timer-display {
    font-family: monospace;
    font-size: 1.2em;
    font-weight: bold;
    padding: 0 10px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.tr-toolbar-divider {
    width: 1px;
    height: 20px;
    background-color: #ccc;
    margin: 0 2px;
}
.tr-permission-error {
    margin-top: 4px;
    font-weight: bold;
}
.blink {
    animation: blinker 1.5s linear infinite;
}
@keyframes blinker {
    50% {
        opacity: 0;
    }
}
/*
 * ===================================================================
 * Themed Quill Editor Component
 * ===================================================================
 */
/* --- 1. Theme Variables --- */
:root {
    --ql-font-family: 'Gordita Regular', sans-serif;
    --ql-border-radius: 8px;
    --ql-border-color: #949599; 
    --ql-accent-color: #0035d2; 
    --ql-white-color: #ffffff;
    --ql-text-bg-color: #f2f6fb; 
    --ql-toolbar-bg-color: #ebecea; 
    --ql-text-color: #404141; 
    --ql-subtle-border-color: #bccad2; 
}
/* --- 2. Main Editor Container --- */
.ql-toolbar, .ql-container {
    font-family: var(--ql-font-family);
    border-color: var(--ql-border-color) !important;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
/* --- 3. Toolbar UI --- */
.ql-toolbar {
    background: var(--ql-toolbar-bg-color);
    border-top-left-radius: var(--ql-border-radius);
    border-top-right-radius: var(--ql-border-radius);
    border-bottom: 1px solid var(--ql-border-color) !important;
}
.ql-toolbar .ql-stroke {
        stroke: var(--ql-text-color);
    }
.ql-toolbar .ql-fill {
        fill: var(--ql-text-color);
    }
.ql-toolbar .ql-picker-label {
        color: var(--ql-text-color);
    }
.ql-toolbar button:hover, .ql-toolbar .ql-picker-label:hover {
            background: rgba(0, 0, 0, 0.05);
        }
.ql-toolbar button.ql-active, .ql-toolbar .ql-picker-label.ql-active {
            background: rgba(0, 53, 210, 0.1); 
        }
.ql-toolbar .ql-tooltip {
        display: none !important;
    }
/* --- 4. Editable Content Area --- */
.ql-container {
    border-bottom-left-radius: var(--ql-border-radius);
    border-bottom-right-radius: var(--ql-border-radius);
    background: var(--ql-text-bg-color);
}
.ql-editor {
    min-height: 250px;
    color: var(--ql-text-color);
    padding: 1rem 1.5rem;
}
.ql-editor.ql-blank::before {
        color: #949599;
        font-style: normal;
        left: 1.5rem;
    }
/* --- 5. Focus State --- */
.ql-container.ql-focus {
    border-color: var(--ql-accent-color) !important;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.ql-toolbar.ql-focus {
    border-color: var(--ql-accent-color) !important;
}
/* --- 6. Content Styling --- */
.ql-editor h1, .ql-editor h2, .ql-editor h3 {
    color: var(--ql-text-color);
    font-weight: 700;
    border-bottom: 1px solid var(--ql-subtle-border-color);
    padding-bottom: 0.3em;
    margin-bottom: 0.8em;
}
.ql-editor h1 {
    font-size: 2em;
}
.ql-editor h2 {
    font-size: 1.75em;
}
.ql-editor h3 {
    font-size: 1.5em;
}
.ql-editor p, .ql-editor ol, .ql-editor ul {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--ql-text-color);
}
.ql-editor a {
    color: var(--ql-accent-color);
    text-decoration: none;
    font-weight: 700;
}
.ql-editor a:hover {
        text-decoration: underline;
    }
/* --- 7. Font Family Selector --- */
.ql-snow .ql-picker.ql-font {
    width: 130px;
}
/* Default option (no font value) is the theme font, Gordita Regular. */
.ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-item::before {
    content: 'Gordita Regular';
    font-family: 'Gordita Regular', sans-serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="arial"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="arial"]::before {
    content: 'Arial';
    font-family: Arial, sans-serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="georgia"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="georgia"]::before {
    content: 'Georgia';
    font-family: Georgia, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="times-new-roman"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="times-new-roman"]::before {
    content: 'Times New Roman';
    font-family: 'Times New Roman', Times, serif;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="courier-new"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="courier-new"]::before {
    content: 'Courier New';
    font-family: 'Courier New', Courier, monospace;
}
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value="verdana"]::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value="verdana"]::before {
    content: 'Verdana';
    font-family: Verdana, Geneva, sans-serif;
}
/* Apply the chosen font to the editor content. */
.ql-font-arial {
    font-family: Arial, sans-serif;
}
.ql-font-georgia {
    font-family: Georgia, serif;
}
.ql-font-times-new-roman {
    font-family: 'Times New Roman', Times, serif;
}
.ql-font-courier-new {
    font-family: 'Courier New', Courier, monospace;
}
.ql-font-verdana {
    font-family: Verdana, Geneva, sans-serif;
}
.quill-viewer-container {
    --ql-text-bg-color: transparent;
}
.quill-viewer-container.ql-container {
        border: none !important;
    }
.quill-viewer-container.ql-container .ql-editor {
            min-height: 0;
            padding: 0;
            color: inherit;
            border: none !important;
        }
.quill-viewer-container.ql-container .ql-editor a {
                color: inherit;
                font-weight: inherit;
            }
/* =================================================================== */
/* ! Payment Settings
/* =================================================================== */
/* --- Main View Container --- */
.payment-settings-main {
    height: 100%;
    width: 100%;
    padding: 20px 30px;
    background-color: #f4f7fe;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
/* --- Typography Overrides --- */
.payment-settings-main h3, .payment-settings-main h4, .payment-settings-main h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
/* =================================================================== */
/* ! Hero Section (Digital Wallet)
/* =================================================================== */
.wallet-hero-section {
    width: 100%;
    margin-bottom: 25px;
}
.wallet-card-visual {
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    border-radius: 16px;
    padding: 25px 35px;
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(0, 53, 210, 0.25);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    position: relative;
    overflow: hidden;
}
.wallet-card-visual::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 200px;
    height: 200px;
    background: rgba(255,255,255,0.1);
    border-radius: 50%;
    pointer-events: none;
}
.wallet-card-visual .wallet-info {
    z-index: 1;
}
.wallet-card-visual .wallet-info h5 {
    color: rgba(255, 255, 255, 0.8);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 12px;
    margin-bottom: 10px;
}
.wallet-card-visual .wallet-info h1 {
    font-size: 42px;
    font-weight: 700;
    margin: 0;
    line-height: 1;
}
.wallet-card-visual .wallet-info h1 small {
    font-size: 16px;
    color: rgba(255, 255, 255, 0.8);
    font-weight: 400;
    margin-left: 5px;
}
.wallet-card-visual .wallet-status {
    text-align: right;
    z-index: 1;
}
.wallet-card-visual .wallet-status .status-badge {
    background: rgba(255,255,255,0.2);
    padding: 6px 12px;
    border-radius: 20px;
    font-size: 12px;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.wallet-card-visual .wallet-status .status-badge.active {
    background: #ffffff;
    color: #20c997;
}
.wallet-card-visual .wallet-status .status-badge.inactive {
    color: rgba(255,255,255,0.7);
}
/* =================================================================== */
/* ! Grid Layout
/* =================================================================== */
.settings-grid {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.grid-col-left {
    -ms-flex: 3;
        flex: 3;
    min-width: 300px;
}
.grid-col-right {
    -ms-flex: 2;
        flex: 2;
    min-width: 280px;
}
/* =================================================================== */
/* ! Card Components
/* =================================================================== */
.settings-card {
    background-color: #fff;
    border: none;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 25px;
    height: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-card .card-header, .settings-card .card-header-flex {
    border-bottom: 1px solid #e0e6ed;
    padding-bottom: 15px;
    margin-bottom: 20px;
}
.settings-card .card-header h4, .settings-card .card-header-flex h4 {
    color: #0035d2;/* $navy */
    margin: 0;
    font-size: 16px;
    font-weight: 700;
}
.settings-card .card-header-flex {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
}
.settings-card .card-body {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* =================================================================== */
/* ! Backup Card & Footer Warnings
/* =================================================================== */
.settings-card .backup-missing-footer {
    background-color: #fff5f5;
    border-top: 1px solid #ffe5cc;
    padding: 12px 20px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    margin-left: -25px;
    margin-right: -25px;
    margin-bottom: -25px;
    margin-top: auto;
    border-bottom-left-radius: 12px;
    border-bottom-right-radius: 12px;
}
.settings-card .backup-missing-footer .warning-text {
    color: #856404;
    font-size: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
.settings-card .backup-missing-footer .warning-text i {
    margin-right: 8px;
    color: #ffab00;
    font-size: 14px;
}
.settings-card .backup-missing-footer .warning-text strong {
    margin-right: 4px;
    font-family: 'Gordita Bold', sans-serif;
}
.settings-card .backup-missing-footer .btn-outline-warning {
    border: 1px solid #ffab00;
    color: #ffab00;
    background: transparent;
    font-size: 10px;
    font-weight: 700;
    padding: 6px 12px;
    border-radius: 15px;
    white-space: nowrap;
    transition: all 0.2s ease;
    cursor: pointer;
}
.settings-card .backup-missing-footer .btn-outline-warning:hover {
    background-color: #ffab00;
    color: #ffffff;
}
/* =================================================================== */
/* ! Left Column: Auto-Reload Inputs
/* =================================================================== */
.setting-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    padding: 15px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.setting-row:last-of-type {
    border-bottom: none;
}
.setting-row .setting-icon {
    width: 40px;
    height: 40px;
    background-color: #f4f7fe;
    color: #0035d2;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    margin-right: 15px;
    font-size: 18px;
}
.setting-row .setting-content {
    -ms-flex: 1;
        flex: 1;
}
.setting-row .setting-content label {
    display: block;
    font-size: 13px;
    color: #555;
    margin-bottom: 5px;
    font-weight: 600;
}
.setting-row .setting-content .helper-text {
    font-size: 11px;
    color: #888;
    margin-top: 4px;
}
.setting-row .setting-input-wrapper {
    position: relative;
    width: 100px;
}
.setting-row .setting-input-wrapper input {
    width: 100%;
    padding: 8px 12px;
    padding-right: 20px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    text-align: right;
    color: #0035d2;
    font-weight: bold;
    font-size: 14px;
    transition: all 0.2s;
}
.setting-row .setting-input-wrapper input:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.setting-row .setting-input-wrapper input:disabled {
    background-color: #f9f9f9;
    color: #aaa;
}
/* Toggle Switch */
.toggle-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}
.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}
.toggle-switch .slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .4s;
    border-radius: 24px;
}
.toggle-switch .slider:before {
    position: absolute;
    content: "";
    height: 18px;
    width: 18px;
    left: 3px;
    bottom: 3px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
}
.toggle-switch input:checked + .slider {
    background-color: #20c997;
}
.toggle-switch input:focus + .slider {
    box-shadow: 0 0 1px #20c997;
}
.toggle-switch input:checked + .slider:before {
    transform: translateX(20px);
}
.disabled-overlay {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.3s;
}
.save-status-indicator {
    height: 20px;
    margin-top: auto;
    text-align: right;
    font-size: 12px;
    font-style: italic;
    color: #20c997;
    transition: opacity 0.3s;
}
.save-status-indicator.error {
    color: #d9534f;
}
/* =================================================================== */
/* ! Right Column: Payment Method (Redesigned)
/* =================================================================== */
/* Center container for the right column */
.payment-card-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: start;
        justify-content: flex-start;
    text-align: center;
    height: 100%;
    width: 100%;
    padding: 30px 20px;
}
/* Credit Card Visual Box */
.cc-visual {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: start;
        justify-content: flex-start;
    gap: 20px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 20px 25px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.08); 
    width: 100%;
    max-width: 380px; 
    margin-bottom: 25px;
}
.cc-visual .cc-icon {
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 50px;
}
.cc-visual .cc-text {
    -ms-flex: 1;
        flex: 1;
    text-align: left;
}
.cc-visual .cc-text h5 {
    margin: 0;
    font-size: 18px;
    color: #333;
    font-weight: 700;
    letter-spacing: 1px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
/* New class for the masked dots */
.cc-visual .cc-text .masked-dots {
    font-size: 24px;
    line-height: 10px;
    margin-right: 8px;
    position: relative;
    top: 4px;
    color: #888;
}
.cc-visual .cc-text p {
    margin: 5px 0 0 0;
    font-size: 13px;
    color: #888;
    font-weight: 500;
}
/* Stripe Input Container (Constrained width) */
.stripe-input-container {
    width: 100%;
    max-width: 380px;
    margin: 0 auto;
}
#card-element {
    border: 1px solid #0035d2;
    border-radius: 20px;
    padding: 12px 15px;
    background: white;
    margin-bottom: 0;
}
#card-errors {
    margin-top: 5px;
    min-height: 18px;
    text-align: center;
}
/* Buttons (Centered & Constrained) */
.vertical-buttons {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
}
.btn-centered {
    width: 100% !important;
    max-width: 240px;
    margin: 5px 0;
}
/* =================================================================== */
/* ! Usage History Table
/* =================================================================== */
.usage-container {
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    
    max-height: calc(170vh);
    overflow-y: auto;
    position: relative;
}
.usage-container table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0;
}
.usage-container table th {
    background: #f4f7fe;
    color: #0035d2;
    padding: 15px;
    text-align: left;
    font-weight: bold;
    font-size: 13px;
    white-space: nowrap;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: inset 0 -1px 0 #eee;
}
.usage-container table td {
    padding: 15px;
    border-bottom: 1px solid #eee;
    color: #343a40;
    font-size: 13px;
    vertical-align: middle;
}
.usage-container table td small {
    display: block;
    color: #98a6ad;
    font-size: 11px;
    margin-top: 2px;
    font-weight: 400;
}
.usage-container table tr:last-child td {
    border-bottom: none;
}
/* Optional: Custom scrollbar for the table container */
.usage-container::-webkit-scrollbar {
    width: 6px;
}
.usage-container::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 10px;
}
.usage-container .label {
    font-size: 10px;
    padding: 3px 8px;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-weight: 600;
    display: inline-block;
    line-height: 1.5;
}
/* Custom Scrollbar for the Main Container */
.payment-settings-main::-webkit-scrollbar {
    width: 6px;
}
.payment-settings-main::-webkit-scrollbar-track {
    background: transparent; 
}
.payment-settings-main::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1); /* Light Navy */
    border-radius: 20px;
}
.payment-settings-main:hover::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.3);
}
/* Utility */
.mt-auto { margin-top: auto; }
/* Card Switcher Header */
.card-switcher {
    background: #f4f7fe;
    padding: 4px 12px;
    border-radius: 15px;
    color: #0035d2;
    font-size: 14px;
    transition: all 0.2s;
}
.card-switcher:hover {
    background: #0035d2;
    color: white;
}
/* Backup Card Visual Variant */
.cc-visual.backup-style {
    border: 1px dashed #ffab00;
    box-shadow: 0 4px 12px rgba(255, 171, 0, 0.1);
}
.cc-visual.backup-style .cc-icon {
    color: #ffab00;
}
/* Helper Colors */
.text-warning { color: #ffab00 !important; }
.btn-warning {
    background-color: #ffab00 !important;
    color: white !important;
    border-radius: 20px;
    font-weight: bold;
}
.btn-warning:hover {
    background-color: #e69a00 !important;
}
/* Snappy Fading for Buttons */
.animate-fade.ng-enter, .animate-fade.ng-leave {
    transition: 150ms cubic-bezier(0.250, 0.460, 0.450, 0.940) all;
}
.animate-fade.ng-enter, .animate-fade.ng-leave.ng-leave-active {
    opacity: 0;
}
.animate-fade.ng-leave, .animate-fade.ng-enter.ng-enter-active {
    opacity: 1;
}
/* Ensure buttons don't jump layout when switching */
.vertical-buttons {
    min-height: 50px;
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
.animate-fade {
    width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
}
/* --- Universal Token Section --- */
.universal-token-section {
    margin-bottom: 25px;
}
/* Header & Title Styling */
.token-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 15px;
    margin-bottom: 18px;
    padding-left: 5px;
}
.token-circle-icon {
    width: 46px;
    height: 46px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: white;
    border-radius: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.15);
    -ms-flex-negative: 0;
        flex-shrink: 0; /* Prevents icon from squishing */
}
.token-title-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
}
.premium-title {
    margin: 0;
    font-size: 20px;
    font-family: 'Gordita Bold', sans-serif;
    color: #2a307f;
    letter-spacing: -0.02em;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    line-height: 1.2;
}
.title-separator {
    width: 4px;
    height: 4px;
    background-color: #0035d2;
    border-radius: 50%;
    opacity: 0.4;
    display: inline-block;
}
.premium-subtitle {
    margin: 4px 0 0 0 !important;
    font-size: 13px;
    color: #878ba0;
    font-weight: 400;
}
.premium-title {
    margin: 0;
    font-size: 20px;
    font-family: 'Gordita Bold', sans-serif;
    color: #2a307f;
    letter-spacing: -0.02em;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    line-height: 1.2;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.token-price-badge {
    font-size: 11px;
    background-color: #e6fffa; 
    color: #20c997; 
    padding: 4px 10px;
    border-radius: 20px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    border: 1px solid rgba(32, 201, 151, 0.2);
    font-family: sans-serif;
}
/* Grid & Items Styling */
.token-value-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
}
.token-item {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    background: #ffffff;
    padding: 12px 15px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    transition: transform 0.2s ease;
}
.token-item:hover {
    transform: translateY(-2px);
    border-color: #cbd5e0;
}
.item-icon {
    width: 34px;
    height: 34px;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    margin-right: 12px;
    font-size: 15px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.item-icon.ai-agent { background: #e7f0ff; color: #0035d2; }
.item-icon.sms { background: #e6fffa; color: #20c997; }
.item-icon.transcription { background: #fff4e5; color: #ffab00; }
.item-details {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.item-label {
    font-size: 10px;
    color: #888;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    line-height: 1.4;
}
.item-value {
    font-size: 14px;
    font-weight: 700;
    color: #333;
    line-height: 1.2;
}
.item-value small {
    font-weight: 500;
    color: #0035d2;
    font-size: 13px;
}
.btn-outline-white {
    background-color: rgba(255, 255, 255, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.5);
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 8px 12px;
    border-radius: 20px;
    transition: all 0.2s ease;
    width: 100%;
    margin-top: 5px;
}
.btn-outline-white:hover:not(:disabled) {
    background-color: #ffffff;
    color: #0035d2;
    border-color: #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    cursor: pointer;
}
.btn-outline-white:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.btn-outline-white i {
    margin-right: 5px;
}
/* Responsive Logic */
@media (max-width: 992px) {
    .token-value-grid {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
    .token-item {
        min-width: calc(50% - 12px);
    }
}
@media (max-width: 600px) {
    .token-item {
        min-width: 100%;
    }
    .premium-title {
        font-size: 18px;
    }
}
/* =================================================================== */
/* ! AI Transcription Seats
/* Shared by the seat plan dialog and the seat assignment / usage dialog.
/* =================================================================== */
/* The component sits directly inside an md-tab, so its host element has to carry the height itself. */
transcription-seats-view {
    display: block;
    height: 100%;
}
.seat-main {
    height: 100%;
    width: 100%;
    padding: 20px 30px;
    background-color: #f4f7fe;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
.seat-main h3, .seat-main h4, .seat-main h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
/* =================================================================== */
/* ! Section switcher
/* Buying, assigning and reporting are one view over one load of the
/* subscription, so they switch here rather than through the dialog's
/* own tabs.
/* =================================================================== */
.seat-subnav {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 5px;
    margin-bottom: 18px;
}
.seat-subnav button {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    border: 0;
    background: transparent;
    border-radius: 8px;
    padding: 9px 12px;
    font-size: 13px;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.seat-subnav button i {
    margin-right: 6px;
}
.seat-subnav button:hover:not(.active) {
    background: #f8f9fa;
    color: #2a307f;
}
.seat-subnav button.active {
    background: #0035d2;
    color: #ffffff;
}
/* =================================================================== */
/* ! Callouts
/* =================================================================== */
.seat-alert {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 12px 18px;
    border-radius: 10px;
    margin-bottom: 14px;
    font-size: 13px;
    line-height: 1.45;
    border-left: 4px solid transparent;
}
.seat-alert > i {
    font-size: 16px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-alert > span {
    -ms-flex: 1;
        flex: 1;
}
/* The shared .btn rules stretch to 220px, which reads as a slab on a single-line callout. */
.seat-alert .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
}
.seat-alert.tight {
    margin: 12px 0 0;
    padding: 8px 12px;
    font-size: 12px;
}
.seat-alert.info {
    background-color: #e7f0ff;
    border-left-color: #0035d2;
    color: #2a307f;
}
.seat-alert.warning {
    background-color: rgba(255, 243, 205, 0.9);
    border-left-color: rgba(255, 193, 7, 0.7);
    color: #856404;
}
.seat-alert.danger {
    background-color: rgba(217, 83, 79, 0.1);
    border-left-color: #d9534f;
    color: #a94442;
}
.seat-alert.trial {
    background-color: rgba(0, 188, 212, 0.1);
    border-left-color: #00bcd4;
    color: #00796b;
}
/* =================================================================== */
/* ! Subscription status strip
/* =================================================================== */
.seat-status-strip {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 40px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 16px 24px;
    margin-bottom: 18px;
}
.seat-status-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
}
.seat-status-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.seat-status-value {
    font-size: 16px;
    font-weight: 700;
    color: #2a307f;
}
.seat-pill {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.seat-pill.pill-active {
    background-color: rgba(32, 201, 151, 0.2);
    color: #12805c;
}
.seat-pill.pill-warning {
    background-color: rgba(255, 182, 39, 0.3);
    color: #856404;
}
.seat-pill.pill-danger {
    background-color: rgba(217, 83, 79, 0.15);
    color: #a94442;
}
.seat-pill.pill-muted {
    background-color: #ebecea;
    color: #6c757d;
}
/* =================================================================== */
/* ! Plan picker layout
/* =================================================================== */
.seat-plan-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 22px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.seat-plan-column {
    -ms-flex: 1 1 60%;
        flex: 1 1 60%;
    min-width: 0;
}
.seat-summary-column {
    -ms-flex: 0 0 320px;
        flex: 0 0 320px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
/* =================================================================== */
/* ! Seat tier card
/* Two tiers, side by side and equal height, so choosing between them is
/* one comparison rather than a scroll.
/* =================================================================== */
.seat-tier-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 16px;
    margin-bottom: 16px;
}
.seat-tier-card {
    position: relative;
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
.seat-tier-card:hover {
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.seat-tier-card.recommended {
    border-color: #0035d2;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.12);
}
.seat-tier-flag {
    position: absolute;
    top: 0;
    right: 0;
    background: #0035d2;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.8px;
    padding: 4px 14px;
    border-bottom-left-radius: 8px;
}
.seat-tier-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 20px 24px 10px;
}
.seat-tier-header h4 {
    margin: 0;
    font-size: 17px;
    color: #2a307f;
}
.seat-tier-icon {
    width: 46px;
    height: 46px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-tier-icon.standard {
    background: #e7f0ff;
    color: #0035d2;
}
.seat-tier-icon.premium {
    background: rgba(162, 155, 254, 0.2);
    color: #9C27B0;
}
.seat-tier-price {
    padding: 0 24px;
}
.seat-tier-price .amount {
    font-size: 30px;
    font-weight: 700;
    color: #2a307f;
    letter-spacing: -0.02em;
}
.seat-tier-price .period {
    margin-left: 6px;
    font-size: 12px;
    color: #6c757d;
}
.seat-tier-included {
    margin: 4px 0 0;
    padding: 0 24px;
    font-size: 13px;
    color: #343a40;
}
/* Pushed to the bottom of the card so both steppers line up whatever the copy above does. */
.seat-tier-body {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-top: auto;
    padding: 18px 24px 20px;
}
.seat-tier-state {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
    font-size: 12px;
    color: #6c757d;
}
.seat-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    overflow: hidden;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-step-btn {
    width: 40px;
    height: 42px;
    border: 0;
    background: #f8f9fa;
    color: #0035d2;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.seat-step-btn:hover:not([disabled]) {
    background: #e7f0ff;
}
.seat-step-btn[disabled] {
    color: #bdbec1;
    cursor: not-allowed;
}
.seat-step-input {
    width: 68px;
    height: 42px;
    border: 0;
    border-left: 1px solid #e0e6ed;
    border-right: 1px solid #e0e6ed;
    text-align: center;
    font-size: 18px;
    font-weight: 700;
    color: #2a307f;
    background: #ffffff;

    /* The + and - buttons either side are the only steppers: the browser's own arrows sit inside the
       box, are far too small to aim at, and step past the minimum the practice is allowed to keep. */
    -moz-appearance: textfield;
    -webkit-appearance: textfield;
            appearance: textfield;
}
.seat-step-input::-webkit-outer-spin-button, .seat-step-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.seat-step-input:focus {
    outline: none;
    background: #e7f0ff;
}
.seat-overflow-note {
    display: -ms-flexbox;
    display: flex;
    gap: 12px;
    -ms-flex-align: start;
        align-items: flex-start;
    background: #ffffff;
    border: 1px dashed #c0cde0;
    border-radius: 10px;
    padding: 14px 18px;
    font-size: 12px;
    color: #6c757d;
    line-height: 1.5;
}
.seat-overflow-note i {
    color: #0035d2;
    font-size: 15px;
    margin-top: 2px;
}
/* =================================================================== */
/* ! Order summary
/* =================================================================== */
.seat-summary-card {
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.seat-summary-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    padding: 14px 20px;
}
.seat-summary-header h4 {
    margin: 0;
    color: #ffffff;
    font-size: 15px;
    letter-spacing: 0.5px;
}
.seat-summary-currency {
    font-size: 11px;
    font-weight: 600;
    opacity: 0.8;
}
.seat-summary-body {
    padding: 18px 20px;
    min-height: 120px;
}
.seat-summary-loading, .seat-summary-empty {
    text-align: center;
    color: #6c757d;
    font-size: 13px;
    padding: 24px 0;
}
.seat-summary-loading i, .seat-summary-empty i {
    margin-right: 6px;
}
.summary-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: baseline;
        align-items: baseline;
    padding: 8px 0;
    border-bottom: 1px solid #e0e6ed;
    font-size: 13px;
}
.summary-line.total {
    border-bottom: 0;
    border-top: 2px solid #2a307f;
    margin-top: 6px;
    padding-top: 12px;
    font-size: 16px;
    font-weight: 700;
    color: #2a307f;
}
.summary-label {
    color: #343a40;
}
.summary-label small {
    display: block;
    color: #6c757d;
    font-size: 11px;
}
.summary-amount {
    font-weight: 700;
    color: #2a307f;
    white-space: nowrap;
}
.summary-charge {
    margin-top: 14px;
    padding: 12px 14px;
    border-radius: 8px;
    background: #e7f0ff;
}
.summary-charge.downgrade {
    background: rgba(255, 243, 205, 0.9);
}
.summary-charge.downgrade .charge-row {
    color: #856404;
}
.charge-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
}
.charge-row strong {
    font-size: 16px;
}
.charge-note {
    margin: 6px 0 0;
    font-size: 11px;
    line-height: 1.45;
    color: #6c757d;
}
.summary-next {
    margin-top: 12px;
    font-size: 11px;
    color: #6c757d;
    text-align: center;
}
.seat-summary-footer {
    border-top: 1px solid #e0e6ed;
    padding: 16px 20px;
    background: #f8faff;
}
.seat-summary-footer .btn {
    margin-bottom: 8px;
}
/* The global .btn-navy is capped at 220px, which leaves the block button
       hugging the left edge of the card. Span the footer instead. */
.seat-summary-footer .btn-block {
    max-width: none;
}
.seat-validation {
    background: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-radius: 8px;
    padding: 9px 12px;
    font-size: 12px;
    line-height: 1.4;
    margin-bottom: 12px;
}
.seat-validation i {
    margin-right: 5px;
}
.seat-validation-action {
    display: block;
    margin: 8px 0 0;
}
.seat-feedback {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 10px;
}
.seat-feedback i {
    margin-right: 5px;
}
.seat-feedback.error {
    color: #a94442;
}
.seat-feedback.success {
    color: #12805c;
}
.seat-renew-note {
    font-size: 11px;
    line-height: 1.4;
    color: #6c757d;
    text-align: center;
    margin: 2px 0 0;
}
.seat-cancel-link {
    display: block;
    text-align: center;
    font-size: 12px;
    color: #6c757d;
    cursor: pointer;
    margin-top: 4px;
}
.seat-cancel-link:hover {
    color: #a94442;
    text-decoration: underline;
}
/* =================================================================== */
/* ! Seat availability header
/* =================================================================== */
.seat-availability-row {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin-bottom: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.seat-availability-card {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 14px 18px;
    border-left-width: 4px;
}
.seat-availability-card.standard {
    border-left-color: #0035d2;
}
.seat-availability-card.premium {
    border-left-color: #9C27B0;
}
.seat-availability-card.ghost {
    border-style: dashed;
    border-left-width: 1px;
    cursor: pointer;
    color: #6c757d;
    background: transparent;
}
.seat-availability-card.ghost:hover {
    border-color: #0035d2;
    color: #0035d2;
}
.availability-icon {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background: #f8f9fa;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.availability-detail {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.availability-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.availability-count {
    display: block;
    font-size: 17px;
    font-weight: 700;
    color: #2a307f;
}
.availability-count small {
    font-size: 11px;
    font-weight: 400;
    color: #6c757d;
}
.availability-bar {
    height: 5px;
    border-radius: 3px;
    background: #ebecea;
    margin-top: 6px;
    overflow: hidden;
}
.availability-fill {
    height: 100%;
    background: #0035d2;
    transition: width 0.25s ease;
}
.availability-remaining {
    text-align: center;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding-left: 12px;
    border-left: 1px solid #e0e6ed;
}
.availability-remaining.none-left .remaining-number {
    color: #6c757d;
}
.remaining-number {
    display: block;
    font-size: 22px;
    font-weight: 700;
    color: #20c997;
    line-height: 1.1;
}
.remaining-label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
}
/* =================================================================== */
/* ! Table toolbar
/* =================================================================== */
.seat-table-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    margin-bottom: 12px;
}
.seat-search {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    padding: 6px 14px;
    width: 320px;
    max-width: 100%;
}
.seat-search i {
    color: #6c757d;
    font-size: 12px;
}
.seat-search input {
    border: 0;
    outline: none;
    -ms-flex: 1;
        flex: 1;
    font-size: 13px;
    background: transparent;
    min-width: 0;
}
.seat-table-count {
    font-size: 12px;
    color: #6c757d;
    font-weight: 600;
}
.seat-period-selector {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.seat-period-selector label {
    margin: 0;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.seat-period-selector select {
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    padding: 6px 10px;
    font-size: 13px;
    background: #ffffff;
    color: #2a307f;
    min-width: 220px;
}
/* =================================================================== */
/* ! Seat tables
/* =================================================================== */
.seat-table-wrapper {
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    overflow: hidden;
}
.seat-table {
    margin-bottom: 0;
}
.seat-table > thead > tr > th {
    background: #f8faff;
    border-bottom: 1px solid #e0e6ed;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 700;
    padding: 12px 16px;
}
.seat-table > tbody > tr > td {
    padding: 12px 16px;
    vertical-align: middle;
    border-top: 1px solid #e0e6ed;
    font-size: 13px;
}
.seat-table > tbody > tr {
    transition: background 0.15s ease;
}
.seat-table > tbody > tr:hover {
    background: #f2f6fb;
}
.seat-table > tbody > tr.row-saving {
    background: #e7f0ff;
}
.seat-table > tbody > tr.row-saving:hover {
    background: #e7f0ff;
}
.seat-table > tbody > tr.row-orphaned {
    background: rgba(255, 243, 205, 0.5);
}
.seat-user {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.seat-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-weight: 700;
    font-size: 14px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-avatar.tier-standard {
    background: #0035d2;
    color: #ffffff;
}
.seat-avatar.tier-premium {
    background: #9C27B0;
    color: #ffffff;
}
.seat-avatar.tier-trial {
    background: #00bcd4;
    color: #ffffff;
}
.seat-avatar.tier-none {
    background: #ebecea;
    color: #6c757d;
}
.seat-user-detail {
    min-width: 0;
}
.seat-user-name {
    display: block;
    font-weight: 600;
    color: #2a307f;
}
.seat-user-email {
    display: block;
    font-size: 11px;
    color: #6c757d;
    overflow: hidden;
    text-overflow: ellipsis;
}
.seat-user-assigned {
    display: block;
    font-size: 10px;
    color: #6c757d;
    font-style: italic;
}
/* The role rides on the name line, so it is set apart by weight and a separator rather than by
   sitting in a column of its own. */
.seat-user-role {
    font-weight: 400;
    font-size: 11px;
    color: #6c757d;
}
.seat-user-role::before {
    content: "\00b7";
    margin: 0 5px;
}
/* Labels are written out in the tier map rather than shouted by the stylesheet, so no screen ever
   shows a raw enum value. */
.seat-badge {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.2px;
    white-space: nowrap;
    background: #ebecea;
    color: #6c757d;
}
.seat-badge i {
    margin-right: 3px;
}
.seat-badge.standard {
    background: #e7f0ff;
    color: #0035d2;
}
.seat-badge.premium {
    background: rgba(162, 155, 254, 0.2);
    color: #9C27B0;
}
.seat-badge.wallet {
    background: #f8f9fa;
    color: #6c757d;
}
.seat-badge.trial {
    background: rgba(0, 188, 212, 0.2);
    color: #00796b;
}
.seat-badge.orphaned {
    background: rgba(255, 182, 39, 0.3);
    color: #856404;
}
/* Badges trailing a name need separating from it; the same badge in its own table cell does not. */
.seat-user-name .seat-badge {
    margin-left: 6px;
    font-size: 10px;
}
/* =================================================================== */
/* ! Per-row tier selector
/* =================================================================== */
.seat-tier-selector {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    overflow: hidden;
    background: #ffffff;
}
/* The spinner is overlaid rather than inserted, so an in-flight row keeps its height. */
.seat-tier-cell {
    position: relative;
}
.seat-tier-selector.saving {
    opacity: 0.45;
    cursor: progress;
}
.seat-tier-spinner {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -7px 0 0 -7px;
    font-size: 14px;
    color: #0035d2;
}
.tier-option {
    -ms-flex: 1;
        flex: 1;
    border: 0;
    border-right: 1px solid #e0e6ed;
    background: #ffffff;
    padding: 7px 6px;
    font-size: 12px;
    font-weight: 600;
    color: #6c757d;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
    white-space: nowrap;
}
.tier-option:last-child {
    border-right: 0;
}
.tier-option:hover:not([disabled]):not(.selected) {
    background: #f8f9fa;
    color: #2a307f;
}
.tier-option[disabled] {
    color: #c8cdd4;
    cursor: not-allowed;
    background: #f8f9fa;
}
.tier-option.selected {
    background: #343a40;
    color: #ffffff;
}
.tier-option.standard.selected {
    background: #0035d2;
    color: #ffffff;
}
.tier-option.premium.selected {
    background: #9C27B0;
    color: #ffffff;
}
/* The trial slot stands in for "none" on a trial holder, whose trial cannot be released. */
.tier-option.trial.selected {
    background: #00bcd4;
    color: #ffffff;
}
/* =================================================================== */
/* ! Feedback bar
/* =================================================================== */
.seat-feedback-bar {
    position: -webkit-sticky;
    position: sticky;
    bottom: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 20px;
    margin-top: 14px;
    padding: 0 18px;
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    background: #ffffff;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
    transition: max-height 0.2s ease, opacity 0.2s ease, padding 0.2s ease;
}
.seat-feedback-bar.visible {
    max-height: 90px;
    opacity: 1;
    padding: 14px 18px;
}
.seat-feedback-bar .seat-feedback {
    margin-bottom: 0;
}
/* =================================================================== */
/* ! Usage totals
/* =================================================================== */
.seat-totals-grid {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin-bottom: 18px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.seat-total-card {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 16px 18px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 3px;
}
.total-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #6c757d;
    font-weight: 600;
}
.total-value {
    font-size: 26px;
    font-weight: 700;
    color: #2a307f;
    line-height: 1.15;
}
.total-sub {
    font-size: 11px;
    color: #6c757d;
    line-height: 1.4;
}
.total-bar {
    height: 6px;
    border-radius: 3px;
    background: #ebecea;
    margin-top: 8px;
    overflow: hidden;
}
.total-fill {
    height: 100%;
    background: #0035d2;
    transition: width 0.25s ease;
}
.total-fill.over {
    background: #ffab00;
}
.total-link {
    font-size: 11px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
    margin-top: 4px;
}
.total-link:hover {
    text-decoration: underline;
    color: #0035d2;
}
/* =================================================================== */
/* ! Per-user usage bar
/* =================================================================== */
.usage-bar {
    height: 6px;
    border-radius: 3px;
    background: #ebecea;
    overflow: hidden;
    margin-bottom: 5px;
}
.usage-fill {
    height: 100%;
    background: #20c997;
    transition: width 0.25s ease;
}
.usage-fill.over {
    background: #ffab00;
}
.usage-caption {
    font-size: 11px;
    color: #343a40;
}
.seat-footnote {
    font-size: 11px;
    color: #6c757d;
    line-height: 1.5;
    margin: 14px 4px 0;
    font-style: italic;
}
/* =================================================================== */
/* ! Seat promo panel
/* Sits on the wallet tab of the payment dialog and links across to the
/* seats tab. Kept in this file rather than _payments.css so everything
/* describing seats stays in one place.
/* =================================================================== */
.seat-promo {
    position: relative;
    background: #ffffff;
    border: 1px solid #e0e6ed;
    /* The 4px edge is how the rest of this file marks a callout, and it gives the panel a brand
       anchor without the filled navy banner that crowded the wallet card above it. */
    border-left: 4px solid #0035d2;
    border-radius: 16px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    overflow: hidden;
    margin-bottom: 25px;
}
/* =================================================================== */
/* ! Seat promo opening ping
/* The panel is easy to scroll past, so two things happen when the dialog
/* first shows it: it lifts off the page once, and a band of cyan light
/* sweeps across it. The white body is never recoloured - the band only
/* passes over it - and both animations end on the resting look, so the
/* class can be dropped at any point without the panel appearing to
/* change.
/* =================================================================== */
/* One rise and settle. Kept to a few pixels: this is a panel in a dialog, not a card being picked up. */
@keyframes seat-promo-lift {
    0% {
        transform: translateY(0) scale(1);
    }

    30% {
        transform: translateY(-5px) scale(1.008);
    }

    100% {
        transform: translateY(0) scale(1);
    }
}
/* Travels the panel's own width plus its overhang, so the band enters and leaves off the edges. */
@keyframes seat-promo-sweep {
    from {
        transform: translateX(-130%) skewX(-12deg);
    }

    to {
        transform: translateX(320%) skewX(-12deg);
    }
}
/* Held for the first moments of the dialog only - the controller drops the class as these finish. */
.seat-promo-highlight {
    animation: seat-promo-lift 1.7s ease-out 1 both;
}
/* The band of light. Clipped by the panel's own overflow, and over the hero content rather than
       under it, so it passes across the copy as well as the tinted strip. Cyan carries against both
       the white body and the pale hero; a white sheen would be invisible on either. */
.seat-promo-highlight::after {
    content: '';
    position: absolute;
    top: -10%;
    bottom: -10%;
    left: 0;
    width: 45%;
    z-index: 3;
    pointer-events: none;
    background: linear-gradient(100deg,
            rgba(0, 188, 212, 0) 0%,
            rgba(0, 188, 212, 0.26) 50%,
            rgba(0, 188, 212, 0) 100%);
    transform: translateX(-130%) skewX(-12deg);
    animation: seat-promo-sweep 1.25s ease-in-out 2 both;
}
@media (prefers-reduced-motion: reduce) {
    .seat-promo-highlight {
        animation: none;
    }
    /* Hidden outright: with the animation off, a static band would just sit over the panel. */
    .seat-promo-highlight::after {
        display: none;
    }
}
/* Tinted well short of the wallet card's saturation, but far enough up from white that the panel
   still reads as an advertisement rather than another settings card. */
.seat-promo-hero {
    position: relative;
    overflow: hidden;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 24px;
    padding: 24px 28px 22px;
    background: linear-gradient(120deg, rgb(204, 217, 255) 0%, rgb(194, 248, 255) 100%);
    border-bottom: 1px solid #e0e6ed;
    color: #2a307f;
}
.seat-promo-hero::after {
    content: '';
    position: absolute;
    right: -60px;
    top: -80px;
    width: 230px;
    height: 230px;
    background: rgba(255, 255, 255, 0.4);
    border-radius: 50%;
    pointer-events: none;
}
.seat-promo-watermark {
    position: absolute;
    right: 22px;
    bottom: -34px;
    font-size: 118px;
    line-height: 1;
    color: rgba(255, 255, 255, 0.5);
    pointer-events: none;
}
.seat-promo-intro {
    position: relative;
    z-index: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The one saturated element left in the hero, matching the wallet page's own icon chips. */
.seat-promo-icon {
    width: 52px;
    height: 52px;
    border-radius: 12px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.15);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 22px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-promo-copy {
    min-width: 0;
}
.seat-promo-copy h3 {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 6px;
    font-size: 20px;
    letter-spacing: -0.02em;
    line-height: 1.2;
    color: #2a307f;
}
.seat-promo-copy p {
    margin: 0;
    max-width: 620px;
    font-size: 13px;
    line-height: 1.5;
    color: #343a40;
}
.seat-promo-copy strong {
    color: #2a307f;
}
.seat-promo-flag {
    background: #ffab00;
    color: #0a2540;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    padding: 3px 9px;
    border-radius: 10px;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.seat-promo-flag.live {
    background: #20c997;
    color: #ffffff;
}
.seat-promo-flag.alert {
    background: #d9534f;
    color: #ffffff;
}
.seat-promo-cta {
    position: relative;
    z-index: 1;
    -ms-flex: 0 0 210px;
        flex: 0 0 210px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.seat-promo-cta .btn {
    width: 100%;
    max-width: none;
    margin: 0;
}
.seat-promo-btn-primary, .seat-promo-btn-secondary {
    border-radius: 20px;
    padding: 9px 14px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    transition: all 0.2s ease;
}
.seat-promo-btn-primary i, .seat-promo-btn-secondary i {
    margin-right: 6px;
}
.seat-promo-btn-primary {
    background: #0035d2;
    color: #ffffff;
    border: 0;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.seat-promo-btn-primary:hover, .seat-promo-btn-primary:active, .seat-promo-btn-primary:focus {
    background: #2a307f;
    color: #ffffff;
    outline: 0;
}
.seat-promo-btn-secondary {
    background: #ffffff;
    color: #0035d2;
    border: 1px solid #c0cde0;
}
.seat-promo-btn-secondary:hover, .seat-promo-btn-secondary:active, .seat-promo-btn-secondary:focus {
    background: #ffffff;
    color: #0035d2;
    border-color: #0035d2;
    outline: 0;
}
.seat-promo-link {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
}
.seat-promo-link:hover, .seat-promo-link:focus {
    color: #2a307f;
    text-decoration: underline;
}
/* --- The two tiers, priced. Side by side, as they are on the seats tab itself. --- */
.seat-promo-plans {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 12px;
    padding: 16px 28px 18px;
}
.seat-promo-plan {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
    min-width: 0;
    padding: 12px 16px;
    background: #f8f9fa;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    cursor: pointer;
    transition: box-shadow 0.2s ease, border-color 0.2s ease;
}
.seat-promo-plan.recommended {
    background: #e7f0ff;
    border-color: #0035d2;
}
.seat-promo-plan:hover {
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    border-color: #0035d2;
}
.promo-plan-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    font-weight: 700;
    color: #2a307f;
}
.promo-plan-name i {
    color: #0035d2;
    font-size: 12px;
}
.promo-plan-price {
    margin-top: 3px;
    font-size: 22px;
    font-weight: 700;
    line-height: 1.2;
    color: #2a307f;
}
.promo-plan-price small {
    margin-left: 5px;
    font-size: 11px;
    font-weight: 500;
    color: #6c757d;
}
.seat-promo-plans-status {
    -ms-flex: 1;
        flex: 1;
    padding: 12px 16px;
    border: 1px dashed #e0e6ed;
    border-radius: 12px;
    font-size: 12px;
    color: #6c757d;
}
.seat-promo-plans-status i {
    margin-right: 6px;
}
/* --- Footers: the things that block or waste a seat purchase --- */
.seat-promo-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 11px 28px;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.45;
}
.seat-promo-note > i {
    font-size: 14px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-promo-note > span {
    -ms-flex: 1;
        flex: 1;
}
/* The shared .btn rules stretch to 220px, which reads as a slab in a one-line footer. */
.seat-promo-note .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
}
.seat-promo-note.info {
    background: #e7f0ff;
    color: #2a307f;
}
.seat-promo-note.info > i {
    color: #0035d2;
}
.seat-promo-note.warning {
    background: rgba(255, 243, 205, 0.9);
    color: #856404;
}
.seat-promo-note.warning > i {
    color: #ffab00;
}
.seat-promo-note.danger {
    background: rgba(217, 83, 79, 0.1);
    color: #a94442;
}
.seat-promo-note.danger > i {
    color: #d9534f;
}
/* =================================================================== */
/* ! Cancel seats modal
/* =================================================================== */
/* Cancelling asks how many seats to give up before it offers to end the lot, so the modal carries
   the same stepper as the buy screen and the whole-subscription button sits apart from it. */
.seat-cancel-modal .modal-dialog {
    width: 560px;
    max-width: 94vw;
}
/* Capped so unfolding a picker can never push the footer off the screen - the panel scrolls
       inside itself instead of the whole dialog growing past the viewport. */
.seat-cancel-modal .my-modal-body {
    padding: 2rem;
    max-height: 62vh;
    overflow-y: auto;
}
.seat-cancel-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 14px;
    padding: 14px 0;
    border-top: 1px solid #e0e6ed;
}
.seat-cancel-row:last-of-type {
    border-bottom: 1px solid #e0e6ed;
}
.seat-cancel-detail {
    -ms-flex: 1 1 150px;
        flex: 1 1 150px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.seat-cancel-name {
    font-size: 14px;
    font-weight: 700;
    color: #2a307f;
}
.seat-cancel-name > i {
    color: #0035d2;
    margin-right: 6px;
}
.seat-cancel-held {
    font-size: 12px;
    color: #6c757d;
}
.seat-cancel-keeping {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    min-width: 72px;
    text-align: right;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.keeping-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    color: #6c757d;
}
.keeping-value {
    font-size: 18px;
    font-weight: 700;
    color: #2a307f;
}
/* Nothing being given up reads as a neutral zero; the moment it is not, it should catch the eye. */
.keeping-value.is-cancelling {
    color: #a94442;
}
/* Full width under the row it explains, rather than squeezed between the stepper and the count. */
.seat-cancel-note {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    font-size: 12px;
    color: #6c757d;
    line-height: 1.4;
}
/* The picker only appears once the stepper reaches seats people are holding, so it sits inside the
   row it belongs to and is indented away from the stepper above it. */
.seat-release-picker {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    margin-top: 4px;
    padding: 12px 14px;
    background: #f8f9fa;
    border-radius: 10px;
    border-left: 3px solid #0035d2;
    max-height: 400px;
    overflow-y: auto;
}
/* Slid rather than popped: it is the one block on the panel that has to come and go, and at
       160ms it reads as the row opening up instead of the modal rearranging itself. A max-height is
       the only height a transition can work with here, so it is set past any realistic list and the
       list scrolls inside it. */
.seat-release-picker.ng-enter, .seat-release-picker.ng-leave {
    overflow: hidden;
    transition: max-height 0.16s ease-out, opacity 0.16s ease-out;
}
.seat-release-picker.ng-enter, .seat-release-picker.ng-leave-active {
    max-height: 0;
    opacity: 0;
}
.seat-release-picker.ng-enter-active, .seat-release-picker.ng-leave {
    max-height: 400px;
    opacity: 1;
}
.seat-release-head {
    font-size: 12px;
    line-height: 1.45;
    color: #555555;
    margin-bottom: 10px;
}
.seat-release-head > strong {
    color: #2a307f;
}
.seat-release-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0;
    padding: 7px 8px;
    border-radius: 8px;
    font-weight: 400;
    cursor: pointer;
    transition: background 0.15s ease;
}
.seat-release-option:hover {
    background: #e7f0ff;
}
.seat-release-option.selected {
    background: #e7f0ff;
}
.seat-release-option input {
    margin: 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-release-name {
    -ms-flex: 1;
        flex: 1;
    font-size: 13px;
    color: #2a307f;
}
.seat-release-usage {
    font-size: 11px;
    color: #6c757d;
    text-align: right;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-release-shortfall {
    margin-top: 8px;
    font-size: 12px;
    color: #a94442;
}
.seat-release-shortfall > i {
    margin-right: 5px;
}
.seat-cancel-summary {
    margin-top: 18px;
    padding: 14px 16px;
    background: #f2f6fb;
    border-radius: 10px;
}
.seat-cancel-summary-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 13px;
    color: #555555;
}
.seat-cancel-summary-line + .seat-cancel-summary-line {
    margin-top: 8px;
}
.seat-cancel-summary-line > strong {
    color: #2a307f;
    font-size: 15px;
    transition: opacity 0.15s ease;
}
/* Being re-priced. The figure standing there is a step behind, not wrong, and saying so by
           fading it beats swapping the line for a spinner and moving the panel twice. */
.seat-cancel-summary-line > strong.is-updating {
    opacity: 0.45;
}
.seat-cancel-footnote {
    margin-top: 14px;

    /* Held open for the tallest message it carries, so the summary above and the footer below do not
       move as the words in it change. */
    min-height: 40px;
}
.seat-cancel-footnote > p {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    color: #6c757d;
}
.seat-cancel-footnote > p > i {
    margin-right: 6px;
    color: #0035d2;
}
.seat-cancel-footer {
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 16px;
}
.seat-cancel-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 14px;
}
.seat-cancel-actions .btn {
    width: 100%;
    max-width: 220px;
}
/* Separated by a rule so ending everything cannot be reached for by mistake while aiming at the
   confirm button above it. */
.seat-cancel-everything {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding-top: 14px;
    border-top: 1px solid #e0e6ed;
}
.seat-cancel-everything .btn {
    width: auto;
    max-width: none;
}
.seat-cancel-everything-note {
    font-size: 11px;
    line-height: 1.45;
    color: #6c757d;
    text-align: center;
}
/* =================================================================== */
/* ! Narrow screens
/* =================================================================== */
@media (max-width: 1100px) {
    .seat-plan-layout {
        -ms-flex-direction: column;
            flex-direction: column;
    }

    .seat-summary-column {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        width: 100%;
        position: static;
    }
}
@media (max-width: 820px) {
    .seat-promo-hero {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: stretch;
            align-items: stretch;
    }

    .seat-promo-cta {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
    }

    /* Below this there is not room to compare the tiers side by side, on either screen. */
    .seat-tier-grid, .seat-promo-plans {
        -ms-flex-direction: column;
            flex-direction: column;
    }

    /* A Font Awesome element, whose own .fa rule is loaded after this file and carries the same
       specificity, so the parent has to be named to hide it. */
    .seat-promo-hero .seat-promo-watermark {
        display: none;
    }
}
/* =================================================================== */
/* ! Settings Modal
/* Shares the visual language of _payments.css - pale blue canvas, white
/* rounded cards, navy accents - and reuses .settings-card, .setting-row,
/* .toggle-switch, .save-status-indicator and .disabled-overlay from it.
/* Everything else is scoped to .settings-shell so the generic names here
/* cannot leak into the rest of the app.
/* =================================================================== */
/* The scope band wipes open when a section is shown. Clip-path only affects paint,
   so the box occupies its space immediately and nothing shifts around it. */
@keyframes settings-scope-band-open {
	from {
		-webkit-clip-path: inset(0 100% 0 0);
		        clip-path: inset(0 100% 0 0);
	}

	to {
		-webkit-clip-path: inset(0 0 0 0);
		        clip-path: inset(0 0 0 0);
	}
}
.settings-dialog md-dialog-content {
    border-top: 0;
    padding: 0;
    overflow: hidden;
}
.settings-shell {
	display: -ms-flexbox;
	display: flex;
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	width: 100%;
	background-color: #f4f7fe;

	/* =================================================================== */
}
/* ! Left Rail Navigation
	/* =================================================================== */
.settings-shell .settings-nav {
    -ms-flex: 0 0 272px;
        flex: 0 0 272px;
    width: 272px;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    overflow-y: auto;
}
.settings-shell .settings-nav::-webkit-scrollbar {
    width: 6px;
}
.settings-shell .settings-nav::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
/* =================================================================== */
.settings-shell .settings-identity {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 20px 18px 18px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell .settings-avatar {
    width: 42px;
    height: 42px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.settings-shell .settings-identity-text {
    min-width: 0;
}
.settings-shell .settings-identity-text .identity-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
    line-height: 1.3;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell .settings-identity-text .identity-role {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    margin-top: 2px;
}
.settings-shell .settings-nav-group {
    padding: 16px 10px 4px;
}
/* Practice names are buttons that fold their settings away; "Your account"
		   uses the same look but is not interactive. */
.settings-shell .settings-nav-group .settings-nav-group-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    width: 100%;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
    text-align: left;
    background: none;
    border: none;
    border-radius: 8px;
    padding: 5px 12px 7px;
    cursor: pointer;
    transition: color 0.15s ease, background-color 0.15s ease;
}
.settings-shell .settings-nav-group .settings-nav-group-title.static {
    cursor: default;
    padding-top: 0;
}
.settings-shell .settings-nav-group .settings-nav-group-title:not(.static):hover {
    color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell .settings-nav-group .settings-nav-group-title:not(.static):hover .nav-group-chevron {
    color: #0035d2;
}
.settings-shell .settings-nav-group .settings-nav-group-title .nav-group-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .settings-nav-group .settings-nav-group-title .nav-group-chevron {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 9px;
    color: #c3c9da;
    transition: transform 0.2s ease, color 0.15s ease;
}
.settings-shell .settings-nav-group .settings-nav-group-title.collapsed .nav-group-chevron {
    transform: rotate(-90deg);
}
/* Collapse animation. max-height cannot transition to auto, so it runs to a
		   ceiling comfortably above the tallest group (5 items ~ 200px); the easing is
		   what is seen, not the exact value. Opacity and a small lift do the rest. */
.settings-shell .settings-nav-group .nav-group-items {
    overflow: hidden;
    max-height: 320px;
    opacity: 1;
    transition: max-height 0.24s cubic-bezier(0.4, 0, 0.2, 1),
				opacity 0.18s ease,
				transform 0.24s cubic-bezier(0.4, 0, 0.2, 1);
}
.settings-shell .settings-nav-group .nav-group-items.ng-enter, .settings-shell .settings-nav-group .nav-group-items.ng-leave.ng-leave-active {
    max-height: 0;
    opacity: 0;
    transform: translateY(-4px);
}
.settings-shell .settings-nav-group .nav-group-items.ng-enter.ng-enter-active, .settings-shell .settings-nav-group .nav-group-items.ng-leave {
    max-height: 320px;
    opacity: 1;
    transform: translateY(0);
}
.settings-shell .settings-nav-group .nav-group-tag {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: auto;
    background-color: #f8f9fa;
    color: #a3aac0;
    font-size: 8px;
    letter-spacing: 0.03em;
    padding: 2px 7px;
    border-radius: 20px;
}
/* Filled pill marks the one practice that is open - only ever one. */
.settings-shell .settings-nav-group .nav-group-tag.open {
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell .settings-nav-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 9px 12px;
    margin-bottom: 2px;
    border-radius: 10px;
    cursor: pointer;
    color: #4a5568;
    font-size: 13px;
    font-weight: 600;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.settings-shell .settings-nav-item i {
    width: 15px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    text-align: center;
    font-size: 13px;
    color: #a3aac0;
    transition: color 0.15s ease;
}
.settings-shell .settings-nav-item:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.settings-shell .settings-nav-item:hover i {
    color: #0035d2;
}
.settings-shell .settings-nav-item.active {
    background-color: #0035d2;
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.settings-shell .settings-nav-item.active i {
    color: #ffffff;
}
.settings-shell .settings-nav-footer {
    margin-top: auto;
    padding: 14px 18px;
    border-top: 1px solid #eef1f7;
}
.settings-shell .settings-nav-footer .footer-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
}
.settings-shell .settings-nav-footer .footer-value {
    font-size: 12px;
    color: #0035d2;
    font-weight: 700;
    margin-top: 3px;
    line-height: 1.3;
}
/* ! Right Content Pane
	/* =================================================================== */
.settings-shell .settings-pane {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #f4f7fe;
    overflow: hidden;
}
/* Each section is a component element - make it own the pane's height */
.settings-shell .settings-pane > * {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
/* =================================================================== */
.settings-shell .settings-pane-body {
    -ms-flex: 1;
        flex: 1;
    overflow-y: auto;
    padding: 24px 28px 28px;
}
.settings-shell .settings-pane-body h3, .settings-shell .settings-pane-body h4, .settings-shell .settings-pane-body h5 {
    font-family: 'Gordita Bold', sans-serif;
    margin-top: 0;
}
.settings-shell .settings-pane-body::-webkit-scrollbar {
    width: 6px;
}
.settings-shell .settings-pane-body::-webkit-scrollbar-track {
    background: transparent;
}
.settings-shell .settings-pane-body::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
.settings-shell .settings-pane-body:hover::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.3);
}
/* _payments.css stretches cards to fill their column; here they hug their content */
.settings-shell .settings-card {
    height: auto;
}
/* Column flex so the badge, heading and description each get their own line
	   while still hugging their content - the heading and badge are pills, not bars. */
.settings-shell .settings-pane-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 20px;
}
/* A band of the brand's own pale navy rather than plain text, so the section
		   you are in reads at a glance against the pale blue canvas. Same tint as the
		   icon chips throughout the pane, so nothing new is introduced. */
.settings-shell .settings-pane-header h3 {
    font-size: 20px;
    color: #0035d2;
    background-color: #e7f0ff;
    letter-spacing: -0.02em;
    margin: 0 0 10px;
    padding: 7px 15px;
    border-radius: 10px;
}
.settings-shell .settings-pane-header p {
    font-size: 13px;
    color: #878ba0;
    margin: 0;
    max-width: 72ch;
    line-height: 1.5;
}
/* Who a setting affects is the single most important thing on these screens -
	   changing something practice-wide touches every clinician there. A solid band
	   across a third of the pane - wide enough not to be skimmed past as a caption,
	   narrow enough not to shout over the settings themselves. */
.settings-shell .scope-badge {
    -ms-flex-item-align: start;
        align-self: flex-start;
    width: 33%;
    min-width: 300px;
    max-width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    line-height: 1.35;
    padding: 11px 16px;
    border-radius: 8px;
    margin-bottom: 14px;
    color: #ffffff;/* Each section is created fresh by ng-if, so this replays every time you
		   move between settings - re-announcing the scope rather than letting it
		   sit there unread. */
    animation: settings-scope-band-open 420ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.settings-shell .scope-badge i {
    font-size: 15px;
    opacity: 0.9;
}
/* Yours alone - the brand blue. */
.settings-shell .scope-badge.personal {
    background-color: #0035d2;
}
/* Affects other people, so it carries a caution tone rather than a second
		   shade of blue. Deep amber keeps white text at ~6.4:1; a bright $yellow-cta
		   fill would drop it to 3.4:1 and fail AA. */
.settings-shell .scope-badge.practice {
    background-color: #856404;
}
/* Sticky action bar at the bottom of a pane. The confirmation sits immediately
	   left of the button rather than across the bar, so it lands where the eye
	   already is after clicking. */
.settings-shell .settings-action-bar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 12px;
    padding: 12px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
.settings-shell .settings-action-bar .action-hint {
    margin-right: auto;
    font-size: 11px;
    color: #878ba0;
    font-style: italic;
}
.settings-shell .settings-action-bar .btn {
    max-width: 200px;
    margin: 0;
}
/* An option that changes what Save does, so it lives with Save rather than
		   up in a card header where it read as unrelated. */
.settings-shell .settings-action-bar .chip-select.apply-all {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
    padding: 6px 13px;
}
/* Success green, not the navy used everywhere else, so a save reads as a distinct
	   event rather than more of the same page. */
.settings-shell .save-flash {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 7px 14px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 700;
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border: 1px solid rgba(32, 201, 151, 0.3);
}
.settings-shell .save-flash i {
    font-size: 13px;
}
.settings-shell .save-flash.saving {
    background-color: #f8f9fa;
    color: #878ba0;
    border-color: #e0e6ed;
}
.settings-shell .save-flash.error {
    background-color: #fdecea;
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.3);
}
/* Pops in, so it is noticed even when the wording is unchanged. */
.settings-shell .save-flash.ng-enter {
    opacity: 0;
    transform: scale(0.85);
}
.settings-shell .save-flash.ng-enter-active {
    opacity: 1;
    transform: scale(1);
    transition: opacity 0.18s ease, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.settings-shell .save-flash.ng-leave {
    opacity: 1;
}
.settings-shell .save-flash.ng-leave-active {
    opacity: 0;
    transition: opacity 0.15s ease;
}
/* ! Layout helpers
	/* =================================================================== */
.settings-shell .settings-stack {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
}
/* =================================================================== */
.settings-shell .settings-columns {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: stretch;
        align-items: stretch;
}
.settings-shell .settings-columns > * {
    -ms-flex: 1;
        flex: 1;
    min-width: 300px;
}
/* ! Read-only detail rows
	/* =================================================================== */
.settings-shell .detail-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 13px 0;
    border-bottom: 1px dashed #e0e6ed;
    min-height: 52px;
}
.settings-shell .detail-row:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell .detail-row .detail-label {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
    margin: 0;
}
.settings-shell .detail-row .detail-value {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 14px;
    color: #333333;
    font-weight: 600;
    word-break: break-word;
}
.settings-shell .detail-row .detail-value.muted {
    color: #a3aac0;
    font-weight: 400;
    font-style: italic;
}
.settings-shell .detail-row .detail-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* Only the row that opens a card sits flush with the card header */
.settings-shell .card-body > .detail-row:first-child {
    padding-top: 0;
}
/* Small inline "edit" affordance */
.settings-shell .link-action {
    background: none;
    border: none;
    padding: 0;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.15s ease;
}
.settings-shell .link-action i {
    margin-right: 4px;
}
.settings-shell .link-action:hover {
    opacity: 0.7;
    text-decoration: underline;
}
/* =================================================================== */
.settings-shell .inline-edit {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* ! Chips (features, referral types)
	/* =================================================================== */
.settings-shell .chip-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
/* =================================================================== */
.settings-shell .chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    padding: 5px 11px;
    border-radius: 20px;
    background-color: #f4f7fe;
    color: #0035d2;
    border: 1px solid rgba(0, 53, 210, 0.12);
    line-height: 1.4;
    white-space: nowrap;
}
.settings-shell .chip i {
    font-size: 10px;
    opacity: 0.7;
}
.settings-shell .chip.chip-muted {
    background-color: #f8f9fa;
    color: #a3aac0;
    border-color: #e0e6ed;
    font-style: italic;
}
/* Selectable chip - wraps a checkbox */
.settings-shell .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 600;
    padding: 7px 14px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #4a5568;
    border: 1px solid #e0e6ed;
    cursor: pointer;
    margin: 0;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.settings-shell .chip-select input[type="checkbox"] {
    margin: 0;
    cursor: pointer;
}
.settings-shell .chip-select:hover {
    border-color: #cbd5e0;
}
.settings-shell .chip-select.selected {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.35);
    color: #0035d2;
}
.settings-shell .chip-select.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
/* ! Editable row list (appointment types, task labels)
	/* =================================================================== */
.settings-shell .row-list-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 0 14px 8px;
}
.settings-shell .row-list-head span {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
/* The inputs carry their own borders, so the rows themselves stay unboxed */
.settings-shell .row-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 5px 14px;
    margin-bottom: 4px;
}
/* Separated by a rule rather than a box of its own */
.settings-shell .row-item.row-item-new {
    margin-bottom: 0;
    margin-top: 10px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
}
/* Column widths shared by the head and the rows */
.settings-shell .col-name {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    min-width: 150px;
}
/* =================================================================== */
.settings-shell .col-colour {
    -ms-flex: 0 0 130px;
        flex: 0 0 130px;
    width: 130px;
}
.settings-shell .col-duration {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
    width: 110px;
}
/* Lengths are in steps of 5 minutes (minute-step directive). */
.settings-shell .col-duration .form-control.ng-invalid-minute-step {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
.settings-shell .col-type {
    -ms-flex: 0 0 190px;
        flex: 0 0 190px;
    width: 190px;
}
.settings-shell .col-imaging {
    -ms-flex: 0 0 190px;
        flex: 0 0 190px;
    width: 190px;
}
/* The multiselect renders a bootstrap dropdown - make the button fill the cell like the
		   other controls in the row rather than sizing to its label. */
.settings-shell .col-imaging .btn-dropdown-multiselect {
    width: 100%;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .col-imaging .dropdown-menu {
    min-width: 240px;
}
.settings-shell .col-add {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    width: 40px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.settings-shell .col-add-wide {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
/* The old round "+" was missed - the add step now announces itself and its
	   button says what it does. The form clears after each add, so a run of
	   entries can be typed one after another without leaving the screen. */
.settings-shell .add-row {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
}
.settings-shell .add-row .add-row-title {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
    font-weight: 700;
    padding: 0 14px 8px;
}
.settings-shell .add-row .row-item.row-item-new {
    margin: 0;
    padding-top: 0;
    border-top: none;
}
.settings-shell .add-row .add-row-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    padding: 12px 14px 0;
}
.settings-shell .btn-add {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 8px 18px;
}
.settings-shell .btn-add i {
    margin-right: 6px;
}
/* Column widths shared by the head and the rows, alongside .col-name above */
.settings-shell .col-code {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* ! Claim items (practice item codes, names and fees)
	/* =================================================================== */
.settings-shell .col-fee {
    -ms-flex: 0 0 120px;
        flex: 0 0 120px;
    width: 120px;
}
/* =================================================================== */
.settings-shell .col-available {
    -ms-flex: 0 0 70px;
        flex: 0 0 70px;
    width: 70px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* The code identifies the item and cannot be edited on an existing row, so it is set as a plain
	   token rather than a disabled input - a greyed-out field invites people to try. */
.settings-shell .claim-item-code {
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
    background-color: #e7f0ff;
    border-radius: 8px;
    padding: 5px 10px;
    line-height: 1.2;
}
.settings-shell .claim-item-tag {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #7d8399;
    background-color: #f8f9fa;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    padding: 2px 7px;
    white-space: nowrap;
}
/* The dollar sign sits inside the field rather than beside it, so a column of fees lines up on the
	   number instead of on the symbol. */
.settings-shell .fee-input {
    position: relative;
}
.settings-shell .fee-input .fee-prefix {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 13px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell .fee-input .form-control {
    padding-left: 24px;
}
/* Retiring an item is a quieter act than deleting one, and reads better as a switch than as a bare
	   checkbox in a column of inputs. */
.settings-shell .claim-item-toggle {
    position: relative;
    display: inline-block;
    width: 38px;
    height: 21px;
    margin: 0;
    cursor: pointer;
}
.settings-shell .claim-item-toggle input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}
.settings-shell .claim-item-toggle .switch-track {
    position: absolute;
    inset: 0;
    border-radius: 20px;
    background-color: #d3d9e6;
    transition: background-color 0.18s ease;
}
.settings-shell .claim-item-toggle .switch-track:after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background-color: #ffffff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
    transition: transform 0.18s ease;
}
.settings-shell .claim-item-toggle input:checked + .switch-track {
    background-color: #0035d2;
}
.settings-shell .claim-item-toggle input:checked + .switch-track:after {
    transform: translateX(17px);
}
.settings-shell .claim-item-toggle input:focus + .switch-track {
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
/* Only shown once the list is long enough to be worth narrowing */
.settings-shell .claim-item-filter {
    position: relative;
    max-width: 320px;
    margin-bottom: 16px;
}
.settings-shell .claim-item-filter i {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell .claim-item-filter .form-control {
    padding-left: 32px;
}
/* The search sits in the add row as its first control, so finding a standard item and typing one of
	   your own are the same gesture in the same place rather than two stacked forms. */
.settings-shell .col-picker {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    min-width: 200px;
}
.settings-shell .col-picker .ui-select-container {
    margin: 0;
}
/* The only row that wraps: five controls do not always fit a narrow pane, and a squeezed fee field
	   is worse than a second line. */
.settings-shell .claim-item-add {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    row-gap: 10px;
}
/* Retired items stay on the list - they are still the practice's, just not offered - so they are
	   dimmed rather than hidden, and read as switched off at a glance. */
.settings-shell .claim-item-row.retired .claim-item-code, .settings-shell .claim-item-row.retired .form-control {
    opacity: 0.55;
}
/* Required and empty says itself, so nothing has to say it in a sentence underneath - including on
	   arrival, which is how a row saved before a fee was required explains its own disabled Save.
	   Scoped to the saved rows: the add row's fields carry no `required`, so an empty one it is not yet
	   time to fill in is never marked wrong. */
.settings-shell .claim-item-row .form-control.ng-invalid {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* No description under the heading, so the block does not need the room for one. */
.settings-shell .claim-item-empty {
    padding: 34px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
.settings-shell .claim-item-empty h4 {
    margin: 0;
}
/* ! Practice leave (recurring breaks, closures and holidays)
	/* =================================================================== */
.settings-shell .card-header-sub {
    font-size: 12px;
    color: #878ba0;
    margin-top: 4px;
}
/* Column widths shared by the head and the rows, alongside .col-name above */
.settings-shell .col-days {
    -ms-flex: 0 0 330px;
        flex: 0 0 330px;
    width: 330px;
    display: -ms-flexbox;
    display: flex;
    gap: 5px;
}
/* =================================================================== */
.settings-shell .col-time {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
    width: 110px;
}
.settings-shell .col-date {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    width: 150px;
}
.settings-shell .col-all-day {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    width: 64px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* A day of the week reads as a pill you switch on, the same pale navy as .chip-select.selected. */
.settings-shell .day-pill {
    -ms-flex: 0 0 42px;
        flex: 0 0 42px;
    height: 30px;
    padding: 0;
    border-radius: 20px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    color: #4a5568;
    font-size: 11.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.settings-shell .day-pill:hover:not([disabled]) {
    border-color: #cbd5e0;
}
.settings-shell .day-pill.selected {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.35);
    color: #0035d2;
}
.settings-shell .day-pill[disabled] {
    cursor: default;
}
.settings-shell .practice-leave-row .col-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
/* Finished closures are kept for reference, so they are dimmed rather than hidden. */
.settings-shell .practice-leave-row.past {
    opacity: 0.45;
}
.settings-shell .practice-leave-row .past-tag {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #878ba0;
    background-color: #eef1f7;
    border-radius: 10px;
    padding: 2px 7px;
}
.settings-shell .practice-leave .form-control.range-invalid, .settings-shell .practice-leave-row .form-control.ng-invalid:not([disabled]) {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* Seven day pills and two times do not always fit a narrow pane. */
.settings-shell .practice-leave-add, .settings-shell .practice-leave-row {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    row-gap: 10px;
}
/* Public holidays are set by CatTrax, so they read as a list with one switch rather than as editable rows. */
.settings-shell .public-holiday-row .holiday-name {
    font-size: 13px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell .public-holiday-row .holiday-tag {
    margin-left: 8px;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #00796b;
    background-color: rgb(230, 242, 240);
    border-radius: 10px;
    padding: 2px 7px;
    white-space: nowrap;
}
.settings-shell .public-holiday-row .holiday-tag i {
    margin-right: 3px;
}
.settings-shell .public-holiday-row .holiday-date {
    font-size: 13px;
    color: #4a5568;
}
/* Open on the holiday: the switch says so, and the row steps back. */
.settings-shell .public-holiday-row.open .holiday-name, .settings-shell .public-holiday-row.open .holiday-date {
    opacity: 0.55;
}
.settings-shell .col-holiday-note {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell .public-holidays-help {
    margin: 6px 14px 0;
}
.settings-shell .practice-leave-subhead {
    margin-top: 18px;
    padding: 14px 14px 8px;
    border-top: 1px dashed rgba(0, 53, 210, 0.25);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
    font-weight: 700;
}
.settings-shell .practice-leave-empty {
    padding: 26px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
.settings-shell .practice-leave-empty i {
    font-size: 26px;
    margin-bottom: 8px;
}
.settings-shell .practice-leave-empty h4 {
    margin: 0;
}
/* Column width shared by the head and the rows, alongside .col-name, .col-colour and .col-available */
.settings-shell .col-description {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    min-width: 160px;
}
/* Archived rooms stay on the list - appointments that used them still show them - so they are dimmed
	   rather than hidden, the same as a retired claim item. */
.settings-shell .room-row.retired .form-control, .settings-shell .room-row.retired .color-picker-wrapper {
    opacity: 0.55;
}
/* ! Rooms (the practice's physical rooms appointments are booked into)
	/* =================================================================== */
.settings-shell .room-row .form-control.ng-invalid {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
/* =================================================================== */
.settings-shell .room-empty {
    padding: 34px 32px;
    box-shadow: none;
    border: 1px dashed #e0e6ed;
}
/* angularjs-color-picker renders a bootstrap input group - keep the joint tidy */
.settings-shell .col-colour .color-picker-wrapper, .settings-shell .col-colour .color-picker-input-wrapper {
    width: 100%;
}
.settings-shell .col-colour .input-group .input-group-addon:first-child {
    border-radius: 8px 0 0 8px;
    border-color: #e0e6ed;
}
.settings-shell .col-colour .input-group .color-picker-input {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.settings-shell .label-swatch {
    display: inline-block;
    width: 30px;
    height: 30px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
}
.settings-shell .btn-add-round {
    width: 34px;
    height: 34px;
    min-width: 34px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    transition: all 0.2s ease;
}
.settings-shell .btn-add-round:hover:not(:disabled) {
    background-color: #2a307f;
    transform: scale(1.06);
}
.settings-shell .btn-add-round:disabled {
    background-color: #d3d9e6;
    cursor: not-allowed;
}
/* ! Form controls
	/* =================================================================== */
.settings-shell .control-label, .settings-shell label.field-label {
    display: block;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
    margin-bottom: 6px;
}
/* =================================================================== */
.settings-shell .form-control, .settings-shell select.form-control {
    height: auto;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-shadow: none;
    padding: 8px 12px;
    font-size: 13px;
    color: #333333;
    background-color: #ffffff;
    transition: all 0.2s ease;
}
.settings-shell .form-control:focus, .settings-shell select.form-control:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.settings-shell .form-control[readonly], .settings-shell .form-control:disabled, .settings-shell select.form-control[readonly], .settings-shell select.form-control:disabled {
    background-color: #f8f9fa;
    color: #8a90a3;
}
.settings-shell textarea.form-control {
    min-height: 120px;
    resize: vertical;
}
.settings-shell .error-message {
    display: block;
    color: #d9534f;
    font-size: 11px;
    margin-top: 4px;
}
.settings-shell .field-help {
    font-size: 11px;
    color: #a3aac0;
    margin-top: 5px;
    line-height: 1.45;
}
.settings-shell .field-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 16px;
}
.settings-shell .field-grid .field {
    -ms-flex: 1 1 200px;
        flex: 1 1 200px;
    min-width: 160px;
}
.settings-shell .field-grid .field-sm {
    -ms-flex: 0 0 140px;
        flex: 0 0 140px;
    width: 140px;
}
/* A number set inside its own sentence, rather than stranded at the far right */
.settings-shell .inline-sentence {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 7px;
    margin-top: 7px;
    font-size: 13px;
    color: #555;
}
.settings-shell .inline-sentence input[type="number"] {
    width: 62px;
    padding: 5px 8px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    text-align: center;
    color: #0035d2;
    font-weight: 700;
    font-size: 13px;
    transition: all 0.2s ease;
}
.settings-shell .inline-sentence input[type="number"]:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
/* ! Notices & empty states
	/* =================================================================== */
.settings-shell .settings-notice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    padding: 14px 18px;
    border-radius: 10px;
    font-size: 12.5px;
    line-height: 1.5;
    margin-bottom: 20px;
}
.settings-shell .settings-notice i {
    font-size: 15px;
    margin-top: 1px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .settings-notice.info {
    background-color: #e7f0ff;
    color: #2a307f;
    border: 1px solid rgba(0, 53, 210, 0.15);
}
.settings-shell .settings-notice.info i {
    color: #0035d2;
}
.settings-shell .settings-notice.warning {
    background-color: #fff8e6;
    color: #856404;
    border: 1px solid rgba(255, 171, 0, 0.3);
}
.settings-shell .settings-notice.warning i {
    color: #ffab00;
}
/* =================================================================== */
.settings-shell .settings-empty {
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 54px 32px;
    text-align: center;
}
.settings-shell .settings-empty i {
    font-size: 34px;
    color: #d3d9e6;
    margin-bottom: 14px;
}
.settings-shell .settings-empty h4 {
    font-size: 16px;
    color: #2a307f;
    margin: 0 0 8px;
}
.settings-shell .settings-empty p {
    font-size: 13px;
    color: #878ba0;
    margin: 0 auto;
    max-width: 52ch;
    line-height: 1.55;
}
/* ! Expandable blocks (reminder message composers)
	/* =================================================================== */
.settings-shell .expander {
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    margin-bottom: 14px;
    overflow: hidden;
}
/* =================================================================== */
.settings-shell .expander-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 14px 18px;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
    transition: background-color 0.15s ease;
}
.settings-shell .expander-head:hover {
    background-color: #fbfcff;
}
.settings-shell .expander-head .expander-icon {
    width: 34px;
    height: 34px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 8px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 14px;
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell .expander-head .expander-title {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell .expander-head .expander-title strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #333333;
}
.settings-shell .expander-head .expander-title small {
    display: block;
    font-size: 11px;
    color: #a3aac0;
    margin-top: 2px;
}
.settings-shell .expander-head .expander-chevron {
    color: #a3aac0;
    font-size: 12px;
}
.settings-shell .expander-body {
    padding: 4px 18px 18px;
    border-top: 1px solid #eef1f7;
}
.settings-shell .expander.is-open .expander-head {
    background-color: #fbfcff;
}
/* Merge-field tokens */
.settings-shell .merge-field-groups {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 28px;
    margin: 10px 0 14px;
}
.settings-shell .merge-field-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
.settings-shell .merge-field-group .merge-fields {
    margin: 0;
}
.settings-shell .merge-field-group-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell .merge-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin: 10px 0 14px;
}
.settings-shell .merge-field {
    background-color: #f4f7fe;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    color: #0035d2;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 5px 12px;
    cursor: pointer;
    text-align: center;
    transition: all 0.15s ease;
}
/* The shared [draggable] rule paints a black border and a move cursor over anything
		   draggable - the chips keep their own pill styling and a grab cursor instead. */
.settings-shell .merge-field[draggable] {
    border-color: rgba(0, 53, 210, 0.25);
    cursor: grab;
}
.settings-shell .merge-field:hover {
    background-color: #0035d2;
    color: #ffffff;
    border-color: #0035d2;
}
.settings-shell .merge-field:active {
    cursor: grabbing;
}
.settings-shell .merge-field .merge-field-name {
    display: block;
}
/* What the field turns into. Regular weight and tabular figures so it reads as a value
		   rather than as more label. */
.settings-shell .merge-field .merge-field-example {
    display: block;
    margin-top: 1px;
    font-size: 9px;
    font-weight: 400;
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
    opacity: 0.7;
}
.settings-shell .merge-field-note {
    max-width: 340px;
    font-size: 10px;
    line-height: 1.45;
    color: #a3aac0;
}
/* Drop targets. The shared lvl styles grey the whole editor out mid-drag and dash a black
	   border around whichever node the pointer is over; outline the composer instead so the
	   wording stays readable while a field is being dragged into it. */
.settings-shell .text-area-wrap.lvl-target {
    background-color: transparent;
    opacity: 1;
    outline: 2px dashed rgba(0, 53, 210, 0.3);
    outline-offset: 3px;
}
.settings-shell .text-area-wrap.lvl-over, .settings-shell .text-area-wrap .lvl-over {
    border: 0 !important;
}
.settings-shell .text-area-wrap.lvl-over {
    outline: 2px dashed #0035d2;
}
/* Attachments */
.settings-shell .attachment-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    margin-bottom: 8px;
    background-color: #ffffff;
}
.settings-shell .attachment-row .attachment-icon {
    color: #0035d2;
    font-size: 15px;
}
.settings-shell .attachment-row .attachment-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    font-weight: 600;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell .attachment-row .attachment-size {
    font-size: 11px;
    color: #a3aac0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .attachment-row .attachment-actions {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell .attachment-row .attachment-actions img {
    width: 15px;
    height: 15px;
    cursor: pointer;
    opacity: 0.65;
    transition: opacity 0.15s ease;
}
.settings-shell .attachment-row .attachment-actions img:hover {
    opacity: 1;
}
.settings-shell .file-drop {
    display: block;
    border: 1px dashed rgba(0, 53, 210, 0.3);
    border-radius: 8px;
    padding: 14px;
    background-color: #fbfcff;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell .file-drop input[type="file"] {
    font-size: 12px;
}
/* Character counter */
.settings-shell .sms-counter {
    text-align: right;
    font-size: 11px;
    color: #a3aac0;
    margin-top: 6px;
}
.settings-shell .sms-counter strong {
    color: #0035d2;
}
.settings-shell .sms-counter.over strong {
    color: #d9534f;
}
/* ! Usage chart card
	/* =================================================================== */
.settings-shell .chart-card .chart-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 16px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 12px;
}
.settings-shell .chart-card nvd3 {
    display: block;
    width: 100%;
}
/* =================================================================== */
/* ! Invoicing defaults (practice details)
/* =================================================================== */
.settings-shell .billing-defaults .field-help {
    margin-bottom: 14px;
}
.settings-shell .billing-defaults .settings-notice {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 14px;
}
.settings-shell .billing-defaults .billing-defaults-fields {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin: 0;
    border: 0;
    padding: 0;
}
.settings-shell .billing-defaults .billing-defaults-field {
    display: block;
    margin: 0;
    font-weight: normal;
}
.settings-shell .billing-defaults .billing-defaults-label {
    display: block;
    margin-bottom: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #343a40;
}
.settings-shell .billing-defaults .billing-defaults-mini {
    width: auto;
    height: 28px;
    padding: 0 10px;
    font-size: 12px;
}
.settings-shell .billing-defaults .billing-defaults-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-top: 16px;
}
.settings-shell .billing-defaults .billing-defaults-actions .btn {
    width: auto;
    margin: 0;
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 900px) {
	.settings-shell {
		-ms-flex-direction: column;
		    flex-direction: column;
	}
	.settings-shell .settings-nav {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        border-right: none;
        border-bottom: 1px solid #e0e6ed;
        -ms-flex-direction: row;
            flex-direction: row;
        -ms-flex-align: center;
            align-items: center;
        overflow-x: auto;
        overflow-y: hidden;
    }
	.settings-shell .settings-identity, .settings-shell .settings-nav-footer {
        display: none;
    }
	.settings-shell .settings-nav-group {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-align: center;
            align-items: center;
        gap: 6px;
        padding: 10px;
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }
	.settings-shell .settings-nav-group .settings-nav-group-title {
        padding: 0 6px 0 0;
        white-space: nowrap;
    }
	.settings-shell .settings-nav-item {
        margin-bottom: 0;
        white-space: nowrap;
    }
	.settings-shell .settings-pane-body {
        padding: 18px 16px;
    }
	.settings-shell .settings-action-bar {
        padding: 12px 16px;
    }
	.settings-shell .detail-row {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        gap: 6px;
    }
	.settings-shell .detail-row .detail-label {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
        width: 100%;
    }
	.settings-shell .row-item {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
	.settings-shell .col-type, .settings-shell .col-colour, .settings-shell .col-duration {
        -ms-flex: 1 1 140px;
            flex: 1 1 140px;
        width: auto;
    }
}
/* =================================================================== */
/* ! Practice leave - appointments already inside new leave
/* The modal is appended to the body, outside .settings-shell.
/* =================================================================== */
.practice-leave-affected-modal .affected-lead {
    display: -ms-flexbox;
    display: flex;
    gap: 14px;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 16px;
}
.practice-leave-affected-modal .affected-lead h4 {
    margin: 2px 0 4px;
    font-size: 15px;
    color: #2a307f;
}
.practice-leave-affected-modal .affected-lead p {
    margin: 0;
    font-size: 13px;
    color: #6b7280;
    line-height: 1.45;
}
.practice-leave-affected-modal .affected-icon {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    height: 40px;
    border-radius: 10px;
    background-color: #fff8e6;
    color: #856404;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 18px;
}
.practice-leave-affected-modal .affected-list {
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    max-height: 300px;
    overflow-y: auto;
}
.practice-leave-affected-modal .affected-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 14px;
    font-size: 12.5px;
    border-bottom: 1px solid #eef1f7;
}
.practice-leave-affected-modal .affected-item:last-child {
    border-bottom: 0;
}
.practice-leave-affected-modal .affected-when {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
    font-weight: 700;
    color: #2a307f;
}
.practice-leave-affected-modal .affected-who {
    -ms-flex: 1;
        flex: 1;
    color: #4a5568;
}
.practice-leave-affected-modal .affected-type {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    color: #4a5568;
}
.practice-leave-affected-modal .affected-swatch {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background-color: #e0e6ed;
}
/* Anyone who has asked for less motion gets the band without the wipe. */
@media (prefers-reduced-motion: reduce) {
	.settings-shell .scope-badge, .settings-shell .nav-group-items {
		animation: none;
		transition: none;
	}
}
/* =================================================================== */
/* ! Staff and permissions
/* A practice's Staff and Role permissions sections in the Settings dialog,
/* and the CatTrax admin screens, reuse the Settings dialog's layout and
/* classes (_settings.css). Only what those screens don't already have is here.
/* =================================================================== */
/* The Settings shell normally fills a dialog. On a CatTrax admin page it needs a
   height of its own, so the rail and the pane can each scroll. .view-wrap pads the
   sides and bottom by 25px but not the top, so the top margin evens it up. */
.settings-page {
	display: -ms-flexbox;
	display: flex;
	height: calc(100vh - 200px);
	min-height: 560px;
	margin-top: 25px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}
/* The permissions audit log: the Settings dialog's layout, filling the whole screen, since its table and
   people need the width. */
md-dialog.permission-audit-dialog {
	width: 100vw;
	min-width: 100vw;
	max-width: 100vw;
	height: 100vh;
	max-height: 100vh;
	padding: 0;
	border-top-width: 0;
	border-radius: 0;
}
/* The console is the dialog's only content, so it takes the whole height, as a Settings section does. */
md-dialog.permission-audit-dialog permission-refusals-admin-console {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* The Settings dialog caps each rail group at 320px so it can animate folding. These
   lists never fold, and every role and staff member must stay reachable, so the cap
   is lifted and the rail scrolls instead. */
.settings-page .settings-shell .settings-nav-group .nav-group-items, .permission-audit-dialog .settings-shell .settings-nav-group .nav-group-items {
	max-height: none;
}
/* The staff list, a person and the role screen each fill the pane like a whole section, so the
	   body scrolls and the action bar stays at the bottom. */
.settings-shell .staff-section {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-shell .staff-table {
    margin: 0;
}
.settings-shell .staff-table th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    border-top: none;
}
.settings-shell .staff-table td {
    vertical-align: middle;
    font-size: 13px;
}
.settings-shell .staff-table tbody tr {
    cursor: pointer;
}
.settings-shell .staff-table tbody tr:hover td {
    background-color: #f4f7fe;
}
.settings-shell .staff-table .staff-name {
    font-weight: 600;
}
.settings-shell .staff-table .staff-open {
    text-align: right;
    white-space: nowrap;
    font-weight: 600;
    color: #0035d2;
}
.settings-shell .staff-note {
    font-size: 12px;
    font-weight: 400;
    color: #6c757d;
}
/* Back from one person to the whole list. */
.settings-shell .staff-back {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-bottom: 10px;
    padding: 0;
    background: none;
    border: none;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 600;
    color: #0035d2;
    cursor: pointer;
}
.settings-shell .staff-back:hover {
    opacity: 0.75;
}
/* One chip per role, to pick the role to edit. */
.settings-shell .role-picker {
    margin: 4px 0 14px;
}
/* .chip-select is written for a <label>; as a <button> it needs the font back */
.settings-shell .role-picker button.chip-select {
    font-family: inherit;
}
.settings-shell .permission-checklist-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 14px;
    margin-bottom: 10px;
}
/* The whole title is the fold button, with the same chevron as the Settings rail. */
.settings-shell .permission-group-toggle {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 0;
    background: none;
    border: none;
    text-align: left;
    cursor: pointer;
}
.settings-shell .permission-group-toggle:hover h4 {
    opacity: 0.75;
}
.settings-shell .permission-group-chevron {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11px;
    color: #0035d2;
    transition: transform 0.2s ease;
}
/* Folded, a group is just its header row. */
.settings-shell .permission-group.collapsed {
    padding-top: 16px;
    padding-bottom: 16px;
}
.settings-shell .permission-group.collapsed .card-header-flex {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}
.settings-shell .permission-group.collapsed .permission-group-chevron {
    transform: rotate(-90deg);
}
.settings-shell .permission-group-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
}
.settings-shell .permission-card-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    margin-top: 12px;
}
.settings-shell .permission-row {
    min-height: 48px;
    padding: 10px 0;
}
.settings-shell .permission-row .chip-list {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.settings-shell .permission-code, .settings-shell .permission-reason {
    display: block;
    font-weight: 400;
    color: #6c757d;
}
.settings-shell .permission-code {
    font-size: 10px;
    letter-spacing: 0.03em;
}
.settings-shell .permission-reason {
    font-size: 11px;
    font-style: italic;
}
/* The practice doesn't pay for it - the same caution tone as the practice scope badge. */
.settings-shell .chip.chip-warning {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
/* Differs from the starting point - solid, so a change stands out in a long list. */
.settings-shell .chip.chip-changed {
    background-color: #0035d2;
    color: #ffffff;
    border-color: #0035d2;
}
/* What saving a person's ticked roles would add or take away, shown before they are saved. */
.settings-shell .role-change-preview {
    margin-top: 14px;
    padding: 14px 16px;
    border-radius: 12px;
    background-color: #f4f7fe;
}
.settings-shell .role-change-preview .role-change-title {
    font-size: 12px;
    font-weight: 700;
    color: #0035d2;
}
.settings-shell .role-change-preview .detail-row {
    -ms-flex-align: start;
        align-items: flex-start;
}
.settings-shell .role-change-preview .chip-list {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell .role-change-preview .chip {
    white-space: normal;
}
/* The same summary for a role's unsaved changes sits on the pale pane, so it is a white card. */
.settings-shell .role-change-preview.role-save-summary {
    margin: 0 0 20px;
    padding: 18px 25px;
    background-color: #ffffff;
}
/* Same greens as the save confirmation. */
.settings-shell .chip.chip-gained {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .chip.chip-lost {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
/* A fixed layout keeps the table inside its card. Request paths and permission codes have no
	   spaces, so with an automatic layout they set the table's width and the pane scrolls sideways. */
.settings-shell .refusal-table {
    margin: 0;
    width: 100%;
    table-layout: fixed;
}
.settings-shell .refusal-table th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    border-top: none;
}
.settings-shell .refusal-table td {
    vertical-align: top;
    font-size: 13px;
    overflow-wrap: anywhere;
}
/* Role names wrap between words, never inside one. */
.settings-shell .refusal-table .chip {
    white-space: normal;
    overflow-wrap: normal;
}
/* What the row counts, shown above the permission when every kind is listed. Losses use the
		   role-change preview's red, gains its green. */
.settings-shell .refusal-table .refusal-kind {
    display: -ms-flexbox;
    display: flex;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 100%;
    margin-bottom: 4px;
}
.settings-shell .refusal-table .refusal-kind.kind-REFUSED, .settings-shell .refusal-table .refusal-kind.kind-CHANGES_REFUSE, .settings-shell .refusal-table .refusal-kind.kind-PROPOSAL_REFUSES {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
.settings-shell .refusal-table .refusal-kind.kind-CHANGES_ALLOW, .settings-shell .refusal-table .refusal-kind.kind-PROPOSAL_ALLOWS {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .refusal-table .refusal-permission {
    width: 25%;
}
.settings-shell .refusal-table .refusal-outcomes {
    width: 22%;
}
.settings-shell .refusal-table .refusal-roles {
    width: 20%;
}
.settings-shell .refusal-table .refusal-practice {
    width: 14%;
}
.settings-shell .refusal-table .refusal-count {
    font-weight: 700;
}
/* What a request got today, and would get under the proposal: refused red, allowed green, and
		   allowed only because the check is log-only in the warning amber. */
.settings-shell .refusal-table .refusal-outcome.outcome-REFUSED {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
    border-color: rgba(217, 83, 79, 0.15);
}
.settings-shell .refusal-table .refusal-outcome.outcome-ALLOWED {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell .refusal-table .refusal-outcome.outcome-ALLOWED_LOG_ONLY {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
.settings-shell .refusal-table .refusal-arrow {
    margin: 0 4px;
    color: #6c757d;
}
.settings-shell .refusal-table .refusal-row {
    cursor: pointer;
}
.settings-shell .refusal-table .refusal-row:hover td, .settings-shell .refusal-table .refusal-row.expanded td {
    background-color: rgba(255, 182, 39, 0.1);
}
.settings-shell .refusal-table .refusal-caret {
    width: 10px;
    color: #6c757d;
}
/* One row's people, why, and where to fix it. */
.settings-shell .refusal-table .refusal-detail > td {
    padding: 12px 16px 16px;
    background-color: rgba(255, 182, 39, 0.1);
    border-top: none;
}
.settings-shell .refusal-fix {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    margin-bottom: 8px;
}
.settings-shell .refusal-fix .refusal-fix-label {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
}
.settings-shell .refusal-users {
    margin: 0 0 8px;
    width: 100%;
    background-color: #ffffff;
}
.settings-shell .refusal-users th {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
}
.settings-shell .refusal-users td {
    font-size: 12px;
}
.settings-shell .refusal-users .refusal-person {
    font-weight: 700;
}
.settings-shell .refusal-endpoints h5, .settings-shell .refusal-impact h5 {
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #6c757d;
    margin: 8px 0 4px;
}
.settings-shell .impact-muted {
    color: #6c757d;
    font-size: 12px;
}
/* Who would lose or gain access, above the table. */
.settings-shell .refusal-impact .impact-stats {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 12px;
}
.settings-shell .refusal-impact .impact-stat {
    -ms-flex: 1 1 180px;
        flex: 1 1 180px;
    padding: 10px 14px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    font-size: 13px;
}
.settings-shell .refusal-impact .impact-stat.lose {
    background-color: rgba(217, 83, 79, 0.15);
    color: #d9534f;
}
.settings-shell .refusal-impact .impact-stat.gain {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
}
.settings-shell .refusal-impact .impact-stat.changes {
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
}
.settings-shell .refusal-impact .impact-number {
    font-size: 22px;
    font-weight: 700;
}
.settings-shell .refusal-impact .impact-lists {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 24px;
}
.settings-shell .refusal-impact .impact-lists > div {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
}
.settings-shell .refusal-impact .impact-lists ol, .settings-shell .refusal-impact .impact-lists ul {
    padding-left: 18px;
    margin: 0;
    font-size: 13px;
}
.settings-shell .refusal-filters {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.settings-shell .refusal-filters .claim-item-filter {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    margin: 0;
}
.settings-shell .refusal-filters select.form-control {
    width: auto;
    min-width: 160px;
}
.settings-shell .refusal-export {
    margin-left: auto;
}
/* The audit log's pane: the spinner sits over it while loading. */
.settings-shell .refusal-pane {
    position: relative;
}
.settings-shell .refusal-spinner {
    position: absolute;
    left: 50%;
    top: 40%;
}
/* The role-defaults screen, opened from the audit log on one permission. */
.settings-shell .focus-permission {
    margin-top: 8px;
    padding: 8px 12px;
    border-radius: 12px;
    background-color: rgba(255, 243, 205, 0.9);
    color: #856404;
    border: 1px solid rgba(255, 193, 7, 0.7);
}
.settings-shell .claim-item-toggle.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
/* =================================================================== */
/* ! Calendar
/* The calendar dialog and the appointment modal are built on the settings
/* shell (_settings.css) - the same white rail, pale blue canvas, cards,
/* notices and form controls - so they read as the same product. What only
/* the calendar needs is scoped to .calendar-shell / .appointment-shell.
/* The appt-* pieces (status pills, invoice dots, swatches) are shared by
/* the grid, the team view, the hover card and the modal, so sit at the top.
/* =================================================================== */
@keyframes calendar-loading {
	from {
		left: -40%;
	}

	to {
		left: 100%;
	}
}
/* =================================================================== */
/* ! Shared appointment pieces
/* =================================================================== */
/* White pills, so they read on any appointment colour a practice picks. */
.appt-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	padding: 1px 6px;
	border-radius: 20px;
	background-color: #ffffff;
	color: #4a5568;
	font-size: 9px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	line-height: 1.5;
	white-space: nowrap;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.appt-pill-arrived {
	color: #856404;
}
.appt-pill-in-progress {
	color: #00796b;
}
.appt-pill-done {
	color: #2e7d32;
}
.appt-pill-missed {
	color: #a94442;
}
.appt-invoice {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background-color: #ffffff;
	font-size: 10px;
	font-weight: 700;
	line-height: 1;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.appt-invoice-draft {
	color: #d9534f;
}
.appt-invoice-pending {
	color: #856404;
}
.appt-invoice-paid {
	color: #2e7d32;
}
.appt-swatch {
	display: inline-block;
	width: 10px;
	height: 10px;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	border-radius: 3px;
}
.appt-swatch.round {
    border-radius: 50%;
}
/* Hover card - appended to body by Bootstrap's popover, so not under either shell. */
.popover .appt-popover {
	min-width: 230px;
	font-size: 12px;
	color: #333333;
}
.popover .appt-popover .appt-popover-row {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    padding: 3px 0;
}
.popover .appt-popover .appt-popover-label {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    padding-top: 2px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
}
.popover .appt-popover .appt-popover-note {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px dashed #e0e6ed;
    color: #555555;
    white-space: pre-line;
}
.popover .appt-popover .appt-popover-invoice {
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 600;
}
/* =================================================================== */
/* ! Notices (both shells)
/* =================================================================== */
.calendar-shell .settings-notice .notice-text, .appointment-shell .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* A booking that is refused outright, such as one inside practice leave. */
.calendar-shell .settings-notice.error, .appointment-shell .settings-notice.error {
    background-color: #fdecea;
    color: #611a15;
    border: 1px solid #f5c2c7;
}
.calendar-shell .settings-notice.error i, .appointment-shell .settings-notice.error i {
    color: #d9534f;
}
.calendar-shell .settings-notice .notice-action, .appointment-shell .settings-notice .notice-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
    max-width: none;
    margin: -3px 0;
    padding: 4px 14px;
}
.calendar-shell .settings-notice .practice-leave-override, .appointment-shell .settings-notice .practice-leave-override {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin: 8px 0 0;
    font-weight: normal;
    cursor: pointer;
}
.calendar-shell .settings-notice .practice-leave-override input, .appointment-shell .settings-notice .practice-leave-override input {
    margin: 3px 0 0;
}
.calendar-shell .settings-notice .notice-dismiss, .appointment-shell .settings-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
}
.calendar-shell .settings-notice .notice-dismiss i, .appointment-shell .settings-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.calendar-shell .settings-notice .notice-dismiss:hover, .appointment-shell .settings-notice .notice-dismiss:hover {
    opacity: 1;
}
.calendar-shell .segmented, .appointment-shell .segmented {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 2px;
    padding: 3px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
}
.calendar-shell .segmented .segmented-label, .appointment-shell .segmented .segmented-label {
    padding: 0 6px 0 7px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.calendar-shell .segmented button, .appointment-shell .segmented button {
    border: none;
    border-radius: 6px;
    background: none;
    padding: 5px 11px;
    font-size: 12px;
    font-weight: 600;
    color: #4a5568;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.calendar-shell .segmented button:hover, .appointment-shell .segmented button:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.calendar-shell .segmented button.active, .appointment-shell .segmented button.active {
    background-color: #0035d2;
    color: #ffffff;
    box-shadow: 0 2px 6px rgba(0, 53, 210, 0.25);
}
/* =================================================================== */
/* ! Calendar dialog shell
/* =================================================================== */
/* Left rail
	/* ------------------------------------------------------------------- */
.calendar-shell .calendar-rail {
    -ms-flex-preferred-size: 264px;
        flex-basis: 264px;
    width: 264px;
    padding-bottom: 8px;
}
/* ------------------------------------------------------------------- */
.calendar-shell .nav-item-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .calendar-mode-switch {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin: 14px 12px 2px;
    padding: 4px;
    background-color: #f4f7fe;
    border-radius: 10px;
}
.calendar-shell .calendar-mode-switch button {
    -ms-flex: 1;
        flex: 1;
    border: none;
    background: none;
    border-radius: 8px;
    padding: 7px 6px;
    font-size: 12px;
    font-weight: 600;
    color: #4a5568;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.calendar-shell .calendar-mode-switch button i {
    margin-right: 5px;
    color: #a3aac0;
}
.calendar-shell .calendar-mode-switch button:hover {
    color: #0035d2;
}
.calendar-shell .calendar-mode-switch button.active {
    background-color: #ffffff;
    color: #0035d2;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.12);
}
.calendar-shell .calendar-mode-switch button.active i {
    color: #0035d2;
}
.calendar-shell .mini-month {
    padding: 14px 14px 12px;
    border-bottom: 1px solid #eef1f7;
}
.calendar-shell .mini-month-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    margin-bottom: 4px;
}
.calendar-shell .mini-month-title {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
}
.calendar-shell .mini-month-nav {
    width: 26px;
    height: 26px;
    border: none;
    background: none;
    border-radius: 50%;
    color: #a3aac0;
    font-size: 10px;
    transition: all 0.15s ease;
}
.calendar-shell .mini-month-nav:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.calendar-shell .mini-month-week {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[7];
        grid-template-columns: repeat(7, 1fr);
}
.calendar-shell .mini-month-dow span {
    padding: 4px 0;
    text-align: center;
    font-size: 10px;
    font-weight: 700;
    color: #a3aac0;
}
/* The days on screen form one pale band, so the rail shows which slice of the month you are in. */
.calendar-shell .mini-month-day {
    height: 28px;
    margin: 1px 0;
    border: none;
    background: none;
    padding: 0;
    font-size: 11.5px;
    color: #333333;
    font-variant-numeric: tabular-nums;
    transition: background-color 0.12s ease;
}
.calendar-shell .mini-month-day:hover {
    background-color: #f4f7fe;
    color: #0035d2;
}
.calendar-shell .mini-month-day.out-of-month {
    color: #c3c9da;
}
.calendar-shell .mini-month-day.in-view {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* A public holiday - named in the hover */
.calendar-shell .mini-month-day.is-holiday {
    color: #00796b;
    font-weight: 700;
    box-shadow: inset 0 -2px 0 #00796b;
}
.calendar-shell .mini-month-day.is-today {
    background-color: #0035d2;
    color: #ffffff;
    border-radius: 50%;
    font-weight: 700;
}
.calendar-shell .calendar-practice-item .appt-swatch {
    margin: 0 2px;
    box-shadow: 0 0 0 2px #ffffff;
}
/* Tick to add a clinician alongside the others; click the name to see only them. */
.calendar-shell .clinician-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 2px 12px;
    margin-bottom: 1px;
    border-radius: 10px;
    transition: background-color 0.15s ease;
}
.calendar-shell .clinician-row:hover {
    background-color: #f4f7fe;
}
.calendar-shell .clinician-row .clinician-check {
    width: 18px;
    height: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 0;
    border: 2px solid;
    border-radius: 5px;
    background-color: #ffffff;
    color: #ffffff;
    font-size: 9px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.calendar-shell .clinician-row .clinician-check i {
    opacity: 0;
}
.calendar-shell .clinician-row .clinician-check:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.calendar-shell .clinician-row.is-shown .clinician-check i {
    opacity: 1;
}
.calendar-shell .clinician-row .clinician-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 6px 0;
    border: none;
    background: none;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .clinician-row .clinician-name:hover {
    color: #0035d2;
    text-decoration: underline;
}
.calendar-shell .clinician-row:not(.is-shown) .clinician-name {
    color: #a3aac0;
}
.calendar-shell .clinician-row.is-only .clinician-name {
    color: #0035d2;
}
.calendar-shell .clinician-row .clinician-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #7d8399;
    font-size: 10px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
/* Practice names run long ("Eye Surgery Associates - Remuera"), so they wrap rather than cut off. */
.calendar-shell .practice-row .clinician-name {
    white-space: normal;
    overflow-wrap: anywhere;
    line-height: 1.35;
}
.calendar-shell .practice-row .appt-swatch {
    margin: 0 2px;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .legend-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 5px 12px;
    font-size: 12.5px;
    color: #4a5568;
}
/* Main pane
	/* ------------------------------------------------------------------- */
.calendar-shell .calendar-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 16px 20px 18px;
    background-color: #f4f7fe;
    overflow: hidden;
}
/* ------------------------------------------------------------------- */
.calendar-shell .calendar-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 16px;
}
.calendar-shell .calendar-toolbar-nav {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    min-width: 0;
}
.calendar-shell .calendar-title {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0a2540;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .cal-btn {
    height: 34px;
    padding: 0 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.calendar-shell .cal-btn:hover {
    border-color: #0035d2;
    color: #0035d2;
    position: relative;
}
.calendar-shell .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.calendar-shell .cal-icon-btn {
    width: 34px;
    padding: 0;
    font-size: 11px;
}
.calendar-shell .cal-btn-group {
    display: -ms-flexbox;
    display: flex;
}
.calendar-shell .cal-btn-group .cal-btn:first-child {
    border-radius: 8px 0 0 8px;
}
.calendar-shell .cal-btn-group .cal-btn:last-child {
    margin-left: -1px;
    border-radius: 0 8px 8px 0;
}
.calendar-shell .calendar-toolbar-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.calendar-shell .calendar-search {
    position: relative;
    width: 230px;
}
.calendar-shell .calendar-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.calendar-shell .calendar-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.calendar-shell .calendar-search .calendar-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.calendar-shell .calendar-search .calendar-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* Counts by where patients are in their visit. Clicking one highlights just those. */
.calendar-shell .calendar-statusbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.calendar-shell .status-chips {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.calendar-shell .status-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    padding: 5px 11px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    color: #4a5568;
    font-size: 11.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.calendar-shell .status-chip strong {
    color: #333333;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .status-chip .status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
}
.calendar-shell .status-chip:hover {
    border-color: #cbd5e0;
}
.calendar-shell .status-chip.active {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.calendar-shell .status-chip.active strong {
    color: #0035d2;
}
.calendar-shell .status-chip.muted {
    opacity: 0.55;
}
.calendar-shell .status-chip-booked .status-dot {
    background-color: #a3aac0;
}
.calendar-shell .status-chip-arrived .status-dot {
    background-color: #FFB627;
}
.calendar-shell .status-chip-in-progress .status-dot {
    background-color: #00bcd4;
}
.calendar-shell .status-chip-done .status-dot {
    background-color: #20c997;
}
.calendar-shell .status-chip-missed .status-dot {
    background-color: #d9534f;
}
.calendar-shell .status-total {
    margin-left: auto;
    font-size: 11.5px;
    color: #878ba0;
}
.calendar-shell .team-empty-toggle {
    padding: 5px 12px;
    font-size: 11.5px;
}
.calendar-shell .team-empty-toggle i {
    color: #0035d2;
}
/* The notices join the pane's own gap rather than adding one when there are none. */
.calendar-shell .calendar-notices {
    display: contents;
}
.calendar-shell .calendar-notices .settings-notice {
    margin: 0;
}
.calendar-shell .calendar-stage {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    overflow: hidden;
}
.calendar-shell .personal-stage {
    padding: 0;
    overflow: hidden;
}
.calendar-shell .calendar-fc {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
.calendar-shell .calendar-loading {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    overflow: hidden;
    z-index: 6;
    pointer-events: none;
}
.calendar-shell .calendar-loading span {
    position: absolute;
    top: 0;
    left: -40%;
    width: 40%;
    height: 100%;
    border-radius: 3px;
    background-color: #0035d2;
    animation: calendar-loading 1.1s ease-in-out infinite;
}
/* Statuses on the light cards: the colour edge stays the type's, so a status is a ring, a fade or a
	   hatch rather than another edge. "Waiting" is said by its pill alone. */
.calendar-shell .fc .fc-event.appt.appt-status-in-progress, .calendar-shell .team-day .team-appt.appt-status-in-progress {
    box-shadow: 0 0 0 2px rgba(0, 188, 212, 0.5), 0 2px 6px rgba(0, 188, 212, 0.25);
}
/* Done is still worth seeing, but it is no longer what the day is about. Muted by colour rather
	   than transparency, so cards that overlap stay solid instead of showing through one another. */
.calendar-shell .appt-status-done {
    filter: saturate(0.3);
}
.calendar-shell .appt-status-done .fc-title, .calendar-shell .appt-status-done .fc-time, .calendar-shell .appt-status-done .appt-patient-link, .calendar-shell .appt-status-done .team-appt-time, .calendar-shell .appt-status-done .team-appt-meta {
    color: #8a90a3;
}
/* Appointment status, shared by FullCalendar events and the team view
	/* ------------------------------------------------------------------- */
.calendar-shell .appt-status-missed {
    background-image: repeating-linear-gradient(135deg, rgba(10, 37, 64, 0.07) 0 6px, transparent 6px 12px);
}
.calendar-shell .appt-status-missed .fc-title, .calendar-shell .appt-status-missed .appt-patient-link {
    text-decoration: line-through;
}
/* After the statuses, so a search or status highlight wins over "done". */
.calendar-shell .appt-dimmed {
    opacity: 0.18;
    filter: grayscale(0.6);
}
/* ------------------------------------------------------------------- */
.calendar-shell .appt-patient-link {
    cursor: pointer;
}
.calendar-shell .appt-patient-link:hover {
    text-decoration: underline;
}
.calendar-shell .appt-badges {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-top: 3px;
}
/* FullCalendar theme
	/* ------------------------------------------------------------------- */
.calendar-shell .fc {
    font-size: 12px;
}
.calendar-shell .fc td, .calendar-shell .fc th, .calendar-shell .fc hr, .calendar-shell .fc thead, .calendar-shell .fc tbody, .calendar-shell .fc .fc-row, .calendar-shell .fc .fc-divider, .calendar-shell .fc .fc-popover {
    border-color: #eef1f7;
}
.calendar-shell .fc th.fc-day-header {
    padding: 8px 0 7px;
    border-bottom: 1px solid #e0e6ed;
    background-color: #ffffff;
    font-weight: 400;
}
.calendar-shell .fc .fc-col-weekday {
    display: block;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.calendar-shell .fc .fc-col-date {
    display: inline-block;
    min-width: 28px;
    height: 28px;
    margin-top: 2px;
    border-radius: 14px;
    line-height: 28px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
}
.calendar-shell .fc .fc-col-date.is-today {
    background-color: #0035d2;
    color: #ffffff;
}
.calendar-shell .fc .fc-col-month {
    margin-left: 3px;
    font-size: 11px;
    color: #a3aac0;
}
.calendar-shell .fc .fc-axis {
    font-size: 10.5px;
    color: #a3aac0;
}
.calendar-shell .fc td.fc-today {
    background-color: rgba(0, 53, 210, 0.025);
}
.calendar-shell .fc .fc-time-grid .fc-slats .fc-minor td {
    border-top-style: dotted;
    border-top-color: #f1f3f8;
}
/* The team view's "+ Book 9:30 am" marker, on the day and week grids. Placed by attachBookingGhost
		   in calendarController.js; it looks the same as .team-ghost. */
.calendar-shell .fc .fc-book-ghost {
    display: none;
    position: absolute;
    z-index: 3;
    min-height: 18px;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 0 8px;
    border: 1px dashed #0035d2;
    border-radius: 6px;/* Solid, so the time reads over an appointment's edge. */
    background-color: #e7f0ff;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.15);
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    pointer-events: none;
}
.calendar-shell .fc .fc-nonbusiness {
    background-color: #f8f9fc;
}
.calendar-shell .fc .fc-now-indicator-line {
    border-top-width: 2px;
    border-color: #d9534f;
}
.calendar-shell .fc .fc-now-indicator-line:before {
    content: "";
    position: absolute;
    left: -4px;
    top: -5px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #d9534f;
}
.calendar-shell .fc .fc-now-indicator-arrow {
    display: none;
}
.calendar-shell .fc .fc-event {
    border: none;
    border-radius: 6px;
    font-size: 11.5px;
    box-shadow: inset 3px 0 0 rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.08);
}
/* Appointments are light cards: a soft tint of their colour (inline), a solid edge in the full
		   colour (border-left, from the inline border colour) and dark text, lifted off the grid by a
		   faint shadow - so a full day reads calmly, and the sessions under it stay visible around it. */
.calendar-shell .fc .fc-event.appt {
    border-width: 0 0 0 4px;
    border-style: solid;
    border-radius: 4px 7px 7px 4px;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.06), 0 1px 2px rgba(10, 37, 64, 0.08);
    transition: box-shadow 0.15s ease;
}
.calendar-shell .fc .fc-event.appt:hover {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1), 0 4px 12px rgba(10, 37, 64, 0.16);
}
.calendar-shell .fc .fc-event.appt .fc-title {
    font-weight: 600;
}
.calendar-shell .fc .fc-event.appt .fc-time {
    color: #4a5568;
}
.calendar-shell .fc .fc-time-grid-event .fc-content {
    padding: 3px 5px 2px 8px;
}
.calendar-shell .fc .fc-time-grid-event.appt .fc-content {
    padding-left: 6px;
}
.calendar-shell .fc .fc-time-grid-event .fc-time {
    font-size: 10.5px;
    opacity: 0.9;
}
/* The pills already sit on white; on a pale card they need an outline to stand off it. */
.calendar-shell .fc .fc-event.appt .appt-pill, .calendar-shell .fc .fc-event.appt .appt-invoice {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1);
}
/* Badges sit in the top right corner rather than on a line of their own, which a 20-minute
		   appointment does not have. */
.calendar-shell .fc .fc-time-grid-event .appt-badges {
    position: absolute;
    top: 3px;
    right: 4px;
    margin: 0;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    gap: 3px;
}
.calendar-shell .fc .fc-time-grid-event.has-badges .fc-content {
    padding-right: 86px;
}
/* A week's columns are too narrow for the wording - the status becomes a coloured dot. */
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event.has-badges .fc-content {
    padding-right: 32px;
}
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-pill {
    width: 10px;
    height: 10px;
    padding: 0;
    font-size: 0;
    background-color: currentColor;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-invoice {
    width: 13px;
    height: 13px;
    font-size: 8px;
}
.calendar-shell .fc .fc-title {
    font-weight: 600;
}
.calendar-shell .fc .fc-day-grid-event .fc-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    padding: 2px 6px;
}
.calendar-shell .fc .fc-day-grid-event .fc-content .appt-badges {
    margin: 0 0 0 auto;
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
}
/* Month cells are too narrow for the wording; the invoice dot stays. */
.calendar-shell .fc .fc-day-grid-event .fc-content .appt-pill {
    display: none;
}
.calendar-shell .fc .practice-day {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.02em;
    box-shadow: none;
}
.calendar-shell .fc .fc-highlight {
    background-color: #0035d2;
    opacity: 0.12;
}
/* Month */
.calendar-shell .fc .fc-day-number {
    padding: 4px 7px;
    font-size: 11.5px;
    color: #4a5568;
}
.calendar-shell .fc .fc-day-top.fc-today .fc-day-number {
    margin: 3px;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #0035d2;
    color: #ffffff;
}
.calendar-shell .fc .fc-day-top.fc-other-month .fc-day-number {
    color: #c3c9da;
}
.calendar-shell .fc .fc-more {
    font-size: 11px;
    font-weight: 700;
    color: #0035d2;
}
/* Agenda (list) */
.calendar-shell .fc .fc-list-view {
    border: none;
}
.calendar-shell .fc .fc-list-heading td {
    padding: 9px 16px;
    background-color: #e7f0ff;
}
.calendar-shell .fc .fc-list-heading-main {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0035d2;
}
.calendar-shell .fc .fc-list-heading-alt {
    font-size: 12px;
    color: #6a7391;
}
.calendar-shell .fc .fc-list-item td {
    padding: 10px 16px;
    vertical-align: middle;
}
.calendar-shell .fc .fc-list-item:hover td {
    background-color: #fbfcff;
    cursor: pointer;
}
.calendar-shell .fc .fc-list-item-time {
    width: 150px;
    color: #4a5568;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.calendar-shell .fc .fc-list-item-marker .fc-event-dot {
    width: 12px;
    height: 12px;
    border-radius: 4px;
}
/* Icon links, as on the welcome page (_welcome.css) - only the spacing in the day heading differs */
.calendar-shell .appointment-list-downloads {
    margin-left: 14px;
}
.calendar-shell .appointment-list-downloads a {
    cursor: pointer;
}
.calendar-shell .appointment-list-downloads a:hover {
    opacity: 0.7;
    text-decoration: none;
}
/* ------------------------------------------------------------------- */
.calendar-shell .appt-list-cell {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px 16px;
}
.calendar-shell .appt-list-cell .appt-patient-link {
    font-size: 13px;
    font-weight: 600;
    color: #333333;
}
.calendar-shell .appt-list-cell .appt-pill {
    box-shadow: none;
    border: 1px solid currentColor;
}
.calendar-shell .appt-list-cell .appt-invoice {
    box-shadow: 0 0 0 1px currentColor;
}
.calendar-shell .appt-list-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    font-size: 11.5px;
    color: #6a7391;
}
.calendar-shell .appt-meta-item {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.calendar-shell .appt-list-badges {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-left: auto;
}
/* An agenda row that is dimmed or done fades as a whole row. */
.calendar-shell .fc-list-item.appt-dimmed, .calendar-shell .fc-list-item.appt-status-done {
    box-shadow: none;
    filter: none;
}
.calendar-shell .fc-list-item.appt-status-missed {
    background-image: none;
}
/* =================================================================== */
/* ! Leave and time away
/* One look everywhere - red stripes, a solid red edge and a labelled pill -
/* so time away can never be mistaken for an appointment type's colour.
/* =================================================================== */
/* Day and week: the hours away */
.calendar-shell .fc .fc-bgevent.unavail-block {
    opacity: 1;
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.2) 0 8px, rgba(217, 83, 79, 0.07) 8px 16px);
    box-shadow: inset 3px 0 0 #d9534f;
}
/* Sessions: a light wash of the type's colour with a solid edge (set inline from the type), and
	   the type named - quieter than leave, but never in doubt about what the time is for. */
.calendar-shell .fc .fc-bgevent.avail-band {
    opacity: 1;
}
/* The session's name, placed in its first free stretch (freeLabelOffset in calendarController) so
	   no appointment is drawn over it. */
.calendar-shell .fc .bg-label.bg-label-session {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #0a2540;
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(10, 37, 64, 0.18);
}
/* A month cell has no free stretch to speak of; the tint stays, and the type is named elsewhere. */
.calendar-shell .fc-month-view .bg-label-session {
    display: none !important;/* over the inline display jQuery leaves on it */
}
.calendar-shell .bg-swatch {
    display: inline-block;
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 2px;
}
/* Under the date: the day's sessions by type */
.calendar-shell .fc .fc-col-sessions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 3px;
    margin-top: 4px;
}
.calendar-shell .fc .fc-col-session {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    max-width: 100%;
    padding: 1px 7px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    color: #333333;
    font-size: 10px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: help;
}
.calendar-shell .fc .fc-col-session.more {
    color: #878ba0;
}
.calendar-shell .fc .bg-label {
    position: absolute;
    top: 4px;
    left: 8px;
    right: 6px;
    z-index: 1;
    display: inline-block;
    max-width: -webkit-max-content;
    max-width: -moz-max-content;
    max-width: max-content;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #a94442;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.5;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(169, 68, 66, 0.25);
}
/* Whole days: a solid bar in the all-day row and on the month */
.calendar-shell .fc .leave-banner {
    border: none;
    background-color: #d9534f;
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0 6px, transparent 6px 12px);
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
}
.calendar-shell .fc .leave-banner .fc-title, .calendar-shell .fc .leave-banner .fc-content {
    color: #ffffff;
}
/* Agenda rows */
.calendar-shell .fc .fc-list-item.leave-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.leave-banner td {
    background-color: #fdecea;
}
.calendar-shell .fc .fc-list-item.leave-banner:hover td {
    background-color: #fbdedb;
    cursor: default;
}
.calendar-shell .fc .fc-list-item.leave-banner .fc-event-dot {
    background-color: #d9534f;
}
.calendar-shell .fc .fc-list-item.leave-banner .fc-list-item-time {
    color: #a94442;
}
.calendar-shell .leave-list-title {
    font-size: 13px;
    font-weight: 700;
    color: #a94442;
}
/* ! Practice leave
	/* Hatched grey rather than red, so time the whole practice is closed reads differently from one
	/* clinician's leave.
	/* =================================================================== */
.calendar-shell .fc .fc-bgevent.practice-leave-bg {
    opacity: 1;
    background: repeating-linear-gradient(135deg, rgba(91, 107, 140, 0.24) 0 7px, rgba(91, 107, 140, 0.08) 7px 14px);
    box-shadow: inset 0 2px 0 rgba(91, 107, 140, 0.45), inset 0 -2px 0 rgba(91, 107, 140, 0.45);
}
/* =================================================================== */
.calendar-shell .fc .bg-label.practice-leave-label {
    color: #3d4559;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    box-shadow: 0 1px 3px rgba(61, 69, 89, 0.25);
    cursor: help;
}
.calendar-shell .fc .practice-leave-banner {
    border: none;
    background-color: #5b6b8c;
    background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0 6px, transparent 6px 12px);
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
    cursor: default;
}
.calendar-shell .fc .practice-leave-banner .fc-title, .calendar-shell .fc .practice-leave-banner .fc-content {
    color: #ffffff;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner td {
    background-color: #eef1f7;
}
.calendar-shell .fc .fc-list-item.practice-leave-banner .fc-event-dot {
    background-color: #5b6b8c;
}
.calendar-shell .practice-leave-list-title {
    font-weight: 700;
    color: #3d4559;
}
/* ! Public holidays
	/* =================================================================== */
.calendar-shell .fc .holiday-banner {
    border: none;
    background-color: #00796b;
    color: #ffffff;
    font-weight: 700;
    box-shadow: none;
    cursor: default;
}
.calendar-shell .fc .holiday-banner .fc-title, .calendar-shell .fc .holiday-banner .fc-content {
    color: #ffffff;
}
/* =================================================================== */
.calendar-shell .fc .fc-list-item.holiday-banner {
    background: none;
}
.calendar-shell .fc .fc-list-item.holiday-banner td {
    background-color: rgb(230, 242, 240);
}
.calendar-shell .fc .fc-list-item.holiday-banner:hover td {
    background-color: rgb(217, 235, 233);
    cursor: default;
}
.calendar-shell .fc .fc-list-item.holiday-banner .fc-event-dot {
    background-color: #00796b;
}
.calendar-shell .holiday-list-title {
    font-weight: 700;
    color: #00796b;
}
.calendar-shell .fc th.fc-day-header.is-holiday {
    background-color: rgb(230, 242, 240);
}
.calendar-shell .fc .fc-col-holiday {
    display: block;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 95%;
    margin: 4px auto 0;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #00796b;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day-holiday {
    padding: 6px 12px;
    background-color: rgb(230, 242, 240);
    color: #00796b;
    font-size: 12px;
    font-weight: 700;
}
/* The day header carries it too, so it shows with the hours away scrolled out of view */
.calendar-shell .fc th.fc-day-header.is-away {
    background-color: #fdecea;
}
.calendar-shell .fc .fc-col-away {
    display: block;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    max-width: 95%;
    margin: 4px auto 0;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Raised above .fc .fc-event and the status shadows, which would otherwise replace the ring. */
.calendar-shell .fc .fc-event.appt-clash, .calendar-shell .team-day .team-appt.appt-clash {
    box-shadow: 0 0 0 2px #d9534f, 0 2px 6px rgba(217, 83, 79, 0.35);
}
/* A booking inside its clinician's leave - someone needs to move or cover it. */
.calendar-shell .appt-pill-clash {
    gap: 3px;
    background-color: #d9534f;
    color: #ffffff;
}
.calendar-shell .appt-pill-clash i {
    font-size: 9px;
}
/* The week turns pills into dots; a clash stays a red dot with its mark. */
.calendar-shell .fc .fc-agendaWeek-view .fc-time-grid-event .appt-pill.appt-pill-clash, .calendar-shell .team-day .team-appt.is-short .appt-pill.appt-pill-clash {
    background-color: #d9534f;
}
.calendar-shell .fc-day-grid-event .appt-pill-clash {
    display: -ms-inline-flexbox;
    display: inline-flex;
    padding: 0 5px;
    font-size: 0;
}
.calendar-shell .fc-day-grid-event .appt-pill-clash i {
    font-size: 9px;
}
.calendar-shell .status-chip-clash {
    border-color: rgba(217, 83, 79, 0.45);
    background-color: #fdecea;
    color: #a94442;
}
.calendar-shell .status-chip-clash strong {
    color: #a94442;
}
.calendar-shell .status-chip-clash:hover {
    border-color: #d9534f;
}
.calendar-shell .status-chip-clash.active {
    border-color: #d9534f;
    background-color: #d9534f;
    color: #ffffff;
}
.calendar-shell .status-chip-clash.active strong {
    color: #ffffff;
}
/* Rail */
.calendar-shell .clinician-away {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 1px 7px;
    border: 1px solid rgba(217, 83, 79, 0.35);
    border-radius: 20px;
    background-color: #fdecea;
    color: #a94442;
    font-size: 10px;
    font-weight: 700;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
/* Team view */
.calendar-shell .team-day .team-away {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 1;
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.2) 0 8px, rgba(217, 83, 79, 0.07) 8px 16px);
    box-shadow: inset 3px 0 0 #d9534f;
    pointer-events: none;
}
.calendar-shell .team-day .team-away-label {
    position: -webkit-sticky;
    position: sticky;
    top: 54px;
    display: inline-block;
    max-width: calc(100% - 16px);
    margin: 6px 0 0 8px;
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #a94442;
    font-size: 11px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(169, 68, 66, 0.25);
}
.calendar-shell .team-day .team-session {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 0;
    pointer-events: none;
}
/* In the session's first free stretch (top set inline), so appointments never cover it. Takes the
		   pointer for its tooltip; a click on it still books, as the column does. */
.calendar-shell .team-day .team-session-label {
    position: absolute;
    left: 8px;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    max-width: calc(100% - 16px);
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #ffffff;
    color: #0a2540;
    font-size: 10.5px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    box-shadow: 0 1px 3px rgba(10, 37, 64, 0.18);
    pointer-events: auto;
    cursor: help;
}
.calendar-shell .team-day .team-col-head.is-away {
    background-color: #fdecea;
}
.calendar-shell .team-day .team-col-head.is-away-all-day .team-col-name {
    color: #a94442;
}
.calendar-shell .team-day .team-col-away {
    -ms-flex-negative: 1;
        flex-shrink: 1;
    min-width: 0;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 10px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* =================================================================== */
/* ! Team view - one column per clinician
/* =================================================================== */
team-day-view {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
/* Same for the availability editor: as a plain block it grew to its full height and the stage clipped
   it, so the side panel (weekly pattern, appointment types) never scrolled and its foot was cut off. */
.calendar-shell .personal-stage personal-calendar {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
.calendar-shell .team-day {
	-ms-flex: 1;
	    flex: 1;
	min-width: 0;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.calendar-shell .team-day .team-day-scroller {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow: auto;
}
.calendar-shell .team-day .team-day-grid {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    min-width: 100%;
}
.calendar-shell .team-day .team-day-head {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 5;
    display: -ms-flexbox;
    display: flex;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.calendar-shell .team-day .team-gutter-head {
    position: -webkit-sticky;
    position: sticky;
    left: 0;
    z-index: 6;
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    background-color: #ffffff;
}
.calendar-shell .team-day .team-col-head {
    -ms-flex: 1 0 210px;
        flex: 1 0 210px;
    min-width: 210px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    padding: 12px 12px 10px;
    border-left: 1px solid #eef1f7;
}
.calendar-shell .team-day .team-col-head .team-col-swatch {
    width: 10px;
    height: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
}
.calendar-shell .team-day .team-col-head .team-col-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #0a2540;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .team-day .team-col-head .team-col-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 8px;
    border-radius: 20px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 10px;
    font-weight: 700;
}
.calendar-shell .team-day .team-day-body {
    position: relative;
    display: -ms-flexbox;
    display: flex;
}
.calendar-shell .team-day .team-gutter {
    position: -webkit-sticky;
    position: sticky;
    left: 0;
    z-index: 4;
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
}
.calendar-shell .team-day .team-hour {
    position: absolute;
    right: 8px;
    transform: translateY(-50%);
    font-size: 10.5px;
    color: #a3aac0;
    white-space: nowrap;
}
.calendar-shell .team-day .team-hour:first-child {
    transform: translateY(3px);
}
/* Hour rules every 120px and half-hour rules between - 2px a minute, as PX_PER_MINUTE in
	   teamDayView.component.js. Drawn as a background so a long day costs no extra elements. */
.calendar-shell .team-day .team-col {
    position: relative;
    -ms-flex: 1 0 210px;
        flex: 1 0 210px;
    min-width: 210px;
    border-left: 1px solid #eef1f7;
    background-image: linear-gradient(to bottom, #e6eaf2 1px, transparent 1px),
			linear-gradient(to bottom, #f3f5f9 1px, transparent 1px);
    background-size: 100% 120px, 100% 60px;
}
.calendar-shell .team-day.can-book .team-col {
    cursor: pointer;
}
.calendar-shell .team-day .team-ghost {
    display: none;
    position: absolute;
    left: 4px;
    right: 4px;
    height: 20px;/* Above the appointments (z-index 2) and solid, so the time reads over an appointment's edge. */
    z-index: 3;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 0 8px;
    border: 1px dashed #0035d2;
    border-radius: 6px;
    background-color: #e7f0ff;
    box-shadow: 0 1px 4px rgba(0, 53, 210, 0.15);
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    pointer-events: none;
}
/* Drag to move: the card stays put, faded, while a dashed preview follows the pointer and says
	   the new time. Drawn by teamDayView.component.js (startDrag / moveDrag). */
.calendar-shell .team-day.is-dragging {
    cursor: grabbing;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.calendar-shell .team-day.is-dragging .team-col, .calendar-shell .team-day.is-dragging .team-appt {
    cursor: grabbing;
}
.calendar-shell .team-day .team-appt.is-drag-source {
    opacity: 0.35;
}
.calendar-shell .team-day .team-drag-preview {
    position: absolute;
    left: 4px;
    right: 4px;
    z-index: 4;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 1px;
    padding: 4px 7px 4px 6px;
    border: 1px dashed #0035d2;
    border-left: 4px solid #0035d2;
    border-radius: 4px 7px 7px 4px;
    background-color: rgba(0, 53, 210, 0.08);
    color: #0035d2;
    font-size: 11px;
    pointer-events: none;
    overflow: hidden;
}
.calendar-shell .team-day .team-drag-preview .team-drag-time {
    font-weight: 700;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .team-day .team-drag-preview .team-drag-title {
    color: #1f2a44;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day .team-appt {
    position: absolute;
    z-index: 2;
    margin-left: 2px;
    padding: 4px 7px 4px 6px;/* The same light card as the grid's (tint and edge colour inline). */
    border-left: 4px solid transparent;
    border-radius: 4px 7px 7px 4px;
    color: #1f2a44;
    overflow: hidden;
    cursor: pointer;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.06), 0 1px 2px rgba(10, 37, 64, 0.08);
    transition: box-shadow 0.15s ease;
}
.calendar-shell .team-day .team-appt:hover {
    z-index: 3;
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1), 0 4px 12px rgba(10, 37, 64, 0.16);
}
.calendar-shell .team-day .team-appt .appt-pill, .calendar-shell .team-day .team-appt .appt-invoice {
    box-shadow: 0 0 0 1px rgba(10, 37, 64, 0.1);
}
.calendar-shell .team-day .team-appt .team-appt-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 6px;
    min-width: 0;
}
.calendar-shell .team-day .team-appt .team-appt-time {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.calendar-shell .team-day .team-appt .appt-patient-link {
    min-width: 0;
    font-size: 12px;
    font-weight: 600;
    color: #1f2a44;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .team-day .team-appt .appt-patient-link:hover, .calendar-shell .team-day .team-appt .appt-patient-link:focus {
    color: #0035d2;
}
.calendar-shell .team-day .team-appt .team-appt-meta {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
    margin-top: 1px;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .team-day .team-appt .team-appt-practice {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
}
.calendar-shell .team-day .team-appt .team-appt-practice .appt-swatch {
    width: 7px;
    height: 7px;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.7);
}
/* A ten-minute slot has room for one line: start time and name, with the status shrunk to a
		   dot on the right-hand end so it never covers the name. */
.calendar-shell .team-day .team-appt.is-short {
    padding-top: 2px;
    padding-bottom: 2px;
    padding-right: 34px;
}
.calendar-shell .team-day .team-appt.is-short .team-appt-end {
    display: none;
}
.calendar-shell .team-day .team-appt.is-short .appt-badges {
    position: absolute;
    right: 4px;
    top: 50%;
    margin: 0;
    transform: translateY(-50%);
    -ms-flex-wrap: nowrap;
        flex-wrap: nowrap;
    gap: 3px;
}
.calendar-shell .team-day .team-appt.is-short .appt-pill {
    width: 10px;
    height: 10px;
    padding: 0;
    font-size: 0;
    background-color: currentColor;
    box-shadow: 0 0 0 2px #ffffff;
}
.calendar-shell .team-day .team-appt.is-short .appt-invoice {
    width: 12px;
    height: 12px;
    font-size: 8px;
}
.calendar-shell .team-day .team-now {
    position: absolute;
    left: 0;
    right: 0;
    height: 0;
    z-index: 4;
    border-top: 2px solid #d9534f;
    pointer-events: none;
}
.calendar-shell .team-day .team-now:before {
    content: "";
    position: absolute;
    left: -4px;
    top: -5px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: #d9534f;
}
.calendar-shell .team-day .team-day-empty {
    margin: auto;
    padding: 54px 32px;
    text-align: center;
}
.calendar-shell .team-day .team-day-empty i {
    margin-bottom: 14px;
    font-size: 34px;
    color: #d3d9e6;
}
.calendar-shell .team-day .team-day-empty h4 {
    margin: 0 0 8px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #2a307f;
}
.calendar-shell .team-day .team-day-empty p {
    max-width: 52ch;
    margin: 0 auto;
    font-size: 13px;
    line-height: 1.55;
    color: #878ba0;
}
/* =================================================================== */
/* ! Appointment modal
/* =================================================================== */
.appointment-modal .modal-dialog {
    width: 1080px;
    max-width: calc(100vw - 32px);
    margin: 4vh auto;
}
.appointment-modal .modal-content {
    border: none;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
}
/* .settings-shell lays its rail and pane out in a row; here it is header, body, action bar. */
.settings-shell.appointment-shell {
	-ms-flex-direction: column;
	    flex-direction: column;
	max-height: 92vh;

}
.settings-shell.appointment-shell .appointment-header {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 14px;/* Room on the right for the modal's close cross (.dismiss), which sits over the corner. */
    padding: 20px 64px 18px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .appointment-header .appt-pill {
    margin-top: 4px;
    padding: 3px 10px;
    font-size: 10px;
    box-shadow: none;
    border: 1px solid currentColor;
}
.settings-shell.appointment-shell .appointment-header-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The same pale navy band the settings panes open with. */
.settings-shell.appointment-shell .appointment-header-text h3 {
    display: inline-block;
    max-width: 100%;
    margin: 4px 0 10px;
    padding: 6px 14px;
    border-radius: 10px;
    background-color: #e7f0ff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0035d2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .appointment-eyebrow {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.settings-shell.appointment-shell .appointment-when {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px 18px;
    font-size: 12.5px;
    color: #4a5568;
}
.settings-shell.appointment-shell .appointment-when i {
    margin-right: 6px;
    color: #0035d2;
}
.settings-shell.appointment-shell .settings-pane-body {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    padding: 20px 28px 24px;
}
.settings-shell.appointment-shell .appointment-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 1.2fr) minmax(0, 1fr);
        grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
    -ms-flex-align: start;
        align-items: start;
    gap: 20px;
}
.settings-shell.appointment-shell .appointment-side {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
}
.settings-shell.appointment-shell .settings-card {
    padding: 20px 22px;
}
.settings-shell.appointment-shell .booking-card .card-body {
    gap: 14px;
}
.settings-shell.appointment-shell .field-block {
    display: block;
}
.settings-shell.appointment-shell .chip-select {
    -ms-flex-item-align: start;
        align-self: flex-start;
}
.settings-shell.appointment-shell datepicker {
    display: block;
}
/* Read-only only so the picker is used rather than typed over - it is not disabled, so it
		   should not look it. */
.settings-shell.appointment-shell datepicker .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* Appointment type picker - ui-select (selectize theme), so each type can show its colour - dressed
	   as the settings form fields around them. */
.settings-shell.appointment-shell .type-picker .selectize-input {
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: none;
    font-size: 13px;
    color: #333333;
}
.settings-shell.appointment-shell .type-picker .selectize-input.focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.settings-shell.appointment-shell .type-picker .selectize-input > input {
    font-size: 13px;
}
.settings-shell.appointment-shell .type-picker .selectize-dropdown {
    margin-top: 4px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    overflow: hidden;
}
.settings-shell.appointment-shell .type-picker .selectize-dropdown-content {
    max-height: 240px;
    padding: 4px 0;
}
.settings-shell.appointment-shell .type-picker .ui-select-choices-row > .option {
    padding: 7px 12px;
    cursor: pointer;
}
/* The row itself is pinned white (!important in _ui-select.css), so the highlight goes on its option. */
.settings-shell.appointment-shell .type-picker .ui-select-choices-row:hover > .option, .settings-shell.appointment-shell .type-picker .ui-select-choices-row.active > .option {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* The patient search, shared with the new task form, which finds its patient the same way */
/* The patient search stands in for the title, so it is wider and its text larger. */
.settings-shell.appointment-shell .patient-picker-field, .settings-shell.task-create .patient-picker-field {
    -ms-flex: 1 1 520px;
        flex: 1 1 520px;
    max-width: 700px;
}
.settings-shell.appointment-shell .patient-picker, .settings-shell.task-create .patient-picker {
    position: relative;
}
.settings-shell.appointment-shell .patient-picker .form-control, .settings-shell.task-create .patient-picker .form-control {
    height: 42px;
    padding-left: 34px;
    padding-right: 34px;
    font-size: 14px;
}
.settings-shell.appointment-shell .patient-picker.is-open .form-control, .settings-shell.task-create .patient-picker.is-open .form-control {
    border-color: #0035d2;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.settings-shell.appointment-shell .patient-picker-icon, .settings-shell.task-create .patient-picker-icon {
    position: absolute;
    left: 13px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 13px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.appointment-shell .patient-picker-clear, .settings-shell.task-create .patient-picker-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.appointment-shell .patient-picker-clear:hover, .settings-shell.task-create .patient-picker-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.appointment-shell .patient-results, .settings-shell.task-create .patient-results {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 20;
    max-height: 280px;
    margin: 0;
    padding: 4px 0;
    overflow-y: auto;
    list-style: none;
    border: 1px solid #0035d2;
    border-top: none;
    border-radius: 0 0 8px 8px;
    background-color: #ffffff;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.settings-shell.appointment-shell .patient-result, .settings-shell.task-create .patient-result {
    padding: 8px 12px;
    font-size: 13px;
    color: #333333;
    cursor: pointer;
}
.settings-shell.appointment-shell .patient-result.is-active, .settings-shell.task-create .patient-result.is-active {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.appointment-shell .patient-results-note, .settings-shell.task-create .patient-results-note {
    padding: 9px 12px;
    font-size: 12.5px;
    font-style: italic;
    color: #a3aac0;
}
/* The search and, beside it, the way to register someone it does not find */
.settings-shell.appointment-shell .patient-picker-row, .settings-shell.task-create .patient-picker-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.settings-shell.appointment-shell .patient-picker-row .patient-picker, .settings-shell.task-create .patient-picker-row .patient-picker {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.appointment-shell .patient-create-btn, .settings-shell.task-create .patient-create-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    height: 42px;
    padding: 0 15px;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 12px;
    font-style: normal;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .patient-create-btn:hover, .settings-shell.task-create .patient-create-btn:hover {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell.appointment-shell .patient-option, .settings-shell.appointment-shell .patient-result, .settings-shell.task-create .patient-option, .settings-shell.task-create .patient-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
    min-width: 0;
}
.settings-shell.appointment-shell .patient-option .patient-option-name, .settings-shell.appointment-shell .patient-result .patient-option-name, .settings-shell.task-create .patient-option .patient-option-name, .settings-shell.task-create .patient-result .patient-option-name {
    min-width: 0;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .patient-option .patient-option-dob, .settings-shell.appointment-shell .patient-result .patient-option-dob, .settings-shell.task-create .patient-option .patient-option-dob, .settings-shell.task-create .patient-result .patient-option-dob {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell.appointment-shell .patient-option .patient-option-elsewhere, .settings-shell.appointment-shell .patient-result .patient-option-elsewhere, .settings-shell.task-create .patient-option .patient-option-elsewhere, .settings-shell.task-create .patient-result .patient-option-elsewhere {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-left: auto;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #8a90a3;
    font-size: 10.5px;
}
.settings-shell.appointment-shell .type-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 9px;
    min-width: 0;
}
.settings-shell.appointment-shell .type-option .type-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .type-option .type-duration {
    margin-left: auto;
    padding-left: 12px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell.appointment-shell .type-swatch {
    display: inline-block;
    width: 12px;
    height: 12px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 3px;
    box-shadow: inset 0 0 0 1px rgba(10, 37, 64, 0.12);
}
.settings-shell.appointment-shell textarea.form-control {
    min-height: 96px;
}
.settings-shell.appointment-shell .additional-message .count-remaining {
    color: #a3aac0;
}
/* Progress ticks as a two-column set of chips, each carrying the time it was ticked. */
.settings-shell.appointment-shell .progress-steps {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
}
.settings-shell.appointment-shell .progress-step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 2px 8px;
    padding: 7px 10px;
    border-radius: 8px;
}
.settings-shell.appointment-shell .progress-step .progress-step-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.appointment-shell .progress-step .progress-step-time {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    padding-left: 21px;
    font-size: 10px;
    font-weight: 400;
    color: #6a7391;
}
.settings-shell.appointment-shell .progress-step .progress-step-time:empty {
    display: none;
}
.settings-shell.appointment-shell .progress-step-missed.selected {
    background-color: #fdecea;
    border-color: rgba(217, 83, 79, 0.35);
    color: #a94442;
}
.settings-shell.appointment-shell .progress-divider {
    margin: 14px 0 8px;
    padding-top: 12px;
    border-top: 1px dashed #e0e6ed;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 9px 0;
    border-bottom: 1px dashed #e0e6ed;
    font-size: 12.5px;
}
.settings-shell.appointment-shell .reminder-row i {
    width: 16px;
    text-align: center;
    color: #0035d2;
}
.settings-shell.appointment-shell .reminder-row .reminder-channel {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    color: #333333;
}
.settings-shell.appointment-shell .reminder-row .reminder-channel small {
    font-weight: 400;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-row .reminder-time {
    font-size: 11.5px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
/* Invoices: each a summary row with its billing items beneath it */
.settings-shell.appointment-shell .invoice-block {
    padding: 10px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.settings-shell.appointment-shell .invoice-block:last-of-type {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell.appointment-shell .invoice-block:first-child {
    padding-top: 0;
}
.settings-shell.appointment-shell .invoice-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    font-size: 12.5px;
}
.settings-shell.appointment-shell .invoice-items {
    margin: 8px 0 0 12px;
    padding-left: 12px;
    border-left: 2px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-items:empty {
    display: none;
}
.settings-shell.appointment-shell .invoice-items.is-cancelled {
    opacity: 0.55;
}
.settings-shell.appointment-shell .invoice-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding: 3px 0;
    font-size: 12px;
    color: #333333;
}
.settings-shell.appointment-shell .invoice-item-code {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 0 6px;
    border-radius: 4px;
    background-color: #e7f0ff;
    color: #2a307f;
    font-size: 10.5px;
    font-weight: 600;
    line-height: 1.6;
}
.settings-shell.appointment-shell .invoice-item-desc {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-item-qty, .settings-shell.appointment-shell .invoice-item-discount {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11px;
    color: #878ba0;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-item-amount {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    min-width: 64px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}
.settings-shell.appointment-shell .invoice-item-summary {
    margin-top: 3px;
    padding-top: 5px;
    border-top: 1px dashed #e0e6ed;
    font-weight: 600;
}
.settings-shell.appointment-shell .invoice-items-note {
    padding: 2px 0;
    font-size: 11.5px;
    font-style: italic;
    color: #a3aac0;
}
/* Xero's reference, on one line above the items; the whole of it on hover */
.settings-shell.appointment-shell .invoice-reference {
    padding: 2px 0;
    font-size: 11.5px;
    color: #878ba0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-reference span {
    color: #333333;
}
.settings-shell.appointment-shell .invoice-status {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 2px 9px;
    border-radius: 20px;
    font-size: 10.5px;
    font-weight: 700;
    white-space: nowrap;
}
.settings-shell.appointment-shell .invoice-status-draft {
    background-color: #f8f9fa;
    color: #6a7391;
    border: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-status-awaiting {
    background-color: #fff8e1;
    color: #856404;
    border: 1px solid rgba(255, 193, 7, 0.7);
}
.settings-shell.appointment-shell .invoice-status-overdue {
    background-color: #fdecea;
    color: #a94442;
    border: 1px solid rgba(217, 83, 79, 0.35);
}
.settings-shell.appointment-shell .invoice-status-paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    border: 1px solid rgba(32, 201, 151, 0.3);
}
.settings-shell.appointment-shell .invoice-status-cancelled {
    background-color: #f8f9fa;
    color: #a3aac0;
    border: 1px solid #e0e6ed;
}
.settings-shell.appointment-shell .invoice-dates {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell.appointment-shell .invoice-total {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-weight: 700;
    color: #333333;
    font-variant-numeric: tabular-nums;
}
.settings-shell.appointment-shell .invoice-total.is-cancelled {
    color: #a3aac0;
    text-decoration: line-through;
}
.settings-shell.appointment-shell .invoice-chip-outstanding {
    background-color: #fff8e1;
    color: #856404;
    border-color: rgba(255, 193, 7, 0.7);
}
.settings-shell.appointment-shell .invoice-chip-paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    border-color: rgba(32, 201, 151, 0.3);
}
.settings-shell.appointment-shell .reminder-empty {
    padding: 4px 0;
    font-size: 12.5px;
    font-style: italic;
    color: #a3aac0;
}
.settings-shell.appointment-shell .reminder-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin-top: 14px;
}
.settings-shell.appointment-shell .detail-row .detail-label {
    -ms-flex-preferred-size: 110px;
        flex-basis: 110px;
    width: 110px;
}
.settings-shell.appointment-shell .settings-action-bar {
    padding: 12px 28px;
}
.settings-shell.appointment-shell .settings-action-bar .action-bar-start {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 18px;
}
/* The patient's name and the way to their dashboard, side by side */
.settings-shell.appointment-shell .appointment-title-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 4px 0 10px;
}
.settings-shell.appointment-shell .appointment-title-row h3 {
    margin: 0;
}
.settings-shell.appointment-shell .patient-link-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 5px 13px;
    border: 1px solid rgba(0, 53, 210, 0.25);
    border-radius: 20px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .patient-link-btn i {
    font-size: 11px;
}
.settings-shell.appointment-shell .patient-link-btn:hover, .settings-shell.appointment-shell .patient-link-btn:focus-visible {
    border-color: #0035d2;
    background-color: #e7f0ff;
    outline: none;
}
/* Delete: a deliberate, outlined button - the same shape as Cancel and Save - that asks in place. */
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete {
    width: auto;
    padding: 4px 18px;
    border: 1px solid rgba(217, 83, 79, 0.45);
    background-color: #ffffff;
    color: #d9534f;
    font-size: 12px;
    transition: all 0.2s ease;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete i {
    margin-right: 4px;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-delete:hover, .settings-shell.appointment-shell .settings-action-bar .btn.btn-delete:focus-visible {
    border-color: #d9534f;
    background-color: #fdecea;
    color: #a94442;
    outline: none;
}
/* Across the whole bar while it is asked: the question (and any choices) on the left, the answers
	   together on the right - so if the bar is too narrow, the pair wraps as one. */
.settings-shell.appointment-shell .confirm-delete {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    font-size: 12.5px;
    font-weight: 600;
    color: #a94442;
}
.settings-shell.appointment-shell .confirm-delete .confirm-delete-text i {
    margin-right: 4px;
    color: #d9534f;
}
/* Delete swaps the bar's buttons with ng-if, and ngAnimate holds a leaving element on screen for as
	   long as its CSS transition runs (0.3s on .btn) - so for a moment both sets showed. No transition
	   while entering or leaving makes the swap instant; !important to beat the buttons' own transition. */
.settings-shell.appointment-shell .settings-action-bar .ng-enter, .settings-shell.appointment-shell .settings-action-bar .ng-leave {
    transition: none !important;
}
.settings-shell.appointment-shell .confirm-delete-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-left: auto;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete {
    width: auto;
    padding: 4px 18px;
    border: none;
    background-color: #d9534f;
    color: #ffffff;
    font-size: 12px;
    transition: background-color 0.15s ease;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete:hover {
    background-color: #a94442;
    color: #ffffff;
}
.settings-shell.appointment-shell .settings-action-bar .btn.btn-confirm-delete:disabled {
    opacity: 0.6;
}
.settings-shell.appointment-shell .settings-action-bar .confirm-delete .btn.btn-cancel {
    width: auto;
}
/* =================================================================== */
/* ! Availability (personalCalendar)
/* A side panel that says what the availability amounts to - the weekly
/* pattern and what is coming up - beside a FullCalendar 4 week. Available
/* time is a tint of its type's colour; leave is striped red.
/* =================================================================== */
.calendar-shell .availability {
	-ms-flex: 1;
	    flex: 1;
	min-height: 0;
	display: -ms-flexbox;
	display: flex;
}
.calendar-shell .availability .availability-side {
    -ms-flex: 0 0 268px;
        flex: 0 0 268px;
    width: 268px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 22px;
    padding: 18px 14px 18px 18px;
    border-right: 1px solid #eef1f7;
    overflow-y: auto;
}
.calendar-shell .availability .availability-who-label, .calendar-shell .availability .availability-section-title {
    margin: 0 0 6px;
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #a3aac0;
}
.calendar-shell .availability .availability-who-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
    line-height: 1.25;
}
.calendar-shell .availability .availability-who-practice {
    margin-top: 2px;
    font-size: 12px;
    color: #878ba0;
}
.calendar-shell .availability .availability-hint {
    margin: 0 0 10px;
    font-size: 11.5px;
    line-height: 1.45;
    color: #878ba0;
}
.calendar-shell .availability .availability-palette {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
/* Also .fc-event - the palette's Draggable keys on it - so FullCalendar's own event look is undone. */
.calendar-shell .availability .palette-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 9px;
    margin: 0;
    padding: 7px 10px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    cursor: grab;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.calendar-shell .availability .palette-item:hover {
    border-color: #0035d2;
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.12);
}
.calendar-shell .availability .palette-item:active {
    cursor: grabbing;
}
.calendar-shell .availability .palette-swatch {
    width: 10px;
    height: 10px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 3px;
}
.calendar-shell .availability .palette-leave .palette-swatch {
    background: repeating-linear-gradient(135deg, #d9534f 0 2px, #f6c8c6 2px 4px);
}
.calendar-shell .availability .palette-grip {
    margin-left: auto;
    font-size: 11px;
    color: #c3c9da;
}
.calendar-shell .availability .overview-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    width: 100%;
    margin-bottom: 2px;
    padding: 7px 8px;
    border: none;
    border-radius: 8px;
    background: none;
    text-align: left;
    transition: background-color 0.15s ease;
}
.calendar-shell .availability .overview-item:hover {
    background-color: #f4f7fe;
}
.calendar-shell .availability .overview-day {
    -ms-flex: 0 0 30px;
        flex: 0 0 30px;
    padding-top: 1px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    color: #0035d2;
}
.calendar-shell .availability .overview-body {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-width: 0;
}
.calendar-shell .availability .overview-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    font-size: 12.5px;
    font-weight: 600;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.calendar-shell .availability .overview-swatch {
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 7px;
    border-radius: 50%;
}
.calendar-shell .availability .overview-swatch.is-leave {
    border-radius: 2px;
    background: repeating-linear-gradient(135deg, #d9534f 0 2px, #f6c8c6 2px 4px) !important;/* over the inline colour, which is the solid key */
}
.calendar-shell .availability .overview-meta {
    margin-top: 1px;
    font-size: 11px;
    color: #878ba0;
}
.calendar-shell .availability .availability-empty {
    margin: 0;
    padding: 0 8px;
    font-size: 11.5px;
    font-style: italic;
    line-height: 1.45;
    color: #a3aac0;
}
.calendar-shell .availability .availability-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 16px 18px 14px;
}
.calendar-shell .availability .availability-key {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    font-size: 11.5px;
    color: #6a7391;
}
.calendar-shell .availability .availability-key span {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.calendar-shell .availability .availability-key i {
    font-size: 11px;
    color: #6a7391;
}
.calendar-shell .availability .key-swatch {
    width: 14px;
    height: 12px;
    border-radius: 3px;
}
.calendar-shell .availability .key-slot {
    background-color: rgba(0, 53, 210, 0.16);
    box-shadow: inset 3px 0 0 #0035d2;
}
.calendar-shell .availability .key-leave {
    background: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.25) 0 3px, #fdecea 3px 6px);
    box-shadow: inset 3px 0 0 #d9534f;
}
.calendar-shell .availability .availability-calendar {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* FullCalendar 4 events */
.calendar-shell .availability .fc .avail-slot, .calendar-shell .availability .fc .avail-leave {
    border-width: 0 0 0 3px;
    border-style: solid;
    border-radius: 6px;
    box-shadow: none;
    font-size: 11.5px;
}
.calendar-shell .availability .fc .avail-slot .fc-content, .calendar-shell .availability .fc .avail-leave .fc-content {
    padding: 2px 4px 1px 5px;
}
.calendar-shell .availability .fc .avail-slot .fc-title, .calendar-shell .availability .fc .avail-leave .fc-title {
    font-weight: 600;
}
.calendar-shell .availability .fc .avail-leave {
    background-image: repeating-linear-gradient(135deg, rgba(217, 83, 79, 0.1) 0 6px, transparent 6px 12px);
}
.calendar-shell .availability .avail-repeat-icon {
    margin-left: 5px;
    font-size: 10px;
    opacity: 0.6;
}
.calendar-shell .availability .fc .fc-mirror {
    opacity: 0.85;
}
/* Room for the all-day row, where whole days of leave sit, even when it is empty. */
.calendar-shell .availability .fc .fc-day-grid {
    min-height: 1.8rem;
}
/* The editor */
.availability-modal .modal-dialog {
	width: 620px;
}
.settings-shell.appointment-shell .availability-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
.settings-shell.appointment-shell .appointment-header-text h3.is-leave {
    background-color: #fdecea;
    color: #a94442;
}
.settings-shell.appointment-shell .kind-switch {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.settings-shell.appointment-shell .kind-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    text-align: left;
    transition: all 0.15s ease;
}
.settings-shell.appointment-shell .kind-option > i {
    margin-top: 1px;
    font-size: 17px;
    color: #a3aac0;
}
.settings-shell.appointment-shell .kind-option strong {
    display: block;
    font-size: 13px;
    color: #333333;
}
.settings-shell.appointment-shell .kind-option small {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell.appointment-shell .kind-option:hover {
    border-color: #cbd5e0;
}
.settings-shell.appointment-shell .kind-option.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.settings-shell.appointment-shell .kind-option.selected > i, .settings-shell.appointment-shell .kind-option.selected strong {
    color: #0035d2;
}
.settings-shell.appointment-shell .kind-option.kind-leave.selected {
    border-color: rgba(217, 83, 79, 0.45);
    background-color: #fdecea;
}
.settings-shell.appointment-shell .kind-option.kind-leave.selected > i, .settings-shell.appointment-shell .kind-option.kind-leave.selected strong {
    color: #a94442;
}
.settings-shell.appointment-shell .form-control.ng-invalid-minute-step {
    border-color: #e0796f;
    box-shadow: 0 0 0 3px rgba(224, 121, 111, 0.15);
}
.settings-shell.appointment-shell .range-input {
    max-width: 320px;
}
.settings-shell.appointment-shell .field-optional {
    margin-left: 4px;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: #c3c9da;
}
.settings-shell.appointment-shell .confirm-delete .chip-select {
    padding: 5px 11px;
    font-size: 11.5px;
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 1200px) {
	.calendar-shell .calendar-search {
		width: 180px;
	}
}
/* Below this the settings shell turns its rail into a strip along the top (see _settings.css). */
@media (max-width: 900px) {
	/* The rail's flex-basis is its width beside the pane; stacked above it, it would become a height. */
	.calendar-shell .calendar-rail {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
    }
	.calendar-shell .mini-month, .calendar-shell .legend-item, .calendar-shell .settings-nav-footer {
        display: none;
    }
	.calendar-shell .calendar-main {
        padding: 12px;
    }
	.calendar-shell .status-total {
        margin-left: 0;
    }
	/* Click or drag on the calendar still adds; the overview gives way to the week. */
	.calendar-shell .availability .availability-side {
        display: none;
    }
	.calendar-shell .availability-key {
        display: none;
    }

	.settings-shell.appointment-shell .appointment-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }

	.settings-shell.appointment-shell .appointment-header, .settings-shell.appointment-shell .settings-pane-body, .settings-shell.appointment-shell .settings-action-bar {
        padding-left: 16px;
        padding-right: 16px;
    }
}
/* =================================================================== */
/* ! Rooms (on appointments, in the rail, and in the booking dialog)
/* =================================================================== */
/* The room an appointment is in, on a line under the patient's name. */
.calendar-shell .fc .appt-room {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    font-size: 10.5px;
    color: #4a5568;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.calendar-shell .fc .appt-room .appt-swatch {
    width: 7px;
    height: 7px;
}
.calendar-shell .notice-actions {
    margin-top: 8px;
}
/* Two appointments in one room at once - an amber ring, so it is not mistaken for the red of leave. */
.calendar-shell .fc .fc-event.appt-room-clash, .team-day .team-appt.appt-room-clash {
	box-shadow: 0 0 0 2px #ffab00, 0 2px 6px rgba(255, 171, 0, 0.35);
}
.team-day .team-appt-room {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 4px;
}
.team-day .team-appt-room .appt-swatch {
    width: 7px;
    height: 7px;
}
/* Whether each room is free at the time picked, at the right of its row in the picker. */
.settings-shell.appointment-shell .room-state {
    margin-left: auto;
    padding-left: 12px;
    font-size: 11px;
    white-space: nowrap;
}
.settings-shell.appointment-shell .room-state.room-free {
    color: #2e7d32;
}
.settings-shell.appointment-shell .room-state.room-busy {
    color: #a94442;
}
.settings-shell.appointment-shell .room-picker.is-busy .selectize-input {
    border-color: #ffab00;
    box-shadow: 0 0 0 3px rgba(255, 171, 0, 0.15);
}
.settings-shell.appointment-shell .room-busy-notice .room-suggestions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin: 10px 0 8px;
}
.settings-shell.appointment-shell .room-busy-notice .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.appointment-shell .room-busy-notice .room-double-book {
    margin-top: 4px;
}
@media (prefers-reduced-motion: reduce) {
	.calendar-shell .calendar-loading span {
		left: 0;
		width: 100%;
		opacity: 0.4;
		animation: none;
	}
}
/* =================================================================== */
/* ! Patient Forms builder (staff-facing modal)
/* Everything here is scoped to `.settings-shell.patient-forms` so it sits
/* on top of _settings.css rather than beside it - the left rail, pane body,
/* action bar, cards, chips and form controls all come from there. This file
/* only adds what the form builder needs that the settings screens do not:
/* the question cards, the preview blocks and the answer list.
/* =================================================================== */
/* Enter only - see .pf-pane below for why the leave phase has to stay bare. */
@keyframes pf-pane-in {
	from {
		opacity: 0;
		transform: translateY(6px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
/* No md-dialog-actions: the toolbar's X dismisses, and sending belongs with the
   preview of the thing being sent rather than in a footer that sits under the
   builder and the answers list too. */
.patient-forms-dialog {
	min-width: 82%;
	width: 82%;
	height: 88vh;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
/* ! Left rail
	/* =================================================================== */
.settings-shell.patient-forms .settings-nav {
    -ms-flex: 0 0 288px;
        flex: 0 0 288px;
    width: 288px;
}
/* Template names run long, so the group title gets the full width and
	   ellipses rather than wrapping into the chevron. */
.settings-shell.patient-forms .settings-nav-group-title .nav-group-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    text-transform: none;
    letter-spacing: 0.01em;
    font-size: 11.5px;
    color: #0a2540;
}
.settings-shell.patient-forms .settings-nav-group-title:not(.collapsed) .nav-group-name {
    color: #0035d2;
}
/* The "Create New Template" entry is an action, not a section, so it reads
	   as a button at the top of the rail rather than another nav row. */
.settings-shell.patient-forms .settings-nav-group.nav-group-create {
    padding-top: 14px;
    padding-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
    margin-bottom: 4px;
}
/* Nothing to divide from. */
.settings-shell.patient-forms .settings-nav.is-empty .nav-group-create {
    border-bottom: none;
    margin-bottom: 0;
}
/* =================================================================== */
.settings-shell.patient-forms .nav-empty-note {
    padding: 4px 16px 20px;
    text-align: center;
    color: #a3aac0;
}
.settings-shell.patient-forms .nav-empty-note i {
    display: block;
    font-size: 22px;
    color: #d3d9e6;
    margin-bottom: 10px;
}
.settings-shell.patient-forms .nav-empty-note strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 12.5px;
    color: #878ba0;
    margin-bottom: 4px;
}
.settings-shell.patient-forms .nav-empty-note span {
    display: block;
    font-size: 11.5px;
    line-height: 1.5;
}
.settings-shell.patient-forms .nav-create-item {
    border: 1px dashed rgba(0, 53, 210, 0.3);
    background-color: #fbfcff;
}
.settings-shell.patient-forms .nav-create-item:hover {
    border-color: #0035d2;
}
.settings-shell.patient-forms .nav-create-item.active {
    border-style: solid;
    border-color: #0035d2;
    background-color: #0035d2;
}
/* Scoped to .ng-enter, not the bare class. ngAnimate reads whatever animation
	   is computed on the element during each phase, so declaring it on .pf-pane
	   itself made it apply to ng-leave as well - the outgoing pane was held in the
	   DOM for the full 220ms and both panes were on screen together. With the
	   leave phase carrying no animation it resolves at zero duration and goes in
	   the same frame; display:none covers the frame ngAnimate needs to flush. */
.settings-shell.patient-forms .pf-pane.ng-enter {
    animation: pf-pane-in 220ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
/* ! Pane scaffolding
	/* =================================================================== */
.settings-shell.patient-forms .pf-pane.ng-leave {
    display: none;
    animation: none;
    transition: none;
}
/* ! Question cards (create / edit)
	/* =================================================================== */
.settings-shell.patient-forms .pf-question-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
    margin-top: 4px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-question-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px 20px;
    position: relative;
    transition: box-shadow 0.18s ease, border-color 0.18s ease, opacity 0.15s ease;
}
.settings-shell.patient-forms .pf-question-card:hover, .settings-shell.patient-forms .pf-question-card:focus-within {
    border-color: rgba(0, 53, 210, 0.25);
    box-shadow: 0 4px 16px rgba(0, 53, 210, 0.08);
}
/* Drag-and-drop reordering (dragReorder directive): the card being moved fades, and a navy
		   line in the gap between cards shows where it will land. */
.settings-shell.patient-forms .pf-question-card.is-dragging {
    opacity: 0.4;
}
.settings-shell.patient-forms .pf-question-card.drop-before::before, .settings-shell.patient-forms .pf-question-card.drop-after::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    height: 3px;
    border-radius: 2px;
    background-color: #0035d2;
}
.settings-shell.patient-forms .pf-question-card.drop-before::before {
    top: -10px;
}
.settings-shell.patient-forms .pf-question-card.drop-after::after {
    bottom: -10px;
}
/* =================================================================== */
.settings-shell.patient-forms .drag-reorder-handle {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 4px 2px;
    color: #c3c9da;
    font-size: 13px;
    line-height: 1;
    cursor: grab;
    transition: color 0.15s ease;
}
.settings-shell.patient-forms .drag-reorder-handle:hover {
    color: #0035d2;
}
.settings-shell.patient-forms .drag-reorder-handle:active {
    cursor: grabbing;
}
.settings-shell.patient-forms .pf-question-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding-bottom: 14px;
    margin-bottom: 16px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-index-badge {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 12px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.settings-shell.patient-forms .pf-question-label {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-question-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* Up / Down / Remove were three `btn-link` words in a row, which read as body
	   copy and pushed the card header out of line. Square icon buttons keep the
	   header one line tall at any question count. */
.settings-shell.patient-forms .pf-icon-btn {
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 8px;
    background: none;
    color: #a3aac0;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.patient-forms .pf-icon-btn:hover:not(:disabled) {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.2);
    color: #0035d2;
}
.settings-shell.patient-forms .pf-icon-btn:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}
.settings-shell.patient-forms .pf-icon-btn.danger:hover:not(:disabled) {
    background-color: #fdecea;
    border-color: rgba(217, 83, 79, 0.3);
    color: #d9534f;
}
/* Boxed .control-label + .form-control from _settings.css rather than
	   md-input-container. A Material floating label sits above the input in the
	   container's top margin, so it clipped against the card, and an underline-only
	   field on a white card gives no sign that it is somewhere you can type. */
.settings-shell.patient-forms .pf-field {
    margin-bottom: 14px;
}
.settings-shell.patient-forms .pf-field .form-control {
    width: 100%;
}
.settings-shell.patient-forms .pf-field select.form-control {
    height: 38px;
    padding-top: 0;
    padding-bottom: 0;
}
/* The greyed operator field is a readout, not something to fill in. */
.settings-shell.patient-forms .pf-field .form-control:disabled {
    cursor: default;
}
/* A type picker with five short labels does not need the full card width. */
.settings-shell.patient-forms .pf-type-field {
    max-width: 280px;
}
/* ! Answer options
	/* One row per option rather than a comma-separated string, so each one can be
	/* edited, added and removed on its own - and the marker shows how the patient
	/* will see it, radio for single choice, box for multiple.
	/* =================================================================== */
.settings-shell.patient-forms .pf-options-field .control-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
}
.settings-shell.patient-forms .pf-options-field .pf-options-hint {
    text-transform: none;
    letter-spacing: 0;
    font-size: 10.5px;
    font-weight: 400;
    font-style: italic;
    color: #b6bccd;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-option-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}
.settings-shell.patient-forms .pf-option-row .form-control {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.patient-forms .pf-option-row .pf-icon-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell.patient-forms .pf-option-marker {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 15px;
    height: 15px;
    border: 2px solid #c3c9da;
    border-radius: 50%;
    background-color: #ffffff;
}
.settings-shell.patient-forms .pf-option-marker.is-checkbox {
    border-radius: 3px;
}
/* ! Add affordances
	/* Beside or at the end of the list they extend rather than in the action bar -
	/* adding is part of writing the form, not one of the two things you do to it
	/* when you have finished.
	/* =================================================================== */
.settings-shell.patient-forms .pf-palette-tile, .settings-shell.patient-forms .pf-add-inline {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 8px;
    width: 100%;
    border: 1px dashed rgba(0, 53, 210, 0.3);
    border-radius: 10px;
    background-color: #fbfcff;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.patient-forms .pf-palette-tile:hover, .settings-shell.patient-forms .pf-add-inline:hover {
    background-color: #e7f0ff;
    border-color: #0035d2;
}
.settings-shell.patient-forms .pf-palette-tile:focus-visible, .settings-shell.patient-forms .pf-add-inline:focus-visible {
    outline: none;
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* The builder is the card list with the component palette to its right. The
	   palette sticks to the top of the scrolling pane so it is in reach at any length. */
.settings-shell.patient-forms .pf-builder-layout {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 20px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-builder-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* Boxed like a question card so it reads as its own panel beside the list. */
.settings-shell.patient-forms .pf-component-palette {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    -ms-flex: 0 0 220px;
        flex: 0 0 220px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
    margin-top: 4px;
    padding: 14px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
}
.settings-shell.patient-forms .pf-palette-title {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-palette-tile {
    -ms-flex-pack: start;
        justify-content: flex-start;
    gap: 12px;
    padding: 12px 14px;
    font-size: 13px;
    text-align: left;
}
.settings-shell.patient-forms .pf-palette-tile > .fa {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 18px;
    font-size: 16px;
    text-align: center;
}
.settings-shell.patient-forms .pf-palette-tile small {
    display: block;
    margin-top: 2px;
    font-family: 'Gordita Regular', sans-serif;
    font-size: 11px;
    color: #a3aac0;
}
.settings-shell.patient-forms .pf-palette-tile-text {
    min-width: 0;
}
/* Inset to the width of the inputs it extends, so it lines up under them
	   rather than under the marker column. */
.settings-shell.patient-forms .pf-add-inline {/* inline-flex, not the shared flex: a block-level flex box would stretch to
		   the card width regardless of width:auto. */
    display: -ms-inline-flexbox;
    display: inline-flex;
    width: auto;
    margin: 2px 0 0 25px;
    padding: 8px 16px;
    font-size: 12px;
}
.settings-shell.patient-forms md-checkbox.pf-required {
    margin: 2px 0 0;
}
/* ! "Other" option
	/* Sits in the option list as the row it will become, rather than as a setting
	/* somewhere else - but tinted and dashed so it reads as generated rather than
	/* as another row to type in.
	/* =================================================================== */
.settings-shell.patient-forms .pf-option-row-other {
    -ms-flex-align: start;
        align-items: flex-start;
    padding: 10px 12px 12px;
    border: 1px dashed rgba(0, 53, 210, 0.28);
    border-radius: 10px;
    background-color: #fbfcff;
}
.settings-shell.patient-forms .pf-option-row-other .pf-option-marker {
    margin-top: 9px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-other-row-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.patient-forms .pf-other-row-body .form-control {
    width: 100%;
    cursor: not-allowed;
}
.settings-shell.patient-forms .pf-other-row-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    margin-bottom: 7px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    color: #333333;
}
.settings-shell.patient-forms .pf-other-row-label span {
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 10.5px;
    font-weight: 400;
    font-style: italic;
    color: #b6bccd;
}
/* The two add buttons sit side by side under the list. */
.settings-shell.patient-forms .pf-option-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin: 2px 0 0 25px;
}
.settings-shell.patient-forms .pf-option-actions .pf-add-inline {
    margin: 0;
}
/* ! Image option rows
	/* One row per image option, mirroring the text option rows above it - an image
	/* question is a choice question whose options happen to be pictures.
	/* =================================================================== */
.settings-shell.patient-forms .pf-image-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    padding: 10px;
    margin-bottom: 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #fbfcff;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-image-thumb {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 84px;
    height: 64px;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    overflow: hidden;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.settings-shell.patient-forms .pf-image-thumb img {
    width: 100%;
    height: 100%;
    -o-object-fit: cover;
       object-fit: cover;
    display: block;
}
.settings-shell.patient-forms .pf-image-thumb .pf-image-thumb-empty {
    color: #c3c9da;
    font-size: 20px;
}
.settings-shell.patient-forms .pf-image-option-fields {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.settings-shell.patient-forms .pf-image-option-fields input[type="file"] {
    font-size: 12px;
    max-width: 100%;
}
.settings-shell.patient-forms .pf-image-status {
    font-size: 11.5px;
    line-height: 1.45;
}
.settings-shell.patient-forms .pf-image-status.warning {
    color: #856404;
}
/* ! Conditional visibility block
	/* =================================================================== */
.settings-shell.patient-forms .pf-conditional {
    margin-top: 14px;
    padding: 14px 16px;
    border: 1px solid rgba(0, 53, 210, 0.15);
    border-radius: 10px;
    background-color: #f7faff;
}
.settings-shell.patient-forms .pf-conditional md-checkbox {
    margin: 0;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-conditional-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0 16px;
    margin-top: 10px;
    padding-top: 14px;
    border-top: 1px dashed rgba(0, 53, 210, 0.2);
}
.settings-shell.patient-forms .pf-conditional-fields .pf-field {
    margin-bottom: 4px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-source {
    -ms-flex: 1 1 320px;
        flex: 1 1 320px;
    min-width: 240px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-operator, .settings-shell.patient-forms .pf-conditional-fields .pf-cond-option {
    -ms-flex: 0 1 220px;
        flex: 0 1 220px;
    min-width: 180px;
}
.settings-shell.patient-forms .pf-conditional-fields .pf-cond-note {
    -ms-flex: 1 1 260px;
        flex: 1 1 260px;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
    font-size: 12px;
    color: #878ba0;
    line-height: 1.45;
    padding-top: 18px;
}
/* ! Check answers
	/* =================================================================== */
.settings-shell.patient-forms .pf-answer-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-answer-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px;
}
.settings-shell.patient-forms .pf-answer-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    padding-bottom: 12px;
    margin-bottom: 6px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-answer-head .pf-answer-patient {
    font-size: 13px;
    font-weight: 600;
    color: #2d3748;
}
.settings-shell.patient-forms .pf-answer-head .pf-answer-dob {
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
.settings-shell.patient-forms .pf-answer-head .pf-submitted-at {
    margin-left: auto;
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
}
.settings-shell.patient-forms .pf-answer-head .pf-submitted-at.muted {
    color: #b6bccd;
    font-style: italic;
}
.settings-shell.patient-forms .pf-answer-row {
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    padding: 11px 0;
    border-bottom: 1px dashed #e0e6ed;
}
.settings-shell.patient-forms .pf-answer-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.settings-shell.patient-forms .pf-answer-row .pf-answer-question {
    -ms-flex: 0 0 45%;
        flex: 0 0 45%;
    max-width: 45%;
    font-size: 12.5px;
    font-weight: 600;
    color: #4a5568;
}
.settings-shell.patient-forms .pf-answer-row .pf-answer-value {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 13px;
    color: #333333;
    word-break: break-word;
}
/* ! Answer chart
	/* =================================================================== */
.settings-shell.patient-forms .pf-chart-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 14px;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-chart-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 18px 20px;
}
.settings-shell.patient-forms .pf-chart-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 12px;
    padding-bottom: 12px;
    margin-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.patient-forms .pf-chart-head .pf-chart-question {
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
}
.settings-shell.patient-forms .pf-chart-head .pf-chart-total {
    margin-left: auto;
    font-size: 11px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.patient-forms .pf-chart-bars {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.settings-shell.patient-forms .pf-chart-bar-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-label {
    -ms-flex: 0 0 28%;
        flex: 0 0 28%;
    max-width: 28%;
    font-size: 12.5px;
    color: #333333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-track {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    height: 12px;
    background-color: #eef1f7;
    border-radius: 999px;
    overflow: hidden;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-fill {
    height: 100%;
    min-width: 2px;
    background-color: #0035d2;
    border-radius: 999px;
    transition: width 220ms ease;
}
.settings-shell.patient-forms .pf-chart-bar-row .pf-chart-bar-count {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    font-size: 11.5px;
    color: #878ba0;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
/* With the dialog footer gone this is the pane's primary action, so it gets a
	   card of its own that names the recipient - the context the footer used to
	   carry - rather than a bare button floating above the preview. */
.settings-shell.patient-forms .pf-send-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    padding: 16px 20px;
    margin-bottom: 20px;
    background: linear-gradient(180deg, #ffffff 0%, #fbfcff 100%);
    border: 1px solid rgba(0, 53, 210, 0.18);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 53, 210, 0.06);
}
/* Nothing to send to - drop the brand tint so it reads as unavailable
		   rather than as the thing you are meant to click. */
.settings-shell.patient-forms .pf-send-card.is-blocked {
    background: #f8f9fa;
    border-color: #e0e6ed;
    box-shadow: none;
}
.settings-shell.patient-forms .pf-send-card.is-blocked .pf-send-icon {
    background-color: #eceff5;
    color: #a3aac0;
}
/* ! Section header + inline send row
	/* =================================================================== */
.settings-shell.patient-forms .pf-send-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 17px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
/* =================================================================== */
.settings-shell.patient-forms .pf-send-copy {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
    min-width: 0;
}
.settings-shell.patient-forms .pf-send-copy strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    line-height: 1.3;
}
.settings-shell.patient-forms .pf-send-copy span {
    display: block;
    font-size: 12px;
    color: #878ba0;
    margin-top: 3px;
    line-height: 1.45;
    word-break: break-word;
}
/* Deliberately not .btn-navy: that is capped at 220px and stretches to fill,
	   which reads as a form button. This is a single committed action, so it hugs
	   its label and lifts on hover. */
.settings-shell.patient-forms .pf-send-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 9px;
    min-width: 178px;
    padding: 12px 24px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13px;
    letter-spacing: 0.01em;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.25);
    transition: transform 0.16s cubic-bezier(0.34, 1.56, 0.64, 1),
			box-shadow 0.16s ease,
			filter 0.16s ease;
}
.settings-shell.patient-forms .pf-send-btn i {
    font-size: 14px;
}
.settings-shell.patient-forms .pf-send-btn:hover:not(:disabled) {
    filter: brightness(1.12);
    transform: translateY(-1px);
    box-shadow: 0 7px 18px rgba(0, 53, 210, 0.3);
}
.settings-shell.patient-forms .pf-send-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.25);
}
.settings-shell.patient-forms .pf-send-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.settings-shell.patient-forms .pf-send-btn:disabled {
    background: #d3d9e6;
    color: #fbfcff;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
    filter: none;
}
/* Holds its line whether or not there is a message, so the preview below does
	   not jump up and down as a send resolves. */
.settings-shell.patient-forms .pf-send-result {
    min-height: 30px;
    margin: -8px 0 16px;
}
/* =================================================================== */
/* ! Rendered form blocks (shared)
/* The staff preview and the page the patient actually fills in are the same
/* form rendered twice, so they share one set of blocks rather than the patient
/* page carrying an inline copy that drifts out of step. Both wrap their
/* questions in .pf-form-render.
/* =================================================================== */
.pf-form-render {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	gap: 14px;

}
.pf-form-render .pf-preview-block {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
    padding: 20px 22px;
}
.pf-form-render .pf-preview-header {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    line-height: 1.3;
    color: #0035d2;
}
.pf-form-render .pf-preview-image {
    display: block;
    max-width: 100%;
    max-height: 420px;
    margin: 0 auto;
    border-radius: 10px;
}
.pf-form-render .pf-preview-question {
    display: block;
    font-size: 17px;
    line-height: 1.35;
    font-weight: 600;
    color: #0a2540;
    margin: 0 0 14px;
}
.pf-form-render .pf-preview-question .pf-required-star {
    color: #d9534f;
    margin-left: 2px;
}
.pf-form-render .pf-answer-input {
    width: 100%;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    padding: 10px 12px;
    background-color: #ffffff;
    color: #333333;
    font-size: 13px;
    transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
.pf-form-render .pf-answer-input:focus {
    border-color: #0035d2;
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
}
.pf-form-render textarea.pf-answer-input {
    resize: vertical;
    min-height: 84px;
}
.pf-form-render select.pf-answer-input {
    height: 42px;
    padding: 0 12px;
}
.pf-form-render .pf-choice-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
}
.pf-form-render .pf-choice-list.inline {
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.pf-form-render .pf-choice-list.inline .pf-choice {
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
}
.pf-form-render .pf-choice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0;
    padding: 11px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    font-size: 13px;
    font-weight: 500;
    color: #333333;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.pf-form-render .pf-choice:hover {
    border-color: rgba(0, 53, 210, 0.35);
    background-color: #fbfcff;
}
.pf-form-render .pf-choice input {
    margin: 0;
    cursor: pointer;
}
/* An actual grid: auto-fill keeps the tiles in even columns at any container
	   width instead of leaving a ragged last row, and they share one row height. */
.pf-form-render .pf-image-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(190px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 14px;
    -ms-flex-align: stretch;
        align-items: stretch;
}
.pf-form-render .pf-image-tile {
    width: auto;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    padding: 8px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #fafbfd;
}
.pf-form-render .pf-image-tile img {
    width: 100%;
    height: 120px;
    -o-object-fit: cover;
       object-fit: cover;
    border-radius: 8px;
    border: 1px solid #e0e6ed;
    display: block;
    background-color: #ffffff;
}
/* Stands in for the picture when an option has no stored file, so the tile keeps
	   its shape and the caption stays readable instead of a broken-image icon. */
.pf-form-render .pf-image-placeholder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    width: 100%;
    height: 120px;
    border-radius: 8px;
    border: 1px dashed #e0e6ed;
    background-color: #f8f9fa;
    color: #b6bccd;
    font-size: 11px;
    text-align: center;
}
.pf-form-render .pf-image-placeholder i {
    font-size: 18px;
}
/* The tile is the answer, so the whole thing is the target - a radio in the
	   caption alone would be a 14px hit area on a phone. */
.pf-form-render .pf-image-choice {
    display: block;
    margin: 0;
    cursor: pointer;
    font-weight: 400;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pf-form-render .pf-image-choice:hover {
    border-color: rgba(0, 53, 210, 0.35);
}
.pf-form-render .pf-image-choice.is-selected {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.pf-form-render .pf-image-choice .pf-image-caption {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin-top: 8px;
    font-size: 12.5px;
    line-height: 1.4;
    color: #333333;
    word-break: break-word;
}
.pf-form-render .pf-image-choice .pf-image-caption input {
    margin: 2px 0 0;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    cursor: pointer;
}
/* Text choices get the same selected treatment, so a picked option reads the
	   same way whichever kind of question it is. */
.pf-form-render .pf-choice.is-selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
/* Indented under the options it belongs to, so it reads as part of the "Other"
	   row rather than as the next question. */
.pf-form-render .pf-other-box {
    margin: 10px 0 0 18px;
    padding-left: 14px;
    border-left: 2px solid rgba(0, 53, 210, 0.25);
}
.pf-form-render .pf-other-box .control-label {
    margin-bottom: 6px;
}
.pf-form-render .pf-other-box .pf-answer-input:disabled {
    background-color: #f8f9fa;
    color: #8a90a3;
}
/* =================================================================== */
/* ! Patient-facing page (/customForm?token=)
/* Sits on the app's own backdrop - `main` in _nav.css paints the navy gradient
/* over the surgeon photo, the same ground the op note and every other page
/* stands on - and stacks three tiers of contrast on top of it: a white panel
/* lifted off the photo, a navy banner across its head, and the pale settings
/* canvas behind the white question cards.
/*
/* The questions themselves come from .pf-form-render above, so what the patient
/* sees matches the preview the clinician signed off on. Only the page chrome
/* around them lives here.
/* =================================================================== */
.custom-form-page {
	display: block;
	padding: 40px 0 56px;

	/* Its own backdrop rather than the surgeon photo `main` gives every other
	   page. That photo is aimed at clinicians; the person here is a patient
	   filling in a health questionnaire, often on a phone, and a picture of
	   surgery is the wrong thing to greet them with.

	   A navy band across the top only, pale beneath, with the panel bridging the
	   two - rather than a card marooned in the middle of a large dark field. The
	   band is sized, not stopped: the gradient layers are 300px tall and pinned to
	   the top, and background-color fills everything below, so there is no colour
	   interpolation at the seam to fringe.

	   The grain is what stops the band banding. Four large low-contrast gradients
	   on an 8-bit display ring visibly; a fractal-noise tile at low opacity breaks
	   the ramp up. It is an inline SVG, so no request and nothing to host. */
	/* A shade deeper than .custom-form-body's #f4f7fe: with both the same, the
	   panel dissolved into the page everywhere below the band. Ground, panel body,
	   card now step light in three stages. */
	background-color: #e7f0ff;
	background-image:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E"),
		radial-gradient(820px 380px at 82% -40%, rgba(0, 188, 212, 0.22), transparent 62%),
		linear-gradient(158deg, #0a2540 0%, #14346b 62%, #0f2b52 100%);
	background-repeat: repeat, no-repeat, no-repeat;
	background-position: top left, top center, top center;
	background-size: 180px 180px, 100% 300px, 100% 300px;

	/* =================================================================== */
}
.custom-form-page .custom-form-panel {
    width: 100%;
    max-width: 780px;
    margin: 0 auto;
    background-color: #ffffff;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 34px rgba(10, 37, 64, 0.16);
}
/* The panel clips with overflow:hidden, but a clipped square-cornered child
	   still leaves the parent's white showing as a hairline along the corner arcs.
	   Giving the banner its own matching radii means there is nothing to reveal. */
.custom-form-page .custom-form-banner {
    border-radius: 16px 16px 0 0;
    padding: 30px 32px 28px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    text-align: center;
}
.custom-form-page .custom-form-banner h1 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 24px;
    line-height: 1.3;
    color: #ffffff;
    margin: 0;
}
.custom-form-page .custom-form-banner p {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.75);
    margin: 8px 0 0;
}
.custom-form-page .custom-form-banner.compact {
    padding: 26px 32px;
}
/* Both logo files are near-white artwork, so they only read on the navy band -
	   never move them onto the white panel below. */
.custom-form-page .custom-form-logo {
    display: block;
    height: 30px;
    width: auto;
    margin: 0 auto 18px;
}
/* Written out rather than nested as `.compact &`: postcss-nested resolves & to
	   the whole accumulated parent, which would have put .compact outside the page. */
.custom-form-page .custom-form-banner.compact .custom-form-logo {
    margin-bottom: 0;
}
/* ! Body
	/* =================================================================== */
.custom-form-page .custom-form-body {
    background-color: #f4f7fe;
    padding: 26px 28px 28px;
}
/* =================================================================== */
.custom-form-page .custom-form-loading {
    min-height: 30vh;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
/* Submitted / bad-token states share one centred card. */
.custom-form-page .custom-form-state {
    background-color: #ffffff;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    padding: 48px 32px;
    text-align: center;
}
.custom-form-page .custom-form-state h2 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    color: #0a2540;
    margin: 0 0 10px;
}
.custom-form-page .custom-form-state p {
    font-size: 14px;
    color: #878ba0;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 44ch;
}
/* ! Banner
	/* =================================================================== */
.custom-form-page .custom-form-state-icon {
    width: 60px;
    height: 60px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 24px;
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(23, 150, 112);
}
.custom-form-page .custom-form-state-icon.warning {
    background-color: #fff8e6;
    color: #856404;
}
/* =================================================================== */
.custom-form-page .custom-form-hint {
    font-size: 12.5px;
    color: #878ba0;
    margin: -8px 0 12px;
}
/* Day / Month / Year rather than one native date input - see the controller. */
.custom-form-page .custom-form-dob-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.custom-form-page .custom-form-dob-fields .pf-answer-input {
    -ms-flex: 1 1 110px;
        flex: 1 1 110px;
    min-width: 96px;
}
/* The year list is the long one, so give it the extra room. */
.custom-form-page .custom-form-dob-fields .pf-answer-input:last-child {
    -ms-flex: 1 1 130px;
        flex: 1 1 130px;
}
.custom-form-page .custom-form-file-name {
    margin-top: 8px;
    font-size: 11px;
    color: #878ba0;
    word-break: break-word;
}
/* ! Page footer
	/* Same line the marketing pages carry, so a patient arriving cold from an
	/* email link can see whose form this is and find the privacy policy. Sits on
	/* the pale ground below the panel, so it needs a darker ink than the white
	/* the marketing footers use - #54596b clears AA on #e7f0ff at 6.07:1.
	/* =================================================================== */
.custom-form-page .custom-form-page-footer {
    max-width: 780px;
    margin: 22px auto 0;
    text-align: center;
}
.custom-form-page .custom-form-page-footer .copyright {
    margin: 0;
    font-size: 12px;
    line-height: 1.6;
    color: #54596b;
}
.custom-form-page .custom-form-page-footer .copyright a {
    color: #0035d2;
    font-weight: 600;
    text-decoration: none;
}
.custom-form-page .custom-form-page-footer .copyright a:hover, .custom-form-page .custom-form-page-footer .copyright a:focus {
    text-decoration: underline;
}
/* ! Submit
	/* A white band closing the panel, so the one action is not floating on the
	/* same pale ground as the questions.
	/* =================================================================== */
.custom-form-page .custom-form-footer {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 24px 28px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
/* =================================================================== */
.custom-form-page .custom-form-submit-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    min-width: 220px;
    padding: 15px 34px;
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.25);
    transition: transform 0.16s cubic-bezier(0.34, 1.56, 0.64, 1),
			box-shadow 0.16s ease,
			filter 0.16s ease;
}
.custom-form-page .custom-form-submit-btn i {
    font-size: 15px;
}
.custom-form-page .custom-form-submit-btn:hover:not(:disabled) {
    filter: brightness(1.12);
    transform: translateY(-1px);
    box-shadow: 0 8px 20px rgba(0, 53, 210, 0.3);
}
.custom-form-page .custom-form-submit-btn:active:not(:disabled) {
    transform: translateY(0);
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.25);
}
.custom-form-page .custom-form-submit-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.25);
}
.custom-form-page .custom-form-submit-btn:disabled {
    background: #d3d9e6;
    color: #fbfcff;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
    filter: none;
}
/* A block a sentence can breathe in, not a bold pill. Small bold red on pink is
	   the hardest combination to read of anything on this page, and the person
	   reading it has just been stopped from finishing a form - so: regular weight,
	   a little larger, left-aligned so a wrapped second line starts where the eye
	   returns, and an accent edge instead of shouting in colour.

	   Both inks are darkened for contrast. The originals measured 3.46:1 (error)
	   and 3.44:1 (success), under the 4.5:1 AA needs at this size; $danger and a
	   deeper green take them to 5.11:1 and 5.09:1. */
.custom-form-page .custom-form-message {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    width: 100%;
    max-width: 460px;
    margin: 0;
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 13.5px;
    font-weight: 400;
    line-height: 1.55;
    text-align: left;
}
.custom-form-page .custom-form-message i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 2px;
    font-size: 15px;
}
.custom-form-page .custom-form-message.success {
    background-color: rgba(32, 201, 151, 0.1);
    color: rgb(18, 115, 86);
    border: 1px solid rgba(32, 201, 151, 0.3);
    border-left: 3px solid rgb(18, 115, 86);
}
.custom-form-page .custom-form-message.error {
    background-color: #fdecea;
    color: #a94442;
    border: 1px solid rgba(169, 68, 66, 0.25);
    border-left: 3px solid #a94442;
}
@media (max-width: 600px) {
	.custom-form-page {
		padding: 16px 0 32px;

		background-size: 180px 180px, 100% 210px, 100% 210px;
	}
	.custom-form-page .custom-form-panel {
        border-radius: 12px;
    }
	.custom-form-page .custom-form-banner {
        border-radius: 12px 12px 0 0;
        padding: 24px 20px 22px;
    }
	.custom-form-page .custom-form-banner h1 {
        font-size: 20px;
    }
	.custom-form-page .custom-form-body {
        padding: 18px 16px 20px;
    }
	.custom-form-page .custom-form-footer {
        padding: 18px 16px 20px;
    }
	.custom-form-page .custom-form-submit-btn {
        width: 100%;
    }
}
@media (prefers-reduced-motion: reduce) {
	.custom-form-page .custom-form-submit-btn {
		transition: none;
	}
	.custom-form-page .custom-form-submit-btn:hover:not(:disabled), .custom-form-page .custom-form-submit-btn:active:not(:disabled) {
        transform: none;
    }
}
/* =================================================================== */
/* ! Responsive
/* =================================================================== */
@media (max-width: 900px) {
	.patient-forms-dialog {
		min-width: 96%;
		width: 96%;
	}

	.settings-shell.patient-forms .settings-nav {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
    }

	.settings-shell.patient-forms .settings-nav-group.nav-group-create {
        border-bottom: none;
        margin-bottom: 0;
    }

	/* The rail is a horizontal strip on narrow screens; the note would break the row. */

	.settings-shell.patient-forms .nav-empty-note {
        display: none;
    }

	.settings-shell.patient-forms .settings-pane-body {
        padding: 18px 16px;
    }

	.settings-shell.patient-forms .pf-answer-row {
        -ms-flex-direction: column;
            flex-direction: column;
        gap: 4px;
    }

	.settings-shell.patient-forms .pf-answer-row .pf-answer-question {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        max-width: 100%;
    }

	/* No room beside the list: the palette becomes a row of tiles under it. */

	.settings-shell.patient-forms .pf-builder-layout {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: stretch;
            align-items: stretch;
    }

	.settings-shell.patient-forms .pf-component-palette {
        position: static;
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        -ms-flex-direction: row;
            flex-direction: row;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }

	.settings-shell.patient-forms .pf-component-palette .pf-palette-title {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
    }

	.settings-shell.patient-forms .pf-component-palette .pf-palette-tile {
        -ms-flex: 1 1 160px;
            flex: 1 1 160px;
        width: auto;
    }
}
/* Anyone who has asked for less motion gets the swap without the lift. */
@media (prefers-reduced-motion: reduce) {
	.settings-shell.patient-forms .pf-pane.ng-enter {
		animation: none;
	}

	.settings-shell.patient-forms .pf-question-card, .settings-shell.patient-forms .pf-icon-btn, .settings-shell.patient-forms .pf-palette-tile, .settings-shell.patient-forms .pf-add-inline, .pf-form-render .pf-choice, .pf-form-render .pf-answer-input {
		transition: none;
	}

	.settings-shell.patient-forms .pf-send-btn {
		transition: none;
	}

	.settings-shell.patient-forms .pf-send-btn:hover:not(:disabled), .settings-shell.patient-forms .pf-send-btn:active:not(:disabled) {
        transform: none;
    }
}
/* md-tooltip renders at the document body, outside .settings-shell, so this rule
   cannot be nested under it. */
.md-tooltip.pf-export-tooltip {
	color: #0035d2;
	background-color: #ffffff;
	font-size: 12px;
	border: 1px solid #0035d2;
	max-width: 12rem;

	/* Material caps .md-tooltip at one clipped line; let it grow to fit wrapped text. */
	height: auto;
	white-space: normal;
	overflow: visible;
	text-overflow: clip;
	line-height: 1.4;
}
/* =================================================================== */
/* ! Feature tips (tip of the day)
/* Same card language as _payments.css / _settings.css so the tip reads
/* as part of the product rather than an advert.
/* =================================================================== */
.tip-card {
	background-color: #ffffff;
	border: 1px solid #e0e6ed;
	border-left: 3px solid #0035d2;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	padding: 16px 18px;
	max-width: 460px;
	margin-top: 8px;

}
.tip-card .tip-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}
.tip-card .tip-eyebrow {
    font-size: 10px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: #0035d2;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    white-space: nowrap;
}
.tip-card .tip-eyebrow i {
    font-size: 12px;
}
.tip-card .tip-pager {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: auto;
}
.tip-card .tip-arrow, .tip-card .tip-close {
    background: none;
    border: none;
    padding: 2px 5px;
    color: #a3aac0;
    font-size: 11px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.15s ease;
}
.tip-card .tip-arrow:hover, .tip-card .tip-close:hover {
    color: #0035d2;
    background-color: #f4f7fe;
}
.tip-card .tip-close {
    font-size: 13px;
    margin-left: 2px;
}
.tip-card .tip-body {
    display: -ms-flexbox;
    display: flex;
    gap: 13px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.tip-card .tip-icon {
    width: 38px;
    height: 38px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 10px;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 16px;
}
.tip-card .tip-text {
    min-width: 0;
}
.tip-card .tip-text h5 {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    margin: 0 0 5px;
    line-height: 1.3;
}
.tip-card .tip-text p {
    font-size: 12.5px;
    color: #878ba0;
    line-height: 1.5;
    margin: 0;
}
.tip-card .tip-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    margin-top: 14px;
    padding-left: 51px;
}
.tip-card .tip-actions .btn {
    width: auto;
    max-width: none;
    margin: 0;
}
@media (max-width: 900px) {
	.tip-card {
		max-width: 100%;
	}
	.tip-card .tip-actions {
        padding-left: 0;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
}
/* =================================================================== */
/* ! ECLIPSE In-Patient Claim (tyroMedipassWidget)
/* -------------------------------------------------------------------
/* A forwards-only three step flow - verify, check eligibility, lodge -
/* inside the claim modal. Reads top to bottom, each step ending in one
/* action bar. Leaving the flow is the claim modal's own Back link.
/* =================================================================== */
.eclipse-flow {
    padding: 1.5rem 1.75rem 1.75rem;
}
.eclipse-flow__title {
    margin: 0;
}
.eclipse-flow__lead {
    color: #6c757d;
    font-size: 13px;
    line-height: 1.6;
    max-width: 60rem;
    margin: 0 0 1.25rem;
}
/* Separates the sections of a long form the way the clinical notes do - the
   left-packed rows alone do not make the breaks obvious. $grey-border-light
   rather than the notes' #ddd, to match the action bar's top border below. */
.eclipse-divider {
    border: none;
    border-top: 2px solid #e0e6ed;
    margin: 2.5em 0 1.5em;
}
/* =================================================================== */
/* ! Stepper
/* =================================================================== */
.eclipse-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    margin: 1.25rem 0 1.5rem;
    padding: 0;
    list-style: none;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.eclipse-stepper__step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.6rem;
    min-width: 0;
    -ms-flex: 0 1 auto;
        flex: 0 1 auto;
}
/* Drawn by the step it leads into, so it can never dangle off the last one. */
.eclipse-stepper__step + .eclipse-stepper__step {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
}
.eclipse-stepper__step + .eclipse-stepper__step::before {
    content: "";
    -ms-flex: 1 1 1.5rem;
        flex: 1 1 1.5rem;
    min-width: 1.5rem;
    height: 2px;
    border-radius: 1px;
    background-color: #e0e6ed;
}
.eclipse-stepper__marker {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    border: 2px solid #e0e6ed;
    background-color: #ffffff;
    color: #6c757d;
    font-size: 12px;
    line-height: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    transition: all 0.25s ease;
}
.eclipse-stepper__label {
    font-size: 13px;
    color: #6c757d;
    white-space: nowrap;
    transition: color 0.25s ease;
}
.eclipse-stepper__step--active .eclipse-stepper__marker {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.eclipse-stepper__step--active .eclipse-stepper__label {
    color: #0035d2;
}
.eclipse-stepper__step--done .eclipse-stepper__marker {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.eclipse-stepper__step--done .eclipse-stepper__label {
    color: #343a40;
}
/* =================================================================== */
/* ! Form rows and fields
/* -------------------------------------------------------------------
/* Not grid rows. In a dialog 80% of the window wide, the 12 column grid
/* deals every field an equal share, so an 8 character provider number
/* gets the same 700px box as a free text description. Here each field is
/* as wide as the value it holds and the row packs left, leaving the
/* slack as whitespace at the end rather than inside every field.
/* =================================================================== */
.eclipse-formrow {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: start;
        align-items: flex-start;
    column-gap: 1.5rem;
}
/* Sized by their contents, never stretched. .form-group's own bottom
       margin spaces the wrapped lines. */
.eclipse-formrow > .form-group {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    max-width: 100%;
}
/* Or a sentence of help under a narrow field sets the whole group's width. */
.eclipse-formrow .help-block {
    max-width: 20rem;
}
/* Aligns an unlabelled control - the remove button - with the inputs, not
   their labels. */
.eclipse-formrow__spacer-label {
    display: block;
    visibility: hidden;
}
/* A label that wraps puts its field a line lower than the ones beside it, so
   the row's inputs no longer sit on one line. The labels here are short and the
   columns are wide, so holding them to one line costs nothing and keeps the
   inputs level. */
.eclipse-formrow .control-label, .eclipse-fieldgrid .control-label {
    white-space: nowrap;
}
/* =================================================================== */
/* ! Field hints
/* -------------------------------------------------------------------
/* What used to be a line of help under the field. Held in a tooltip on
/* the label instead: most of these hints only apply to some claims, and
/* under the field each one appearing and disappearing moved everything
/* below it as the form was filled in. On the label they change nothing
/* but the label.
/*
/* Errors are not hints and stay where they are - a message saying the
/* claim will be rejected has to be read, not found by hovering.
/* =================================================================== */
/* The glyph is a child rather than this element itself, so that this element is the
   whole affordance. md-tooltip hangs off its immediate DOM parent for both the hover
   target and the aria-label it may set, so that parent wants to be the hint as a
   whole, not the glyph inside it.

   (An earlier note here said the tooltip would inherit the glyphicon font and come
   out as glyphs. It would not - md-tooltip detaches itself at link time and renders
   under <body>. The structure is right; that was the wrong reason for it.) */
.eclipse-hint {
    display: inline-block;
    margin-left: 0.3rem;
    color: #6c757d;
    cursor: help;
}
.eclipse-hint .glyphicon {
    font-size: 11px;/* .glyphicon nudges itself down a pixel to sit in a line of text; beside a
           label it reads as sitting low. */
    top: 0;
}
.eclipse-hint:hover {
    color: #0035d2;
}
/* Angular Material's own tooltip is a nowrap chip: a sentence comes out as one
   line four times the width of the field it explains. Dressed like the SNOMED
   concept tooltip instead - a small light card that wraps - and held to a width
   a sentence reads well at.

   Specificity over the theme's own .md-tooltip rule, which is injected into the
   head at bootstrap and so wins a tie against this file. */
body .md-tooltip.eclipse-tooltip {
    max-width: 16rem;
    height: auto;
    padding: 8px 12px;
    white-space: normal;
    font-size: 12px;
    font-weight: 400;
    line-height: 1.5;
    color: #343a40;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 4px;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
/* The card is opaque, where the chip it replaces is read through. */
body .md-tooltip.eclipse-tooltip.md-show {
    opacity: 1;
}
/* CatTrax's own action icons, at the 16px every other delete in the app uses. Centred in the button frame
   rather than sitting on the text baseline, which is where an inline img lands by default. */
.eclipse-icon {
    width: 16px;
    height: 16px;
    vertical-align: middle;
}
/* The row's icon actions - the options chevron and the bin. Unframed: a .btn-default box around a 16px glyph
   carries more weight than the inputs it sits beside, and there are two of them on every item row. The icon is
   the affordance, the way it is everywhere else these icons appear in the app.

   Sized to keep the click target honest, and to stay level with the inputs on the row. */
.eclipse-iconbtn {
    border: 0;
    background: transparent;
    box-shadow: none;
    padding: 6px 8px;
    color: #6c757d;
}
.eclipse-iconbtn:hover, .eclipse-iconbtn:focus, .eclipse-iconbtn:active {
    border: 0;
    background: transparent;
    box-shadow: none;
    outline: 0;
    color: #0035d2;
}
.eclipse-field {
    max-width: 100%;
}
/* 3-6 digits: MBS item numbers, and the shorter whole numbers beside them. */
.eclipse-field--number {
    width: 9rem;
}
/* Exactly 8 characters: Medicare provider numbers and facility IDs. */
.eclipse-field--code {
    width: 11rem;
}
.eclipse-field--money {
    width: 10rem;
}
/* Date inputs carry picker furniture, so they need more than ten characters. */
.eclipse-field--date {
    width: 13rem;
}
/* A date of birth, typed as day / month / year instead of picked off a calendar. The one date on this form that
   is decades old, and a picker opens on this month - so it is three boxes, in the order they are spoken, which
   is also the only way to make the field read dd/mm/yyyy (a native date input renders in the browser's locale).
   Sized to .eclipse-field--date so it lines up with the real dates in the same grid. */
.eclipse-dob {
    display: -ms-flexbox;
    display: flex;
    gap: 0.35rem;
    width: 13rem;
}
.eclipse-dob .form-control {
    margin: 0;
    text-align: center;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
}
/* Day and month take two digits, the year four, so the year gets the room. */
.eclipse-dob .form-control:nth-child(1), .eclipse-dob .form-control:nth-child(2) {
    -ms-flex: 1 1 0px;
        flex: 1 1 0;
}
.eclipse-dob .form-control:nth-child(3) {
    -ms-flex: 1.6 1 0px;
        flex: 1.6 1 0;
}
/* Up to 20 characters, where the placeholder is longer than the value. */
.eclipse-field--ref {
    width: 18rem;
}
/* Free text: the claim item description. */
.eclipse-field--text {
    width: 26rem;
}
/* STUB code plus a few words. ECLIPSE caps it at 50 characters, but sized to
   what is normally typed rather than to the maximum. */
.eclipse-field--stub {
    width: 13rem;
}
/* The claim item picker, which shows "42702 - Cataract extraction ...". */
.eclipse-field--item {
    width: 24rem;
}
/* Sized by the longest option and its arrow, not by the code held. */
.eclipse-field--choice-sm {
    width: 11rem;
}
.eclipse-field--choice {
    width: 15rem;
}
.eclipse-field--choice-wide {
    width: 19rem;
}
/* The presenting illness picker, whose options run "322 - Bone Marrow transfusion
   or transplant (autologous and allogeneic incl harvesting, cryopreservation)".
   Medicare writes the descriptions, so their length is not ours to trim: sized to
   its longest option like the policy picker below, with .eclipse-field's
   max-width keeping it inside the form. */
.eclipse-field--illness {
    width: auto;
    min-width: 30rem;
}
/* The health fund policy picker, whose options run "Bupa - #88812345 - Overseas
   Visitor Health Cover (OVHC) - LAPSED". Every part of that earns its place -
   two policies at the same fund are told apart by the cover type, and the status
   is a reason not to claim on one - so the option has to be readable in full.
   How wide that is depends on the patient's policies rather than on anything
   this file knows, so the field is sized to its longest option instead of to a
   number picked here; the floor keeps a short-named policy from collapsing to a
   stub, and .eclipse-field's max-width stops a long one overrunning the form. */
.eclipse-field--policy {
    width: auto;
    min-width: 30rem;
}
/* The episode indicators, read across rather than down. Bootstrap's own
   adjacent-checkbox spacing fights the gap and unevens the wrapped rows.

   Sits inside a .eclipse-formrow alongside the episode's fields, so the gap is
   the tighter of the two: 1.75rem between labelled fields reads as separation,
   between five checkboxes on one line it reads as drift. */
.eclipse-checkrow {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.4rem 1rem;
    /* Aligns the first row of boxes with the inputs beside them rather than
       floating them against the labels. */
    padding-top: 0.35rem;
}
.eclipse-checkrow .checkbox-inline + .checkbox-inline {
    margin-left: 0;
}
/* =================================================================== */
/* ! Field grid
/* -------------------------------------------------------------------
/* For the denser parts of the form, where most fields carry a sentence
/* of help wider than the field it explains. Packed left the way
/* .eclipse-formrow packs, each group is as wide as its own sentence, so
/* no two lines start their fields at the same offset and the gaps
/* between them all differ. One column grid instead: the columns are the
/* same on every row of a section, so fields line up down the form as
/* well as across it, with each field's help text under it.
/* =================================================================== */
.eclipse-fieldgrid {
    display: -ms-grid;
    display: grid;
    /* A set column rather than a share of the row: stretching four fields across
       a dialog 80% of the window wide puts a hand's width between a drop-down and
       the one that qualifies it. The slack goes to the end of the row instead. */
    -ms-grid-columns: (16rem)[auto-fill];
        grid-template-columns: repeat(auto-fill, 16rem);
    column-gap: 2rem;
    -ms-flex-align: start;
        align-items: start;
}
/* The column is the width here, so a field kept at its own would only
       leave a ragged edge inside its cell. */
.eclipse-fieldgrid .eclipse-field {
    width: 100%;
}
.eclipse-fieldgrid > .form-group {
    min-width: 0;/* Slack at the end of the column, so a label longer than its field -
           "Servicing Provider ID (optional)" - has somewhere to go instead of
           running at the column beside it. */
    padding-right: 0.75rem;
}
/* A select sizes itself from its options unless it is told not to, which
       leaves a drop-down of short codes narrower than the text input beside it.
       Both fill the column. Stated against the element as well as the class,
       to beat the .eclipse-field--choice widths whatever the source order. */
.eclipse-fieldgrid select.form-control {
    width: 100%;/* .form-control's height, which a select otherwise takes from its font. */
    height: 34px;
}
/* A line of its own: checkboxes that read across, and the declarations
   whose label is a sentence. */
.eclipse-fieldgrid__wide {
    grid-column: 1 / -1;
}
/* Two columns, for the two pickers whose options are a sentence someone else
   wrote - the patient's referrals, and Medicare's presenting illness codes.
   Every other field is one column, so the drop-downs and the text inputs on a
   row are the same width. */
.eclipse-fieldgrid__span2 {
    -ms-grid-column: span 2;
        grid-column: span 2;
}
/* =================================================================== */
/* ! Panels
/* -------------------------------------------------------------------
/* One card per thing being read: the assessment, the item benefits,
/* what is about to be lodged.
/* =================================================================== */
.eclipse-panel {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.25rem;
}
.eclipse-panel--quiet {
    background-color: #f8f9fa;
}
.eclipse-panel__header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 0.85rem;
}
.eclipse-panel__title {
    margin: 0;
    font-size: 15px;
}
.eclipse-panel__note {
    color: #6c757d;
    font-size: 13px;
    line-height: 1.6;
    margin: 0;
}
/* The transaction reference, which practices read out and quote back. */
.eclipse-ref {
    display: inline-block;
    font-family: "Source Code Pro", "SFMono-Regular", Consolas, monospace;
    font-size: 12px;
    letter-spacing: 0.02em;
    background-color: #f2f6fb;
    border: 1px solid #e0e6ed;
    border-radius: 6px;
    padding: 2px 8px;
    color: #343a40;
}
/* =================================================================== */
/* ! Money summary tiles
/* -------------------------------------------------------------------
/* The four numbers the practice acts on, pulled out of the per-item
/* table so the gap is not buried in a row of currency.
/* =================================================================== */
.eclipse-summary {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(8.5rem, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(8.5rem, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}
.eclipse-summary__tile {
    background-color: #f2f6fb;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    padding: 0.7rem 0.9rem;
}
.eclipse-summary__label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6c757d;
    margin-bottom: 0.3rem;
}
.eclipse-summary__value {
    display: block;
    font-size: 18px;
    line-height: 1.2;
    color: #343a40;
}
.eclipse-summary__tile--gap {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: rgba(255, 182, 39, 0.3);
}
.eclipse-summary__tile--gap .eclipse-summary__value {
    color: #a94442;
}
.eclipse-summary__tile--clear {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
}
.eclipse-summary__tile--clear .eclipse-summary__value {
    color: #20c997;
}
/* =================================================================== */
/* ! Callouts - confirm, lodged, failed
/* =================================================================== */
.eclipse-callout {
    border: 1px solid #e0e6ed;
    border-left-width: 4px;
    border-radius: 10px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
}
.eclipse-callout p {
    margin: 0 0 0.5rem;
    font-size: 13px;
    line-height: 1.6;
}
.eclipse-callout p:last-child {
    margin-bottom: 0;
}
.eclipse-callout__title {
    font-size: 14px;
    margin: 0 0 0.5rem;
}
/* Itemised detail under a callout - which items were repriced, and from what to what. Sized to the callout's
   own paragraphs rather than the global list styles, which are set for body copy. */
.eclipse-callout__list {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 13px;
    line-height: 1.6;
}
.eclipse-callout__list li {
    margin-bottom: 0.25rem;
}
.eclipse-callout__list li:last-child {
    margin-bottom: 0;
}
/* An action offered by a callout itself rather than by the step's action bar - the one case being the patient
   payment a lodged claim leaves to collect, which belongs beside the sentence that says so. */
.eclipse-callout__action {
    margin-top: 0.85rem;
}
.eclipse-callout--success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: #20c997;
}
/* A callout sitting inside an .eclipse-panel rather than on its own below one. Its text is inset by its own
   4px accent border and 1.25rem padding, which is exactly the 1.5rem the panel pads its content by - so pulled
   out by that much, the callout spans the panel edge to edge and the words inside it start on the same left
   edge as the panel's heading and prose. Without it a panel reads as three staggered left margins: the title,
   the facts table, and the callout. */
.eclipse-callout--flush {
    margin-left: -1.5rem;
    margin-right: -1.5rem;
}
.eclipse-callout--danger {
    background-color: rgba(217, 83, 79, 0.08);
    border-color: #d9534f;
    color: #a94442;
}
.eclipse-callout--waiting {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: #FFB627;
    color: #856404;
}
/* =================================================================== */
/* ! Action bars
/* -------------------------------------------------------------------
/* Every step ends in one. The global .btn-navy / .btn-cancel are full
/* width slabs capped at 220px, which read as a form field when two sit
/* side by side, so in here they size to their label instead.
/* =================================================================== */
.eclipse-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid #e0e6ed;
}
.eclipse-actions .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
}
/* Pushes the secondary action away from the primary, so the button that sends
   a claim to Medicare is never the one under a stray click. Once the primary is
   gone the pair collapses back to one right-aligned button. */
.eclipse-actions__spacer {
    margin-right: auto;
}
.eclipse-actions__spacer:only-child {
    margin-right: 0;
}
.eclipse-actions--inline {
    margin-top: 1rem;
    padding-top: 0;
    border-top: 0;
}
/* =================================================================== */
/* ! Tables inside the flow
/* =================================================================== */
.eclipse-table {
    margin-bottom: 0;
    font-size: 13px;
}
.eclipse-table > thead > tr > th {
    border-bottom-width: 1px;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #6c757d;
    white-space: nowrap;
}
.eclipse-table > tbody > tr > td {
    vertical-align: middle;
}
/* The totals row reads as a summary of the rows above it, not another item. */
.eclipse-table > tbody > tr.eclipse-table__total > td {
    border-top: 2px solid #e0e6ed;
    background-color: #f2f6fb;
}
/* Label / value pairs - the assessment detail rows. */
.eclipse-table--facts > tbody > tr > td:first-child {
    width: 34%;
    color: #343a40;
}
.eclipse-table--facts > tbody > tr:first-child > td {
    border-top: 0;
}
/* Short labels - Status, Benefit, Claim ID - where the eligibility assessment's run to "Possible pre-existing
   ailment". The 34% column above is sized for those, and over a short one it leaves a hand's width of gap
   between the label and the value it belongs to. This sizes the column to its own longest label instead:
   width 1% with nowrap is the shrink-to-fit trick, since an auto-layout table cannot go narrower than the
   content it holds.

   The left padding goes with it. Bootstrap pads every cell 8px, and over a table sitting directly under a
   panel heading that reads as the table being indented from the heading by an amount nothing chose. */
.eclipse-table--facts-narrow > tbody > tr > td:first-child {
    width: 1%;
    white-space: nowrap;
    padding-left: 0;
    padding-right: 1.5rem;
}
.eclipse-numeric {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* =================================================================== */
/* ! Unpaid patient claim confirmation
/* -------------------------------------------------------------------
/* The dialog asked before a patient (PC) claim lodges with its account
/* unsettled. Two pathways sit side by side in it, so they are blocked
/* out rather than run together as prose - the difference between them
/* is the whole point of the dialog.
/* =================================================================== */
.unpaid-claim-modal__lead {
    font-size: 13px;
    line-height: 1.6;
    margin: 0 0 1rem;
}
.unpaid-claim-modal__path {
    border: 1px solid #e0e6ed;
    border-left-width: 4px;
    border-radius: 10px;
    padding: 0.75rem 1rem;
    margin-bottom: 0.75rem;
}
.unpaid-claim-modal__path p {
    margin: 0;
    font-size: 13px;
    line-height: 1.6;
    color: #343a40;
}
.unpaid-claim-modal__path-title {
    font-size: 13px;
    margin: 0 0 0.35rem;
}
/* The pathway being taken by pressing through, which is the one worth reading twice. */
.unpaid-claim-modal__path--warn {
    background-color: rgba(255, 182, 39, 0.1);
    border-color: #FFB627;
}
.unpaid-claim-modal__path--warn p {
    color: #856404;
}
.unpaid-claim-modal__footnote {
    font-size: 12px;
    line-height: 1.6;
    margin: 0.75rem 0 0;
}
/* The two answers sit together rather than stacked: they are alternatives, not an action and an escape. */
.unpaid-claim-modal__actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.75rem;
}
.unpaid-claim-modal__actions .btn {
    width: auto;
    margin: 0;
}
/* =================================================================== */
/* ! Ledger accounts (transaction setup)
/* -------------------------------------------------------------------
/* The bank and revenue accounts every claim books against, chosen
/* before the channel. The pair is centred on the screen; each label
/* sits centred over its own full-width select rather than over the
/* select's text.
/* =================================================================== */
.funder-accounts {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 2rem;
	margin-bottom: 1.5rem;
}
.funder-accounts__field {
	-ms-flex: 0 1 20rem;
	    flex: 0 1 20rem;
	/* Spacing between the pair is the container's gap; drop .form-group's own. */
	margin: 0;
}
.funder-accounts__label {
	display: block;
	/* Centred over the whole field, which the select fills, so the label sits
	   over the middle of the dropdown. */
	text-align: center;
	margin: 0 0 0.5rem;
}
/* Full width so the centred label above spans the same box. Stated against the
   element and class together to beat the .operation-form select rule whatever
   the source order, the way the field grid does. */
.funder-accounts__field select.form-control {
	width: 100%;
}
/* =================================================================== */
/* ! Funder choice (transaction setup)
/* -------------------------------------------------------------------
/* One card per claiming channel, saying what it claims and what the
/* patient's record holds for it, with the likely one marked. Built on
/* the panel look used through the rest of this flow; the action in
/* each card is the same button it has always been.
/* =================================================================== */
.funder-choice {
    max-width: 52rem;
    margin: 0 auto;
}
.funder-choice__head {
    text-align: center;
    margin-bottom: 1.5rem;
}
.funder-choice__heading {
    margin: 0 0 0.4rem;
}
.funder-choice__lede {
    margin: 0 auto;
    max-width: 38rem;
    font-size: 13px;
    line-height: 1.6;
}
.funder-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(14rem, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: 1rem;
    -ms-flex-align: stretch;
        align-items: stretch;
    text-align: left;
}
.funder-card {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 0.3rem;
    padding: 1.15rem 1.25rem 1.25rem;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
}
/* The card the record points to. A navy edge and a flag on an otherwise identical card: it is the likely
   choice, not the only one, and the other two have to stay as easy to pick. */
.funder-card--suggested {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.funder-card__flag {
    position: absolute;
    top: -0.6rem;
    left: 1.15rem;
    padding: 0.15rem 0.55rem;
    font-size: 9px;
    line-height: 1.5;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
}
.funder-card__name {
    font-size: 17px;
    line-height: 1.3;
    color: #0035d2;
}
/* In-patient or out-patient - the one fact that decides which card is right, so it reads before the blurb.
   Set like the summary tile labels rather than as a colour of its own. */
.funder-card__scope {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6c757d;
}
.funder-card__blurb {
    font-size: 12px;
    line-height: 1.55;
    color: #6c757d;
    margin-top: 0.15rem;
}
/* What the patient record holds for this channel, under a rule: it is about this patient rather than about
   the channel, and reads as the last thing checked before the button below it. Pushed to the foot of the
   card so the rules and the buttons line up across the row whatever length the blurbs run to.

   A list rather than one line, because the ECLIPSE card has two things to report: an in-patient claim needs
   a health fund policy and a Medicare entitlement both. Held to the height of two rows on every card so the
   rule stays level across the row while only one of the three carries a second line. */
.funder-card__records {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.3rem;
    width: 100%;
    min-height: 3.3em;
    margin-top: auto;
    padding-top: 0.85rem;
    border-top: 1px solid #e0e6ed;
    font-size: 12px;
    line-height: 1.5;
}
.funder-card__record {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 0.4rem;
}
.funder-card__mark {
    font-size: 12px;
}
.funder-card__record--held {
    color: #20c997;
}
.funder-card__record--missing {
    color: #6c757d;
}
/* btn-navy sets its own metrics and btn-primary keeps Bootstrap's, so the three come out different heights
   and knock the rules above them out of line with each other. Matched here to btn-navy, which two of the
   three already are, and stretched to the card so the action reads as belonging to it. Colours are left to
   the button classes themselves. */
.funder-card__action {
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    margin-top: 0.9rem;
    max-width: none;
    padding: 4px 18px;
    font-size: 12px;
}
.funder-choice__foot {
    margin: 1.25rem 0 0;
    text-align: center;
    font-size: 12px;
}
/* =================================================================== */
/* ! Patient cover check (patientCoverValidate, patientCoverResult)
/* The Validate buttons on the patient form's Medicare, DVA and fund
/* sections, and the answer under each. The answers reuse the ECLIPSE
/* callouts, so a verified card reads the same here as on a claim.
/* =================================================================== */
/* Sits left of the section's Clear (or remove) button. */
.patient-cover-validate {
	margin-right: 6px;
}
.patient-cover-result .eclipse-callout {
    margin: 1rem 0 0;
}
/* Inside a policy's panel the answer sits between the heading and the body, so it shows whether or not the
   policy is open - inset to the panel's own padding. */
.patient-cover-result--in-panel .patient-cover-result {
	padding: 0 15px 15px;
}
.patient-cover-result__stale {
	color: #856404;
}
.patient-cover-result__differences {
	margin: 0.75rem 0 0;
	background-color: transparent;
}
.patient-cover-result__differences th, .patient-cover-result__differences td {
    vertical-align: middle;
}
/* The scrolling PDF viewer (<pdf-scroll-viewer>) used by the document preview and processing
   report modals. The page column scrolls inside the modal body rather than growing it, so the
   toolbar and the modal's own buttons stay put while a document is read. */
.pdf-scroll-viewer {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	max-width: 100%;
}
.pdf-scroll-viewer-toolbar {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.5rem;
	padding-bottom: 0.75rem;
}
.pdf-scroll-viewer-toolbar .btn {
    width: 5em;
}
.pdf-scroll-viewer-toolbar .control-label {
    padding-left: 0.5rem;
    margin-bottom: 0;
}
.pdf-scroll-viewer-scroll {
	/* Pages are positioned against this box, and offsetTop is read off them to work out what is in
	   view - so it has to be the offset parent, not just the thing that scrolls. */
	position: relative;
	overflow: auto;
	max-height: 60vh;
	background-color: #f8faff;
	border: 1px solid #e0e6ed;
}
/* Inside a viewer modal the document takes the whole window bar the modal's own chrome. A document is
   read a page at a time, and a short panel is a page read a third at a time. The subtracted heights
   are that chrome: the dialog's top margin, the title bar, this body's padding and the toolbar - and,
   on the report, the row its Download and Close buttons sit in. */
.pdf-viewer-modal-body {
	padding: 1rem 1.25rem;
}
.pdf-viewer-modal-body .pdf-scroll-viewer-scroll {
    height: calc(100vh - 190px);
    max-height: none;
}
.pdf-viewer-modal-body.has-footer .pdf-scroll-viewer-scroll {
    height: calc(100vh - 265px);
}
.pdf-scroll-viewer-pages {
	padding: 0.75rem 0;
}
/* Centred by auto margins on a box shrink-wrapped to the page, not by flex. At real size on a narrow
   window a page is wider than the panel, and it has to overflow to the right where the horizontal
   scrollbar can reach it - flex centring would push its left edge out of reach instead. */
.pdf-scroll-viewer-page {
	display: table;
	margin: 0 auto 0.75rem;
	background-color: #ffffff;
	box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18);
}
.pdf-scroll-viewer-page:last-child {
    margin-bottom: 0;
}
.pdf-scroll-viewer-page canvas {
    display: block;
}
.pdf-scroll-viewer-message {
	padding: 3rem 0;
	text-align: center;
}
/* =================================================================== */
/* ! Tyro terminal patient payment (tyroTerminalPayment)
/* -------------------------------------------------------------------
/* Spacing for the terminal panel, and the account-settlement block the
/* ECLIPSE lodgement step wraps it in. The panels themselves reuse the
/* ECLIPSE callouts in _eclipse-claim.css, and the claim modal's PAY
/* view uses that modal's own headings, tables and footer buttons.
/* =================================================================== */
.terminal-payment {
	margin-top: 1rem;
}
/* The claim modal's payment footer. .btn-navy and .btn-cancel are sized for the one-word actions the rest of
   the app puts in a footer - width 100% capped at 220px - and these labels run past that and wrap mid-word.
   Sized to their content instead, the way the ECLIPSE action bar does it (see .eclipse-actions in
   _eclipse-claim.css), and scoped to this footer because .my-modal-footer is shared by 80-odd templates. */
.claim-payment-actions .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
    white-space: nowrap;
}
/* These buttons come and go on ng-if as the payment mode changes, and ngAnimate will not touch the DOM
	   until any transition on the element has finished - so the 0.3s `transition: all` the button styles carry
	   for their hover made every switch between the options and the form sit still for 300ms first. Zeroed
	   only while ngAnimate is running, which it signals with .ng-animate, so the hover keeps its transition.
	   Beats .btn-navy on specificity, so no !important is needed. */
.claim-payment-actions .btn.ng-animate {
    transition: none;
}
/* The patient claim's account, settled on the ECLIPSE lodgement step before the claim goes. Sits inside an
   .eclipse-callout, so only what the callout does not already give it lives here. */
.account-settlement .payment-mode-switch {
    margin-top: 1rem;
}
.account-settlement .row {
    margin-top: 0.5rem;
}
/* Same reason as .claim-payment-actions above: "Raise Account for Payment" runs past the 220px the button
	   styles cap at, and wraps mid-word. */
.account-settlement .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
    white-space: nowrap;
}
/* And the same ngAnimate delay: the buttons here toggle on ng-if as the account is raised and paid. */
.account-settlement .btn.ng-animate {
    transition: none;
}
/* Account / paid / owing, read left to right. Spaced rather than tabulated: three figures do not need a table,
   and the callout's prose reads better with them on one line. */
.account-settlement__figures {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	-ms-flex-align: center;
	    align-items: center;
	gap: 1.5rem;
	font-size: 13px;
	margin-bottom: 0.5rem;
}
/* Sits with the figures it re-reads rather than at the end of the row, and takes no more room than the icon
   needs - the numbers are the content here, this is the thing that updates them. */
.account-settlement__refresh {
	min-width: 0;
	padding: 2px 6px;
	margin-left: -0.75rem;
}
/* Says which of the two payment routes the settlement step is on, and offers the other. A line of prose rather
   than a pair of tabs: the two are not equal choices to weigh up - one is how the account is normally settled
   and the other is the exception - and a sentence can say so where a tab cannot. */
.payment-mode-switch {
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	background-color: #e7f0ff;
	padding: 0.75rem 1rem;
	margin-bottom: 1rem;
}
.payment-mode-switch-label {
	color: #0a2540;
	font-size: 13px;
	line-height: 1.6;
}
/* The alternative route. Underlined rather than button-shaped, so it does not compete with the action that
	   actually takes the payment. */
.payment-mode-switch-label a {
    cursor: pointer;
    margin-left: 0.35rem;
    text-decoration: underline;
}
/* =================================================================== */
/* ! Claimable items (progress note / operation note / claim modal)
/* -------------------------------------------------------------------
/* Laid out as the transcription processor's AI Assist bar is: one
/* blue-box holding a toolbar row of controls, with the settings panel
/* dropping down inside the same box behind the gear.
/*
/* An item code and a comment are two ways to record the same piece of
/* work, and either on its own is enough. The rule between the two rows
/* says that where a paragraph of instructions used to; the clinician
/* reads the form, not a preamble.
/* =================================================================== */
/* One row of controls, as the AI Assist bar is. */
.claimable-items .claimable-items__toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.claimable-items .claimable-items__label {
    color: #555555;
    font-weight: bold;
    white-space: nowrap;
}
/* Sized to the widest fee the practice will bill rather than sharing the row's
	   stretch - a price is a short field and reads wrong when it is not. */
.claimable-items .claimable-items__fee {
    width: 9em;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* The vertical line after the section's name, as the AI Assist bar draws it. Scoped, as
	   the AI Assist bar carries its own copy inline. */
.claimable-items .toolbar-divider {
    width: 1px;
    -ms-flex-item-align: stretch;
        -ms-grid-row-align: stretch;
        align-self: stretch;
    min-height: 2.25em;
    background-color: #cccccc;
}
.claimable-items .ui-select-container {
    margin: 0;
}
/* Between the toolbar rows, and the same line as the AI Assist bar's own divider. */
.claimable-item-or {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 0.75rem;
	margin: 1rem 0;
	color: #6c757d;
	font-size: 13px;
}
.claimable-item-or::before, .claimable-item-or::after {
	content: "";
	-ms-flex: 1;
	    flex: 1;
	border-top: 1px solid #cccccc;
}
/* The house plus button - square, navy, beside the row it adds. */
.btn-add-claimable-item {
	height: 34px;
	width: 34px;
	margin: 0;
	padding: 0;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
/* =================================================================== */
/* ! Uncoded rows
/* -------------------------------------------------------------------
/* A comment nobody has coded yet stands in the Item column where a code
/* would be. Marked rather than left blank, so it reads as work waiting
/* on an administrator and not as a row that failed to load.
/* =================================================================== */
.claimable-item-uncoded {
	display: inline-block;
	padding: 0.1rem 0.5rem;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 8px;
	background: rgba(255, 243, 205, 0.9);
	color: #856404;
	font-size: 12px;
	font-weight: normal;
	white-space: nowrap;
}
/* In the claim modal the marker is the way in to coding the row, so it has to
   read as something to press rather than as a label. */
a.claimable-item-uncoded {
	cursor: pointer;
	text-decoration: none;
}
a.claimable-item-uncoded:hover, a.claimable-item-uncoded:focus {
    border-color: #856404;
    color: #856404;
    text-decoration: none;
}
/* The picker an administrator codes an uncoded row with, sized to sit inside
   a table cell rather than fill the row the way the claim form's does. */
.claimable-item-coder {
	min-width: 16rem;
}
.claimable-item-coder .ui-select-container {
    margin: 0;
}
/* =================================================================== */
/* ! The practice's own item codes
/* -------------------------------------------------------------------
/* The gear's panel, laid out as the prompt manager is: it drops down
/* inside the same box behind a rule, with the list of what the practice
/* holds on the left and the form that adds or edits one on the right.
/* =================================================================== */
.claimable-items__settings {
	margin-top: 15px;
	border-top: 1px solid #cccccc;
	padding-top: 15px;
}
.claimable-items__settings h5 {
    margin-top: 0;
    color: #333333;
    font-weight: 600;
}
.claimable-items__settings-body {
	display: -ms-flexbox;
	display: flex;
	gap: 15px;
	-ms-flex-align: start;
	    align-items: flex-start;
}
.claimable-items__list {
	-ms-flex: 1;
	    flex: 1;
	border: 1px solid #e0e6ed;
	background: #ffffff;
	border-radius: 8px;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.claimable-items__list-scroll {
	max-height: 220px;
	overflow-y: auto;
}
.claimable-items__list-row {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: justify;
	    justify-content: space-between;
	-ms-flex-align: center;
	    align-items: center;
	gap: 10px;
	padding: 8px 10px;
	border-bottom: 1px solid #e0e6ed;
}
.claimable-items__list-name {
	font-size: 0.9em;
	word-break: break-word;
}
.claimable-items__list-name strong {
    margin-right: 6px;
}
.claimable-items__list-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 6px;
	white-space: nowrap;
}
.claimable-items__list-empty {
	color: #6c757d;
	font-style: italic;
	padding: 10px;
	text-align: center;
	font-size: 0.9em;
}
.claimable-items__editor {
	-ms-flex: 2;
	    flex: 2;
	background: #f8f9fa;
	padding: 12px;
	border: 1px solid #e0e6ed;
	border-radius: 8px;
}
.claimable-items__editor .row {
    margin-left: 0;
    margin-right: 0;
}
.claimable-items__editor .form-group:last-child {
    margin-bottom: 0;
}
.claimable-items__editor-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: end;
	    justify-content: flex-end;
	gap: 8px;
	border-top: 1px solid #e0e6ed;
	padding-top: 12px;
}
/* =================================================================== */
/* ! Claims list payment state (claim-modal.tmpl.html)
/* -------------------------------------------------------------------
/* Where the money on each claim has got to, from the patient's side -
/* see paymentState() in claimModalController. The summary line sits
/* above the table; the pill sits under the Patient Due amount.
/* =================================================================== */
.claims-outstanding {
	margin-bottom: 1rem;
	padding: 0.75rem 1rem;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 12px;
	background-color: rgba(255, 243, 205, 0.9);
	color: #856404;
}
/* Money owed back to the patient rather than by them, so not the
	   warning colours of the line above. */
.claims-outstanding.claims-outstanding--overpaid {
    border-color: rgba(0, 188, 212, 0.4);
    background-color: rgba(0, 188, 212, 0.05);
    color: #008c9e;
}
.claim-payment-pill {
	/* On its own line under the amount, sized to its label. */
	display: block;
	width: -webkit-max-content;
	width: -moz-max-content;
	width: max-content;
	margin-top: 0.25rem;
	padding: 2px 10px;
	border-radius: 20px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	white-space: nowrap;
	cursor: help;
}
.claim-payment-pill.claim-payment-pill--paid {
    background-color: rgba(32, 201, 151, 0.2);
    color: #2e7d32;
}
.claim-payment-pill.claim-payment-pill--unpaid {
    background-color: rgba(217, 83, 79, 0.15);
    color: #a94442;
}
.claim-payment-pill.claim-payment-pill--cheque {
    background-color: rgba(255, 182, 39, 0.3);
    color: #856404;
}
.claim-payment-pill.claim-payment-pill--funder {
    background-color: #ebecea;
    color: #6c757d;
}
.claim-payment-pill.claim-payment-pill--overpaid {
    background-color: rgba(0, 188, 212, 0.2);
    color: #008c9e;
}
/* =================================================================== */
/* ! Letter sign-off (beneath the letter text, and in Settings -> Profile)
/* =================================================================== */
.sign-off-section {
	margin-top: 16px;
	padding: 12px 16px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	background: #f8faff;
}
.sign-off-section .sign-off-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 8px;
}
/* Centre the box on the label; the app-wide .check-span nudge and Bootstrap's input margin
		   otherwise leave them out of line. */
.sign-off-section .sign-off-header .check-label {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: 700;
}
.sign-off-section .sign-off-header .check-label input[type="checkbox"] {
    margin: 0;
}
.sign-off-section .sign-off-header .check-label .check-span {
    top: 0;
}
/* The settings pane's inline action, which is scoped to the settings shell. */
.sign-off-section .link-action {
    background: none;
    border: none;
    padding: 0;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}
.sign-off-section .link-action i {
    margin-right: 4px;
}
.sign-off-section .link-action:hover {
    text-decoration: underline;
}
.sign-off-section .link-action[disabled] {
    color: #a0a0a0;
    cursor: default;
    text-decoration: none;
}
.sign-off-actions {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: end;
	    justify-content: flex-end;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 16px;
}
.sign-off-settings .sign-off-actions {
	-ms-flex-pack: justify;
	    justify-content: space-between;
	margin-top: 12px;
}
.sign-off-settings .sign-off-actions .link-action {
    margin-right: auto;
}
.sign-off-status {
	color: #6c757d;
	font-size: 12px;
}
.sign-off-status .fa-check {
    color: #20c997;
}
.sign-off-error {
	color: #a94442;
	font-size: 12px;
}
.sign-off-hint {
	margin: 8px 0;
	color: #6c757d;
	font-size: 12px;
	font-style: italic;
}
.sign-off-editor .note-editor {
    background: #ffffff;
}
/* Gordita, as on the letter screen, where it comes from the form around the editor. Settings has
	   nothing that sets it, so the sign-off fell back to the page font there. */
.sign-off-editor .note-editable {
    font-family: 'Gordita Regular', sans-serif;
}
/* The save icon sits at the far end of the toolbar, away from the formatting buttons. */
.sign-off-editor .note-toolbar .note-save {
    float: right;
    margin-left: auto;
}
/* Read-only: the sign-off as it will sit beneath the letter. Black text and the editor's
	   paragraph spacing, so it reads the same as the editable sign-off and the PDF. */
.sign-off-editor .sign-off-preview {
    min-height: 60px;
    padding: 8px 12px;
    border: 1px dashed #c0cde0;
    border-radius: 8px;
    background: #ffffff;
    color: #000;
}
.sign-off-editor .sign-off-preview p {
    margin: 0 0 10px;
}
.sign-off-editor .sign-off-preview p:last-child {
    margin-bottom: 0;
}
/* =================================================================== */
/* ! Notifications
/* The floating banner, the urgency colours shared with the notification
/* modal, and the admin console. The console is built on the settings
/* modal's shell (.settings-shell in _settings.css, .settings-card,
/* .setting-row and .toggle-switch in _payments.css); only what those
/* do not already cover lives here.
/* =================================================================== */
/* =================================================================== */
/* ! Urgency tones
/* Each tone sets the same three custom properties so every piece below
/* (banner, modal label, pills, preview) is coloured from one place.
/* =================================================================== */
.notice-tone-STANDARD {
	--notice-fg: #2072bb;
	--notice-accent: #2072bb;
	--notice-bg: #eaf2fb;
}
.notice-tone-HIGH {
	--notice-fg: #856404;
	--notice-accent: #FFB627;
	--notice-bg: #fff8e1;
}
.notice-tone-URGENT {
	--notice-fg: #c2410c;
	--notice-accent: #c2410c;
	--notice-bg: #fff1e8;
}
.notice-tone-ERROR {
	--notice-fg: #a94442;
	--notice-accent: #a94442;
	--notice-bg: #fbeceb;
}
/* =================================================================== */
/* ! Floating banner
/* Fixed and out of flow, so it floats over the page instead of pushing
/* it down. The host ignores pointer events so only the card itself
/* blocks clicks on whatever sits beneath it.
/* =================================================================== */
@keyframes notice-banner-in {
	from {
		opacity: 0;
		transform: translateY(-12px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
@keyframes notice-banner-countdown {
	from {
		transform: scaleX(1);
	}

	to {
		transform: scaleX(0);
	}
}
.notice-banner-host {
	position: fixed;
	top: 16px;
	left: 0;
	right: 0;
	z-index: 10000;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-pack: center;
	    justify-content: center;
	padding: 0 16px;
	pointer-events: none;
}
.notice-banner {
	position: relative;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: start;
	    align-items: flex-start;
	gap: 12px;
	width: 100%;
	max-width: 720px;
	padding: 14px 44px 14px 16px;
	background-color: var(--notice-bg);
	border: 1px solid #e0e6ed;
	border-left: 4px solid var(--notice-accent);
	border-radius: 12px;
	box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
	color: #333333;
	text-align: left;
	overflow: hidden;
	pointer-events: auto;
	animation: notice-banner-in 0.25s ease-out;
}
.notice-banner .notice-banner-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 18px;
    line-height: 20px;
    color: var(--notice-fg);
}
.notice-banner .notice-banner-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 14px;
    line-height: 20px;
}
.notice-banner .notice-banner-body p {
    margin: 0;
}
.notice-banner .notice-banner-title {
    display: block;
    font-weight: 700;
    color: var(--notice-fg);
}
.notice-banner .notice-banner-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 28px;
    height: 28px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #6c757d;
    cursor: pointer;
}
.notice-banner .notice-banner-close:hover, .notice-banner .notice-banner-close:focus {
    background-color: rgba(0, 0, 0, 0.1);
    color: #333333;
    outline: 0;
}
/* Shrinks over the banner's lifetime so users can see it will go away on its own. */
.notice-banner .notice-banner-countdown {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 3px;
    background-color: var(--notice-accent);
    opacity: 0.5;
    transform-origin: left;
    animation-name: notice-banner-countdown;
    animation-timing-function: linear;
    animation-fill-mode: forwards;
}
/* =================================================================== */
/* ! Notification modal urgency label
/* =================================================================== */
.notice-modal-label {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 6px;
	margin: 0 0 4px;
	padding: 4px 12px;
	border-radius: 999px;
	background-color: var(--notice-bg);
	color: var(--notice-fg);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
/* =================================================================== */
/* ! Admin console
/* Scoped under .settings-shell.notification-console so these sit on top
/* of the settings styles without changing them anywhere else.
/* =================================================================== */
.settings-shell.notification-console {
	/* The settings modal gets its height from the dialog; on a page it needs its own. */
	height: calc(100vh - 220px);
	min-height: 620px;
	border: 1px solid #e0e6ed;
	border-radius: 12px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
	overflow: hidden;
}
.settings-shell.notification-console .settings-avatar i {
    font-size: 16px;
}
/* .settings-pane hands its height to one child; this one splits it into the tab bar and the view. */
.settings-shell.notification-console .nc-pane, .settings-shell.notification-console .nc-view {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* ! Status tabs - the rail's .settings-nav-item, laid out in a row along the top of the pane */
.settings-shell.notification-console .nc-tabbar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
    padding: 12px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
    overflow-x: auto;
}
.settings-shell.notification-console .nc-tabbar .settings-nav-item {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-bottom: 0;
    white-space: nowrap;
}
/* Count on each rail item, styled like the rail's .nav-group-tag */
.settings-shell.notification-console .settings-nav-item .nc-nav-count {
    margin-left: auto;
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #a3aac0;
    font-size: 10px;
    text-align: center;
}
.settings-shell.notification-console .settings-nav-item.active .nc-nav-count {
    background-color: rgba(255, 255, 255, 0.2);
    color: #ffffff;
}
.settings-shell.notification-console .nc-back {
    margin-top: 12px;
}
.settings-shell.notification-console .card-header-flex {
    gap: 16px;
}
.settings-shell.notification-console .nc-search {
    width: 240px;
    max-width: 100%;
    height: 32px;
    border-radius: 20px;
    font-size: 12px;
}
/* ! Notification rows - .setting-row, recoloured by the row's urgency tone */
.settings-shell.notification-console .nc-item {
    -ms-flex-align: center;
        align-items: center;
    gap: 15px;
}
.settings-shell.notification-console .nc-item .setting-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-right: 0;
    background-color: var(--notice-bg);
    color: var(--notice-fg);
}
.settings-shell.notification-console .nc-item .setting-content {
    min-width: 0;
}
.settings-shell.notification-console .nc-item .chip-list {
    gap: 6px;
    margin: 8px 0 6px;
}
.settings-shell.notification-console .nc-item.is-muted .setting-icon, .settings-shell.notification-console .nc-item.is-muted .setting-content {
    opacity: 0.6;
}
.settings-shell.notification-console .nc-item-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #333333;
}
.settings-shell.notification-console .nc-item-message {
    margin-top: 2px;
    font-size: 12.5px;
    color: #878ba0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.notification-console .nc-item-message p {
    display: inline;
    margin: 0;
}
/* Viewer count, set apart from the row like the numbers in .detail-value */
.settings-shell.notification-console .nc-seen {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 92px;
    padding: 0 12px;
    border-left: 1px dashed #e0e6ed;
    border-right: 1px dashed #e0e6ed;
    text-align: center;
}
.settings-shell.notification-console .nc-seen strong {
    display: block;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    line-height: 1.2;
    color: #0035d2;
}
.settings-shell.notification-console .nc-seen span {
    display: block;
    font-size: 10px;
    line-height: 1.3;
    color: #a3aac0;
}
.settings-shell.notification-console .nc-item-actions {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.notification-console .nc-item-actions .toggle-switch {
    margin: 0;
}
/* Status chips - success green, the brand navy, and the settings caution amber */
.settings-shell.notification-console .chip.nc-status.status-live {
    background-color: rgba(32, 201, 151, 0.1);
    border-color: rgba(32, 201, 151, 0.3);
    color: rgb(23, 150, 112);
}
.settings-shell.notification-console .chip.nc-status.status-scheduled {
    background-color: #e7f0ff;
}
.settings-shell.notification-console .chip.nc-status.status-paused {
    background-color: #fff8e6;
    border-color: rgba(255, 171, 0, 0.3);
    color: #856404;
}
.settings-shell.notification-console .chip.nc-status.status-ended {
    background-color: #f8f9fa;
    border-color: #e0e6ed;
    color: #a3aac0;
}
/* Urgency chips take their colour from the urgency tone */
.settings-shell.notification-console .chip.nc-tone-chip {
    background-color: var(--notice-bg);
    border-color: var(--notice-accent);
    color: var(--notice-fg);
}
.settings-shell.notification-console .chip-select.nc-tone-chip i {
    color: var(--notice-fg);
}
.settings-shell.notification-console .chip-select.nc-tone-chip.selected {
    background-color: var(--notice-bg);
    border-color: var(--notice-accent);
    color: var(--notice-fg);
}
/* .chip-select is written for a <label>; as a <button> it needs the font back */
.settings-shell.notification-console button.chip-select {
    font-family: inherit;
}
.settings-shell.notification-console .nc-more {
    padding-top: 14px;
    text-align: center;
}
.settings-shell.notification-console .nc-char-count {
    float: right;
    font-weight: 400;
    font-size: 11px;
    color: #a3aac0;
}
.settings-shell.notification-console .nc-presets {
    gap: 6px;
    margin-top: 8px;
}
.settings-shell.notification-console .nc-presets .chip-select {
    padding: 4px 11px;
    font-size: 11px;
}
/* ! Compose: the form scrolls on the left; the preview has its own column so it
	   stays in view for the whole form. */
.settings-shell.notification-console .nc-view.nc-compose {
    -ms-flex-direction: row;
        flex-direction: row;
}
.settings-shell.notification-console .nc-compose-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
}
.settings-shell.notification-console .nc-preview-pane {
    -ms-flex: 0 0 360px;
        flex: 0 0 360px;
    width: 360px;
    padding: 24px 24px 24px 0;
    overflow-y: auto;
}
.settings-shell.notification-console .settings-notice {
    margin: 20px 0 0;
}
/* The real banner is fixed to the viewport; here it sits in the card. */
.settings-shell.notification-console .nc-preview .notice-banner {
    animation: none;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
    margin-bottom: 16px;
}
/* Hosts the real modal template in flow: cancels Bootstrap's full-screen .modal and the
		   centring on .modal-center, and leaves the modal's own look untouched. */
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame {
    margin-bottom: 16px;
    pointer-events: none;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal {
    position: relative;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    z-index: auto;
    display: block;
    overflow: visible;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-dialog, .settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-dialog.modal-center {
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: auto;
    margin: 0;
}
.settings-shell.notification-console .nc-preview .nc-preview-modal-frame .modal-content {
    border: 1px solid #e0e6ed;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
.settings-shell.notification-console .nc-preview .detail-row {
    min-height: 0;
    padding: 9px 0;
}
.settings-shell.notification-console .nc-preview .detail-row .detail-label {
    -ms-flex-preferred-size: 90px;
        flex-basis: 90px;
    width: 90px;
}
.settings-shell.notification-console .nc-preview .detail-row .detail-value {
    font-size: 13px;
}
@media (max-width: 900px) {
    .settings-shell.notification-console {
        height: auto;
    }
    .settings-shell.notification-console .nc-item {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
    .settings-shell.notification-console .nc-item-actions {
        -ms-flex-direction: row;
            flex-direction: row;
    }
    .settings-shell.notification-console .nc-seen {
        border: none;
        text-align: left;
        padding: 0;
    }
    .settings-shell.notification-console .nc-tabbar {
        padding: 10px 16px;
    }
    .settings-shell.notification-console .nc-view.nc-compose {
        -ms-flex-direction: column;
            flex-direction: column;
        overflow-y: auto;
    }
    .settings-shell.notification-console .nc-compose-main {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
    }
    .settings-shell.notification-console .nc-preview-pane {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        padding: 0 16px 16px;
        overflow: visible;
    }
}
/* =================================================================== */
/* ! Lens dispensing
/* The job dialog sits inside .settings-shell so it inherits the settings
/* modal's cards, chips, notices and action bar (_settings.css,
/* _payments.css). Only what is new is defined here.
/* =================================================================== */
/* Contact lens jobs are tagged teal so they read apart from glasses at a glance */
/* --- Shared art --- */
lens-frame-art, lens-design-art {
	display: block;
}
.lens-frame-art {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}
.lens-frame-art path {
    transition: fill 0.25s ease, stroke 0.25s ease, fill-opacity 0.25s ease;
}
.lens-design-art {
	display: block;
	width: 74px;
	height: 74px;
	-ms-flex-negative: 0;
	    flex-shrink: 0;
}
/* =================================================================== */
/* ! Dashboard module
/* =================================================================== */
.lens-module .lens-module-count {
    margin-right: 1.2em;
    font-size: 11px;
    font-weight: 700;
    color: #0035d2;
    background-color: #e7f0ff;
    padding: 3px 10px;
    border-radius: 20px;
}
.lens-module .lens-job-list {
    padding: 6px 0.8em 12px;
    max-height: 32em;
    overflow-y: auto;
}
.lens-module .lens-empty {
    text-align: center;
    padding: 24px 0 16px;
    color: #a3aac0;
}
.lens-module .lens-empty i {
    font-size: 26px;
    display: block;
    margin-bottom: 6px;
}
.lens-module .lens-empty a {
    color: #0035d2;
    font-weight: 600;
}
.lens-module .lens-job {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 12px;
    margin-top: 6px;
    border-radius: 12px;
    border: 1px solid #e0e6ed;
    border-left: 4px solid #0035d2;
    background-color: #ffffff;
    cursor: pointer;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.lens-module .lens-job:hover {
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.1);
    transform: translateY(-1px);
}
.lens-module .lens-job.status-quote {
    border-left-color: #a3aac0;
}
.lens-module .lens-job.status-invoiced {
    border-left-color: #FFB627;
}
.lens-module .lens-job.status-ordered, .lens-module .lens-job.status-in-production {
    border-left-color: #00bcd4;
}
.lens-module .lens-job.status-received {
    border-left-color: #20c997;
}
.lens-module .lens-job.status-collected {
    border-left-color: #c0cde0;
    opacity: 0.8;
}
/* Invoiced, issued or withdrawn: locked, so the row doesn't open - only its actions do */
.lens-module .lens-job.lens-job-locked {
    cursor: default;
}
.lens-module .lens-job.lens-job-locked:hover {
    box-shadow: none;
    transform: none;
}
.lens-module .lens-job-thumb {
    -ms-flex: 0 0 96px;
        flex: 0 0 96px;
    padding: 10px 6px;
    border-radius: 10px;
    background-color: #f4f7fe;
}
/* The image with what the row is and where it's up to beneath it, leaving the text the width (both tiles) */
.lens-module .lens-job-side {
    -ms-flex: 0 0 96px;
        flex: 0 0 96px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.lens-module .lens-job-side .lens-job-thumb {
    -ms-flex: none;
        flex: none;
    width: 100%;
}
/* A long one ("Multifocal glasses", "Ready to collect") takes two lines, not more of the row */
.lens-module .lens-job-side .lens-type-tag, .lens-module .lens-job-side .lens-status-pill, .lens-module .lens-job-side .lens-rx-pill {
    max-width: 100%;
    white-space: normal;
    text-align: center;
    line-height: 1.25;
    border-radius: 10px;
}
/* Just enough for "Spectacle Rx" and "Contacts Rx" on one line */
.lens-module .lens-job-side .lens-type-tag {
    padding: 2px 6px;
    letter-spacing: 0.04em;
}
.lens-module .lens-job-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-module .lens-job-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.lens-module .lens-job-number {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    font-size: 13px;
}
.lens-module .lens-job-total {
    margin-left: auto;
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
}
/* Wraps, so a long frame or lens name is read in full */
.lens-module .lens-job-desc {
    font-size: 12px;
    color: #343a40;
    margin-top: 3px;
    overflow-wrap: anywhere;
}
.lens-module .lens-job-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    margin-top: 6px;
    font-size: 11px;
    color: #878ba0;
}
.lens-module .lens-job-meta i {
    margin-right: 3px;
    color: #a3aac0;
}
.lens-module .lens-job-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 6px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.lens-module .lens-action-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
    padding: 6px 11px;
    border-radius: 20px;
    border: 1px dashed rgba(255, 193, 7, 0.7);
    background-color: #fff8e1;
    color: #856404;
    transition: all 0.15s ease;
}
.lens-module .lens-action-btn:hover:not([disabled]) {
    background-color: rgba(255, 182, 39, 0.3);
}
.lens-module .lens-action-btn[disabled] {
    opacity: 0.6;
}
.lens-module .lens-action-btn.primary {
    border: 1px solid rgba(0, 53, 210, 0.25);
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-module .lens-job-remove {
    color: #a3aac0;
    font-size: 13px;
}
.lens-module .lens-job-remove:hover {
    color: #d9534f;
}
/* Progress track: one segment per stage after the quote */
.lens-module .lens-track {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin-top: 9px;
}
.lens-module .lens-track-step {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-module .lens-track-step .lens-track-bar {
    display: block;
    height: 5px;
    border-radius: 3px;
    background-color: #eef1f7;
}
.lens-module .lens-track-step .lens-track-label {
    display: block;
    margin-top: 3px;
    font-size: 9.5px;
    color: #a3aac0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-module .lens-track-step.done .lens-track-bar {
    background-color: #0035d2;
}
.lens-module .lens-track-step.current .lens-track-bar {
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
    animation: lens-pulse 1.6s ease-in-out infinite;
}
.lens-module .lens-track-step.current .lens-track-label {
    color: #0035d2;
    font-weight: 700;
}
@keyframes lens-pulse {
	0%, 100% {
		opacity: 1;
	}

	50% {
		opacity: 0.55;
	}
}
/* Status pill - used on the dashboard and in the dialog */
.lens-status-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 10.5px;
	font-weight: 700;
	padding: 3px 9px;
	border-radius: 20px;
	white-space: nowrap;
	background-color: #e7f0ff;
	color: #0035d2;
}
.lens-status-pill.status-quote {
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-status-pill.status-invoiced {
    background-color: #fff8e1;
    color: #856404;
}
.lens-status-pill.status-ordered, .lens-status-pill.status-in-production {
    background-color: rgba(0, 188, 212, 0.1);
    color: #008c9e;
}
.lens-status-pill.status-received {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-status-pill.status-collected {
    background-color: #f8f9fa;
    color: #878ba0;
}
/* =================================================================== */
/* ! Practice job list (nav bar)
/* The content carries .lens-module too, for the dashboard's buttons,
/* thumbnails and empty state.
/* =================================================================== */
.lens-jobs-dialog .lens-jobs-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin: 12px 1.5em 6px;
}
.lens-jobs-dialog .lens-jobs-stages {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.lens-jobs-dialog .lens-stage-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 20px;
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
    color: #343a40;
    transition: all 0.15s ease;
}
.lens-jobs-dialog .lens-stage-chip b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip:hover:not([disabled]) {
    border-color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip[disabled] {
    opacity: 0.45;
}
.lens-jobs-dialog .lens-stage-chip.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-jobs-dialog .lens-stage-chip.overdue {
    color: #d9534f;
}
.lens-jobs-dialog .lens-stage-chip.overdue b {
    color: #d9534f;
}
.lens-jobs-dialog .lens-stage-chip.overdue.selected, .lens-jobs-dialog .lens-stage-chip.overdue:hover {
    border-color: #d9534f;
    background-color: rgba(217, 83, 79, 0.15);
}
.lens-jobs-dialog .lens-jobs-search {
    position: relative;
    width: 280px;
}
.lens-jobs-dialog .lens-jobs-search i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: #a3aac0;
}
.lens-jobs-dialog .lens-jobs-search input {
    padding-left: 32px;
    border-radius: 20px;
}
/* The dialog is a fixed height; the job list fills what is left and scrolls on its own */
.lens-jobs-dialog .lens-jobs-body {
    overflow: hidden;
}
.lens-jobs-dialog .lens-jobs-scroll {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    overflow-y: auto;
    margin: 6px 1.5em 0;
}
.lens-jobs-dialog .lens-jobs-scroll .lens-empty {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-jobs-dialog .lens-jobs-table {
    margin: 0 0 1.5em;
    width: 100%;
    font-size: 12.5px;
}
.lens-jobs-dialog .lens-jobs-table th {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #878ba0;
    border-bottom: 1px solid #e0e6ed;
    white-space: nowrap;
}
.lens-jobs-dialog .lens-jobs-table th .fa {
    margin-left: 3px;
    color: #a3aac0;
}
.lens-jobs-dialog .lens-jobs-table td {
    vertical-align: middle;
    border-top: 1px solid #eef1f7;
}
.lens-jobs-dialog .lens-jobs-table tbody tr {
    border-left: 4px solid transparent;
    transition: background-color 0.15s ease;
}
.lens-jobs-dialog .lens-jobs-table tbody tr:hover {
    background-color: #f4f7fe;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-received {
    border-left-color: #20c997;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-ordered, .lens-jobs-dialog .lens-jobs-table tbody tr.status-in-production {
    border-left-color: #00bcd4;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-invoiced {
    border-left-color: #FFB627;
}
.lens-jobs-dialog .lens-jobs-table tbody tr.status-collected {
    opacity: 0.85;
}
.lens-jobs-dialog .lens-jobs-sub {
    font-size: 11px;
    color: #878ba0;
}
.lens-jobs-dialog .lens-jobs-patient {
    color: #0035d2;
    font-weight: 600;
    text-decoration: underline;
}
.lens-jobs-dialog .lens-current-tag {
    margin-left: 6px;
    font-size: 9.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 2px 7px;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-jobs-dialog .lens-current-tag {
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-jobs-dialog .lens-jobs-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    min-width: 0;
}
.lens-jobs-dialog .lens-jobs-item .lens-job-thumb {
    -ms-flex: 0 0 64px;
        flex: 0 0 64px;
    padding: 6px 4px;
}
.lens-jobs-dialog .lens-jobs-item .lens-job-desc {
    margin-top: 0;
    white-space: normal;
}
.lens-jobs-dialog .lens-jobs-date {
    white-space: nowrap;
}
.lens-jobs-dialog .lens-jobs-date.overdue {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-date.overdue .lens-jobs-sub {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-actions {
    white-space: nowrap;
}
/* =================================================================== */
/* ! Job dialog
/* =================================================================== */
.lens-dialog .lens-shell {
    position: relative;
}
/* The job ticket gets a little more room than the settings rail */
.lens-dialog .lens-shell .settings-nav.lens-ticket {
    -ms-flex: 0 0 300px;
        flex: 0 0 300px;
    width: 300px;
}
.lens-dialog .lens-pane {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
.lens-dialog .lens-fieldset {
    border: 0;
    padding: 0;
    margin: 0;
    min-width: 0;
}
.lens-dialog .lens-step-view {
    animation: lens-fade-in 0.28s ease both;
}
/* Ticket (left rail)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-ticket-preview {
    margin: 16px 18px 6px;
    padding: 18px 16px;
    border-radius: 12px;
    background: linear-gradient(160deg, #f4f7fe 0%, #e7f0ff 100%);
    min-height: 104px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-dialog .lens-ticket-preview lens-frame-art {
    width: 100%;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-ticket-placeholder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    color: #a3aac0;
    font-size: 11px;
}
.lens-dialog .lens-ticket-placeholder i {
    font-size: 24px;
}
.lens-dialog .lens-steps {
    padding: 10px 12px;
}
.lens-dialog .lens-step {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 10px 10px;
    margin-bottom: 3px;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color 0.15s ease;
}
.lens-dialog .lens-step:hover {
    background-color: #f4f7fe;
}
.lens-dialog .lens-step .lens-step-marker {
    width: 26px;
    height: 26px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    border: 2px solid #e0e6ed;
    color: #a3aac0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    font-weight: 700;
    background-color: #ffffff;
    transition: all 0.2s ease;
}
.lens-dialog .lens-step .lens-step-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-step .lens-step-label {
    font-size: 13px;
    font-weight: 600;
    color: #4a5568;
}
.lens-dialog .lens-step .lens-step-summary {
    font-size: 11px;
    color: #a3aac0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-dialog .lens-step .lens-step-price {
    font-size: 12px;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-step.done .lens-step-marker {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.lens-dialog .lens-step.done .lens-step-summary {
    color: #878ba0;
}
.lens-dialog .lens-step.active {
    background-color: #0035d2;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.lens-dialog .lens-step.active .lens-step-marker {
    border-color: #ffffff;
    background-color: #ffffff;
    color: #0035d2;
}
.lens-dialog .lens-step.active .lens-step-label, .lens-dialog .lens-step.active .lens-step-price {
    color: #ffffff;
}
.lens-dialog .lens-step.active .lens-step-summary {
    color: rgba(255, 255, 255, 0.75);
}
.lens-dialog .lens-ticket-total {
    margin-top: auto;
    padding: 16px 20px 20px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-ticket-total .footer-label {
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-progress {
    height: 6px;
    border-radius: 3px;
    background-color: #eef1f7;
    overflow: hidden;
    margin-bottom: 14px;
}
.lens-dialog .lens-progress .lens-progress-bar {
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
    transition: width 0.4s cubic-bezier(0.22, 1, 0.36, 1);
}
/* Frame trace card (frame step and lab order)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-tracer-card {
    margin-bottom: 16px;
}
.lens-dialog .lens-tracer-card h4 .fa {
    margin-right: 6px;
    color: #0035d2;
}
.lens-dialog .lens-tracer-card > .lens-label:not(.lens-trace-heading) {
    margin-top: 0;
}
/* "Edit extras & prices", beside the extras step's description */
.lens-dialog .lens-edit-extras {
    margin-left: 8px;
    white-space: nowrap;
    font-weight: 600;
    color: #0035d2;
}
/* The patient's own frame: description, colour, shape and fitting charge */
.lens-dialog .lens-own-frame-fields {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 2fr) (minmax(0, 1fr))[3];
        grid-template-columns: minmax(0, 2fr) repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 8px;
}
.lens-dialog .lens-own-frame-fields label {
    margin: 0;
    font-weight: normal;
}
.lens-dialog .lens-own-frame-fields label span {
    display: block;
    margin-bottom: 4px;
    font-size: 11px;
    color: #878ba0;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-own-frame-help {
    margin: 0 0 16px;
}
/* A made-to-order contact lens: its name and lab get the room */
.lens-dialog .cl-made-fields {
    -ms-grid-columns: (minmax(0, 2fr))[2] (minmax(0, 1fr))[3];
        grid-template-columns: repeat(2, minmax(0, 2fr)) repeat(3, minmax(0, 1fr));
}
.lens-dialog .cl-made-tile .cl-tile-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    font-size: 30px;
    background-color: #e7f0ff;
}
.lens-dialog .cl-lab-notes {
    margin-bottom: 10px;
}
/* Send order, in the job's order card once it is invoiced */
.lens-dialog .lens-order-send {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px 12px;
    margin: 4px 0 12px;
}
.lens-dialog .lens-order-send .btn {
    width: auto;
    max-width: none;
    margin: 0;
    white-space: nowrap;
}
.lens-dialog .lens-order-send .field-help {
    margin: 0;
}
.lens-dialog .lens-order-hint {
    margin: 0 0 10px;
}
/* The first label in a card sits under its header - not under the old global .lens-label margin */
.lens-dialog .settings-card > .card-header-flex + .lens-label {
    margin-top: 0;
}
.lens-dialog .lens-own-frame-tile .lens-tile-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    color: #0035d2;
    font-size: 34px;
    background-color: #e7f0ff;
}
/* The chosen frame's eye, bridge and temple sizes */
.lens-dialog .lens-frame-size {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 120px))[3];
        grid-template-columns: repeat(3, minmax(0, 120px));
    gap: 12px;
    margin: 6px 0 4px;
}
.lens-dialog .lens-frame-size label {
    margin: 0;
    font-weight: normal;
}
.lens-dialog .lens-frame-size label span {
    display: block;
    margin-bottom: 4px;
    font-size: 11px;
    color: #878ba0;
}
.lens-dialog .lens-frame-size .form-control {
    text-align: center;
}
.lens-dialog .lens-trace-heading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-trace-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[3];
        grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px 16px;
}
.lens-dialog .lens-trace-grid .lens-label {
    margin-bottom: 2px;
}
.lens-dialog .lens-trace-grid b {
    color: #0a2540;
    font-size: 13px;
}
.lens-dialog .lens-tracer-hint {
    margin: 0 0 12px;
    font-size: 12.5px;
    color: #343a40;
}
/* Box measurements typed from the tracer's readout */
.lens-dialog .lens-trace-form .field-grid {
    -ms-grid-columns: (minmax(0, 1fr))[5];
        grid-template-columns: repeat(5, minmax(0, 1fr));
}
.lens-dialog .lens-tracer-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    margin-top: 12px;
}
.lens-dialog .lens-tracer-remove {
    font-size: 12px;
    color: #878ba0;
}
.lens-dialog .lens-tracer-remove:hover {
    color: #d9534f;
}
/* "Import a new file": a label so the hidden file input opens on click, sized like its neighbours */
.lens-dialog .lens-trace-import {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    font-weight: inherit;
    cursor: pointer;
}
.lens-dialog .lens-trace-import input[type="file"] {
    display: none;
}
/* No trace yet: drop the tracer's file here, or click to choose it */
.lens-dialog .lens-trace-drop {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    width: 100%;
    max-width: none;
    margin: 0 0 10px;
    padding: 18px 16px;
    border: 1.5px dashed #c0cde0;
    border-radius: 12px;
    background-color: #f4f7fe;
    font-weight: normal;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.lens-dialog .lens-trace-drop:hover, .lens-dialog .lens-trace-drop.over {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-trace-drop input[type="file"] {
    display: none;
}
.lens-dialog .lens-trace-drop-icon {
    font-size: 20px;
    color: #0035d2;
}
.lens-dialog .lens-trace-drop-title {
    font-size: 13.5px;
    font-weight: 600;
    color: #0a2540;
}
.lens-dialog .lens-trace-drop-hint {
    font-size: 12px;
    color: #878ba0;
}
.lens-dialog .lens-trace-drop-hint u {
    color: #0035d2;
}
.lens-dialog .lens-trace-error {
    margin: 10px 0 0;
    font-size: 12.5px;
    color: #d9534f;
}
/* The imported outline, both lenses to scale */
.lens-dialog .lens-trace-preview {
    margin: 12px 0 4px;
    padding: 10px 12px 6px;
    border: 1px solid #eef1f7;
    border-radius: 12px;
    background: #f4f7fe;
}
.lens-dialog .lens-trace-preview svg {
    display: block;
    width: 100%;
    max-width: 420px;
    height: 120px;
    margin: 0 auto;
}
.lens-dialog .lens-trace-preview figcaption {
    margin-top: 4px;
    text-align: center;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-dialog .lens-trace-shape {
    fill: #ffffff;
    stroke: #0035d2;
    stroke-width: 0.35;
    stroke-linejoin: round;
}
.lens-dialog .lens-trace-datum {
    stroke: #a3aac0;
    stroke-width: 0.2;
    stroke-dasharray: 1 1;
}
.lens-dialog .lens-trace-side {
    font-size: 4px;
    font-weight: 600;
    text-anchor: middle;
    fill: #878ba0;
}
.lens-dialog .lens-muted-value {
    color: #878ba0;
}
.lens-dialog .lens-total-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 12px;
    color: #343a40;
}
.lens-dialog .lens-total-row.muted {
    color: #878ba0;
    font-size: 11px;
}
.lens-dialog .lens-total-value {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 24px;
    color: #0035d2;
    letter-spacing: -0.02em;
}
/* Shared bits
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-label {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    margin-bottom: 6px;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    margin-bottom: 10px;
}
.lens-dialog .lens-search {
    -ms-flex: 0 1 300px;
        flex: 0 1 300px;
    margin: 0;
}
.lens-dialog .lens-chip-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
}
.lens-dialog .lens-chip-row .chip-select {
    padding: 6px 13px;
}
.lens-dialog .lens-shape-row {
    margin-bottom: 18px;
}
.lens-dialog .lens-suggest-star {
    color: #FFB627;
    font-size: 10px;
}
.lens-dialog .lens-notice {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
.lens-dialog .lens-notice > span {
    -ms-flex: 1;
        flex: 1;
}
.lens-dialog .lens-notice.success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
    color: #2e7d32;
}
.lens-dialog .lens-mini-btn {
    width: auto;
    margin: 0;
    padding: 4px 12px;
    font-size: 12px;
}
.lens-dialog .lens-right {
    text-align: right;
    -ms-flex-pack: end;
        justify-content: flex-end;
}
.lens-dialog .settings-card + .settings-card, .lens-dialog .settings-card + .lens-trace-section {
    margin-top: 16px;
}
/* Tiles (frames & lenses)
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(220px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 16px;
}
.lens-dialog .lens-grid.lens-grid-wide {
    margin-top: 18px;
    -ms-grid-columns: (minmax(330px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-load-more {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    margin-top: 18px;
}
.lens-dialog .lens-tile {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background-color: #ffffff;
    border-radius: 12px;
    border: 2px solid transparent;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
    cursor: pointer;
    overflow: hidden;
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}
.lens-dialog .lens-tile:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 53, 210, 0.12);
}
.lens-dialog .lens-tile.selected {
    border-color: #0035d2;
    box-shadow: 0 10px 24px rgba(0, 53, 210, 0.18);
}
.lens-dialog .lens-tile.selected .lens-tile-check {
    transform: scale(1);
    opacity: 1;
}
.lens-dialog .lens-tile .lens-tile-check {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 2;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    transform: scale(0.4);
    opacity: 0;
    transition: all 0.2s cubic-bezier(0.22, 1, 0.36, 1);
}
.lens-dialog .lens-tile-art {
    padding: 22px 18px 16px;
    background: linear-gradient(160deg, #f4f7fe 0%, #e7f0ff 100%);
}
.lens-dialog .lens-tile-body {
    padding: 12px 16px 6px;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-tile-brand {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-weight: 700;
    color: #a3aac0;
}
.lens-dialog .lens-tile-name {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
    line-height: 1.3;
}
.lens-dialog .lens-tile-meta {
    font-size: 11px;
    color: #878ba0;
    margin-top: 2px;
}
.lens-dialog .lens-tile-foot {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    padding: 10px 16px 12px;
    border-top: 1px solid #eef1f7;
    margin-top: 8px;
}
.lens-dialog .lens-stock {
    font-size: 11px;
    color: #2e7d32;
}
.lens-dialog .lens-stock.low {
    color: #c2410c;
}
.lens-dialog .lens-stock i {
    margin-right: 3px;
}
.lens-dialog .lens-price {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0035d2;
}
.lens-dialog .lens-price small {
    font-family: inherit;
    font-size: 10px;
    color: #a3aac0;
}
.lens-dialog .lens-swatches {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: 9px;
}
.lens-dialog .lens-swatch {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid #ffffff;
    box-shadow: 0 0 0 1px #e0e6ed;
    cursor: pointer;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.lens-dialog .lens-swatch:hover {
    transform: scale(1.12);
}
.lens-dialog .lens-swatch.active {
    box-shadow: 0 0 0 2px #0035d2;
}
.lens-dialog .lens-swatch-name {
    font-size: 11px;
    color: #878ba0;
    margin-left: 2px;
}
/* Lens tiles are a row: diagram then text */
.lens-dialog .lens-option-tile .lens-option-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 4px;
    padding: 28px 16px 0;
}
/* room for the Recommended ribbon */
.lens-dialog .lens-option-tile .lens-option-row .lens-tile-body {
    padding: 0 0 0 10px;
}
.lens-dialog .lens-option-tile.recommended {
    border-color: rgba(255, 182, 39, 0.5);
}
.lens-dialog .lens-option-tile.recommended.selected {
    border-color: #0035d2;
}
.lens-dialog .lens-ribbon {
    position: absolute;
    top: 0;
    left: 16px;
    font-size: 9.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding: 3px 9px;
    border-radius: 0 0 6px 6px;
    background-color: #FFB627;
    color: #0a2540;
}
.lens-dialog .lens-features {
    margin-top: 8px;
    gap: 5px;
}
.lens-dialog .lens-features .chip {
    font-size: 10px;
    padding: 3px 8px;
}
/* Prescription
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-use-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[4];
        grid-template-columns: repeat(4, 1fr);
    gap: 10px;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-use {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 14px 8px;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    color: #4a5568;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s ease;
}
.lens-dialog .lens-use i {
    font-size: 20px;
    color: #a3aac0;
}
.lens-dialog .lens-use:hover {
    border-color: #cbd5e0;
}
.lens-dialog .lens-use.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
.lens-dialog .lens-use.selected i {
    color: #0035d2;
}
.lens-dialog .lens-use.locked {
    cursor: default;
}
/* A use this prescription has no power for */
.lens-dialog .lens-use.blocked {
    cursor: not-allowed;
    opacity: 0.5;
}
/* What choosing the use does to the powers */
.lens-dialog .lens-use-effect {
    font-size: 10.5px;
    font-weight: 400;
    color: #343a40;
}
.lens-dialog .lens-powers {
    margin-top: 14px;
}
.lens-dialog .lens-powers-same, .lens-dialog .lens-powers-rule {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    font-size: 12.5px;
    color: #343a40;
}
.lens-dialog .lens-powers-same .fa {
    color: #2e7d32;
}
.lens-dialog .lens-powers-rule .fa {
    color: #0035d2;
}
.lens-dialog .lens-powers-table {
    margin-top: 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    overflow: hidden;
}
.lens-dialog .lens-powers-table .lens-powers-head, .lens-dialog .lens-powers-table .lens-powers-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 150px (minmax(0, 1fr))[4];
        grid-template-columns: 150px repeat(4, minmax(0, 1fr));
    -ms-flex-align: center;
        align-items: center;
    padding: 6px 12px;
    font-size: 12.5px;
}
.lens-dialog .lens-powers-table .lens-powers-head {
    background-color: #f4f7fe;
    font-size: 10.5px;
    font-weight: 700;
    color: #878ba0;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.lens-dialog .lens-powers-table .lens-powers-row {
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-powers-table .lens-powers-row.made {
    background-color: #e7f0ff;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-powers-table .lens-powers-label small {
    margin-left: 4px;
    font-weight: 400;
    color: #878ba0;
}
/* The values the use changed */
.lens-dialog .lens-powers-table .changed {
    font-weight: 700;
    text-decoration: underline;
    -webkit-text-decoration-color: #00bcd4;
            text-decoration-color: #00bcd4;
    text-underline-offset: 3px;
}
/* The prescribed use, marked among the choices */
.lens-dialog .lens-use-rec {
    font-size: 10px;
    font-weight: 400;
    color: #878ba0;
}
.lens-dialog .lens-use-card {
    margin-bottom: 14px;
}
.lens-dialog .lens-rx-table .lens-rx-head, .lens-dialog .lens-rx-table .lens-rx-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 70px (minmax(0, 1fr))[8];
        grid-template-columns: 70px repeat(8, minmax(0, 1fr));
    gap: 8px;
    -ms-flex-align: center;
        align-items: center;
}
/* The prescription step shows the Rx read-only, without the PD and height columns */
.lens-dialog .lens-rx-table.lens-rx-readonly .lens-rx-head, .lens-dialog .lens-rx-table.lens-rx-readonly .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[6];
        grid-template-columns: 70px repeat(6, minmax(0, 1fr));
}
/* The measurements step: just the PD and fitting height, measured in the frame */
.lens-dialog .lens-rx-table.lens-measure-table .lens-rx-head, .lens-dialog .lens-rx-table.lens-measure-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 160px))[2];
        grid-template-columns: 70px repeat(2, minmax(0, 160px));
}
.lens-dialog .lens-rx-table .lens-rx-head span {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
    text-align: center;
}
.lens-dialog .lens-rx-table .lens-rx-row {
    padding: 8px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-rx-table .lens-rx-row:last-child {
    border-bottom: 0;
}
.lens-dialog .lens-rx-table .lens-rx-row .form-control {
    text-align: center;
    padding: 6px 4px;
    height: 36px;
    font-size: 13px;
}
.lens-dialog .lens-rx-table .lens-rx-row .has-error {
    border-color: #d9534f;
    background-color: #fbeceb;
}
.lens-dialog .lens-rx-table .eye {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    color: #0035d2;
    font-size: 13px;
    line-height: 1.2;
}
.lens-dialog .lens-rx-table .eye small {
    color: #a3aac0;
    font-size: 10px;
}
.lens-dialog .lens-rx-hint {
    margin: 10px 0 0;
    color: #c2410c;
}
.lens-dialog .lens-rx-summary {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 20px;
    margin-top: 12px;
    padding: 10px 14px;
    border-radius: 8px;
    background-color: #f4f7fe;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-rx-summary b {
    color: #0035d2;
}
.lens-dialog .lens-rx-extra {
    margin-top: 16px;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 14px;
}
/* Extras
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-extras-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-align: start;
        align-items: flex-start;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-extras-options {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-extras-preview {
    -ms-flex: 0 0 300px;
        flex: 0 0 300px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
.lens-dialog .lens-preview-stage {
    margin: -25px -25px 16px;
    padding: 34px 26px;
    border-radius: 12px 12px 0 0;
    background: linear-gradient(160deg, #fdfdff 0%, #e7f0ff 60%, #cfe0ff 100%);
}
.lens-dialog .lens-preview-title {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
    margin-bottom: 12px;
}
.lens-dialog .lens-preview-lines {
    margin-top: 16px;
    border-top: 1px solid #eef1f7;
    padding-top: 10px;
}
.lens-dialog .lens-preview-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 12px;
    color: #343a40;
    padding: 3px 0;
}
.lens-dialog .lens-preview-line.total {
    margin-top: 6px;
    padding-top: 8px;
    border-top: 1px dashed #e0e6ed;
    font-weight: 700;
    color: #0035d2;
}
.lens-dialog .lens-option-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(210px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 10px;
}
.lens-dialog .lens-option-grid.three {
    -ms-grid-columns: (1fr)[3];
        grid-template-columns: repeat(3, 1fr);
}
.lens-dialog .lens-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 11px;
    padding: 11px 13px;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    cursor: pointer;
    transition: all 0.15s ease;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.lens-dialog .lens-option > i {
    width: 30px;
    height: 30px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #f4f7fe;
    color: #a3aac0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 13px;
}
.lens-dialog .lens-option > div {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    color: #0a2540;
    line-height: 1.3;
}
.lens-dialog .lens-option > div small {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-dialog .lens-option .lens-option-price {
    font-size: 11.5px;
    font-weight: 700;
    color: #0035d2;
    white-space: nowrap;
}
.lens-dialog .lens-option:hover {
    border-color: #cbd5e0;
}
.lens-dialog .lens-option.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-option.selected > i {
    background-color: #0035d2;
    color: #ffffff;
}
.lens-dialog .lens-option.included {
    cursor: default;
}
.lens-dialog .lens-option.included .lens-option-price {
    color: #2e7d32;
}
.lens-dialog .lens-tint-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
}
.lens-dialog .lens-tint {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    width: 84px;
    padding: 10px 4px 8px;
    border-radius: 10px;
    border: 1.5px solid transparent;
    cursor: pointer;
    transition: all 0.15s ease;
}
.lens-dialog .lens-tint:hover {
    background-color: #f4f7fe;
}
.lens-dialog .lens-tint.selected {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-dialog .lens-tint-dot {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    box-shadow: inset 0 -6px 12px rgba(0, 0, 0, 0.18), 0 2px 6px rgba(0, 0, 0, 0.08);
}
.lens-dialog .lens-tint-dot.clear {
    background: repeating-linear-gradient(45deg, #ffffff, #ffffff 4px, #eef1f7 4px, #eef1f7 8px);
    box-shadow: inset 0 0 0 1px #e0e6ed;
}
.lens-dialog .lens-tint-dot.mirror:not(.clear) {
    background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.75) 0%, rgba(255, 255, 255, 0) 55%);
}
.lens-dialog .lens-tint-name {
    font-size: 11px;
    font-weight: 600;
    color: #0a2540;
    text-align: center;
    line-height: 1.2;
}
.lens-dialog .lens-tint-price {
    font-size: 10.5px;
    color: #878ba0;
}
.lens-dialog .lens-density {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 14px;
}
.lens-dialog .lens-density .lens-label {
    margin: 0 6px 0 0;
}
.lens-dialog .lens-density .chip-select {
    padding: 5px 12px;
}
/* Order & billing
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-missing-link {
    font-weight: 700;
    text-decoration: underline;
    color: inherit;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-billing-layout {
    display: -ms-flexbox;
    display: flex;
    gap: 20px;
    -ms-flex-align: start;
        align-items: flex-start;
}
.lens-dialog .lens-billing-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-billing-side {
    -ms-flex: 0 0 340px;
        flex: 0 0 340px;
    position: -webkit-sticky;
    position: sticky;
    top: 0;
}
/* On smaller screens the invoice card stops being a side column and the whole step stacks */
@media (max-width: 1100px) {
    .lens-dialog .lens-billing-layout {
        -ms-flex-direction: column;
            flex-direction: column;
    }
    .lens-dialog .lens-billing-side {
        -ms-flex: 1 1 auto;
            flex: 1 1 auto;
        width: 100%;
        position: static;
    }
}
/* The lab order reviewed at a glance: one fact per cell, wrapping to the width there is */
.lens-dialog .lens-order-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(150px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px 18px;
    margin-bottom: 12px;
}
.lens-dialog .lens-order-fact {
    min-width: 0;
}
.lens-dialog .lens-order-fact > span {
    display: block;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-order-fact > b {
    display: block;
    font-size: 12.5px;
    color: #0a2540;
    overflow-wrap: break-word;
}
.lens-dialog .lens-order-measures {
    margin-bottom: 10px;
    font-size: 12.5px;
}
.lens-dialog .lens-order-measures a {
    color: #856404;
    font-weight: 600;
}
/* Items added by hand to the invoice (an eye examination, say) */
.lens-dialog .lens-custom-items {
    padding: 8px 0 2px;
    border-top: 1px dashed #eef1f7;
}
.lens-dialog .lens-custom-item-remove {
    margin-right: 6px;
    color: #a3aac0;
}
.lens-dialog .lens-custom-item-remove:hover {
    color: #d9534f;
}
.lens-dialog .lens-custom-add {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
    margin: 8px 0;
    position: relative;
}
.lens-dialog .lens-custom-add input[type="text"] {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-custom-add input[type="number"] {
    -ms-flex: 0 0 90px;
        flex: 0 0 90px;
}
.lens-dialog .lens-custom-add .lens-mini-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
/* The billing item search results (uib-typeahead) */
.lens-dialog .lens-custom-add .dropdown-menu {
    max-height: 240px;
    overflow-y: auto;
}
/* The one-step undo beside a job's next-status button */
.lens-dialog .lens-undo-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.lens-dialog .lens-bill-row {
    padding-top: 9px;
    padding-bottom: 9px;
    margin-bottom: 0;
    border-bottom: 1px solid #eef1f7;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-bill-row .col-fee {
    font-weight: 600;
}
.lens-dialog .lens-bill-kind {
    display: inline-block;
    min-width: 46px;
    margin-right: 8px;
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #a3aac0;
    font-weight: 700;
}
.lens-dialog .lens-discount {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.lens-dialog .lens-discount > span:first-child {
    margin-right: 6px;
}
.lens-dialog .lens-discount .fee-input {
    width: 110px;
}
.lens-dialog .lens-discount .chip-select {
    padding: 4px 11px;
}
.lens-dialog .lens-bill-totals {
    margin-top: 14px;
    margin-left: auto;
    width: 300px;
    max-width: 100%;
}
.lens-dialog .lens-bill-totals > div {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    font-size: 13px;
    padding: 3px 14px;
    color: #343a40;
}
.lens-dialog .lens-bill-totals > div.muted {
    color: #878ba0;
    font-size: 12px;
}
.lens-dialog .lens-bill-totals > div.grand {
    margin-top: 8px;
    padding: 10px 14px;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
}
.lens-dialog .lens-pay-split {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1fr 1fr;
        grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 14px;
}
.lens-dialog .lens-pay-split > div {
    padding: 12px 14px;
    border-radius: 8px;
    background-color: #f4f7fe;
}
.lens-dialog .lens-pay-split > div .lens-label {
    margin-bottom: 2px;
}
.lens-dialog .lens-pay-split > div b {
    font-size: 18px;
    color: #0035d2;
}
.lens-dialog .lens-invoice-card.sent {
    box-shadow: 0 0 0 2px rgba(32, 201, 151, 0.4), 0 8px 24px rgba(32, 201, 151, 0.2);
}
/* A little paper invoice */
.lens-dialog .lens-invoice-doc {
    position: relative;
    padding: 18px 18px 14px;
    border-radius: 8px;
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    box-shadow: 0 6px 18px rgba(10, 37, 64, 0.08);
    font-size: 12px;
    color: #343a40;
}
.lens-dialog .lens-invoice-doc::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 4px;
    border-radius: 8px 8px 0 0;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
}
.lens-dialog .lens-invoice-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: start;
        align-items: flex-start;
    margin-bottom: 14px;
}
.lens-dialog .lens-invoice-practice {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    font-size: 13px;
}
.lens-dialog .lens-invoice-sub {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #a3aac0;
}
.lens-dialog .lens-invoice-number {
    text-align: right;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-invoice-number small {
    display: block;
    font-weight: 400;
    color: #878ba0;
}
.lens-dialog .lens-invoice-to {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding-bottom: 8px;
    margin-bottom: 6px;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-invoice-to .lens-label {
    margin: 0;
}
.lens-dialog .lens-invoice-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 3px 0;
}
.lens-dialog .lens-invoice-line span:first-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-dialog .lens-invoice-line.total {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid #e0e6ed;
    font-weight: 700;
    color: #0a2540;
}
.lens-dialog .lens-invoice-line.due {
    color: #0035d2;
    font-weight: 700;
}
.lens-dialog .lens-channel-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
}
.lens-dialog .lens-channel-list .chip-select {
    -ms-flex-pack: start;
        justify-content: flex-start;
    border-radius: 8px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.lens-dialog .lens-sent-flash {
    margin-top: 14px;
    padding: 10px 12px;
    border-radius: 8px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    font-size: 12px;
}
.lens-dialog .lens-send-btn {
    max-width: none !important;/* the action bar caps .btn at 200px; this label is longer */
}
/* Leave prompt
	/* ------------------------------------------------------------------ */
.lens-dialog .lens-confirm-overlay {
    position: absolute;
    inset: 0;
    z-index: 10;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    background-color: rgba(10, 37, 64, 0.2);
    -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px);
    animation: lens-fade-in 0.2s ease both;
}
/* ------------------------------------------------------------------ */
.lens-dialog .lens-confirm {
    width: 420px;
    max-width: 90%;
}
.lens-dialog .lens-confirm h4 {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
    margin-top: 0;
}
.lens-dialog .lens-confirm-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    margin-top: 16px;
}
.lens-dialog .lens-confirm-actions .btn {
    width: auto;
    margin: 0;
}
@keyframes lens-fade-in {
	from {
		opacity: 0;
		transform: translateY(6px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}
/* =================================================================== */
/* ! Contact lens pathway
/* Contact lens jobs share the glasses job dialog, tile and job list
/* styling. Only the pieces contacts add are defined here.
/* =================================================================== */
lens-contact-art {
	display: block;
}
.lens-contact-art {
	display: block;
	width: 100%;
	height: auto;
	overflow: visible;
}
.lens-contact-art .lens-contact-eye {
    font-size: 11px;
    font-weight: 700;
    fill: #0035d2;
    fill-opacity: 0.35;
}
/* Glasses / Contacts tag beside the job number */
.lens-type-tag {
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 2px 8px;
	border-radius: 20px;
	background-color: #e7f0ff;
	color: #0035d2;
}
.lens-type-tag.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
/* New job: glasses or contacts */
.lens-module .lens-new-picker {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: stretch;
        align-items: stretch;
    gap: 10px;
    margin: 10px 1.2em 4px;
    animation: lens-fade-in 0.2s ease;
}
.lens-module .lens-new-option {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 12px 14px;
    text-align: left;
    border-radius: 10px;
    border: 1.5px solid #e0e6ed;
    background-color: #ffffff;
    transition: all 0.15s ease;
}
.lens-module .lens-new-option > i {
    width: 36px;
    height: 36px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 15px;
}
.lens-module .lens-new-option:last-of-type > i {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-module .lens-new-option b {
    display: block;
    font-size: 13px;
    color: #0a2540;
}
.lens-module .lens-new-option small {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-module .lens-new-option:hover {
    border-color: #0035d2;
    background-color: #e7f0ff;
}
.lens-module .lens-reorder-due {
    color: #d9534f;
}
.lens-module .lens-reorder-due i {
    color: #d9534f;
}
.lens-jobs-dialog .lens-jobs-number .lens-type-tag {
    margin-left: 6px;
}
/* All / Glasses / Contacts - a segmented control ahead of the stage chips */
.lens-jobs-dialog .lens-jobs-types {
    display: -ms-inline-flexbox;
    display: inline-flex;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    overflow: hidden;
    margin-right: 6px;
}
.lens-jobs-dialog .lens-type-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    font-size: 11.5px;
    font-weight: 600;
    padding: 5px 12px;
    border: 0;
    background-color: #ffffff;
    color: #343a40;
}
.lens-jobs-dialog .lens-type-chip + .lens-type-chip {
    border-left: 1px solid #e0e6ed;
}
.lens-jobs-dialog .lens-type-chip b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.lens-jobs-dialog .lens-type-chip:hover {
    background-color: #f4f7fe;
}
.lens-jobs-dialog .lens-type-chip.selected {
    background-color: #0035d2;
    color: #ffffff;
}
.lens-jobs-dialog .lens-type-chip.selected b {
    color: #ffffff;
}
.lens-contacts-dialog .lens-ticket-preview lens-contact-art {
    width: 80%;
    margin: 0 auto;
}
.lens-contacts-dialog .cl-tile-art {
    width: 96px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 8px 4px;
    border-radius: 10px;
    background-color: #f4f7fe;
}
/* The CL Rx has six columns where the glasses Rx has eight */
.lens-contacts-dialog .cl-rx-card .lens-rx-table .lens-rx-head, .lens-contacts-dialog .cl-rx-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[6];
        grid-template-columns: 70px repeat(6, minmax(0, 1fr));
}
.lens-contacts-dialog .cl-rx-card .lens-rx-table select.form-control {
    text-align-last: center;
}
.lens-contacts-dialog .cl-rx-card .lens-rx-table input[readonly] {
    background-color: #f4f7fe;
}
.lens-contacts-dialog .cl-vertex-note {
    margin: 10px 0 0;
    color: #878ba0;
}
.lens-contacts-dialog .cl-trial-card.trialled {
    border-color: #0035d2;
}
/* Boxes per eye */
.lens-contacts-dialog .cl-boxes {
    margin-top: 16px;
}
.lens-contacts-dialog .cl-box-row {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 170px auto 1fr auto;
        grid-template-columns: 170px auto 1fr auto;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 10px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-contacts-dialog .cl-box-row:last-child {
    border-bottom: 0;
}
.lens-contacts-dialog .cl-box-row .eye {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    color: #0035d2;
    font-size: 13px;
    line-height: 1.25;
}
.lens-contacts-dialog .cl-box-row .eye small {
    color: #878ba0;
    font-size: 11px;
}
.lens-contacts-dialog .cl-stepper {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
}
.lens-contacts-dialog .cl-stepper .btn {
    width: 30px;
    height: 30px;
    padding: 0;
    font-size: 11px;
}
.lens-contacts-dialog .cl-stepper-value {
    min-width: 34px;
    text-align: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0a2540;
}
.lens-contacts-dialog .cl-box-desc {
    font-size: 12px;
    color: #878ba0;
}
.lens-contacts-dialog .cl-box-price {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
}
.lens-contacts-dialog .lens-option.disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.lens-contacts-dialog .lens-bill-row.cl-saving .col-fee {
    color: #2e7d32;
}
/* =================================================================== */
/* ! Job notes
/* The popover is moved to <body> (see lensJobNotes.component.js), so
/* these rules are top level rather than nested in the module or dialog.
/* =================================================================== */
lens-job-notes {
	display: inline-block;
}
.lens-jobs-actions lens-job-notes {
	vertical-align: middle;
	margin-right: 6px;
}
.lens-notes-btn {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 600;
	padding: 4px 10px;
	border-radius: 20px;
	border: 1px dashed #e0e6ed;
	background-color: #ffffff;
	color: #a3aac0;
	transition: all 0.15s ease;
}
.lens-notes-btn.has-notes {
    border-style: solid;
    border-color: rgba(255, 193, 7, 0.7);
    background-color: #fff8e1;
    color: #856404;
}
.lens-notes-btn:hover, .lens-notes-btn.open {
    border-color: #0035d2;
    color: #0035d2;
}
.lens-notes-pop {
	position: fixed;
	/* Above md-dialog and its backdrop */
	z-index: 1100;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	max-height: 380px;
	background-color: #ffffff;
	border: 1px solid #e0e6ed;
	border-radius: 10px;
	box-shadow: 0 10px 30px rgba(10, 37, 64, 0.16);
	text-align: left;
	animation: lens-fade-in 0.15s ease;
}
.lens-notes-pop.pinned {
    border-color: #0035d2;
}
.lens-notes-pop .lens-notes-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid #eef1f7;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #0035d2;
}
.lens-notes-pop .lens-notes-close {
    color: #a3aac0;
}
.lens-notes-pop .lens-notes-close:hover {
    color: #0035d2;
}
.lens-notes-pop .lens-notes-list {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 4px 14px;
}
.lens-notes-pop .lens-notes-empty {
    padding: 12px 0;
    font-size: 12px;
    color: #878ba0;
}
.lens-notes-pop .lens-note {
    padding: 9px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-notes-pop .lens-note:last-child {
    border-bottom: 0;
}
.lens-notes-pop .lens-note-meta {
    font-size: 10.5px;
    color: #878ba0;
}
.lens-notes-pop .lens-note-meta b {
    color: #0a2540;
}
.lens-notes-pop .lens-note-text {
    margin-top: 2px;
    font-size: 12.5px;
    line-height: 1.45;
    color: #0a2540;
    white-space: pre-wrap;
    word-wrap: break-word;
}
/* Sits between the header and the newest note */
.lens-notes-pop .lens-notes-add {
    padding: 10px 14px 12px;
    border-bottom: 1px solid #eef1f7;
    background-color: #f4f7fe;
}
.lens-notes-pop .lens-notes-add textarea {
    resize: vertical;
    font-size: 12.5px;
}
.lens-notes-pop .lens-notes-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
}
.lens-notes-pop .lens-notes-actions .btn {
    padding: 4px 12px;
    font-size: 12px;
}
.lens-notes-pop .lens-notes-hint {
    margin-right: auto;
    font-size: 10.5px;
    color: #878ba0;
    line-height: 1.3;
}
/* =================================================================== */
/* ! Hard (made-to-order) contact lenses
/* =================================================================== */
.lens-type-tag.custom {
	background-color: #0a2540;
	color: #ffffff;
}
.lens-contacts-dialog .cl-made-chip {
    background-color: #0a2540;
    color: #ffffff;
}
/* Trial BC, power, DIA, over-refraction sphere, cyl and axis, order power, Use */
.lens-contacts-dialog .cl-trial-rx-card .lens-rx-table .lens-rx-head, .lens-contacts-dialog .cl-trial-rx-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[7] 64px;
        grid-template-columns: 70px repeat(7, minmax(0, 1fr)) 64px;
}
.lens-contacts-dialog .cl-order-power {
    text-align: center;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0035d2;
}
.lens-contacts-dialog .cl-custom-card .lens-rx-table select.form-control {
    padding: 6px 2px;
    font-size: 12px;
}
/* Lab cost and margin under the billing totals - never on the invoice */
.lens-contacts-dialog .cl-margin {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px 18px;
    margin-top: 12px;
    padding: 8px 12px;
    border-radius: 8px;
    border: 1px dashed #e0e6ed;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-contacts-dialog .cl-margin span:first-child {
    margin-right: auto;
}
.lens-contacts-dialog .cl-margin b {
    color: #2e7d32;
}
/* =================================================================== */
/* ! Floating action bar (job and prescription dialogs)
/* Back, the step dots and the next action float over the bottom of the
/* step, so the form runs underneath it rather than ending at a bar.
/* =================================================================== */
.lens-dialog .lens-pane {
    position: relative;
}
/* Room for the bar under the last card, and a fade so content slides under it */
.lens-dialog .lens-pane .settings-pane-body {
    padding-bottom: 112px;
}
.lens-dialog .lens-pane::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 96px;
    background: linear-gradient(to bottom, transparent, #f4f7fe 70%);
    pointer-events: none;
    z-index: 4;
}
.lens-dialog .settings-action-bar.lens-float-bar {
    position: absolute;
    left: 50%;
    bottom: 18px;
    transform: translateX(-50%);
    z-index: 5;
    width: min(820px, calc(100% - 48px));
    gap: 10px;
    padding: 10px 10px 10px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 18px;
    background-color: rgba(255, 255, 255, 0.9);
    -webkit-backdrop-filter: blur(10px);
            backdrop-filter: blur(10px);
    box-shadow: 0 12px 32px rgba(10, 37, 64, 0.16), 0 2px 6px rgba(10, 37, 64, 0.06);
}
/* ngAnimate waits out an element's CSS transition before it adds or removes it, so the
		   buttons' hover transitions held a leaving button beside the one replacing it and held
		   the new one back. Buttons here appear and go instantly. */
.lens-dialog .settings-action-bar.lens-float-bar .ng-enter, .lens-dialog .settings-action-bar.lens-float-bar .ng-leave, .lens-dialog .settings-action-bar.lens-float-bar .ng-animate {
    transition: none !important;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn {
    height: 40px;
    padding: 0 18px;
    border-radius: 12px;
    font-size: 13px;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn[disabled] {
    opacity: 0.45;
    box-shadow: none;
    transform: none;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy {
    box-shadow: 0 6px 16px rgba(0, 53, 210, 0.28);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy .fa-arrow-right {
    margin-left: 4px;
    transition: transform 0.15s ease;
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy:hover:not([disabled]) {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(0, 53, 210, 0.34);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-navy:hover:not([disabled]) .fa-arrow-right {
    transform: translateX(3px);
}
.lens-dialog .settings-action-bar.lens-float-bar .btn-cancel {
    border-radius: 12px;
}
/* Back is the quiet way out - no box until it is pointed at */
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn {
    padding: 0 14px 0 10px;
    border: 0;
    background: none;
    color: #0035d2;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn .fa {
    margin-right: 4px;
    font-size: 11px;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-back-btn:hover {
    background-color: #e7f0ff;
}
.lens-dialog .settings-action-bar.lens-float-bar .lens-action-mid {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 0 6px;
}
.lens-dialog .settings-action-bar.lens-float-bar .action-hint {
    margin: 0;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-style: normal;
}
/* Where you are: the current step a pill, finished ones filled */
.lens-dialog .lens-step-dots {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.lens-dialog .lens-step-dots i {
    width: 7px;
    height: 7px;
    border-radius: 7px;
    background-color: #c0cde0;
    transition: width 0.2s ease, background-color 0.2s ease;
}
.lens-dialog .lens-step-dots i.done {
    background-color: #0035d2;
    opacity: 0.45;
}
.lens-dialog .lens-step-dots i.on {
    width: 20px;
    background-color: #0035d2;
    opacity: 1;
}
/* =================================================================== */
/* ! Practice settings: dispensing extras
/* One row per kind of extra, each item a small card - tick, name, price.
/* =================================================================== */
.settings-shell .lens-extras-settings .lx-fieldset {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}
.settings-shell .lens-extras-settings .lx-row {
    padding: 14px 0;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell .lens-extras-settings .lx-row:last-child {
    border-bottom: 0;
}
.settings-shell .lens-extras-settings .lx-row-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 14px;
    margin-bottom: 10px;
}
.settings-shell .lens-extras-settings .lx-row-head b {
    color: #0a2540;
    font-size: 13.5px;
}
.settings-shell .lens-extras-settings .lx-row-head small {
    -ms-flex: 1;
        flex: 1;
    color: #878ba0;
    font-size: 11.5px;
}
.settings-shell .lens-extras-settings .lx-count {
    margin-left: 8px;
    font-size: 11px;
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-items {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(210px, 1fr))[auto-fill];
        grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 10px;
}
.settings-shell .lens-extras-settings .lx-item {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    padding: 8px 10px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    transition: opacity 0.15s ease;
}
.settings-shell .lens-extras-settings .lx-item.off {
    opacity: 0.55;
    background-color: #f4f7fe;
}
.settings-shell .lens-extras-settings .lx-item.new {
    border-color: #0035d2;
}
.settings-shell .lens-extras-settings .lx-item .form-control {
    height: 30px;
    padding: 4px 8px;
    font-size: 12.5px;
}
/* The compact padding above would put the price under its $ - keep the sign's room */
.settings-shell .lens-extras-settings .lx-item .fee-input .fee-prefix {
    left: 9px;
    font-size: 12.5px;
}
.settings-shell .lens-extras-settings .lx-item .fee-input .form-control {
    padding-left: 21px;
}
.settings-shell .lens-extras-settings .lx-item-top, .settings-shell .lens-extras-settings .lx-item-bottom {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell .lens-extras-settings .lx-item-bottom {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
.settings-shell .lens-extras-settings .lx-item-bottom .fee-input {
    width: 96px;
}
.settings-shell .lens-extras-settings .lx-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    border-color: transparent;
    box-shadow: none;
}
.settings-shell .lens-extras-settings .lx-name:hover, .settings-shell .lens-extras-settings .lx-name:focus {
    border-color: #e0e6ed;
}
.settings-shell .lens-extras-settings .lx-name.has-error {
    border-color: #d9534f;
}
.settings-shell .lens-extras-settings .lx-hint {
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-icon {
    width: 14px;
    text-align: center;
    color: #0035d2;
}
/* A swatch, not the browser's full colour button */
.settings-shell .lens-extras-settings .lx-colour {
    -ms-flex: 0 0 22px;
        flex: 0 0 22px;
    width: 22px;
    height: 22px;
    padding: 0;
    border: 1px solid #e0e6ed;
    border-radius: 50%;
    overflow: hidden;
    cursor: pointer;
    background: none;
}
.settings-shell .lens-extras-settings .lx-colour::-webkit-color-swatch-wrapper {
    padding: 0;
}
.settings-shell .lens-extras-settings .lx-colour::-webkit-color-swatch {
    border: 0;
}
.settings-shell .lens-extras-settings .lx-discard {
    color: #a3aac0;
}
.settings-shell .lens-extras-settings .lx-discard:hover {
    color: #d9534f;
}
.settings-shell .lens-extras-settings .lx-free {
    font-size: 11.5px;
    color: #878ba0;
}
.settings-shell .lens-extras-settings .lx-toggle {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    margin: 0;
    font-size: 11.5px;
    font-weight: normal;
    color: #343a40;
    cursor: pointer;
}
.settings-shell .lens-extras-settings .lx-select {
    width: auto;
    -ms-flex: 1;
        flex: 1;
}
.settings-shell .lens-extras-settings .lx-add {
    min-height: 64px;
    border: 1px dashed #c0cde0;
    border-radius: 10px;
    background: none;
    color: #0035d2;
    font-size: 12.5px;
    font-weight: 600;
}
.settings-shell .lens-extras-settings .lx-add:hover {
    background-color: #e7f0ff;
}
.settings-shell .lens-extras-settings .lx-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 24px;
}
.settings-shell .lens-extras-settings .lx-inline-field {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 12.5px;
    font-weight: normal;
    color: #343a40;
}
.settings-shell .lens-extras-settings .lx-inline-field .fee-input {
    width: 96px;
}
/* A % sits after the number, where a $ sits before it */
.settings-shell .lens-extras-settings .fee-input.lx-suffix .fee-prefix {
    left: auto;
    right: 11px;
}
.settings-shell .lens-extras-settings .fee-input.lx-suffix .form-control {
    padding-left: 8px;
    padding-right: 24px;
}
/* =================================================================== */
/* ! Xero invoicing (job dialogs' invoice card)
/* Where the invoice goes in Xero: logged in, and the patient's contact.
/* =================================================================== */
.lens-dialog .lens-xero {
    margin-top: 16px;
    padding: 12px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #f4f7fe;
    font-size: 12.5px;
}
.lens-dialog .lens-xero.step-ready {
    border-color: rgba(32, 201, 151, 0.1);
    background-color: rgba(32, 201, 151, 0.1);
}
.lens-dialog .lens-xero-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    margin-bottom: 8px;
    color: #0035d2;
}
.lens-dialog .lens-xero-org {
    color: #878ba0;
    font-size: 11.5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* "Choose another", beside the contact worked out for the user; "Invoice without Xero" */
.lens-dialog .lens-xero-change {
    margin-left: auto;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-xero-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    color: #343a40;
}
.lens-dialog .lens-xero-row > .fa {
    color: #0035d2;
}
.lens-dialog .lens-xero-row > span:not(.lens-xero-actions) {
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
    min-width: 0;
}
.lens-dialog .lens-xero-row.warning > .fa {
    color: #d9534f;
}
.lens-dialog .lens-xero-row.ready > .fa {
    color: #2e7d32;
}
.lens-dialog .lens-xero-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.lens-dialog .lens-xero-search {
    position: relative;
    margin-top: 10px;
}
.lens-dialog .lens-xero-search .fa-spinner {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #878ba0;
}
.lens-dialog .lens-xero-results {
    margin-top: 6px;
    max-height: 168px;
    overflow-y: auto;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
}
.lens-dialog .lens-xero-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 8px;
    padding: 6px 10px;
    border-top: 1px solid #eef1f7;
}
.lens-dialog .lens-xero-result:first-child {
    border-top: 0;
}
.lens-dialog .lens-xero-result-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-width: 0;
}
.lens-dialog .lens-xero-result-name b {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-dialog .lens-xero-taken {
    color: #d9534f;
}
.lens-dialog .lens-xero-empty {
    padding: 8px 10px;
    color: #878ba0;
}
.lens-dialog .lens-xero-create {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 8px;
}
/* Raising a job kept in CatTrax: the bank account for its payments, and the button */
.lens-dialog .lens-xero-raise {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 8px;
    margin-top: 10px;
}
.lens-dialog .lens-xero-raise .lens-payment-account {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    margin: 0;
}
.lens-dialog .lens-xero-raise .lens-xero-error {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
}
.lens-dialog .lens-xero-error {
    margin-top: 6px;
    color: #d9534f;
}
/* =================================================================== */
/* ! Taking payment (job dialogs' invoice card, and the status dialog)
/* =================================================================== */
.lens-dialog .lens-payment, .lens-status-dialog .lens-payment {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
    font-size: 12.5px;
}
.lens-dialog .lens-payment-head, .lens-status-dialog .lens-payment-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: baseline;
        align-items: baseline;
    margin-bottom: 10px;
    color: #0035d2;
}
.lens-dialog .lens-payment-amount, .lens-dialog .lens-payment-methods, .lens-status-dialog .lens-payment-amount, .lens-status-dialog .lens-payment-methods {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-bottom: 10px;
}
.lens-dialog .lens-payment-amount .chip-select, .lens-dialog .lens-payment-methods .chip-select, .lens-status-dialog .lens-payment-amount .chip-select, .lens-status-dialog .lens-payment-methods .chip-select {
    padding: 4px 10px;
}
.lens-dialog .lens-payment-amount .fee-input, .lens-status-dialog .lens-payment-amount .fee-input {
    width: 120px;
}
.lens-dialog .lens-payment-account, .lens-status-dialog .lens-payment-account {
    display: block;
    margin: 0 0 10px;
    font-weight: normal;
}
.lens-dialog .lens-payment-foot, .lens-status-dialog .lens-payment-foot {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
}
.lens-dialog .lens-payment-foot .btn, .lens-status-dialog .lens-payment-foot .btn {
    width: auto;
    margin: 0;
}
.lens-dialog .lens-payment-problem, .lens-status-dialog .lens-payment-problem {
    -ms-flex: 1;
        flex: 1;
    color: #d9534f;
}
.lens-dialog .lens-paid-row, .lens-status-dialog .lens-paid-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 8px;
    padding: 4px 0;
    color: #343a40;
}
.lens-dialog .lens-paid-row .fa, .lens-status-dialog .lens-paid-row .fa {
    color: #2e7d32;
}
.lens-dialog .lens-paid-row small, .lens-status-dialog .lens-paid-row small {
    margin-left: auto;
    color: #878ba0;
}
.lens-dialog .lens-paid-row.full, .lens-status-dialog .lens-paid-row.full {
    color: #2e7d32;
}
/* What stops the invoice, on the action bar: the one thing to do, and a link to it */
.lens-dialog .lens-blocker, .lens-status-dialog .lens-blocker {
    font-style: normal;
    font-weight: 600;
    color: #0035d2;
    text-decoration: none;
}
.lens-dialog .lens-blocker:hover, .lens-status-dialog .lens-blocker:hover {
    text-decoration: underline;
}
.lens-dialog .lens-blocker .fa, .lens-status-dialog .lens-blocker .fa {
    margin-right: 4px;
}
/* =================================================================== */
/* ! Lens step: the Rx and its ADD, and lenses it can't be made in
/* =================================================================== */
.lens-dialog .lens-rx-strip {
    margin-bottom: 14px;
}
.lens-dialog .chip-select.unsuitable {
    opacity: 0.5;
    text-decoration: line-through;
}
.lens-dialog .lens-option-tile.unsuitable {
    opacity: 0.5;
    cursor: not-allowed;
}
.lens-dialog .lens-fit-note {
    margin-top: 4px;
    font-size: 11.5px;
    font-weight: 600;
    color: #0035d2;
}
.lens-dialog .lens-fit-note.bad {
    color: #d9534f;
}
/* =================================================================== */
/* ! Order & billing: items, discount and the order notes
/* =================================================================== */
.lens-dialog .lens-items .lens-discount {
    -ms-flex-align: center;
        align-items: center;
}
.lens-dialog .lens-items .lens-discount > span:first-child {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    overflow: visible;
}
.lens-dialog .lens-items .lens-discount .fee-input {
    width: 96px;
}
.lens-dialog .lens-items .lens-discount .chip-select {
    padding: 3px 9px;
}
.lens-dialog .lens-order-pdf {
    margin: 0 0 10px;
}
/* Boxes on hand for a contact lens from inventory, by the boxes to supply */
.lens-dialog .cl-stock-note {
	color: #2e7d32;
}
.lens-dialog .cl-stock-note.short {
    color: #d9534f;
}
/* =================================================================== */
/* ! Send order dialog
/* The status step from ready to order to order sent, opened from the
/* dashboard tile and the practice job list.
/* =================================================================== */
.lens-status-dialog {
	width: 520px;
	max-width: 92vw;
}
.lens-status-dialog form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    margin: 0;
}
.lens-status-dialog .lens-status-body {
    padding: 18px 28px 0;
    font-size: 13px;
    color: #343a40;
}
.lens-status-dialog .lens-status-job {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 16px;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    background-color: #f4f7fe;
}
.lens-status-dialog .lens-status-icon {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 42px;
    height: 42px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 18px;
}
.lens-status-dialog .lens-status-icon.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-status-dialog .lens-status-job-text {
    min-width: 0;
}
.lens-status-dialog .lens-status-job-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
.lens-status-dialog .lens-status-job-top b {
    font-family: 'Gordita Bold', sans-serif;
    color: #0a2540;
    font-size: 14px;
}
.lens-status-dialog .lens-status-job-desc {
    margin-top: 3px;
    color: #878ba0;
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-status-dialog .lens-status-move {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 12px;
    margin: 14px 0 12px;
}
.lens-status-dialog .lens-status-move .lens-status-pill {
    font-size: 11.5px;
    padding: 5px 12px;
}
.lens-status-dialog .lens-status-arrow {
    color: #a3aac0;
    font-size: 16px;
}
.lens-status-dialog .lens-status-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 14px;
}
.lens-status-dialog .lens-status-fact {
    padding: 8px 14px;
    border-radius: 10px;
    background-color: #f8f9fa;
}
.lens-status-dialog .lens-status-fact span {
    display: block;
    font-size: 11px;
    color: #878ba0;
}
.lens-status-dialog .lens-status-fact b {
    display: block;
    margin-top: 2px;
    color: #0a2540;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lens-status-dialog .lens-status-label {
    display: block;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #343a40;
}
.lens-status-dialog .lens-status-label small {
    margin-left: 4px;
    font-weight: 400;
    color: #a3aac0;
}
.lens-status-dialog .form-control {
    height: 38px;
    border-radius: 8px;
    border-color: #e0e6ed;
    box-shadow: none;
}
.lens-status-dialog .form-control:focus {
    border-color: #0035d2;
}
.lens-status-dialog .lens-status-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 8px;
    margin: 12px 0 4px;
    font-size: 12px;
    color: #878ba0;
}
.lens-status-dialog .lens-status-note i {
    margin-top: 2px;
    color: #0035d2;
}
/* Something unpaid: a reminder, with the payment form under it */
.lens-status-dialog .lens-status-payment {
    margin-top: 14px;
}
.lens-status-dialog .lens-status-payment .lens-payment {
    margin-top: 10px;
}
/* The settings dialogs' chips and money field, which this dialog sits outside */
.lens-status-dialog .lens-status-payment .chip-select {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    font-size: 12px;
    font-weight: 600;
    border-radius: 20px;
    background-color: #ffffff;
    color: #343a40;
    border: 1px solid #e0e6ed;
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
        -ms-user-select: none;
            user-select: none;
}
.lens-status-dialog .lens-status-payment .chip-select.selected {
    background-color: #e7f0ff;
    border-color: #0035d2;
    color: #0035d2;
}
.lens-status-dialog .lens-status-payment .fee-input {
    display: block;
    position: relative;
}
.lens-status-dialog .lens-status-payment .fee-input .fee-prefix {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #a3aac0;
    pointer-events: none;
}
.lens-status-dialog .lens-status-payment .fee-input .form-control {
    padding-left: 22px;
}
.lens-status-dialog .lens-status-reminder {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 10px;
    background-color: #fff8e1;
    color: #856404;
    font-size: 12.5px;
    line-height: 1.5;
}
.lens-status-dialog .lens-status-reminder .fa {
    margin-top: 2px;
}
.lens-status-dialog .lens-status-reminder.paid {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-status-dialog .lens-status-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    padding: 14px 28px 20px;
}
/* .btn-navy and .btn-cancel fill their container for form footers; here they size to their label */
.lens-status-dialog .lens-status-actions .btn {
    width: auto;
    min-width: 110px;
    max-width: none;
    white-space: nowrap;
    margin: 0;
}
/* =================================================================== */
/* ! Lens prescribing
/* The prescriptions tile and dialogs reuse the lens dispensing module
/* and dialog styles (_lens-dispensing.css, imported first, which also
/* defines the $lens-* tokens used here). Only what is new is defined.
/* =================================================================== */
/* --- Status pill: current / superseded / expired / withdrawn / draft --- */
.lens-rx-pill {
	display: -ms-inline-flexbox;
	display: inline-flex;
	-ms-flex-align: center;
	    align-items: center;
	gap: 5px;
	font-size: 10.5px;
	font-weight: 700;
	padding: 3px 9px;
	border-radius: 20px;
	white-space: nowrap;
	background-color: #e7f0ff;
	color: #0035d2;

	/* A contact lens draft whose trial pair is out keeps the default navy */
}
.lens-rx-pill.rx-current {
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
}
.lens-rx-pill.rx-superseded, .lens-rx-pill.rx-draft {
    background-color: #f8f9fa;
    color: #878ba0;
}
.lens-rx-pill.rx-expired, .lens-rx-pill.rx-withdrawn {
    background-color: #fbeceb;
    color: #d9534f;
}
/* --- A prescription's powers as a small table, one row per eye (lensRxTable) --- */
lens-rx-table {
	display: block;
	max-width: 100%;
	overflow-x: auto;
}
.lens-rx-mini {
	margin: 6px 0 2px;
	border-collapse: collapse;
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	color: #0a2540;
}
.lens-rx-mini th, .lens-rx-mini td {
    padding: 3px 0 3px 16px;
    text-align: right;
    white-space: nowrap;
}
.lens-rx-mini thead th {
    padding-bottom: 4px;
    border-bottom: 1px solid #e0e6ed;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #878ba0;
}
/* The eye, down the left */
.lens-rx-mini th:first-child {
    padding-left: 0;
    text-align: left;
    color: #0035d2;
    font-family: 'Gordita Bold', sans-serif;
}
.lens-rx-mini .lens-rx-mini-tag {
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 10px;
    background-color: #e7f0ff;
    font-family: inherit;
    font-size: 10px;
}
.lens-rx-mini .lens-rx-mini-none {
    text-align: left;
    color: #878ba0;
}
.lens-rx-mini-note, .lens-rx-mini-empty {
	font-size: 11px;
	color: #878ba0;
}
.lens-rx-mini-empty {
	margin-top: 4px;
}
/* --- Withdrawing an issued prescription, from the tile (the dialog is just the card) --- */
/* Wide enough for a full spectacle Rx - adds, prisms and PDs */
.lens-rx-withdraw-dialog .lens-confirm {
    width: 540px;
    max-width: 92vw;
    box-shadow: none;
}
.lens-rx-withdraw-dialog .lens-rx-withdraw-what {
    margin-bottom: 4px;
    font-size: 13px;
    color: #0a2540;
}
/* =================================================================== */
/* ! Dashboard module
/* =================================================================== */
.lens-rx-module .lens-job.rx-current {
    border-left-color: #20c997;
}
.lens-rx-module .lens-job.rx-draft {
    border-left-color: #a3aac0;
    border-left-style: dashed;
}
.lens-rx-module .lens-job.rx-trial {
    border-left-color: #0035d2;
    border-left-style: dashed;
}
.lens-rx-module .lens-job.rx-superseded, .lens-rx-module .lens-job.rx-expired {
    border-left-color: #c0cde0;
    opacity: 0.8;
}
.lens-rx-module .lens-job.rx-withdrawn {
    border-left-color: #d9534f;
    opacity: 0.8;
}
.lens-rx-module .lens-rx-withdrawn-note {
    color: #d9534f;
}
.lens-rx-module .lens-job-thumb lens-design-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
.lens-rx-module .lens-job-thumb .lens-design-art {
    width: 56px;
    height: 56px;
}
.lens-rx-module .lens-job-actions {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
/* =================================================================== */
/* ! Prescription dialogs
/* =================================================================== */
.lens-rx-dialog .lens-rx-preview lens-design-art {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
}
/* A date sits where the dispensing dialogs show a price */
.lens-rx-dialog .lens-rx-valid {
    font-size: 16px;
}
/* The spectacle Rx: its powers and ADDs, then its prisms and the monocular PDs */
.lens-rx-dialog .lens-rx-script-card .lens-rx-powers .lens-rx-head, .lens-rx-dialog .lens-rx-script-card .lens-rx-powers .lens-rx-row, .lens-rx-dialog .lens-rx-script-card .lens-rx-prisms .lens-rx-head, .lens-rx-dialog .lens-rx-script-card .lens-rx-prisms .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[5];
        grid-template-columns: 70px repeat(5, minmax(0, 1fr));
}
.lens-rx-dialog .lens-rx-bpd {
    margin-top: 10px;
    -ms-grid-columns: minmax(0, 200px);
        grid-template-columns: minmax(0, 200px);
}
/* An eye's balance lens, or no contact lens: a toggle under its name, and its row greyed */
.lens-rx-dialog .lens-eye-toggle {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-top: 4px;
    padding: 1px 7px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    font-size: 10px;
    font-weight: 600;
    color: #878ba0;
    text-decoration: none;
}
.lens-rx-dialog .lens-eye-toggle:hover {
    color: #0035d2;
    text-decoration: none;
}
.lens-rx-dialog .lens-eye-toggle.on {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.lens-rx-dialog .lens-rx-row.lens-eye-off .form-control {
    background-color: #f4f7fe;
}
/* A balance eye is flagged, not disabled: its values stay and can still be changed */
.lens-rx-dialog .lens-rx-row.lens-eye-balance .form-control {
    background-color: #e7f0ff;
}
/* The icon-only copy-right-to-left button in the Rx card headers, kept small so the header stays flat */
.lens-rx-dialog .md-button.md-fab.lens-copy-eye-btn {
    margin: -6px 0;
    width: 34px;
    height: 34px;
    min-height: 34px;
    line-height: 34px;
}
/* The comment written with the refraction, inside the refraction notice */
.lens-rx-dialog .lens-rx-refraction-comment {
    display: block;
    margin-top: 4px;
    font-style: italic;
}
.lens-rx-dialog .lens-rx-refraction-comment i {
    margin-right: 4px;
}
/* Clickable recommendations, grouped so the long list stays scannable */
.lens-rx-dialog .lens-rec-group {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
    margin-bottom: 6px;
}
.lens-rx-dialog .lens-rec-group .lens-chip-row {
    margin: 0;
}
.lens-rx-dialog .lens-rec-group-label {
    -ms-flex: 0 0 125px;
        flex: 0 0 125px;
    font-size: 10.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #a3aac0;
}
/* What changed since the last prescription, and what to look at before issuing */
.lens-rx-dialog .lens-rx-changes {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 18px;
    margin-top: 10px;
    font-size: 12.5px;
    color: #0a2540;
}
.lens-rx-dialog .lens-rx-changes .lens-rx-changes-label {
    color: #878ba0;
}
.lens-rx-dialog .lens-rx-warnings {
    margin: 12px 0 0;
}
/* The prescriber is whoever issues it: shown, not typed */
.lens-rx-dialog .lens-rx-prescriber {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    padding: 7px 0;
    font-size: 13px;
    color: #0a2540;
}
.lens-rx-dialog .lens-rx-prescriber small {
    color: #878ba0;
    font-size: 11.5px;
}
/* An inventory lens's eye is one of its boxes: one dropdown across the row */
.lens-rx-dialog .lens-rx-row .cl-box-select {
    grid-column: 2 / -1;
}
.lens-rx-dialog .cl-no-box {
    margin-top: 10px;
}
/* A trial review: one card per eye - over-refraction and VA, then the fit as chips */
.lens-rx-dialog .lens-trial-eye .card-header-flex h4 small {
    margin-left: 4px;
    color: #878ba0;
}
.lens-rx-dialog .lens-trial-measures {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 16px;
}
.lens-rx-dialog .lens-trial-measures label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
    margin: 0;
}
.lens-rx-dialog .lens-trial-measures .lens-label {
    margin: 0;
}
.lens-rx-dialog .lens-trial-or {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
}
.lens-rx-dialog .lens-trial-or .form-control {
    width: 90px;
}
/* The fit as rows of chips, each with its name - chips their own height, not the row's */
.lens-rx-dialog .lens-trial-fit {
    margin-top: 12px;
}
.lens-rx-dialog .lens-trial-fit .lens-chip-row {
    -ms-flex-align: center;
        align-items: center;
    margin-top: 6px;
}
.lens-rx-dialog .lens-trial-fit .lens-label {
    min-width: 84px;
    margin: 0;
}
.lens-rx-dialog .lens-trial-rotation {
    width: 70px;
    height: 30px;
}
/* Earlier trials, newest first */
.lens-rx-dialog .lens-trial-earlier {
    padding: 10px 0;
    border-bottom: 1px dashed #eef1f7;
}
.lens-rx-dialog .lens-trial-earlier:last-child {
    border-bottom: 0;
}
.lens-rx-dialog .lens-trial-earlier-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-bottom: 4px;
    color: #0a2540;
}
/* A lens tile with the box the patient's refraction converts to */
.lens-rx-dialog .cl-rx-match {
    margin-top: 6px;
    font-size: 11.5px;
    font-weight: 600;
    color: #2e7d32;
}
/* Each contact lens's details, and the left eye's own lens */
.lens-rx-dialog .cl-lens-slot {
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid #eef1f7;
}
.lens-rx-dialog .cl-lens-slot .cl-lens-slot-name {
    margin-bottom: 8px;
    color: #0a2540;
}
.lens-rx-dialog .cl-lens-slot .cl-stock-type {
    margin-bottom: 8px;
}
.lens-rx-dialog .cl-left-lens {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    margin-top: 12px;
}
.lens-rx-dialog .cl-left-lens .lens-label {
    margin: 0;
    white-space: nowrap;
}
.lens-rx-dialog .cl-left-lens .form-control {
    max-width: 360px;
}
/* Notes keep the writer's line breaks */
.lens-rx-dialog .lens-notes-value {
    white-space: pre-line;
}
.lens-rx-dialog .lens-notes-help {
    margin: 8px 0 0;
}
.lens-rx-dialog .lens-rx-subhead {
    margin: 18px 0 6px;
    padding-top: 14px;
    border-top: 1px solid #eef1f7;
    font-size: 12px;
    font-weight: 600;
    color: #0a2540;
}
/* A made-to-order lens's specification has a ninth column: a back toric's steep base curve */
.lens-dialog .cl-custom-card .lens-rx-table .lens-rx-head, .lens-dialog .cl-custom-card .lens-rx-table .lens-rx-row {
    -ms-grid-columns: 70px (minmax(0, 1fr))[9];
        grid-template-columns: 70px repeat(9, minmax(0, 1fr));
}
/* Field labels sit on their fields - not under the old global .lens-label margin (_exam.css) */
.lens-dialog .lens-rx-extra .lens-label {
	margin-top: 0;
}
/* =================================================================== */
/* ! Choosing a prescription in the dispensing dialogs
/* =================================================================== */
.lens-dialog .lens-rx-pick-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.lens-dialog .lens-rx-pick {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 12px 44px 12px 12px;
    border-radius: 12px;
    border: 2px solid #e0e6ed;
    background-color: #ffffff;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.lens-dialog .lens-rx-pick:hover {
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.1);
}
.lens-dialog .lens-rx-pick.selected {
    border-color: #0035d2;
    box-shadow: 0 6px 18px rgba(0, 53, 210, 0.14);
}
.lens-dialog .lens-rx-pick.selected .lens-tile-check {
    transform: scale(1);
    opacity: 1;
}
.lens-dialog .lens-rx-pick .lens-tile-check {
    position: absolute;
    top: 50%;
    right: 12px;
    margin-top: -12px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background-color: #0035d2;
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    transform: scale(0.6);
    opacity: 0;
    transition: transform 0.15s ease, opacity 0.15s ease;
}
.lens-dialog .lens-rx-pick-art {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.lens-dialog .lens-rx-pick-art .lens-design-art {
    width: 56px;
    height: 56px;
}
.lens-dialog .lens-rx-pick-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-rx-pick-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    color: #0035d2;
    font-size: 13px;
}
.lens-dialog .lens-rx-pick-powers {
    margin-top: 4px;
    color: #0035d2;
    font-size: 13px;
    font-weight: 700;
}
.lens-dialog .lens-rx-pick-meta {
    margin-top: 2px;
    color: #878ba0;
    font-size: 11.5px;
}
.lens-dialog .lens-rx-pick-meta i {
    color: #a3aac0;
}
/* A PD or fitting height not measured in the frame yet */
.lens-dialog .lens-rx-measure .form-control.lens-measure-missing {
    border-color: #856404;
    background-color: #fff8e1;
}
/* The prescribed columns are fixed; only PD and heights are entered */
.lens-dialog .lens-measure-notice {
    margin: 12px 0 0;
}
.lens-dialog .lens-rx-measure input[readonly] {
    background-color: #f4f7fe;
    cursor: default;
}
/* =================================================================== */
/* ! A contact lens from inventory: its type and replacement, set here
/* =================================================================== */
.lens-dialog .cl-stock-type {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-wrap: wrap;
	    flex-wrap: wrap;
	gap: 8px 24px;
	margin-bottom: 12px;
}
.lens-dialog .cl-stock-type .lens-chip-row {
    -ms-flex-align: center;
        align-items: center;
    margin: 0;
}
.lens-dialog .cl-stock-type .lens-label {
    margin: 0 4px 0 0;
}
/* =================================================================== */
/* ! Prescription history
/* Earlier prescriptions and what the patient wears now, beside the Rx
/* being written in the prescription dialogs.
/* =================================================================== */
.lens-dialog .lens-rx-history {
	/* Apart from the Rx card under it */
	margin-bottom: 18px;
}
/* The other kind, in one line */
.lens-dialog .lens-rx-history .lens-history-other {
    margin: 0 0 10px;
    font-size: 12.5px;
    color: #878ba0;
}
.lens-dialog .lens-rx-history .lens-history-other i {
    color: #a3aac0;
}
.lens-dialog .lens-rx-history .lens-history-loading {
    color: #878ba0;
    font-size: 12.5px;
}
.lens-dialog .lens-rx-history .lens-history-section + .lens-history-section {
    margin-top: 14px;
}
.lens-dialog .lens-rx-history .lens-history-label {
    margin-bottom: 6px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.lens-dialog .lens-rx-history .lens-history-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid #eef1f7;
}
.lens-dialog .lens-rx-history .lens-history-row:last-of-type {
    border-bottom: 0;
}
.lens-dialog .lens-rx-history .lens-history-row .lens-mini-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    white-space: nowrap;
}
.lens-dialog .lens-rx-history .lens-history-icon {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 34px;
    height: 34px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 14px;
}
.lens-dialog .lens-rx-history .lens-history-icon.contacts {
    background-color: #e3f4f1;
    color: #00796b;
}
.lens-dialog .lens-rx-history .lens-history-main {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.lens-dialog .lens-rx-history .lens-history-top {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    font-size: 13px;
    color: #0a2540;
}
.lens-dialog .lens-rx-history .lens-history-powers {
    margin-top: 2px;
    font-size: 13px;
    font-weight: 700;
    color: #0035d2;
}
.lens-dialog .lens-rx-history .lens-history-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 12px;
    margin-top: 2px;
    font-size: 11.5px;
    color: #878ba0;
}
.lens-dialog .lens-rx-history .lens-history-more {
    display: inline-block;
    margin-top: 6px;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
/* =================================================================== */
/* ! Inventory (prototype modal)
/* Scoped to `.settings-shell.inventory` so it sits on top of
/* _settings.css - the rail, pane, cards, chips, notices and form
/* controls all come from there. This file only adds the stock,
/* reorder tables and the side panel.
/* Patient invoicing (.settings-shell.invoicing) uses the tables,
/* status pills, notices and confirms too, so it is listed alongside;
/* what only it needs is in _invoicing.css. The task list and surgery
/* waitlist (.settings-shell.worklist) use the side panel as well;
/* theirs is _worklists.css.
/* =================================================================== */
.inventory-dialog {
	min-width: 78%;
	width: 78%;
	height: 88vh;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
.inventory-dialog .inv-practice-name {
    margin-left: 12px;
    font-size: 13px;
    opacity: 0.8;
}
.inventory-dialog .inv-prototype-badge {
    margin-left: 10px;
    padding: 2px 9px;
    border-radius: 8px;
    background-color: #ffab00;
    color: #ffffff;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
/* Reorder count in the rail - a pill, white on the active row */
.settings-shell.inventory .settings-nav-item .inv-count, .settings-shell.invoicing .settings-nav-item .inv-count, .settings-shell.worklist .settings-nav-item .inv-count {
    margin-left: auto;
    min-width: 20px;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: #ffab00;
    color: #ffffff;
    font-size: 11px;
    text-align: center;
}
.settings-shell.inventory .settings-nav-item.active .inv-count, .settings-shell.invoicing .settings-nav-item.active .inv-count, .settings-shell.worklist .settings-nav-item.active .inv-count {
    background-color: #ffffff;
    color: #0035d2;
}
/* Success green and error red, so the result of an action reads apart from the info notices */
.settings-shell.inventory .settings-notice.inv-flash.success, .settings-shell.invoicing .settings-notice.inv-flash.success, .settings-shell.worklist .settings-notice.inv-flash.success {
    background-color: rgba(32, 201, 151, 0.12);
    color: #2e7d32;
    border: 1px solid rgba(32, 201, 151, 0.35);
}
.settings-shell.inventory .settings-notice.inv-flash.error, .settings-shell.invoicing .settings-notice.inv-flash.error, .settings-shell.worklist .settings-notice.inv-flash.error {
    background-color: #fbeceb;
    color: #a94442;
    border: 1px solid rgba(169, 68, 66, 0.25);
}
.settings-shell.inventory .inv-toolbar, .settings-shell.invoicing .inv-toolbar, .settings-shell.worklist .inv-toolbar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 14px;
}
.settings-shell.inventory .inv-toolbar .form-control, .settings-shell.invoicing .inv-toolbar .form-control, .settings-shell.worklist .inv-toolbar .form-control {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    max-width: 340px;
}
.settings-shell.inventory .inv-toolbar .inv-category-select, .settings-shell.inventory .inv-toolbar .inv-status-select, .settings-shell.invoicing .inv-toolbar .inv-category-select, .settings-shell.invoicing .inv-toolbar .inv-status-select, .settings-shell.worklist .inv-toolbar .inv-category-select, .settings-shell.worklist .inv-toolbar .inv-status-select {
    -ms-flex: 0 0 150px;
        flex: 0 0 150px;
}
.settings-shell.inventory .inv-toolbar .inv-search-input, .settings-shell.invoicing .inv-toolbar .inv-search-input, .settings-shell.worklist .inv-toolbar .inv-search-input {
    max-width: 420px;
}
.settings-shell.inventory .inv-toolbar .btn, .settings-shell.invoicing .inv-toolbar .btn, .settings-shell.worklist .inv-toolbar .btn {
    margin: 0;
}
.settings-shell.inventory .inv-search-hint, .settings-shell.invoicing .inv-search-hint, .settings-shell.worklist .inv-search-hint {
    margin: -8px 0 14px;
}
.settings-shell.inventory .inv-search-hint .fa, .settings-shell.invoicing .inv-search-hint .fa, .settings-shell.worklist .inv-search-hint .fa {
    margin-right: 4px;
}
/* A barcode nothing holds yet: said plainly, with the way to add it */
.settings-shell.inventory .inv-barcode-miss, .settings-shell.invoicing .inv-barcode-miss, .settings-shell.worklist .inv-barcode-miss {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 10px;
    margin-bottom: 14px;
}
.settings-shell.inventory .inv-barcode-miss .btn, .settings-shell.invoicing .inv-barcode-miss .btn, .settings-shell.worklist .inv-barcode-miss .btn {
    width: auto;
    margin: 0 0 0 auto;
    padding: 3px 12px;
}
.settings-shell.inventory .inv-muted, .settings-shell.invoicing .inv-muted, .settings-shell.worklist .inv-muted {
    font-size: 12.5px;
    color: #6c757d;
    margin: 6px 0;
}
/* Sized like the table it stands in for, so the pane does not jump when the rows arrive */
.settings-shell.inventory .inv-loading, .settings-shell.invoicing .inv-loading, .settings-shell.worklist .inv-loading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    min-height: 220px;
    margin-bottom: 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    color: #6c757d;
    font-size: 13px;
}
.settings-shell.inventory .inv-loading .fa, .settings-shell.invoicing .inv-loading .fa, .settings-shell.worklist .inv-loading .fa {
    font-size: 18px;
    color: #0035d2;
}
/* Says the list is complete, so an infinite scroll does not leave the reader waiting for more */
.settings-shell.inventory .inv-list-end, .settings-shell.invoicing .inv-list-end, .settings-shell.worklist .inv-list-end {
    margin: 4px 0 14px;
    text-align: center;
}
.settings-shell.inventory .inv-load-more, .settings-shell.invoicing .inv-load-more, .settings-shell.worklist .inv-load-more {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 12px;
    margin: 6px 0 14px;
}
.settings-shell.inventory .inv-error-text, .settings-shell.invoicing .inv-error-text, .settings-shell.worklist .inv-error-text {
    font-size: 12.5px;
    color: #a94442;
}
/* IDs are shown so a tester can enter a move by hand and match rows against DynamoDB */
.settings-shell.inventory .inv-id, .settings-shell.inventory .inv-mono, .settings-shell.invoicing .inv-id, .settings-shell.invoicing .inv-mono, .settings-shell.worklist .inv-id, .settings-shell.worklist .inv-mono {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 11px;
    color: #a3aac0;
}
/* ! Tables (Stock, Reorder)
	/* Text left, numbers right in tabular figures, so columns of quantities
	/* line up and compare at a glance. Rows are separated by rules rather
	/* than stripes, which would fight the open detail and editor rows.
	/* =================================================================== */
.settings-shell.inventory .inv-table-bar, .settings-shell.invoicing .inv-table-bar, .settings-shell.worklist .inv-table-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 10px;
}
.settings-shell.inventory .inv-table-bar .inv-filter, .settings-shell.invoicing .inv-table-bar .inv-filter, .settings-shell.worklist .inv-table-bar .inv-filter {
    -ms-flex: 0 1 260px;
        flex: 0 1 260px;
    margin-left: auto;
}
/* Scrolls sideways rather than squashing columns when the dialog is narrow */
.settings-shell.inventory .inv-table-wrap, .settings-shell.invoicing .inv-table-wrap, .settings-shell.worklist .inv-table-wrap {
    overflow-x: auto;
    margin-bottom: 14px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
}
/* Child combinators throughout: an open Stock row holds a table of its own, which must not
	   pick up the outer table's rules */
.settings-shell.inventory .inv-table, .settings-shell.invoicing .inv-table, .settings-shell.worklist .inv-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
    color: #343a40;
}
.settings-shell.inventory .inv-table > thead > tr > th, .settings-shell.inventory .inv-table > tbody > tr > th, .settings-shell.inventory .inv-table > tbody > tr > td, .settings-shell.invoicing .inv-table > thead > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > td, .settings-shell.worklist .inv-table > thead > tr > th, .settings-shell.worklist .inv-table > tbody > tr > th, .settings-shell.worklist .inv-table > tbody > tr > td {
    padding: 10px 12px;
    text-align: left;
    vertical-align: middle;
}
.settings-shell.inventory .inv-table > thead > tr > th, .settings-shell.invoicing .inv-table > thead > tr > th, .settings-shell.worklist .inv-table > thead > tr > th {
    background-color: #f8faff;
    border-bottom: 1px solid #e0e6ed;
    color: #6c757d;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    white-space: nowrap;
}
/* Row headers read as the row's name, not as another column heading */
.settings-shell.inventory .inv-table > tbody > tr > th, .settings-shell.invoicing .inv-table > tbody > tr > th, .settings-shell.worklist .inv-table > tbody > tr > th {
    min-width: 120px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.inventory .inv-table > tbody > tr + tr > td, .settings-shell.inventory .inv-table > tbody > tr + tr > th, .settings-shell.inventory .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.inventory .inv-table > tbody + tbody > tr:first-child > th, .settings-shell.invoicing .inv-table > tbody > tr + tr > td, .settings-shell.invoicing .inv-table > tbody > tr + tr > th, .settings-shell.invoicing .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.invoicing .inv-table > tbody + tbody > tr:first-child > th, .settings-shell.worklist .inv-table > tbody > tr + tr > td, .settings-shell.worklist .inv-table > tbody > tr + tr > th, .settings-shell.worklist .inv-table > tbody + tbody > tr:first-child > td, .settings-shell.worklist .inv-table > tbody + tbody > tr:first-child > th {
    border-top: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-table > thead > tr > .inv-num, .settings-shell.inventory .inv-table > tbody > tr > .inv-num, .settings-shell.invoicing .inv-table > thead > tr > .inv-num, .settings-shell.invoicing .inv-table > tbody > tr > .inv-num, .settings-shell.worklist .inv-table > thead > tr > .inv-num, .settings-shell.worklist .inv-table > tbody > tr > .inv-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.inventory .inv-table .inv-col-toggle, .settings-shell.invoicing .inv-table .inv-col-toggle, .settings-shell.worklist .inv-table .inv-col-toggle {
    width: 36px;
    padding-right: 0;
}
.settings-shell.inventory .inv-table .inv-col-actions, .settings-shell.invoicing .inv-table .inv-col-actions, .settings-shell.worklist .inv-table .inv-col-actions {
    text-align: right;
    white-space: nowrap;
}
.settings-shell.inventory .inv-table .inv-cell-primary, .settings-shell.invoicing .inv-table .inv-cell-primary, .settings-shell.worklist .inv-table .inv-cell-primary {
    display: block;
}
.settings-shell.inventory .inv-table .inv-cell-secondary, .settings-shell.invoicing .inv-table .inv-cell-secondary, .settings-shell.worklist .inv-table .inv-cell-secondary {
    display: block;
    margin-top: 2px;
    font-size: 11.5px;
    font-weight: normal;
    color: #6c757d;
}
.settings-shell.inventory .inv-table .inv-mono, .settings-shell.invoicing .inv-table .inv-mono, .settings-shell.worklist .inv-table .inv-mono {
    font-size: 12px;
    color: #343a40;
}
.settings-shell.inventory .inv-table .inv-unknown, .settings-shell.invoicing .inv-table .inv-unknown, .settings-shell.worklist .inv-table .inv-unknown {
    color: #6c757d;
    cursor: help;
}
.settings-shell.inventory .inv-table > tbody.is-archived, .settings-shell.invoicing .inv-table > tbody.is-archived, .settings-shell.worklist .inv-table > tbody.is-archived {
    color: #6c757d;
}
.settings-shell.inventory .inv-table > tbody.is-archived > tr > th, .settings-shell.invoicing .inv-table > tbody.is-archived > tr > th, .settings-shell.worklist .inv-table > tbody.is-archived > tr > th {
    color: #6c757d;
}
/* A variation row opens the side panel, so the whole row is a target */
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row {
    cursor: pointer;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row:hover > th, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row:hover > th, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row:hover > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row:hover > th {
    background-color: #f2f6fb;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > th, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > th, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > th {
    background-color: #e7f0ff;
}
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-selected > :first-child {
    box-shadow: inset 3px 0 0 #0035d2;
}
/* Archived on its own: still listed with its item, but out of use */
.settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.inventory .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.invoicing .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-archived > td, .settings-shell.worklist .inv-table > tbody > tr.inv-variation-row.is-archived .inv-row-link {
    color: #6c757d;
}
.settings-shell.inventory .inv-table .inv-col-open, .settings-shell.invoicing .inv-table .inv-col-open, .settings-shell.worklist .inv-table .inv-col-open {
    width: 28px;
    padding-left: 0;
    color: #6c757d;
    text-align: right;
}
/* The variation's name: the keyboard route into the side panel */
.settings-shell.inventory .inv-row-link, .settings-shell.invoicing .inv-row-link, .settings-shell.worklist .inv-row-link {
    padding: 0;
    border: none;
    background: none;
    color: #2a307f;
    font: inherit;
    font-weight: 600;
    text-align: left;
}
.settings-shell.inventory .inv-row-link:hover, .settings-shell.inventory .inv-row-link:focus, .settings-shell.invoicing .inv-row-link:hover, .settings-shell.invoicing .inv-row-link:focus, .settings-shell.worklist .inv-row-link:hover, .settings-shell.worklist .inv-row-link:focus {
    color: #0035d2;
    text-decoration: underline;
}
/* On a narrow screen the lowest-priority columns go before the table has to scroll. Category
	   is in the toolbar and the barcode in a variation's settings, so nothing is lost. */
@media (max-width: 1500px) {
    .settings-shell.inventory .inv-table .inv-col-optional, .settings-shell.invoicing .inv-table .inv-col-optional, .settings-shell.worklist .inv-table .inv-col-optional {
        display: none;
    }
}
/* The item row opens its detail, so the whole row is a target */
.settings-shell.inventory .inv-stock-table .inv-item-row, .settings-shell.invoicing .inv-stock-table .inv-item-row, .settings-shell.worklist .inv-stock-table .inv-item-row {
    cursor: pointer;
}
.settings-shell.inventory .inv-stock-table .inv-item-row:hover td, .settings-shell.inventory .inv-stock-table .inv-item-row:hover th, .settings-shell.invoicing .inv-stock-table .inv-item-row:hover td, .settings-shell.invoicing .inv-stock-table .inv-item-row:hover th, .settings-shell.worklist .inv-stock-table .inv-item-row:hover td, .settings-shell.worklist .inv-stock-table .inv-item-row:hover th {
    background-color: #f2f6fb;
}
.settings-shell.inventory .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.inventory .inv-stock-table tbody.is-open .inv-item-row th, .settings-shell.invoicing .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.invoicing .inv-stock-table tbody.is-open .inv-item-row th, .settings-shell.worklist .inv-stock-table tbody.is-open .inv-item-row td, .settings-shell.worklist .inv-stock-table tbody.is-open .inv-item-row th {
    background-color: #f2f6fb;
}
/* =================================================================== */
.settings-shell.inventory .inv-toggle, .settings-shell.invoicing .inv-toggle, .settings-shell.worklist .inv-toggle {
    width: 26px;
    height: 26px;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 8px;
    background: none;
    color: #0035d2;
    font-size: 11px;
}
.settings-shell.inventory .inv-toggle:hover, .settings-shell.inventory .inv-toggle:focus, .settings-shell.invoicing .inv-toggle:hover, .settings-shell.invoicing .inv-toggle:focus, .settings-shell.worklist .inv-toggle:hover, .settings-shell.worklist .inv-toggle:focus {
    border-color: #e0e6ed;
    background-color: #ffffff;
}
/* A labelled icon button (panel close, stepper), outlined like .btn-cancel */
.settings-shell.inventory .inv-icon-btn, .settings-shell.invoicing .inv-icon-btn, .settings-shell.worklist .inv-icon-btn {
    width: 28px;
    height: 28px;
    padding: 0;
    border: 1px solid #bdbec1;
    border-radius: 50%;
    background-color: #ffffff;
    color: #555555;
    font-size: 13px;
}
.settings-shell.inventory .inv-icon-btn:hover, .settings-shell.inventory .inv-icon-btn:focus, .settings-shell.invoicing .inv-icon-btn:hover, .settings-shell.invoicing .inv-icon-btn:focus, .settings-shell.worklist .inv-icon-btn:hover, .settings-shell.worklist .inv-icon-btn:focus {
    border-color: #0035d2;
    color: #0035d2;
}
/* Abbreviated headings keep their full name on hover, without the browser's dotted underline */
.settings-shell.inventory .inv-table abbr[title], .settings-shell.invoicing .inv-table abbr[title], .settings-shell.worklist .inv-table abbr[title] {
    border-bottom: none;
    text-decoration: none;
    cursor: help;
}
/* .btn-navy and .btn-cancel fill their container for form footers; here they size to their label */
.settings-shell.inventory .inv-detail-footer .btn, .settings-shell.inventory .inv-confirm .btn, .settings-shell.invoicing .inv-detail-footer .btn, .settings-shell.invoicing .inv-confirm .btn, .settings-shell.worklist .inv-detail-footer .btn, .settings-shell.worklist .inv-confirm .btn {
    width: auto;
    margin: 0;
    padding: 3px 12px;
}
/* Status: an icon and a word as well as a colour, so it reads without colour vision */
.settings-shell.inventory .inv-status, .settings-shell.invoicing .inv-status, .settings-shell.worklist .inv-status {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    padding: 2px 9px;
    border-radius: 8px;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}
.settings-shell.inventory .inv-status.is-ok, .settings-shell.invoicing .inv-status.is-ok, .settings-shell.worklist .inv-status.is-ok {
    background-color: rgba(32, 201, 151, 0.12);
    color: #2e7d32;
}
.settings-shell.inventory .inv-status.is-low, .settings-shell.invoicing .inv-status.is-low, .settings-shell.worklist .inv-status.is-low {
    background-color: #fff8e1;
    color: #856404;
}
.settings-shell.inventory .inv-status.is-out, .settings-shell.invoicing .inv-status.is-out, .settings-shell.worklist .inv-status.is-out {
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.inventory .inv-status.is-archived, .settings-shell.invoicing .inv-status.is-archived, .settings-shell.worklist .inv-status.is-archived {
    background-color: #f8f9fa;
    color: #6c757d;
}
/* A contact lens box ordered in for the patient: expected, so neutral */
.settings-shell.inventory .inv-status.is-order, .settings-shell.invoicing .inv-status.is-order, .settings-shell.worklist .inv-status.is-order {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.inventory .inv-shortfall, .settings-shell.invoicing .inv-shortfall, .settings-shell.worklist .inv-shortfall {
    font-weight: 700;
    color: #856404;
}
/* Pending -> Ordered -> Arrived, as one segmented control; the steps before the current one are done */
.settings-shell.inventory .inv-backorders .inv-backorder-status, .settings-shell.invoicing .inv-backorders .inv-backorder-status, .settings-shell.worklist .inv-backorders .inv-backorder-status {
    min-width: 250px;
}
.settings-shell.inventory .inv-backorders .inv-close-row > td, .settings-shell.invoicing .inv-backorders .inv-close-row > td, .settings-shell.worklist .inv-backorders .inv-close-row > td {
    background-color: #f2f6fb;
}
/* ! Backorders
	/* =================================================================== */
.settings-shell.inventory .inv-bo-steps, .settings-shell.invoicing .inv-bo-steps, .settings-shell.worklist .inv-bo-steps {
    display: -ms-inline-flexbox;
    display: inline-flex;
    overflow: hidden;
    margin-bottom: 4px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
}
/* =================================================================== */
.settings-shell.inventory .inv-bo-step, .settings-shell.invoicing .inv-bo-step, .settings-shell.worklist .inv-bo-step {
    padding: 4px 10px;
    border: 0;
    border-left: 1px solid #e0e6ed;
    background-color: transparent;
    font-size: 12px;
    color: #6c757d;
    white-space: nowrap;
}
.settings-shell.inventory .inv-bo-step:first-child, .settings-shell.invoicing .inv-bo-step:first-child, .settings-shell.worklist .inv-bo-step:first-child {
    border-left: 0;
}
.settings-shell.inventory .inv-bo-step:hover:not([disabled]), .settings-shell.invoicing .inv-bo-step:hover:not([disabled]), .settings-shell.worklist .inv-bo-step:hover:not([disabled]) {
    background-color: #f2f6fb;
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-step.is-done, .settings-shell.invoicing .inv-bo-step.is-done, .settings-shell.worklist .inv-bo-step.is-done {
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-step.is-current, .settings-shell.invoicing .inv-bo-step.is-current, .settings-shell.worklist .inv-bo-step.is-current {
    font-weight: 700;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.inventory .inv-bo-step[disabled], .settings-shell.invoicing .inv-bo-step[disabled], .settings-shell.worklist .inv-bo-step[disabled] {
    cursor: progress;
}
.settings-shell.inventory .inv-status.is-ordered, .settings-shell.invoicing .inv-status.is-ordered, .settings-shell.worklist .inv-status.is-ordered {
    background-color: #f2f6fb;
    color: #0035d2;
}
.settings-shell.inventory .inv-bo-confirm, .settings-shell.invoicing .inv-bo-confirm, .settings-shell.worklist .inv-bo-confirm {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.inventory .inv-bo-confirm span, .settings-shell.invoicing .inv-bo-confirm span, .settings-shell.worklist .inv-bo-confirm span {
    -ms-flex: 1 1 240px;
        flex: 1 1 240px;
}
.settings-shell.inventory .inv-bo-confirm .form-control, .settings-shell.invoicing .inv-bo-confirm .form-control, .settings-shell.worklist .inv-bo-confirm .form-control {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
    height: 30px;
}
.settings-shell.inventory .inv-bo-confirm .btn, .settings-shell.invoicing .inv-bo-confirm .btn, .settings-shell.worklist .inv-bo-confirm .btn {
    width: auto;
    margin: 0;
}
.settings-shell.inventory .inv-bo-hint, .settings-shell.invoicing .inv-bo-hint, .settings-shell.worklist .inv-bo-hint {
    margin-top: 10px;
    font-size: 12px;
}
/* ! Item detail (an open Stock row)
	/* =================================================================== */
.settings-shell.inventory .inv-detail-row > td, .settings-shell.invoicing .inv-detail-row > td, .settings-shell.worklist .inv-detail-row > td {
    padding: 4px 12px 14px 16px;
    background-color: #f2f6fb;
}
/* =================================================================== */
.settings-shell.inventory .inv-detail .inv-muted, .settings-shell.inventory .inv-detail .inv-error-text, .settings-shell.invoicing .inv-detail .inv-muted, .settings-shell.invoicing .inv-detail .inv-error-text, .settings-shell.worklist .inv-detail .inv-muted, .settings-shell.worklist .inv-detail .inv-error-text {
    margin: 8px 0;
}
/* Also an .inv-table, so these match its selectors to win by order */
.settings-shell.inventory .inv-subtable, .settings-shell.invoicing .inv-subtable, .settings-shell.worklist .inv-subtable {
    border: 1px solid #e0e6ed;
    background-color: #ffffff;
}
.settings-shell.inventory .inv-subtable > thead > tr > th, .settings-shell.inventory .inv-subtable > tbody > tr > th, .settings-shell.inventory .inv-subtable > tbody > tr > td, .settings-shell.invoicing .inv-subtable > thead > tr > th, .settings-shell.invoicing .inv-subtable > tbody > tr > th, .settings-shell.invoicing .inv-subtable > tbody > tr > td, .settings-shell.worklist .inv-subtable > thead > tr > th, .settings-shell.worklist .inv-subtable > tbody > tr > th, .settings-shell.worklist .inv-subtable > tbody > tr > td {
    padding: 8px 10px;
}
.settings-shell.inventory .inv-subtable > thead > tr > th, .settings-shell.invoicing .inv-subtable > thead > tr > th, .settings-shell.worklist .inv-subtable > thead > tr > th {
    background-color: #ffffff;
}
/* A contact lens: what it is, over its box prescriptions */
.settings-shell.inventory .inv-lens-description, .settings-shell.invoicing .inv-lens-description, .settings-shell.worklist .inv-lens-description {
    margin: 0 0 8px;
}
/* Contact lens boxes as rows of small inputs - a new lens's, or ones being added to a lens - sized
	   to the card, the barcode taking what's left */
.settings-shell.inventory .inv-box-table, .settings-shell.invoicing .inv-box-table, .settings-shell.worklist .inv-box-table {
    width: 100%;
}
.settings-shell.inventory .inv-box-table > thead > tr > th, .settings-shell.inventory .inv-box-table > tbody > tr > td, .settings-shell.invoicing .inv-box-table > thead > tr > th, .settings-shell.invoicing .inv-box-table > tbody > tr > td, .settings-shell.worklist .inv-box-table > thead > tr > th, .settings-shell.worklist .inv-box-table > tbody > tr > td {
    padding: 4px 4px;
    vertical-align: middle;
}
.settings-shell.inventory .inv-box-table > thead > tr > th, .settings-shell.invoicing .inv-box-table > thead > tr > th, .settings-shell.worklist .inv-box-table > thead > tr > th {
    white-space: nowrap;
}
.settings-shell.inventory .inv-box-table .form-control, .settings-shell.invoicing .inv-box-table .form-control, .settings-shell.worklist .inv-box-table .form-control {
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 4px 6px;
}
.settings-shell.inventory .inv-box-table > tbody > tr > td:nth-child(-n + 8), .settings-shell.invoicing .inv-box-table > tbody > tr > td:nth-child(-n + 8), .settings-shell.worklist .inv-box-table > tbody > tr > td:nth-child(-n + 8) {
    width: 9%;
}
.settings-shell.inventory .inv-add-boxes, .settings-shell.invoicing .inv-add-boxes, .settings-shell.worklist .inv-add-boxes {
    margin-top: 12px;
    padding: 12px;
    border: 1px dashed #e0e6ed;
    border-radius: 10px;
}
.settings-shell.inventory .inv-add-boxes h5, .settings-shell.invoicing .inv-add-boxes h5, .settings-shell.worklist .inv-add-boxes h5 {
    margin-top: 0;
    font-family: 'Gordita Bold', sans-serif;
    color: #0035d2;
}
.settings-shell.inventory .inv-add-boxes .inv-editor-actions, .settings-shell.invoicing .inv-add-boxes .inv-editor-actions, .settings-shell.worklist .inv-add-boxes .inv-editor-actions {
    margin-top: 8px;
}
.settings-shell.inventory .inv-detail-footer, .settings-shell.invoicing .inv-detail-footer, .settings-shell.worklist .inv-detail-footer {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-top: 10px;
}
.settings-shell.inventory .inv-detail-footer .inv-spacer, .settings-shell.invoicing .inv-detail-footer .inv-spacer, .settings-shell.worklist .inv-detail-footer .inv-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-detail-footer .inv-muted, .settings-shell.invoicing .inv-detail-footer .inv-muted, .settings-shell.worklist .inv-detail-footer .inv-muted {
    margin: 0;
}
.settings-shell.inventory .inv-detail-footer .btn, .settings-shell.invoicing .inv-detail-footer .btn, .settings-shell.worklist .inv-detail-footer .btn {
    margin: 0;
}
.settings-shell.inventory .inv-detail-meta, .settings-shell.invoicing .inv-detail-meta, .settings-shell.worklist .inv-detail-meta {
    font-size: 11.5px;
    color: #6c757d;
}
/* The archive confirmation replaces the button in place, so it is read in context */
.settings-shell.inventory .inv-confirm, .settings-shell.invoicing .inv-confirm, .settings-shell.worklist .inv-confirm {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    padding: 6px 10px;
    border: 1px solid rgba(169, 68, 66, 0.25);
    border-radius: 8px;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 12px;
}
/* ! Side panel (one variation's stock and details)
	/* A column beside the pane's content, never over it: the pane lays its
	/* children out in a row here, so opening the panel narrows the table
	/* rather than hiding part of it. Each scrolls on its own.
	/* =================================================================== */
.settings-shell.inventory .settings-pane, .settings-shell.invoicing .settings-pane, .settings-shell.worklist .settings-pane {
    -ms-flex-direction: row;
        flex-direction: row;
}
.settings-shell.inventory .settings-pane > .settings-pane-inner, .settings-shell.invoicing .settings-pane > .settings-pane-inner, .settings-shell.worklist .settings-pane > .settings-pane-inner {
    min-width: 0;
}
/* What is left of the table drops its secondary columns; the open line's are in the panel */
.settings-shell.inventory .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.inventory .settings-pane.has-panel .inv-table .inv-col-secondary, .settings-shell.invoicing .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.invoicing .settings-pane.has-panel .inv-table .inv-col-secondary, .settings-shell.worklist .settings-pane.has-panel .inv-table .inv-col-optional, .settings-shell.worklist .settings-pane.has-panel .inv-table .inv-col-secondary {
    display: none;
}
/* =================================================================== */
.settings-shell.inventory .settings-pane > .inv-panel, .settings-shell.invoicing .settings-pane > .inv-panel, .settings-shell.worklist .settings-pane > .inv-panel {
    -ms-flex: 0 0 clamp(300px, 36%, 400px);
        flex: 0 0 clamp(300px, 36%, 400px);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    background-color: #ffffff;
    border-left: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-head, .settings-shell.invoicing .inv-panel-head, .settings-shell.worklist .inv-panel-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 18px 20px 14px;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-head h4, .settings-shell.invoicing .inv-panel-head h4, .settings-shell.worklist .inv-panel-head h4 {
    margin: 0;
    font-size: 17px;
    font-weight: 700;
    color: #2a307f;
    outline: none;
}
.settings-shell.inventory .inv-panel-eyebrow, .settings-shell.invoicing .inv-panel-eyebrow, .settings-shell.worklist .inv-panel-eyebrow {
    margin: 0 0 2px;
    font-size: 11.5px;
    font-weight: 600;
    color: #6c757d;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}
.settings-shell.inventory .inv-panel-body, .settings-shell.invoicing .inv-panel-body, .settings-shell.worklist .inv-panel-body {
    -ms-flex: 1;
        flex: 1;
    overflow-y: auto;
    padding: 16px 20px 24px;
}
.settings-shell.inventory .inv-panel-body .settings-notice, .settings-shell.invoicing .inv-panel-body .settings-notice, .settings-shell.worklist .inv-panel-body .settings-notice {
    margin-bottom: 14px;
}
/* The figures the forms below change, read at a glance */
.settings-shell.inventory .inv-panel-summary, .settings-shell.invoicing .inv-panel-summary, .settings-shell.worklist .inv-panel-summary {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 22px;
    margin: 0;
    padding: 12px 14px;
    border-radius: 10px;
    background-color: #f8faff;
}
.settings-shell.inventory .inv-panel-summary dt, .settings-shell.invoicing .inv-panel-summary dt, .settings-shell.worklist .inv-panel-summary dt {
    margin-bottom: 4px;
    white-space: nowrap;
    font-size: 11px;
    font-weight: 600;
    color: #6c757d;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}
.settings-shell.inventory .inv-panel-summary dd, .settings-shell.invoicing .inv-panel-summary dd, .settings-shell.worklist .inv-panel-summary dd {
    margin: 0;
}
.settings-shell.inventory .inv-panel-qty, .settings-shell.invoicing .inv-panel-qty, .settings-shell.worklist .inv-panel-qty {
    font-size: 24px;
    font-weight: 700;
    line-height: 1.1;
    color: #2a307f;
    font-variant-numeric: tabular-nums;
}
.settings-shell.inventory .inv-panel-qty-sm, .settings-shell.invoicing .inv-panel-qty-sm, .settings-shell.worklist .inv-panel-qty-sm {
    font-size: 18px;
    color: #343a40;
}
.settings-shell.inventory .inv-panel-section, .settings-shell.invoicing .inv-panel-section, .settings-shell.worklist .inv-panel-section {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #e0e6ed;
}
.settings-shell.inventory .inv-panel-section h5, .settings-shell.invoicing .inv-panel-section h5, .settings-shell.worklist .inv-panel-section h5 {
    margin: 0 0 4px;
    font-size: 13.5px;
    font-weight: 700;
    color: #2a307f;
}
.settings-shell.inventory .inv-panel-section .control-label, .settings-shell.invoicing .inv-panel-section .control-label, .settings-shell.worklist .inv-panel-section .control-label {
    display: block;
    margin: 12px 0 4px;
}
.settings-shell.inventory .inv-panel-section .form-control, .settings-shell.invoicing .inv-panel-section .form-control, .settings-shell.worklist .inv-panel-section .form-control {
    width: 100%;
}
.settings-shell.inventory .inv-optional, .settings-shell.invoicing .inv-optional, .settings-shell.worklist .inv-optional {
    margin-left: 4px;
    font-weight: normal;
    color: #6c757d;
    text-transform: none;
}
.settings-shell.inventory .inv-stepper, .settings-shell.invoicing .inv-stepper, .settings-shell.worklist .inv-stepper {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.inventory .inv-stepper .inv-icon-btn, .settings-shell.invoicing .inv-stepper .inv-icon-btn, .settings-shell.worklist .inv-stepper .inv-icon-btn {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
}
.settings-shell.inventory .inv-stepper .form-control, .settings-shell.invoicing .inv-stepper .form-control, .settings-shell.worklist .inv-stepper .form-control {
    -ms-flex: 0 0 90px;
        flex: 0 0 90px;
    width: 90px;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
/* The − / + buttons beside it do the stepping, so the browser's own spinner arrows are hidden.
		   Only on the number box - the units select beside it keeps its dropdown arrow. */
.settings-shell.inventory .inv-stepper input[type="number"], .settings-shell.invoicing .inv-stepper input[type="number"], .settings-shell.worklist .inv-stepper input[type="number"] {
    -moz-appearance: textfield;
    -webkit-appearance: textfield;
            appearance: textfield;
}
.settings-shell.inventory .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.inventory .inv-stepper input[type="number"]::-webkit-outer-spin-button, .settings-shell.invoicing .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.invoicing .inv-stepper input[type="number"]::-webkit-outer-spin-button, .settings-shell.worklist .inv-stepper input[type="number"]::-webkit-inner-spin-button, .settings-shell.worklist .inv-stepper input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.settings-shell.inventory .inv-stepper .form-control.inv-stepper-unit, .settings-shell.invoicing .inv-stepper .form-control.inv-stepper-unit, .settings-shell.worklist .inv-stepper .form-control.inv-stepper-unit {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    width: auto;
    text-align: left;
}
.settings-shell.inventory .inv-panel-hint, .settings-shell.invoicing .inv-panel-hint, .settings-shell.worklist .inv-panel-hint {
    margin: 6px 0 0;
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.inventory .inv-panel-hint strong, .settings-shell.invoicing .inv-panel-hint strong, .settings-shell.worklist .inv-panel-hint strong {
    color: #2a307f;
}
/* A secondary action that fills a form in, rather than submitting anything */
.settings-shell.inventory .inv-link-btn, .settings-shell.invoicing .inv-link-btn, .settings-shell.worklist .inv-link-btn {
    margin-top: 8px;
    padding: 0;
    border: none;
    background: none;
    color: #0035d2;
    font-size: 12px;
    font-weight: 600;
    text-decoration: underline;
}
.settings-shell.inventory .inv-panel-fields, .settings-shell.invoicing .inv-panel-fields, .settings-shell.worklist .inv-panel-fields {
    display: -ms-flexbox;
    display: flex;
    gap: 12px;
}
.settings-shell.inventory .inv-panel-fields > div, .settings-shell.invoicing .inv-panel-fields > div, .settings-shell.worklist .inv-panel-fields > div {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-mono-input, .settings-shell.invoicing .inv-mono-input, .settings-shell.worklist .inv-mono-input {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
}
/* Each form's save, centred under its fields, with anything it needs to say beneath it */
.settings-shell.inventory .inv-panel-actions, .settings-shell.invoicing .inv-panel-actions, .settings-shell.worklist .inv-panel-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-top: 18px;
}
.settings-shell.inventory .inv-panel-actions .inv-muted, .settings-shell.invoicing .inv-panel-actions .inv-muted, .settings-shell.worklist .inv-panel-actions .inv-muted {
    margin: 0;
    text-align: center;
}
/* The panel's primary action: a solid, squarer button rather than the pill used in form footers */
.settings-shell.inventory .inv-panel-save, .settings-shell.invoicing .inv-panel-save, .settings-shell.worklist .inv-panel-save {
    min-width: 200px;
    margin: 0;
    padding: 9px 28px;
    border: none;
    border-radius: 8px;
    background-color: #0035d2;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    box-shadow: 0 2px 6px rgba(0, 53, 210, 0.25);
}
.settings-shell.inventory .inv-panel-save:hover, .settings-shell.inventory .inv-panel-save:focus, .settings-shell.invoicing .inv-panel-save:hover, .settings-shell.invoicing .inv-panel-save:focus, .settings-shell.worklist .inv-panel-save:hover, .settings-shell.worklist .inv-panel-save:focus {
    background-color: #2a307f;
    color: #ffffff;
}
.settings-shell.inventory .inv-panel-save[disabled], .settings-shell.invoicing .inv-panel-save[disabled], .settings-shell.worklist .inv-panel-save[disabled] {
    background-color: #c0cde0;
    box-shadow: none;
    color: #ffffff;
    opacity: 1;
    cursor: not-allowed;
}
/* New item form actions */
.settings-shell.inventory .inv-editor-actions, .settings-shell.invoicing .inv-editor-actions, .settings-shell.worklist .inv-editor-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 10px;
    margin-top: 12px;
}
.settings-shell.inventory .inv-editor-actions .action-hint, .settings-shell.invoicing .inv-editor-actions .action-hint, .settings-shell.worklist .inv-editor-actions .action-hint {
    margin-right: auto;
    font-size: 11.5px;
    color: #6c757d;
    font-style: italic;
}
.settings-shell.inventory .inv-editor-actions .inv-spacer, .settings-shell.invoicing .inv-editor-actions .inv-spacer, .settings-shell.worklist .inv-editor-actions .inv-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.inventory .inv-editor-actions .btn, .settings-shell.invoicing .inv-editor-actions .btn, .settings-shell.worklist .inv-editor-actions .btn {
    margin: 0;
    max-width: 220px;
}
/* New item form: one card per variation */
.settings-shell.inventory .inv-item-head, .settings-shell.invoicing .inv-item-head, .settings-shell.worklist .inv-item-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.settings-shell.inventory .inv-new-variation, .settings-shell.invoicing .inv-new-variation, .settings-shell.worklist .inv-new-variation {
    margin-top: 14px;
}
/* =================================================================== */
/* ! Patient invoicing (NZ)
/* Built on the settings shell (_settings.css) like the calendar, and
/* laid out like a mail client: the invoices as a small table on the
/* left, the one open drawn as a printed invoice on the right, with a
/* compact payment card beside it (as the inventory's stock adjustment).
/* The editor's line table, status pills, notices and confirms come
/* from _inventory.css, which lists this shell alongside its own.
/* =================================================================== */
/* Only a `from`, so it fades to whatever background the element has - a selected row's included */
@keyframes invoicing-fresh {
	from {
		background-color: rgba(32, 201, 151, 0.26);
	}
}
@keyframes invoicing-pop {
	0%, 100% {
		transform: scale(1);
	}

	40% {
		transform: scale(1.14);
	}
}
.invoicing-dialog {
	min-width: 88%;
	width: 88%;
	height: 90vh;
	max-height: 94vh;
	padding: 0;
	border-top-width: 0;

}
/* ! Shared controls (as the calendar's toolbar)
	/* =================================================================== */
.settings-shell.invoicing .cal-btn {
    height: 34px;
    padding: 0 13px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.15s ease;
}
.settings-shell.invoicing .cal-btn .fa {
    margin-right: 5px;
    color: #0035d2;
}
.settings-shell.invoicing .cal-btn:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.invoicing .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.invoicing .cal-btn[disabled] {
    opacity: 0.45;
    cursor: not-allowed;
}
.settings-shell.invoicing .cal-btn .fa-chevron-left {
    font-size: 10px;
}
/* =================================================================== */
.settings-shell.invoicing .cal-icon-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 34px;
    padding: 0;
    font-size: 12px;
}
.settings-shell.invoicing .cal-icon-btn .fa {
    margin: 0;
}
.settings-shell.invoicing .invoicing-search {
    position: relative;
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .invoicing-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.invoicing .invoicing-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.settings-shell.invoicing .invoicing-search .invoicing-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.invoicing .invoicing-search .invoicing-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
/* .btn-cancel and .btn-navy fill their container for form footers; these size to their label */
.settings-shell.invoicing .invoicing-mini-btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 4px 12px;
    font-size: 12px;
}
.settings-shell.invoicing .settings-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .settings-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
}
.settings-shell.invoicing .settings-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.settings-shell.invoicing .settings-notice .notice-dismiss:hover {
    opacity: 1;
}
/* A draft is the practice's own working copy - navy, not the grey of something finished with */
.settings-shell.invoicing .inv-status.is-draft {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.invoicing .invoice-overdue-text {
    color: #a94442;
    font-weight: 600;
}
/* ! List column: the patient, their balance, and their invoices
	/* =================================================================== */
.settings-shell.invoicing .invoicing-list {
    -ms-flex: 0 0 320px;
        flex: 0 0 320px;
    width: 320px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    min-height: 0;
    background-color: #ffffff;
    border-right: 1px solid #e0e6ed;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-list-head {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 12px;
    padding: 18px 16px 14px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoicing-patient {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 12px;
}
.settings-shell.invoicing .invoicing-patient-text {
    min-width: 0;
}
.settings-shell.invoicing .invoicing-patient-name {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 14px;
    color: #0a2540;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell.invoicing .invoicing-patient-sub {
    margin-top: 2px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-tools {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.invoicing .invoicing-new-btn {
    -ms-flex: 1;
        flex: 1;
    width: auto;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: 8px 14px;
}
.settings-shell.invoicing .invoicing-new-btn.is-current {
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.2);
}
/* Owing / overdue / paid, side by side */
.settings-shell.invoicing .invoicing-balance {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    gap: 16px;
    margin: 0;
    padding: 10px 16px;
    border-bottom: 1px solid #eef1f7;
    background-color: #fafbfe;
}
.settings-shell.invoicing .invoicing-stat {
    min-width: 0;
}
.settings-shell.invoicing .invoicing-stat.is-overdue .invoicing-stat-label, .settings-shell.invoicing .invoicing-stat.is-overdue .invoicing-stat-value {
    color: #a94442;
}
.settings-shell.invoicing .invoicing-stat-label {
    margin-bottom: 1px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-stat-value {
    margin: 0;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 13.5px;
    color: #0a2540;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.settings-shell.invoicing .invoicing-stat-value.is-zero {
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-stat-value.is-paid {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-list-items {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
}
.settings-shell.invoicing .invoicing-list-items::-webkit-scrollbar {
    width: 6px;
}
.settings-shell.invoicing .invoicing-list-items::-webkit-scrollbar-thumb {
    background-color: rgba(0, 53, 210, 0.1);
    border-radius: 20px;
}
/* An .inv-table, tightened for the narrow column: every row a click target, as the inventory's.
	   Two columns - the date over its main item, the total over its status - fixed so the item is cut
	   short rather than widening the list. */
.settings-shell.invoicing .invoice-list-table {
    table-layout: fixed;
}
.settings-shell.invoicing .invoice-list-table .invoice-list-total-col {
    width: 112px;
}
.settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
    vertical-align: top;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
    padding: 8px 10px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > th {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1;
    font-size: 10.5px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > :first-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :first-child {
    padding-left: 16px;
}
.settings-shell.invoicing .invoice-list-table > thead > tr > :last-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :last-child {
    padding-right: 16px;
}
.settings-shell.invoicing .invoice-list-table > tbody > tr > th {
    min-width: 0;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-list-table .inv-status {
    padding: 1px 7px;
    font-size: 10.5px;
}
.settings-shell.invoicing .invoice-list-table .invoice-list-amount .inv-status {
    margin-top: 4px;
}
/* While the editor is open the list is shown but not used */
.settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr {
    cursor: default;
    opacity: 0.6;
}
.settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr:hover > td, .settings-shell.invoicing .invoice-list-table.is-locked > tbody > tr:hover > th {
    background-color: transparent;
}
/* Centred, with any icon kept beside its words rather than pushed to the other edge */
.settings-shell.invoicing .invoice-list-item {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    min-width: 0;
    margin-top: 3px;
    font-size: 11.5px;
    font-weight: normal;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-list-item-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-list-item-more {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-weight: 600;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    padding: 18px 16px;
    text-align: center;
    font-size: 12.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-list-note .fa {
    margin-right: 6px;
}
.settings-shell.invoicing .invoicing-list-note.is-error {
    color: #a94442;
}
/* Who invoices go to, the email they are sent to, and ACC */
.settings-shell.invoicing .invoicing-list-foot {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    padding: 12px 16px 14px;
    border-top: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoicing-list-foot .footer-label {
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-list-foot .link-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 11.5px;
}
.settings-shell.invoicing .invoicing-xero-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
}
.settings-shell.invoicing .invoicing-xero-row > .fa {
    width: 14px;
    margin-top: 4px;
    color: #a3aac0;
    text-align: center;
}
.settings-shell.invoicing .invoicing-xero-row > .fa-link {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-xero-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
/* The linked contact is archived in Xero: kept compact to fit the rail */
.settings-shell.invoicing .settings-notice.invoicing-archived {
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px 10px;
    margin: 10px 0 0;
    padding: 10px 12px;
    font-size: 12px;
}
/* Wraps onto further lines rather than being cut off - a long name, or one long word, still shows in full */
.settings-shell.invoicing .invoicing-xero-contact {
    margin-top: 1px;
    overflow-wrap: anywhere;
    font-size: 12px;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-no-email {
    margin-top: 1px;
    font-size: 12px;
    color: #878ba0;
}
.settings-shell.invoicing .invoicing-email-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    margin-left: 24px;
}
.settings-shell.invoicing .invoicing-email-form .form-control {
    height: 32px;
    padding: 5px 10px;
    font-size: 12.5px;
}
.settings-shell.invoicing .invoicing-email-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 6px;
}
.settings-shell.invoicing .invoicing-email-error {
    display: block;
    font-size: 11.5px;
    color: #d9534f;
}
.settings-shell.invoicing .invoice-send-email {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    max-width: 420px;
    margin-top: 10px;
}
.settings-shell.invoicing .invoice-send-email .form-control {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    height: 32px;
    padding: 5px 10px;
}
.settings-shell.invoicing .invoicing-xero-confirm {
    display: -ms-flexbox;
    display: flex;
    margin-top: 8px;
}
.settings-shell.invoicing .invoicing-xero-confirm span {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
}
.settings-shell.invoicing .invoicing-acc-link {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-left: 24px;
}
/* ! Reading pane
	/* =================================================================== */
.settings-shell.invoicing .settings-pane-inner {
    position: relative;
}
/* The calendar's loading line, across the top of the pane while a request is out */
.settings-shell.invoicing .invoicing-loading {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    overflow: hidden;
    z-index: 6;
    pointer-events: none;
}
.settings-shell.invoicing .invoicing-loading span {
    position: absolute;
    top: 0;
    left: -40%;
    width: 40%;
    height: 100%;
    background-color: #0035d2;
    border-radius: 3px;
    animation: calendar-loading 1.1s ease-in-out infinite;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-reader-empty {
    -ms-flex: 1;
        flex: 1;
    padding: 28px;
}
.settings-shell.invoicing .invoicing-reader-empty .btn {
    width: auto;
    margin: 18px auto 0;
}
/* The button's icon, not the empty state's large one (.settings-empty i) */
.settings-shell.invoicing .invoicing-reader-empty .settings-empty .btn i {
    margin: 0 6px 0 0;
    font-size: inherit;
    color: inherit;
}
/* What can be done with the open invoice, along the top of the pane */
.settings-shell.invoicing .invoicing-reader-tools {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 14px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.invoicing .invoice-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
}
.settings-shell.invoicing .invoice-actions-divider {
    width: 1px;
    height: 22px;
    margin: 0 4px;
    background-color: #e0e6ed;
}
.settings-shell.invoicing .invoice-delete-btn:not([disabled]):hover {
    border-color: #d9534f;
    color: #d9534f;
}
.settings-shell.invoicing .invoice-delete-btn:not([disabled]):hover .fa {
    color: #d9534f;
}
/* The invoice, with the payment card beside it while anything is owing */
.settings-shell.invoicing .invoice-reading {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 20px;
}
/* The invoice's column, which sets the invoice's width. Its messages and confirmations sit in it too,
	   so none is ever wider than the invoice - with the payment card beside it or not. */
.settings-shell.invoicing .invoice-reading-main {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
    max-width: 820px;
}
/* ! Payment card - as compact as the inventory's stock adjustment:
	/* the amount, how it was paid, where it went, and one button
	/* =================================================================== */
.settings-shell.invoicing .invoice-pay-card {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    -ms-flex: 0 0 260px;
        flex: 0 0 260px;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    padding: 16px 16px 14px;
}
.settings-shell.invoicing .invoice-pay-card .form-control {
    width: 100%;
}
.settings-shell.invoicing .invoice-pay-card .inv-panel-save {
    width: 100%;
    min-width: 0;
    margin-top: 4px;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-pay-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 10px;
    margin-bottom: 2px;
}
.settings-shell.invoicing .invoice-pay-head h5 {
    margin: 0;
    font-size: 13.5px;
    font-weight: 700;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-pay-head span {
    font-size: 12px;
    color: #6c757d;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-pay-amount {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
}
.settings-shell.invoicing .invoice-pay-amount .fee-input {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.invoicing .invoice-pay-amount .form-control {
    font-size: 15px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-pay-amount .chip-select {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 6px 12px;
    font-family: inherit;
}
.settings-shell.invoicing .invoice-pay-hint {
    margin: 0;
    font-size: 11.5px;
    color: #6c757d;
    text-align: center;
}
.settings-shell.invoicing .invoice-confirm b {
    display: block;
    margin-bottom: 2px;
}
.settings-shell.invoicing .invoice-confirm-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}
.settings-shell.invoicing .invoice-confirm-delete {
    display: -ms-flexbox;
    display: flex;
    margin-bottom: 20px;
}
/* ! The printed invoice - a sheet of paper, after the lens dispensing
	/* invoice (.lens-invoice-doc)
	/* =================================================================== */
.settings-shell.invoicing .invoice-doc {
    position: relative;
    margin: 0;
    padding: 34px 38px 30px;
    overflow: hidden;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    box-shadow: 0 10px 30px rgba(10, 37, 64, 0.08);
    font-size: 13px;
    color: #343a40;
}
.settings-shell.invoicing .invoice-doc::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: 5px;
    background: linear-gradient(90deg, #0035d2 0%, #00bcd4 100%);
}
/* =================================================================== */
.settings-shell.invoicing .invoice-doc-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #eef1f7;
}
.settings-shell.invoicing .invoice-doc-practice {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 16px;
    color: #0035d2;
}
.settings-shell.invoicing .invoice-doc-practice-sub {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 2px 12px;
    margin-top: 4px;
    font-size: 11.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-title {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 6px;
}
.settings-shell.invoicing .invoice-doc-word {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 22px;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #0a2540;
}
.settings-shell.invoicing .invoice-doc-number {
    margin-top: -4px;
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 12.5px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 14px 34px;
    margin: 20px 0 24px;
}
.settings-shell.invoicing .invoice-doc-meta dt {
    margin-bottom: 4px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.invoicing .invoice-doc-meta dd {
    margin: 0;
    font-size: 13px;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-doc-meta dd small {
    display: block;
    font-size: 11px;
}
/* Up to 255 characters typed in Xero, so it wraps rather than pushing the dates off the sheet */
.settings-shell.invoicing .invoice-doc-reference {
    -ms-flex: 0 1 220px;
        flex: 0 1 220px;
    min-width: 0;
    overflow-wrap: anywhere;
}
.settings-shell.invoicing .invoice-doc-to {
    -ms-flex: 1 1 220px;
        flex: 1 1 220px;
}
.settings-shell.invoicing .invoice-doc-to dd b {
    display: block;
    font-weight: 600;
}
.settings-shell.invoicing .invoice-doc-to dd span {
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.invoicing .invoice-doc-lines {
    width: 100%;
    border-collapse: collapse;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > th {
    padding: 8px 10px;
    border-bottom: 2px solid #2a307f;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #2a307f;
    text-align: left;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-doc-lines > tbody > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > td {
    padding: 11px 10px;
    border-bottom: 1px solid #eef1f7;
    vertical-align: top;
    text-align: left;
}
.settings-shell.invoicing .invoice-doc-lines > tbody > tr > th {
    font-weight: normal;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > .num, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > .num {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > th:first-child, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > th:first-child {
    padding-left: 0;
}
.settings-shell.invoicing .invoice-doc-lines > thead > tr > :last-child, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > :last-child {
    padding-right: 0;
}
.settings-shell.invoicing .invoice-doc-item {
    display: block;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoice-doc-code {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    color: #6c757d;
}
.settings-shell.invoicing .inv-mono {
    font-family: SFMono-Regular, Consolas, "Liberation Mono", monospace;
    font-size: 11px;
}
.settings-shell.invoicing .invoice-doc-tax {
    font-size: 11.5px;
    color: #6c757d;
    white-space: nowrap;
}
.settings-shell.invoicing .invoice-doc-totals {
    width: 320px;
    max-width: 100%;
    margin: 18px 0 0 auto;
}
/* Shared by the printed invoice's totals and the editor's summary */
.settings-shell.invoicing .invoice-total-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
    font-size: 12.5px;
    color: #343a40;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-total-row.muted {
    color: #6c757d;
}
.settings-shell.invoicing .invoice-total-row.total {
    margin-top: 6px;
    padding-top: 9px;
    border-top: 1px solid #e0e6ed;
    font-weight: 700;
    color: #0a2540;
}
.settings-shell.invoicing .invoice-total-row.payment {
    color: #2e7d32;
}
.settings-shell.invoicing .invoice-total-row.payment .fa {
    margin-right: 4px;
}
.settings-shell.invoicing .invoice-total-row.due {
    margin-top: 8px;
    padding: 9px 12px;
    border-radius: 8px;
    background-color: #e7f0ff;
    font-size: 14px;
    font-weight: 700;
    color: #0035d2;
}
/* ! Feedback, where the action happened
	/* A button shows it working and then ticks; what changed is
	/* highlighted for a moment; an error sits beside what failed.
	/* =================================================================== */
.settings-shell.invoicing .invoice-list-table > tbody > tr.is-fresh > th, .settings-shell.invoicing .invoice-list-table > tbody > tr.is-fresh > td {
    animation: invoicing-fresh 2.4s ease-out;
}
/* A deleted invoice's row fades out of the list (ngAnimate) */
.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave {
    opacity: 1;
    transition: opacity 0.35s ease;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave.ng-leave-active {
    opacity: 0;
}
.settings-shell.invoicing .invoice-total-row.payment.is-fresh {
    margin: 0 -8px;
    padding-left: 8px;
    padding-right: 8px;
    border-radius: 8px;
    animation: invoicing-fresh 2.4s ease-out;
}
.settings-shell.invoicing .inv-status.is-fresh {
    animation: invoicing-pop 0.5s ease-out 0.15s;
}
/* Done: green, and not dimmed if the button is briefly disabled while the list reloads */
.settings-shell.invoicing .cal-btn.is-done, .settings-shell.invoicing .cal-btn.is-done:hover:not([disabled]), .settings-shell.invoicing .cal-btn.is-done[disabled] {
    border-color: rgba(32, 201, 151, 0.5);
    background-color: rgba(32, 201, 151, 0.08);
    color: #2e7d32;
    opacity: 1;
}
.settings-shell.invoicing .cal-btn.is-done .fa, .settings-shell.invoicing .cal-btn.is-done:hover:not([disabled]) .fa, .settings-shell.invoicing .cal-btn.is-done[disabled] .fa {
    color: #2e7d32;
}
.settings-shell.invoicing .inv-panel-save.is-done, .settings-shell.invoicing .inv-panel-save.is-done[disabled] {
    background-color: #2e7d32;
    box-shadow: 0 2px 6px rgba(32, 201, 151, 0.3);
    color: #ffffff;
}
.settings-shell.invoicing .invoicing-inline-error {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin: 8px 0 0;
    font-size: 12px;
    line-height: 1.45;
    color: #d9534f;
}
.settings-shell.invoicing .invoicing-inline-error .fa {
    margin-top: 2px;
}
.settings-shell.invoicing .invoicing-inline-error > span {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.invoicing .invoicing-inline-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    padding: 0 2px;
    border: none;
    background: none;
    color: inherit;
    font-size: 11px;
    opacity: 0.6;
}
.settings-shell.invoicing .invoicing-inline-dismiss:hover {
    opacity: 1;
}
.settings-shell.invoicing .invoice-editor-error {
    -ms-flex-align: center;
        align-items: center;
    margin: 0 auto 0 0;
}
.settings-shell.invoicing .invoice-items-error {
    -ms-flex-align: center;
        align-items: center;
    margin: -8px 0 14px;
}
.settings-shell.invoicing .invoice-items-error .link-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.settings-shell.invoicing .invoice-pay-error {
    margin: 0;
}
/* The email just saved: a small tick that pops in beside it */
.settings-shell.invoicing .invoicing-saved {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: 6px;
    padding: 1px 8px;
    border-radius: 20px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #2e7d32;
    font-size: 10.5px;
    font-weight: 700;
}
.settings-shell.invoicing .invoicing-saved.ng-enter {
    opacity: 0;
    transform: scale(0.85);
}
.settings-shell.invoicing .invoicing-saved.ng-enter-active {
    opacity: 1;
    transform: scale(1);
    transition: opacity 0.18s ease, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
/* ! Connect to Xero (before the list): one centred card, one step at
	/* a time, with where it is in the two steps above it
	/* =================================================================== */
.settings-shell.invoicing .invoicing-setup {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
}
/* =================================================================== */
.settings-shell.invoicing .invoicing-connect {
    width: 100%;
    max-width: 520px;
    margin-top: 4vh;
}
.settings-shell.invoicing .invoicing-connect-steps {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    margin: 0 0 16px;
    padding: 0;
    list-style: none;
}
.settings-shell.invoicing .invoicing-connect-steps > li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 7px;
    font-size: 12px;
    font-weight: 600;
    color: #a3aac0;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-current {
    color: #0035d2;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-done {
    color: #2e7d32;
}
.settings-shell.invoicing .invoicing-connect-steps .invoicing-connect-line {
    -ms-flex: 0 0 40px;
        flex: 0 0 40px;
    height: 1px;
    background-color: #e0e6ed;
}
.settings-shell.invoicing .invoicing-connect-dot {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 22px;
    height: 22px;
    border: 2px solid currentColor;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 700;
}
.settings-shell.invoicing .invoicing-connect-steps > li.is-done .invoicing-connect-dot {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
.settings-shell.invoicing .invoicing-connect-card {
    padding: 28px 30px 24px;
    text-align: center;
}
.settings-shell.invoicing .invoicing-connect-card h4 {
    margin: 0 0 8px;
    font-size: 17px;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-connect-card p {
    margin: 0 auto 16px;
    max-width: 42ch;
    font-size: 13px;
    line-height: 1.55;
    color: #878ba0;
}
.settings-shell.invoicing .invoicing-connect-card .form-control {
    text-align: left;
}
.settings-shell.invoicing .invoicing-connect-card .field-help {
    margin: 10px 0 0;
    text-align: left;
}
.settings-shell.invoicing .invoicing-connect-icon {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 48px;
    height: 48px;
    margin-bottom: 12px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 20px;
}
.settings-shell.invoicing .invoicing-connect-icon.is-warning {
    background-color: #fff8e1;
    color: #856404;
}
.settings-shell.invoicing .invoicing-connect-checking {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    padding: 24px 0;
    font-size: 13px;
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-connect-checking .fa {
    font-size: 18px;
    color: #0035d2;
}
.settings-shell.invoicing .invoicing-connect-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin-top: 18px;
}
/* Create on the left, link on the right, as a dialog's cancel and confirm */
.settings-shell.invoicing .invoicing-connect-actions.is-split {
    -ms-flex-direction: row;
        flex-direction: row;
    -ms-flex-pack: justify;
        justify-content: space-between;
}
.settings-shell.invoicing .invoicing-connect-primary {
    width: auto;
    min-width: 180px;
    margin: 0;
}
/* Under the card, so it wins over the card's centred paragraph rule */
.settings-shell.invoicing .invoicing-connect-card .invoicing-connect-error {
    max-width: none;
    margin: 12px 0 0;
    color: #d9534f;
    font-size: 12px;
    text-align: left;
}
/* Why the patient is being linked again, above the search */
.settings-shell.invoicing .invoicing-connect-card .settings-notice.invoicing-link-lost {
    margin: 0 0 14px;
    padding: 10px 12px;
    font-size: 12px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-search {
    -ms-flex: none;
        flex: none;
    width: 100%;
}
.settings-shell.invoicing .invoicing-contact-search .invoicing-contact-busy {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    color: #0035d2;
}
/* Pick one, then link it: each result a row with a radio mark */
.settings-shell.invoicing .invoicing-contact-results {
    max-height: 240px;
    overflow-y: auto;
    margin-top: 8px;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-result {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    width: 100%;
    padding: 9px 12px;
    border: none;
    background: none;
    font-size: 13px;
    text-align: left;
}
.settings-shell.invoicing .invoicing-contact-result + .invoicing-contact-result {
    border-top: 1px solid #e0e6ed;
}
.settings-shell.invoicing .invoicing-contact-result:hover:not([disabled]) {
    background-color: #f2f6fb;
}
.settings-shell.invoicing .invoicing-contact-result.is-selected {
    background-color: #e7f0ff;
}
.settings-shell.invoicing .invoicing-contact-result[disabled] {
    cursor: not-allowed;
}
.settings-shell.invoicing .invoicing-contact-radio {
    -ms-flex: 0 0 16px;
        flex: 0 0 16px;
    width: 16px;
    height: 16px;
    border: 2px solid #bdbec1;
    border-radius: 50%;
    background-color: #ffffff;
}
.settings-shell.invoicing .invoicing-contact-result.is-selected > .invoicing-contact-radio {
    border: 5px solid #0035d2;
}
.settings-shell.invoicing .invoicing-contact-result.is-taken > .invoicing-contact-radio {
    background-color: #f8f9fa;
}
.settings-shell.invoicing .invoicing-contact-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-weight: 600;
    color: #2a307f;
}
.settings-shell.invoicing .invoicing-contact-result.is-taken > .invoicing-contact-name {
    color: #6c757d;
}
.settings-shell.invoicing .invoicing-contact-taken {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    color: #856404;
    font-size: 11px;
}
.settings-shell.invoicing .invoicing-contact-empty {
    padding: 14px 12px;
    font-size: 12.5px;
    color: #6c757d;
}
/* ! Editor
	/* =================================================================== */
.settings-shell.invoicing .invoice-back {
    margin-bottom: 16px;
}
/* =================================================================== */
.settings-shell.invoicing .invoice-editor-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: minmax(0, 1fr) 280px;
        grid-template-columns: minmax(0, 1fr) 280px;
    -ms-flex-align: start;
        align-items: start;
    gap: 20px;
}
.settings-shell.invoicing .invoice-editor-main, .settings-shell.invoicing .invoice-editor-side {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 20px;
    min-width: 0;
}
.settings-shell.invoicing .settings-card {
    padding: 20px 22px;
}
.settings-shell.invoicing .settings-card .card-header-flex {
    padding-bottom: 12px;
    margin-bottom: 16px;
}
/* Clinic date, due date and the preset beside them, each only as wide as a date needs */
.settings-shell.invoicing .invoice-dates {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 12px 16px;
}
.settings-shell.invoicing .invoice-date-field {
    -ms-flex: 0 0 160px;
        flex: 0 0 160px;
    width: 160px;
}
.settings-shell.invoicing .invoice-due-preset {
    -ms-flex: 0 0 130px;
        flex: 0 0 130px;
    width: 130px;
}
/* As wide as the date row above it: two dates, the preset and the gaps between them */
.settings-shell.invoicing .invoice-reference-field {
    max-width: 482px;
    margin-top: 12px;
}
/* A wrapping row rather than fixed columns: where the card is too narrow for it all, Add and Clear go
	   onto the next line instead of running past the card's edge */
.settings-shell.invoicing .invoice-add-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 10px;
    margin-bottom: 16px;
    padding: 12px 14px;
    border: 1px dashed rgba(0, 53, 210, 0.25);
    border-radius: 10px;
    background-color: #f8faff;
}
.settings-shell.invoicing .invoice-add-row .control-label {
    margin-bottom: 5px;
}
.settings-shell.invoicing .invoice-add-row .dropdown-menu {
    max-height: 280px;
    overflow-y: auto;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-item {
    -ms-flex: 1 1 180px;
        flex: 1 1 180px;
    min-width: 0;
    max-width: 300px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-price {
    -ms-flex: 0 0 110px;
        flex: 0 0 110px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-variation {
    -ms-flex: 0 1 200px;
        flex: 0 1 200px;
    min-width: 150px;
}
/* Sold beyond what is in stock: the rest goes on backorder */
.settings-shell.invoicing .invoice-add-row .invoice-add-backorder {
    -ms-flex: 1 1 100%;
        flex: 1 1 100%;
    margin: 0;
    font-size: 12.5px;
    color: #856404;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-qty {
    -ms-flex: 0 0 70px;
        flex: 0 0 70px;
}
.settings-shell.invoicing .invoice-add-row .invoice-add-disc {
    -ms-flex: 0 0 80px;
        flex: 0 0 80px;
}
/* One row in fixed columns: find the item, set its price, quantity and discount, add it */
.settings-shell.invoicing .invoice-add-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    gap: 6px;
}
.settings-shell.invoicing .invoice-add-btn, .settings-shell.invoicing .invoice-clear-btn {
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 8px 16px;
}
/* .btn-cancel's own size is a smaller pill; here it matches Add beside it */
.settings-shell.invoicing .invoice-clear-btn {
    font-size: 13px;
}
/* The calendar's date pickers: read-only so the picker is used, but not greyed as if disabled */
.settings-shell.invoicing datepicker {
    display: block;
    width: 100%;
}
.settings-shell.invoicing datepicker .form-control[readonly] {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
.settings-shell.invoicing .invoice-lines-empty {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
    padding: 26px 16px;
    border-radius: 10px;
    background-color: #f8faff;
    color: #6c757d;
    font-size: 13px;
}
.settings-shell.invoicing .invoice-lines-empty .fa {
    font-size: 16px;
    color: #c3c9da;
}
.settings-shell.invoicing .invoice-lines-wrap {
    margin-bottom: 0;
}
.settings-shell.invoicing .invoice-lines-table > tbody > tr > td {
    padding-top: 7px;
    padding-bottom: 7px;
}
/* More of an inventory line than is in stock: the rest goes on backorder */
.settings-shell.invoicing .invoice-lines-table .invoice-line-backorder {
    display: block;
    margin-top: 3px;
    font-size: 12px;
    font-weight: normal;
    color: #856404;
}
.settings-shell.invoicing .invoice-lines-table .form-control {
    padding: 6px 9px;
    font-variant-numeric: tabular-nums;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-qty {
    width: 84px;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-price {
    width: 120px;
}
.settings-shell.invoicing .invoice-lines-table .invoice-line-disc {
    width: 90px;
}
.settings-shell.invoicing .invoice-lines-table .inv-col-actions {
    width: 1%;
}
.settings-shell.invoicing .invoice-summary-card .field-help {
    margin: 12px 0 0;
}
.settings-shell.invoicing .invoice-acc-card .btn {
    -ms-flex-item-align: start;
        align-self: flex-start;
    margin-top: 12px;
}
.settings-shell.invoicing .invoice-editor-bar .action-hint {
    font-style: normal;
    font-variant-numeric: tabular-nums;
}
/* An item picked but not added: the add row is marked, and the footer says so beside the button it holds
	   back, with the two ways past it */
.settings-shell.invoicing .invoice-add-row.is-pending {
    border: 1px solid #ffab00;
    background-color: #fff8e6;
    box-shadow: 0 0 0 3px rgba(255, 171, 0, 0.15);
}
.settings-shell.invoicing .invoice-pending-alert {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    margin-left: auto;
    min-width: 0;
    max-width: 420px;
    padding: 8px 12px;
    border: 1px solid #ffab00;
    border-radius: 8px;
    background-color: #fff8e6;
    color: #856404;
    font-size: 12.5px;
    animation: invoicing-pop 0.35s ease;
}
.settings-shell.invoicing .invoice-pending-alert > .fa {
    color: #ffab00;
    font-size: 15px;
}
.settings-shell.invoicing .invoice-pending-alert .invoice-pending-text {
    min-width: 0;
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.invoicing .invoice-pending-alert {
        animation: none;
    }
}
/* Money fields: the $ sits inside the field, so the field is a block the $ can be placed in, and its
	   text starts clear of it. After the compact table and card rules, which would otherwise reset the
	   padding and draw the $ over the figures. */
.settings-shell.invoicing .fee-input {
    display: block;
    position: relative;
}
.settings-shell.invoicing .fee-input .fee-prefix {
    left: 10px;
    line-height: 1;
}
.settings-shell.invoicing .fee-input > .form-control, .settings-shell.invoicing .invoice-lines-table .fee-input > .form-control, .settings-shell.invoicing .invoice-pay-amount .fee-input > .form-control {
    padding-left: 22px;
}
/* Leaving with unsaved work: a card over the editor, the editor dimmed behind it */
.settings-shell.invoicing .invoice-discard-overlay {
    position: absolute;
    inset: 0;
    z-index: 20;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 24px;
    background-color: rgba(28, 35, 64, 0.35);
    animation: invoicing-fresh 0.15s ease;
}
.settings-shell.invoicing .invoice-discard-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    width: 380px;
    max-width: 100%;
    padding: 24px 24px 20px;
    text-align: center;
    box-shadow: 0 12px 32px rgba(28, 35, 64, 0.25);
}
.settings-shell.invoicing .invoice-discard-card h4 {
    margin: 10px 0 6px;
    font-size: 16px;
}
.settings-shell.invoicing .invoice-discard-card p {
    margin: 0 0 18px;
    color: #343a40;
    font-size: 13px;
}
.settings-shell.invoicing .invoice-discard-icon {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 18px;
}
.settings-shell.invoicing .invoice-discard-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 10px;
}
.settings-shell.invoicing .invoice-discard-actions .btn-danger-outline {
    border: 1px solid rgba(169, 68, 66, 0.55);
    background-color: #ffffff;
    color: #a94442;
}
.settings-shell.invoicing .invoice-discard-actions .btn-danger-outline:hover, .settings-shell.invoicing .invoice-discard-actions .btn-danger-outline:focus-visible {
    border-color: #a94442;
    background-color: #fbeceb;
}
/* Taking a payment, step two: what is about to be recorded, and Confirm - set apart so it can't be
	   mistaken for the first step */
.settings-shell.invoicing .invoice-pay-card.is-confirming {
    border-color: #2e7d32;
    box-shadow: 0 0 0 3px rgba(32, 201, 151, 0.08);
}
.settings-shell.invoicing .invoice-pay-confirm {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 8px;
    margin-top: 4px;
    padding: 10px;
    border-radius: 8px;
    background-color: rgba(32, 201, 151, 0.08);
    animation: invoicing-pop 0.3s ease;
}
.settings-shell.invoicing .invoice-pay-confirm p {
    margin: 0;
    color: #2a307f;
    font-size: 12.5px;
    line-height: 1.45;
}
.settings-shell.invoicing .invoice-pay-confirm .inv-panel-save {
    margin-top: 0;
    background-color: #2e7d32;
    color: #ffffff;
}
.settings-shell.invoicing .invoice-pay-confirm .invoice-pay-back {
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.invoicing .invoice-pay-confirm {
        animation: none;
    }
}
/* ngAnimate keeps an ng-if's outgoing element on the page for as long as its animation runs, so Back
	   showed the confirm panel and the Take button together for a moment. They swap at once. !important
	   because it has to beat the panel's own pop-in animation. */
.settings-shell.invoicing .invoice-pay-card > .inv-panel-save.ng-enter, .settings-shell.invoicing .invoice-pay-card > .inv-panel-save.ng-leave, .settings-shell.invoicing .invoice-pay-confirm.ng-enter, .settings-shell.invoicing .invoice-pay-confirm.ng-leave {
    transition: none !important;
    animation: none !important;
}
/* =================================================================== */
/* ! Responsive - laptops and tablets (landscape and portrait)
/* Phones are not designed for yet: below a portrait tablet the list
/* simply stacks above the invoice.
/* =================================================================== */
/* Small laptops and landscape tablets: the payment card moves above the invoice, laid out in a row */
@media (max-width: 1300px) {
	.settings-shell.invoicing .invoice-doc-optional {
        display: none;
    }
	.settings-shell.invoicing .invoice-editor-grid {
        -ms-grid-columns: minmax(0, 1fr);
            grid-template-columns: minmax(0, 1fr);
    }
	.settings-shell.invoicing .invoice-reading {
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
        -ms-flex-align: stretch;
            align-items: stretch;
    }
	/* Stacked, the column takes the full width, and the invoice and its messages with it */
	.settings-shell.invoicing .invoice-reading-main {
        max-width: none;
    }
	/* Amount, how, where and the button on one line; the heading and anything said, full width */
	.settings-shell.invoicing .invoice-pay-card {
        position: static;
        display: -ms-grid;
        display: grid;
        -ms-grid-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr) auto;
            grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(0, 1fr) auto;
        -ms-flex-align: center;
            align-items: center;
        gap: 8px 10px;
    }
	.settings-shell.invoicing .invoice-pay-card .invoice-pay-head, .settings-shell.invoicing .invoice-pay-card .invoicing-inline-error, .settings-shell.invoicing .invoice-pay-card .invoice-pay-hint {
        grid-column: 1 / -1;
    }
	.settings-shell.invoicing .invoice-pay-card .invoice-pay-hint {
        text-align: left;
    }
	.settings-shell.invoicing .invoice-pay-card .inv-panel-save {
        width: auto;
        margin-top: 0;
        white-space: nowrap;
    }
}
/* Landscape tablets (1024-1100): the dialog takes nearly the whole screen, the list narrows, and the
   status in it shows as its icon alone */
@media (max-width: 1100px) {
	.invoicing-dialog {
		min-width: 96%;
		width: 96%;
		height: 94vh;
	}

	.settings-shell.invoicing .invoicing-list {
        -ms-flex-preferred-size: 260px;
            flex-basis: 260px;
        width: 260px;
    }

	.settings-shell.invoicing .invoice-list-table .invoice-list-total-col {
        width: 92px;
    }

	.settings-shell.invoicing .invoice-list-table .invoice-status-text {
        display: none;
    }

	.settings-shell.invoicing .invoice-list-table .inv-status {
        padding: 2px 6px;
    }

	.settings-shell.invoicing .invoicing-reader-tools {
        padding: 12px 20px;
    }

	.settings-shell.invoicing .settings-pane-body {
        padding: 20px;
    }

	/* The billing item gets its own line; price, quantity, discount and Add share the next */

	.settings-shell.invoicing .invoice-add-row .invoice-add-item {
        -ms-flex-preferred-size: 100%;
            flex-basis: 100%;
        max-width: 380px;
    }
}
/* Portrait tablets (768-900): full width, list and invoice still side by side - the settings shell
   would stack them here, which leaves too little of either */
@media (max-width: 900px) {
	.invoicing-dialog {
		min-width: 100%;
		width: 100%;
		height: 100vh;
		max-height: 100vh;
		border-radius: 0;
	}

	.settings-shell.invoicing {
		-ms-flex-direction: row;
		    flex-direction: row;
	}

	.settings-shell.invoicing .invoicing-list {
        -ms-flex-preferred-size: 230px;
            flex-basis: 230px;
        width: 230px;
    }

	.settings-shell.invoicing .invoicing-list-head {
        padding: 14px 12px 12px;
    }

	.settings-shell.invoicing .invoicing-patient .settings-avatar {
        display: none;
    }

	.settings-shell.invoicing .invoicing-balance {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        gap: 6px 14px;
        padding: 10px 12px;
    }

	.settings-shell.invoicing .invoice-list-table > thead > tr > :first-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :first-child {
        padding-left: 12px;
    }

	.settings-shell.invoicing .invoice-list-table > thead > tr > :last-child, .settings-shell.invoicing .invoice-list-table > tbody > tr > :last-child {
        padding-right: 12px;
    }

	.settings-shell.invoicing .invoicing-list-foot {
        padding: 10px 12px 12px;
    }

	.settings-shell.invoicing .invoicing-acc-link {
        margin-left: 0;
    }

	.settings-shell.invoicing .invoicing-reader-tools {
        padding: 10px 16px;
    }

	.settings-shell.invoicing .invoice-actions-divider {
        display: none;
    }

	.settings-shell.invoicing .settings-pane-body {
        padding: 16px;
    }

	.settings-shell.invoicing .invoice-doc {
        padding: 24px 20px 20px;
    }

	.settings-shell.invoicing .invoice-doc-head {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }

	.settings-shell.invoicing .invoice-doc-lines > thead > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > th, .settings-shell.invoicing .invoice-doc-lines > tbody > tr > td {
        padding-left: 6px;
        padding-right: 6px;
    }

	.settings-shell.invoicing .invoice-pay-card {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-qty {
        width: 64px;
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-price {
        width: 100px;
    }

	.settings-shell.invoicing .invoice-lines-table .invoice-line-disc {
        width: 72px;
    }

	.settings-shell.invoicing .invoicing-connect {
        margin-top: 0;
    }

	.settings-shell.invoicing .invoicing-connect-card {
        padding: 22px 20px 20px;
    }
}
/* Below a portrait tablet (not yet designed for): the list stacks above the invoice, kept short */
@media (max-width: 759px) {
	.settings-shell.invoicing {
		-ms-flex-direction: column;
		    flex-direction: column;
	}
	.settings-shell.invoicing .invoicing-list {
        -ms-flex: 0 0 auto;
            flex: 0 0 auto;
        width: 100%;
        max-height: 42%;
        border-right: none;
        border-bottom: 1px solid #e0e6ed;
    }
	.settings-shell.invoicing .invoicing-list-foot {
        display: none;
    }
}
/* Touch screens: room for a finger on every row, button and field */
@media (pointer: coarse) {
	.settings-shell.invoicing .invoice-list-table > tbody > tr > th, .settings-shell.invoicing .invoice-list-table > tbody > tr > td {
        padding-top: 12px;
        padding-bottom: 12px;
    }
	.settings-shell.invoicing .cal-btn {
        height: 40px;
    }
	.settings-shell.invoicing .cal-icon-btn {
        width: 40px;
    }
	.settings-shell.invoicing .form-control {
        min-height: 40px;
    }
	.settings-shell.invoicing .chip-select {
        padding-top: 8px;
        padding-bottom: 8px;
    }
	.settings-shell.invoicing .inv-panel-save, .settings-shell.invoicing .invoicing-mini-btn {
        min-height: 40px;
    }
	.settings-shell.invoicing .invoicing-contact-result {
        padding-top: 12px;
        padding-bottom: 12px;
    }
	.settings-shell.invoicing .link-action, .settings-shell.invoicing .invoicing-inline-dismiss {
        padding: 6px 4px;
    }
}
/* Anyone who has asked for less motion gets the ticks and words without the highlight or pop */
@media (prefers-reduced-motion: reduce) {
	.settings-shell.invoicing .is-fresh, .settings-shell.invoicing .is-fresh > th, .settings-shell.invoicing .is-fresh > td {
        animation: none;
    }
	.settings-shell.invoicing .invoice-list-table > tbody > tr.ng-leave, .settings-shell.invoicing .invoicing-saved.ng-enter-active {
        transition: none;
    }
}
/* =================================================================== */
/* ! Worklists (tasks, surgery waitlist)
/* Built on the settings shell (_settings.css) like the calendar and
/* invoicing: filters in the left rail, the list as a table, and the
/* open row in a side panel beside it. The table, status pills, side
/* panel, notices and confirms come from _inventory.css, which lists
/* this shell alongside its own; this file adds what only these need.
/* The new task dialog uses the same shell, laid out as one column.
/* =================================================================== */
.worklist-dialog {
	min-width: 88%;
	width: 88%;
	height: 90vh;
	max-height: 94vh;
	padding: 0;
	border-top-width: 0;
}
.task-create-dialog {
	width: 660px;
	max-width: 94vw;
	max-height: 92vh;
	padding: 0;
	border-top-width: 0;
}
/* Add to surgery waitlist: the new task dialog, with a slimmer patient header */
/* A slimmer patient header than the new task's, to leave the fields room */
.task-create-dialog.waitlist-add-dialog .settings-shell.worklist.task-create .wl-create-head {
    padding: 10px 24px;
}
.task-create-dialog.waitlist-add-dialog .settings-shell.worklist.task-create .wl-create-head .settings-avatar {
    width: 34px;
    height: 34px;
}
/* ! Left rail
	/* =================================================================== */
.settings-shell.worklist .worklist-rail {
    -ms-flex-preferred-size: 256px;
        flex-basis: 256px;
    width: 256px;
    padding-bottom: 8px;
}
/* =================================================================== */
.settings-shell.worklist .settings-nav-item:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.worklist .nav-item-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* How many are behind each filter - white on the active row */
.settings-shell.worklist .wl-count {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    min-width: 22px;
    padding: 1px 7px;
    border-radius: 10px;
    background-color: #f8f9fa;
    color: #7d8399;
    font-size: 10.5px;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
/* Something in the list is overdue */
.settings-shell.worklist .wl-count.is-alert {
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .settings-nav-item.active .wl-count {
    background-color: #ffffff;
    color: #0035d2;
}
.settings-shell.worklist .settings-nav-item.active .wl-count.is-alert {
    color: #a94442;
}
/* Practices: tick to add one alongside the others, click the name to see only it (as the calendar) */
.settings-shell.worklist .wl-tick-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 2px 12px;
    margin-bottom: 1px;
    border-radius: 10px;
    transition: background-color 0.15s ease;
}
.settings-shell.worklist .wl-tick-row:hover {
    background-color: #f4f7fe;
}
.settings-shell.worklist .wl-tick-row .wl-check {
    width: 18px;
    height: 18px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    padding: 0;
    border: 2px solid #c0cde0;
    border-radius: 5px;
    background-color: #ffffff;
    color: #ffffff;
    font-size: 9px;
    transition: all 0.15s ease;
}
.settings-shell.worklist .wl-tick-row .wl-check i {
    opacity: 0;
}
.settings-shell.worklist .wl-tick-row .wl-check:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
/* The last practice ticked can't be unticked; it shows as ticked, not as greyed out */
.settings-shell.worklist .wl-tick-row .wl-check[disabled] {
    cursor: default;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-check {
    border-color: #0035d2;
    background-color: #0035d2;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-check i {
    opacity: 1;
}
.settings-shell.worklist .wl-tick-row .wl-tick-name {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    padding: 6px 0;
    border: none;
    background: none;
    text-align: left;
    font-size: 13px;
    font-weight: 600;
    color: #a3aac0;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-tick-row .wl-tick-name:hover {
    color: #0035d2;
    text-decoration: underline;
}
.settings-shell.worklist .wl-tick-row.is-ticked .wl-tick-name {
    color: #4a5568;
}
.settings-shell.worklist .settings-nav-footer .wl-new-btn {
    max-width: none;
    margin-top: 10px;
    padding: 7px 14px;
}
.settings-shell.worklist .settings-nav-footer .wl-new-btn i {
    margin-right: 5px;
}
/* ! Toolbar above the list
	/* =================================================================== */
.settings-shell.worklist .wl-toolbar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    padding: 18px 24px 14px;
}
/* =================================================================== */
.settings-shell.worklist .wl-title {
    margin: 0;
    font-family: 'Gordita Bold', sans-serif;
    font-size: 20px;
    letter-spacing: -0.02em;
    color: #0a2540;
    white-space: nowrap;
}
.settings-shell.worklist .wl-total {
    padding: 2px 9px;
    border-radius: 20px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.settings-shell.worklist .wl-spacer {
    -ms-flex: 1;
        flex: 1;
}
.settings-shell.worklist .wl-loading-more {
    color: #6c757d;
    font-size: 12px;
}
/* A search on a line of its own below the title: the break takes the rest of the title's line */
.settings-shell.worklist .wl-break {
    -ms-flex-preferred-size: 100%;
        flex-basis: 100%;
    height: 0;
}
.settings-shell.worklist .wl-search.wl-search-under {
    width: 420px;
    max-width: 100%;
}
.settings-shell.worklist .wl-search {
    position: relative;
    width: 280px;
}
.settings-shell.worklist .wl-search > i {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 12px;
    color: #a3aac0;
    pointer-events: none;
}
.settings-shell.worklist .wl-search .form-control {
    height: 34px;
    padding-left: 31px;
    padding-right: 28px;
}
.settings-shell.worklist .wl-search .wl-search-clear {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: none;
    color: #a3aac0;
    font-size: 11px;
}
.settings-shell.worklist .wl-search .wl-search-clear:hover {
    background-color: #e7f0ff;
    color: #0035d2;
}
.settings-shell.worklist .form-control.wl-select {
    width: 170px;
    height: 34px;
    padding-top: 0;
    padding-bottom: 0;
}
/* As the calendar's toolbar buttons */
.settings-shell.worklist .cal-btn {
    height: 34px;
    padding: 0 14px;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    background-color: #ffffff;
    color: #333333;
    font-size: 12.5px;
    font-weight: 600;
    transition: all 0.15s ease;
}
.settings-shell.worklist .cal-btn .fa {
    color: #0035d2;
}
.settings-shell.worklist .cal-btn:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .cal-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.15);
}
.settings-shell.worklist .cal-icon-btn {
    width: 34px;
    padding: 0;
    font-size: 12px;
}
/* What just happened, between the toolbar and the list - with Undo where it can be */
.settings-shell.worklist .settings-notice.wl-notice {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-align: center;
        align-items: center;
    margin: 0 24px 12px;
    padding: 10px 14px;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .settings-notice.wl-notice .inv-link-btn {
    margin: 0;
    color: inherit;
    font-weight: 700;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border: none;
    background: none;
    padding: 0 2px;
    color: inherit;
    opacity: 0.6;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss i {
    margin: 0;
    font-size: 12px;
    color: inherit;
}
.settings-shell.worklist .settings-notice.wl-notice .notice-dismiss:hover {
    opacity: 1;
}
/* The toolbar sits above, so the body's own top padding would double the gap */
.settings-shell.worklist .settings-pane-body.wl-body {
    padding: 0 24px 24px;
}
.settings-shell.worklist .wl-retry {
    width: auto;
    margin-top: 6px;
    padding: 6px 22px;
}
.settings-shell.worklist .wl-muted {
    color: #6c757d;
}
/* Column headings that sort: the heading's own look, as a button */
.settings-shell.worklist .wl-sort {
    padding: 0;
    border: none;
    background: none;
    color: inherit;
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    white-space: nowrap;
}
.settings-shell.worklist .wl-sort .fa {
    margin-left: 3px;
}
.settings-shell.worklist .wl-sort .wl-sort-idle {
    opacity: 0.35;
}
.settings-shell.worklist .wl-sort:hover, .settings-shell.worklist .wl-sort:focus-visible {
    color: #0035d2;
    outline: none;
}
.settings-shell.worklist .wl-sort:hover .wl-sort-idle, .settings-shell.worklist .wl-sort:focus-visible .wl-sort-idle {
    opacity: 0.8;
}
/* ! The list
	/* =================================================================== */
.settings-shell.worklist .wl-table > tbody > tr > th, .settings-shell.worklist .wl-table > tbody > tr > td {
    vertical-align: top;
}
.settings-shell.worklist .wl-table .wl-col-date {
    white-space: nowrap;
}
.settings-shell.worklist .wl-table .wl-col-date .inv-status {
    margin-top: 4px;
}
.settings-shell.worklist .wl-table .wl-col-eye {
    width: 56px;
}
.settings-shell.worklist .wl-table .wl-col-progress, .settings-shell.worklist .wl-table .wl-col-preapproval {
    white-space: nowrap;
}
.settings-shell.worklist .wl-table .wl-col-preapproval {
    width: 1%;
}
/* Rows are not opened any more - everything is changed on them */
.settings-shell.worklist .wl-table > tbody > tr > th, .settings-shell.worklist .wl-table > tbody > tr > td {
    cursor: default;
}
.settings-shell.worklist .wl-table .wl-col-book {
    width: 1%;
    white-space: nowrap;
}
/* A block per patient: no lines between its eyes and comments, a line between patients */
.settings-shell.worklist .wl-table > tbody.wl-group > tr > th, .settings-shell.worklist .wl-table > tbody.wl-group > tr > td {
    padding-top: 5px;
    padding-bottom: 5px;
    border-top: none;
    border-bottom: none;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr:first-child > th, .settings-shell.worklist .wl-table > tbody.wl-group > tr:first-child > td {
    padding-top: 12px;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr:last-child > td {
    padding-bottom: 12px;
}
.settings-shell.worklist .wl-table > tbody.wl-group > tr > .wl-col-patient {
    padding-bottom: 12px;
}
/* The patient's last eye just done (or the patient reopened): it fades before moving list */
.settings-shell.worklist .wl-table > tbody.wl-group.is-settling {
    opacity: 0.5;
    transition: opacity 0.6s ease 0.2s;
}
/* Between one patient and the next: a firmer line than the hairline between a patient's own entries */
.settings-shell.worklist .wl-table > tbody.wl-group + tbody.wl-group > tr:first-child > th, .settings-shell.worklist .wl-table > tbody.wl-group + tbody.wl-group > tr:first-child > td {
    border-top: 2px solid #c0cde0;
}
/* The patient's eyes and their comments, bracketed together down the eye column - each eye's cell
		   spans its comments */
.settings-shell.worklist .wl-table > tbody > tr.wl-eye-line > td.wl-col-eye {
    box-shadow: inset 2px 0 0 #e7f0ff;
}
/* A hairline between one of the patient's entries and the next - from the eye column on, as the
		   patient's own cell spans them all */
.settings-shell.worklist .wl-table > tbody.wl-group > tr.wl-entry-start > td {
    border-top: 1px dashed #e0e6ed;
}
/* An eye just completed, while the patient's others wait: it fades before it leaves the block */
.settings-shell.worklist .wl-table > tbody > tr.is-settling > td {
    opacity: 0.45;
    transition: opacity 0.6s ease 0.2s;
}
/* The last column clear of the table's right edge, however long what is in it */
.settings-shell.worklist .wl-table > thead > tr > th:last-child, .settings-shell.worklist .wl-table > tbody > tr > td.wl-col-progress {
    padding-right: 24px;
}
/* The surgeon, changed in place */
.settings-shell.worklist .wl-table .wl-col-surgeon .wl-chip-select select {
    max-width: 170px;
}
/* The row name is the patient; a long one wraps rather than widening the column */
.settings-shell.worklist .wl-table .inv-row-link {
    white-space: normal;
}
/* The task list: a centred column of compact cards, each with everything about the task on it and
	   changed there. Light: a hairline border, the label's colour down the left edge. */
.settings-shell.worklist .wl-cards {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 6px;
    max-width: 820px;
    margin: 0 auto;
    padding: 0;
    list-style: none;
}
/* =================================================================== */
.settings-shell.worklist .wl-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 10px;
    padding: 10px 12px 9px 16px;
    border: 1px solid #e0e6ed;
    border-left: 3px solid #e0e6ed;
    border-radius: 10px;
    background-color: #ffffff;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, opacity 0.6s ease 0.2s;
}
.settings-shell.worklist .wl-card:hover {
    border-top-color: #c0cde0;
    border-right-color: #c0cde0;
    border-bottom-color: #c0cde0;
    box-shadow: 0 2px 8px rgba(10, 37, 64, 0.05);
}
/* Just completed or reopened: the button shows it worked, and the card fades before it moves tab */
.settings-shell.worklist .wl-card.is-settling {
    opacity: 0.5;
}
.settings-shell.worklist .wl-card.is-done .inv-row-link {
    font-weight: 500;
}
.settings-shell.worklist .wl-card.is-done .wl-card-desc-text {
    color: #6c757d;
}
.settings-shell.worklist .wl-card-body {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .wl-card-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 8px;
}
/* The patient, with when the task is due beside them */
.settings-shell.worklist .wl-card-who {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 10px;
    -ms-flex: 1 1 160px;
        flex: 1 1 160px;
    min-width: 0;
}
/* A long name wraps rather than pushing the pickers away */
.settings-shell.worklist .wl-card-who .inv-row-link {
    font-size: 13.5px;
    line-height: 1.35;
    white-space: normal;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-card-sub {
    display: block;
    margin-top: 1px;
    color: #6c757d;
    font-size: 11px;
    font-weight: 400;
}
/* A label or assignee picker, dressed as a chip: the select itself, without its own box */
.settings-shell.worklist .wl-chip-select {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    height: 24px;
    padding: 0 8px;
    border: 1px solid #e0e6ed;
    border-radius: 999px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 600;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
/* The chip grows with what it holds; the name itself never squeezes to nothing */
.settings-shell.worklist .wl-chip-select select {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    max-width: 190px;
    padding: 0 14px 0 0;
    margin-right: -14px;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-overflow: ellipsis;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
.settings-shell.worklist .wl-chip-select select:focus {
    outline: none;
}
.settings-shell.worklist .wl-chip-select > .fa {
    color: #6c757d;
    font-size: 11px;
    pointer-events: none;
}
.settings-shell.worklist .wl-chip-select > .fa.is-saved {
    color: #2e7d32;
}
.settings-shell.worklist .wl-chip-select .wl-chip-icon {
    font-size: 10.5px;
}
.settings-shell.worklist .wl-chip-select:hover, .settings-shell.worklist .wl-chip-select:focus-within {
    border-color: #0035d2;
    background-color: #ffffff;
}
.settings-shell.worklist .wl-chip-select.is-me {
    color: #0035d2;
}
/* Changed, and waiting for Save */
.settings-shell.worklist .wl-chip-select.is-changed {
    border-color: #0035d2;
    background-color: #ffffff;
    color: #0035d2;
}
/* Nothing chosen - a new practice wants a person or label there - and Save waits for one */
.settings-shell.worklist .wl-chip-select.is-pending {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
/* Row two of a task card: its pickers, on a line of their own, and Save once one has changed */
.settings-shell.worklist .wl-card-fields {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px 6px;
    margin-top: 6px;
}
.settings-shell.worklist .wl-card-fields .wl-inline-saved {
    margin-left: 2px;
}
/* When it is due, beside the patient, with Overdue or Due soon after it */
.settings-shell.worklist .wl-card-due {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
}
.settings-shell.worklist .wl-card-due .inv-status {
    padding: 0 7px;
    font-size: 10.5px;
}
/* The due date: a chip that opens the browser's date picker, as the waitlist's surgery date button does */
.settings-shell.worklist .wl-due-pick {
    position: relative;
    display: -ms-inline-flexbox;
    display: inline-flex;
}
/* Under the button, so the picker opens beside it; never seen or clicked itself */
.settings-shell.worklist .wl-due-pick input[type="date"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
}
/* A browser that can't open the picker from the button gets the date input itself */
.settings-shell.worklist .wl-due-pick.is-typing .wl-due-btn {
    display: none;
}
.settings-shell.worklist .wl-due-pick.is-typing input[type="date"] {
    position: static;
    width: auto;
    height: 24px;
    padding: 0 8px;
    border: 1px solid #0035d2;
    border-radius: 999px;
    font-size: 11.5px;
    opacity: 1;
    pointer-events: auto;
}
.settings-shell.worklist .wl-due-btn {
    cursor: pointer;
    white-space: nowrap;
}
.settings-shell.worklist .wl-due-btn:focus-visible {
    outline: none;
}
.settings-shell.worklist .wl-due-btn.is-overdue {
    color: #a94442;
}
.settings-shell.worklist .wl-due-btn[disabled] {
    cursor: default;
}
.settings-shell.worklist .wl-field-actions {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px;
    margin-left: 2px;
    animation: wl-fade-in 0.12s ease;
}
.settings-shell.worklist .wl-field-actions button {
    min-height: 24px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
}
.settings-shell.worklist .wl-field-actions .wl-field-cancel {
    width: 24px;
    padding: 0;
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-field-actions .wl-field-cancel:hover:not([disabled]) {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .wl-field-actions .wl-field-save {
    padding: 2px 12px;
    border: 1px solid #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.worklist .wl-field-actions .wl-field-save:hover:not([disabled]) {
    background-color: rgb(0, 45, 179);
}
.settings-shell.worklist .wl-field-actions .wl-field-save[disabled] {
    opacity: 0.5;
}
.settings-shell.worklist .wl-card-delete {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
}
/* A practice, in the colour it has on the calendar */
.settings-shell.worklist .wl-practice-tag {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #6c757d;
    font-size: 11.5px;
    font-weight: 500;
    white-space: nowrap;
}
.settings-shell.worklist .wl-col-patient .wl-practice-tag {
    display: -ms-flexbox;
    display: flex;
    margin-top: 3px;
}
.settings-shell.worklist .wl-practice-dot {
    width: 8px;
    height: 8px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
}
.settings-shell.worklist .wl-icon-btn {
    width: 26px;
    height: 26px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #6c757d;
}
.settings-shell.worklist .wl-icon-btn:hover, .settings-shell.worklist .wl-icon-btn:focus-visible {
    outline: none;
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .wl-confirm {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 5px;
    color: #a94442;
    font-size: 11.5px;
    font-weight: 600;
}
.settings-shell.worklist .wl-confirm button {
    padding: 2px 9px;
    border-radius: 6px;
    font-size: 11.5px;
    font-weight: 600;
}
.settings-shell.worklist .wl-confirm .wl-confirm-no {
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-confirm .wl-confirm-yes {
    border: 1px solid #a94442;
    background-color: #a94442;
    color: #ffffff;
}
/* The description, as written - a click away from being changed. Same metrics as its editor, so the
	   text does not move when it becomes a box to write in. */
.settings-shell.worklist .wl-card-desc {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 6px;
    margin-left: -9px;
    padding: 3px 8px;
    border: 1px solid transparent;
    border-radius: 6px;
    background: none;
    color: #343a40;
    font-size: 12.5px;
    line-height: 1.5;
    text-align: left;
    cursor: text;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.settings-shell.worklist .wl-card-desc:hover, .settings-shell.worklist .wl-card-desc:focus-visible {
    outline: none;
    border-color: #e0e6ed;
    background-color: #f8f9fa;
}
.settings-shell.worklist .wl-card-desc:hover .wl-inline-pencil, .settings-shell.worklist .wl-card-desc:focus-visible .wl-inline-pencil {
    opacity: 1;
    color: #0035d2;
}
.settings-shell.worklist .wl-card-desc.is-empty .wl-card-desc-text {
    color: #6c757d;
    font-style: italic;
}
.settings-shell.worklist .wl-card-desc-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    white-space: pre-line;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-desc-editor {
    margin-left: -9px;
}
.settings-shell.worklist .wl-desc-editor textarea {
    padding: 3px 8px;
    border-radius: 6px;
    font-size: 12.5px;
}
/* Row two: the description, with when and by whom the task was raised quietly beside it */
.settings-shell.worklist .wl-card-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 4px 12px;
    margin-top: 2px;
}
.settings-shell.worklist .wl-card-line .wl-card-desc, .settings-shell.worklist .wl-card-line .wl-desc-editor {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist .wl-card-line .wl-card-foot {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    max-width: 45%;
    text-align: right;
}
.settings-shell.worklist .wl-card-foot {
    color: #6c757d;
    font-size: 11.5px;
    line-height: 1.45;
}
/* Each phrase keeps together, and only breaks itself when it is longer than a whole line */
.settings-shell.worklist .wl-foot-part {
    display: inline-block;
    max-width: 100%;
    overflow-wrap: anywhere;
}
/* Writing in place - a waitlist comment or a task description. The box keeps the read state's padding,
	   font and corners, grows with the text, and its buttons fade in small beneath it. */
.settings-shell.worklist .wl-inline-pencil {
    margin-left: auto;
    opacity: 0;
    transition: opacity 0.15s ease;
}
.settings-shell.worklist .wl-inline-saved {
    margin-left: auto;
    color: #2e7d32;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
}
.settings-shell.worklist .wl-inline-saved .fa {
    color: #2e7d32;
}
/* ngAnimate keeps an ng-if's outgoing element on the page for as long as its transitions run, so the
	   read and write states would show together for a moment. Here they swap at once. !important because
	   it has to beat each element's own transition, whatever it is. */
.settings-shell.worklist .wl-row-comment.ng-enter, .settings-shell.worklist .wl-row-comment.ng-leave, .settings-shell.worklist .wl-card-desc.ng-enter, .settings-shell.worklist .wl-card-desc.ng-leave, .settings-shell.worklist .wl-inline-editor.ng-enter, .settings-shell.worklist .wl-inline-editor.ng-leave {
    transition: none !important;
    animation: none !important;
}
/* A description or comment shows five lines at most, and scrolls for the rest. Its editor grows with
	   the text to twelve lines, and then scrolls too. */
.settings-shell.worklist .wl-card-desc-text, .settings-shell.worklist .wl-row-comment-text {
    max-height: 7.5em;
    overflow-y: auto;
}
.settings-shell.worklist .wl-inline-editor {
    position: relative;
    max-width: 110ch;
}
.settings-shell.worklist .wl-inline-editor textarea {
    display: block;/* Sized to its text by the browser, where it can; elsewhere the controller measures it */
    field-sizing: content;
    min-height: 0;
    max-height: calc(18em + 14px);
    overflow-x: hidden;
    overflow-y: auto;
    border: 1px solid #0035d2;
    background-color: #ffffff;
    color: #343a40;
    line-height: 1.5;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.1);
    resize: none;
}
.settings-shell.worklist .wl-inline-editor textarea:focus {
    border-color: #0035d2;
    box-shadow: 0 0 0 3px rgba(0, 53, 210, 0.14);
}
.settings-shell.worklist .wl-inline-actions {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: 5px;
    animation: wl-fade-in 0.12s ease;
}
.settings-shell.worklist .wl-inline-actions .wl-counter {
    margin: 0 auto 0 0;
}
.settings-shell.worklist .wl-inline-actions button {
    min-height: 24px;
    padding: 2px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 600;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-cancel {
    border: 1px solid #c0cde0;
    background-color: #ffffff;
    color: #343a40;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-cancel:hover {
    border-color: #0035d2;
    color: #0035d2;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save {
    border: 1px solid #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save:hover:not([disabled]) {
    background-color: rgb(0, 45, 179);
}
.settings-shell.worklist .wl-inline-actions .wl-inline-save[disabled] {
    opacity: 0.5;
}
/* The card's main action, on its right: the waitlist's surgery completed button, a little smaller */
.settings-shell.worklist .wl-card-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
    margin-left: 4px;
}
.settings-shell.worklist .wl-card-action .wl-reopen {
    margin-left: 0;
}
.settings-shell.worklist .wl-complete-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 6px;
    min-width: 108px;
    min-height: 30px;
    padding: 4px 14px;
    border: 1px solid rgba(46, 125, 50, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #2e7d32;
    font-size: 12.5px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
}
.settings-shell.worklist .wl-complete-btn:hover:not([disabled]), .settings-shell.worklist .wl-complete-btn:focus-visible {
    outline: none;
    border-color: #2e7d32;
    background-color: rgba(32, 201, 151, 0.1);
    box-shadow: 0 2px 8px rgba(46, 125, 50, 0.15);
}
.settings-shell.worklist .wl-complete-btn:active:not([disabled]) {
    background-color: rgba(32, 201, 151, 0.18);
}
.settings-shell.worklist .wl-complete-btn[disabled] {
    cursor: progress;
}
/* Saved: it fills, briefly, before the card moves */
.settings-shell.worklist .wl-complete-btn.is-done {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
/* A task label: its own colour as a dot, so any colour reads on the pale pill */
.settings-shell.worklist .wl-label {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    max-width: 180px;
    padding: 2px 10px 2px 8px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.settings-shell.worklist .wl-label-dot {
    width: 9px;
    height: 9px;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    border-radius: 50%;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
}
.settings-shell.worklist .wl-me {
    color: #0035d2;
    font-weight: 700;
}
.settings-shell.worklist .wl-nhi {
    letter-spacing: 0.03em;
    font-variant-numeric: tabular-nums;
}
.settings-shell.worklist .wl-eye {
    display: inline-block;
    padding: 2px 7px;
    border-radius: 8px;
    background-color: #e7f0ff;
    color: #0035d2;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
}
/* Right eye red, left eye blue, so which is which is seen at a glance */
.settings-shell.worklist .wl-eye.is-od {
    box-shadow: inset 0 0 0 1px rgba(198, 40, 40, 0.3);
    background-color: #fdecec;
    color: #c62828;
}
.settings-shell.worklist .wl-eye.is-os {
    box-shadow: inset 0 0 0 1px rgba(21, 101, 192, 0.3);
    background-color: #e6f0fb;
    color: #1565c0;
}
/* The comments, as written, across the row's width - a click away from being changed. Same metrics as
	   the editor below, icon included, so the text does not move when it becomes a box to write in. */
.settings-shell.worklist .wl-row-comment {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 7px;
    width: 100%;
    max-width: 110ch;
    padding: 6px 10px;
    border: 1px solid transparent;
    border-radius: 8px;
    background-color: #f8f9fa;
    color: #343a40;
    font-size: 12.5px;
    line-height: 1.5;
    text-align: left;
    cursor: text;
    transition: border-color 0.15s ease, background-color 0.15s ease;
}
.settings-shell.worklist .wl-row-comment > .fa:first-child {
    width: 12px;
    color: #6c757d;
}
.settings-shell.worklist .wl-row-comment:hover, .settings-shell.worklist .wl-row-comment:focus-visible {
    outline: none;
    border-color: #c0cde0;
    background-color: #ffffff;
}
.settings-shell.worklist .wl-row-comment:hover .wl-inline-pencil, .settings-shell.worklist .wl-row-comment:focus-visible .wl-inline-pencil {
    opacity: 1;
    color: #0035d2;
}
/* An entry with every eye done: its comments are read, not changed */
.settings-shell.worklist .wl-row-comment.is-readonly {
    cursor: default;
}
.settings-shell.worklist .wl-row-comment.is-readonly:hover {
    border-color: transparent;
    background-color: #f8f9fa;
}
/* No comment yet: just a quiet way to add one */
.settings-shell.worklist .wl-row-comment.is-empty {
    width: auto;
    padding: 2px 10px;
    background-color: transparent;
    color: #6c757d;
    font-size: 12px;
}
.settings-shell.worklist .wl-row-comment.is-empty > .fa:first-child {
    font-size: 10px;
}
.settings-shell.worklist .wl-row-comment.is-empty:hover, .settings-shell.worklist .wl-row-comment.is-empty:focus-visible {
    color: #0035d2;
}
.settings-shell.worklist .wl-row-comment.is-empty:hover .fa, .settings-shell.worklist .wl-row-comment.is-empty:focus-visible .fa {
    color: #0035d2;
}
/* The width of the box, so a long comment's scrollbar is at its edge, not beside the text */
.settings-shell.worklist .wl-row-comment-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    white-space: pre-line;
    overflow-wrap: anywhere;
}
.settings-shell.worklist .wl-comment-editor textarea {
    padding: 6px 10px 6px 29px;
    border-radius: 8px;
    font-size: 12.5px;
}
/* Where the read state's icon was */
.settings-shell.worklist .wl-comment-editor .wl-editor-icon {
    position: absolute;
    top: 10px;
    left: 11px;
    z-index: 1;
    color: #6c757d;
    font-size: 12.5px;
    pointer-events: none;
}
/* The complete buttons - a task's Complete, an eye's Surgery completed - reward the click: a soft green
	   shine crosses them on hover, and once saved they fill green, a white shine sweeps across, and the
	   tick pops. Still for anyone who has asked for less motion. */
.settings-shell.worklist .wl-complete-btn, .settings-shell.worklist .wl-surgery-btn {
    position: relative;
    overflow: hidden;
    transition: background-color 0.35s ease, border-color 0.35s ease, color 0.35s ease, box-shadow 0.15s ease;
}
.settings-shell.worklist .wl-complete-btn::after, .settings-shell.worklist .wl-surgery-btn::after {
    content: "";
    position: absolute;
    top: 0;
    left: -70%;
    width: 45%;
    height: 100%;
    background-image: linear-gradient(100deg, transparent 0%, rgba(32, 201, 151, 0.28) 50%, transparent 100%);
    transform: skewX(-20deg);
    pointer-events: none;
}
.settings-shell.worklist .wl-complete-btn:hover:not([disabled])::after, .settings-shell.worklist .wl-surgery-btn:hover:not([disabled])::after {
    animation: wl-shine 0.8s ease;
}
.settings-shell.worklist .wl-complete-btn.is-done::after, .settings-shell.worklist .wl-surgery-btn.is-done::after {
    background-image: linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, 0.65) 50%, transparent 100%);
    animation: wl-shine 0.6s ease 0.1s;
}
.settings-shell.worklist .wl-complete-btn.is-done > i, .settings-shell.worklist .wl-surgery-btn.is-done > i {
    animation: wl-pop 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@media (prefers-reduced-motion: reduce) {
    .settings-shell.worklist .wl-complete-btn, .settings-shell.worklist .wl-surgery-btn {
        transition: none;
    }
    .settings-shell.worklist .wl-complete-btn::after, .settings-shell.worklist .wl-complete-btn.is-done::after, .settings-shell.worklist .wl-complete-btn.is-done > i, .settings-shell.worklist .wl-surgery-btn::after, .settings-shell.worklist .wl-surgery-btn.is-done::after, .settings-shell.worklist .wl-surgery-btn.is-done > i {
        animation: none;
    }
}
/* Pre-approval: the surgery completed button's look, smaller and half as wide, so it reads as the lesser
	   step. In the brand purple: not done, an empty circle; done, a tick on a soft purple fill. */
.settings-shell.worklist .wl-step-btn {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    width: 92px;
    min-height: 26px;
    padding: 3px 9px;
    border: 1px solid rgba(139, 86, 163, 0.45);
    border-radius: 6px;
    background-color: #ffffff;
    color: #8b56a3;
    font-size: 11.5px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
    transition: background-color 0.15s ease, border-color 0.15s ease;
}
.settings-shell.worklist .wl-step-btn + .wl-step-btn {
    margin-top: 4px;
}
/* A checkbox: an empty square, ticked once the step is done */
.settings-shell.worklist .wl-step-btn .wl-step-box {
    width: 12px;
    font-size: 12.5px;
    text-align: center;
}
.settings-shell.worklist .wl-step-btn .wl-step-box.fa-regular {
    color: rgba(139, 86, 163, 0.65);
}
.settings-shell.worklist .wl-step-btn:hover:not([disabled]), .settings-shell.worklist .wl-step-btn:focus-visible {
    outline: none;
    border-color: #8b56a3;
    background-color: rgba(139, 86, 163, 0.08);
}
.settings-shell.worklist .wl-step-btn.is-on {
    border-color: rgba(139, 86, 163, 0.6);
    background-color: rgba(139, 86, 163, 0.13);
}
.settings-shell.worklist .wl-step-btn[disabled] {
    cursor: progress;
}
/* Surgery completed: the row's main action - an outlined button, square-cornered like the app's other
	   buttons so it reads as something to press, and only filled with a soft tint when pointed at */
.settings-shell.worklist .wl-surgery-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 7px;
    min-width: 160px;
    min-height: 34px;
    padding: 6px 14px;
    border: 1px solid rgba(46, 125, 50, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #2e7d32;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
}
.settings-shell.worklist .wl-surgery-btn:hover:not([disabled]), .settings-shell.worklist .wl-surgery-btn:focus-visible {
    outline: none;
    border-color: #2e7d32;
    background-color: rgba(32, 201, 151, 0.1);
    box-shadow: 0 2px 8px rgba(46, 125, 50, 0.15);
}
.settings-shell.worklist .wl-surgery-btn:active:not([disabled]) {
    background-color: rgba(32, 201, 151, 0.18);
}
.settings-shell.worklist .wl-surgery-btn[disabled] {
    cursor: progress;
}
/* Saved: it fills, briefly, before the row moves */
.settings-shell.worklist .wl-surgery-btn.is-done {
    border-color: #2e7d32;
    background-color: #2e7d32;
    color: #ffffff;
}
/* Completed: when, and the way back to Waiting - wrapping, so it is no wider than the button it replaces */
.settings-shell.worklist .wl-done-on {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    gap: 4px 6px;
    max-width: 160px;
    color: #2e7d32;
    font-size: 13px;
    font-weight: 600;
    white-space: normal;
}
/* "Surgery completed", and the date on a line of its own below it */
.settings-shell.worklist .wl-done-text {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 1px;
    white-space: nowrap;
}
.settings-shell.worklist .wl-done-date {
    padding-left: 18px;
    color: #343a40;
    font-size: 12px;
    font-weight: 500;
}
.settings-shell.worklist .wl-reopen {
    padding: 2px 8px;
    border: 1px solid #c0cde0;
    border-radius: 6px;
    background-color: #ffffff;
    color: #343a40;
    font-size: 11.5px;
    font-weight: 500;
}
.settings-shell.worklist .wl-reopen .fa {
    color: #6c757d;
}
.settings-shell.worklist .wl-reopen:hover:not([disabled]), .settings-shell.worklist .wl-reopen:focus-visible {
    outline: none;
    border-color: #0035d2;
    color: #0035d2;
}
/* The other eye is booked: a copy icon left of the date books this one for the same day - or, once done,
	   a note says so. It sits in the booking's gutter, so the date button never moves for it. */
.settings-shell.worklist .wl-same-day {
    position: absolute;
    top: 50%;
    right: 100%;
    width: 26px;
    height: 26px;
    margin-top: -13px;
    margin-right: 4px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #0035d2;
    font-size: 13px;
}
.settings-shell.worklist .wl-same-day:hover:not([disabled]), .settings-shell.worklist .wl-same-day:focus-visible {
    outline: none;
    background-color: #e7f0ff;
}
.settings-shell.worklist .wl-same-day-note {
    display: block;
    margin-top: 4px;
    color: #6c757d;
    font-size: 11px;
}
/* An eye's booking: the two ways to book - the date, and the calendar - as matching buttons of one width,
	   with a gutter on the left for the same-day copy icon, kept whether it shows or not */
.settings-shell.worklist .wl-booking {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    padding-left: 30px;
}
.settings-shell.worklist .wl-booking .wl-date-btn {
    width: 156px;
}
.settings-shell.worklist .wl-booking-date {
    position: relative;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
}
/* Beside a booked date: clear it */
.settings-shell.worklist .wl-date-clear {
    width: 26px;
    height: 26px;
    margin-left: 4px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #6c757d;
    vertical-align: middle;
    opacity: 0;
    transition: opacity 0.15s ease;
}
.settings-shell.worklist .wl-date-clear:hover:not([disabled]), .settings-shell.worklist .wl-date-clear:focus-visible {
    outline: none;
    background-color: #fbeceb;
    color: #a94442;
}
.settings-shell.worklist .wl-table > tbody > tr:hover .wl-date-clear, .settings-shell.worklist .wl-date-clear:focus-visible {
    opacity: 1;
}
/* The surgery date: a button that opens the browser's date picker. Unbooked, it stands out as the next
	   thing to do; booked, it reads as the date, and is still the way to change it. */
.settings-shell.worklist .wl-date-pick {
    position: relative;
    display: inline-block;
}
/* Under the button, so the picker opens beside it; never seen or clicked itself */
.settings-shell.worklist .wl-date-pick input[type="date"] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    pointer-events: none;
}
/* A browser that can't open the picker from the button gets the date input itself */
.settings-shell.worklist .wl-date-pick.is-typing .wl-date-btn {
    display: none;
}
.settings-shell.worklist .wl-date-pick.is-typing input[type="date"] {
    position: static;
    width: auto;
    height: auto;
    padding: 2px 8px;
    border: 1px solid #0035d2;
    border-radius: 8px;
    opacity: 1;
    pointer-events: auto;
}
/* Unbooked: an outlined navy button, the next thing to do. Booked: the date, quieter still, and still
	   the way to change it. Filled with a soft tint only when pointed at. */
.settings-shell.worklist .wl-date-btn {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 8px;
    min-width: 124px;
    min-height: 34px;
    padding: 6px 14px;
    border: 1px solid rgba(0, 53, 210, 0.55);
    border-radius: 8px;
    background-color: #ffffff;
    color: #0035d2;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    box-shadow: 0 1px 2px rgba(10, 37, 64, 0.05);
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
}
.settings-shell.worklist .wl-date-btn:hover:not([disabled]), .settings-shell.worklist .wl-date-btn:focus-visible {
    outline: none;
    border-color: #0035d2;
    background-color: #e7f0ff;
    box-shadow: 0 2px 8px rgba(0, 53, 210, 0.12);
}
.settings-shell.worklist .wl-date-btn[disabled] {
    cursor: progress;
}
/* The calendar button quietens with the date once the eye is booked, so the two still match */
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn, .settings-shell.worklist .wl-date-btn.is-booked {
    border-color: #e0e6ed;
    color: #343a40;
    box-shadow: none;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-calendar, .settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-calendar-plus-o, .settings-shell.worklist .wl-date-btn.is-booked .fa-calendar, .settings-shell.worklist .wl-date-btn.is-booked .fa-calendar-plus-o {
    color: #6c757d;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn .fa-check, .settings-shell.worklist .wl-date-btn.is-booked .fa-check {
    color: #20c997;
}
.settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn:hover:not([disabled]), .settings-shell.worklist .wl-date-pick.is-booked .wl-date-btn:focus-visible, .settings-shell.worklist .wl-date-btn.is-booked:hover:not([disabled]), .settings-shell.worklist .wl-date-btn.is-booked:focus-visible {
    border-color: rgba(0, 53, 210, 0.55);
    background-color: #ffffff;
    color: #0035d2;
}
.settings-shell.worklist .wl-date-pick.is-large .wl-date-btn {
    min-width: 160px;
    min-height: 40px;
    padding: 8px 20px;
    font-size: 14px;
}
.settings-shell.worklist .wl-counter {
    display: block;
    margin-top: 4px;
    text-align: right;
    font-size: 11px;
    color: #a3aac0;
}
/* Read-only only so the picker is used rather than typed over - not disabled, so it should not look it */
.settings-shell.worklist datepicker {
    display: block;
}
.settings-shell.worklist datepicker .form-control[readonly]:not([disabled]) {
    background-color: #ffffff;
    color: #333333;
    cursor: pointer;
}
/* =================================================================== */
/* ! New task dialog
/* =================================================================== */
.settings-shell.worklist.task-create {
	-ms-flex-direction: column;
	    flex-direction: column;
	margin: 0;
}
.settings-shell.worklist.task-create .wl-create-head {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 18px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.settings-shell.worklist.task-create .wl-create-head .settings-avatar i {
    font-size: 16px;
}
/* The patient, or the search for one, takes the rest of the header */
.settings-shell.worklist.task-create .wl-create-who {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.settings-shell.worklist.task-create .wl-create-who .patient-picker-field {
    max-width: none;
    margin-top: 4px;
}
.settings-shell.worklist.task-create .wl-create-patient-row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    gap: 10px;
}
.settings-shell.worklist.task-create .wl-create-patient-row .inv-link-btn {
    margin-top: 0;
}
.settings-shell.worklist.task-create .wl-create-eyebrow {
    display: block;
    margin: 0;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3aac0;
}
.settings-shell.worklist.task-create .wl-create-patient {
    font-family: 'Gordita Bold', sans-serif;
    font-size: 17px;
    line-height: 1.3;
    color: #0a2540;
}
.settings-shell.worklist.task-create .wl-create-sub {
    font-size: 12px;
    color: #6c757d;
}
.settings-shell.worklist.task-create .settings-pane-body {
    min-height: 0;
}
.settings-shell.worklist.task-create .wl-create-card {
    padding: 22px 24px;
}
.settings-shell.worklist.task-create .wl-create-row {
    margin-top: 16px;
}
.settings-shell.worklist.task-create .wl-presets {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-pack: end;
        justify-content: flex-end;
    gap: 6px;
    margin: 10px 0 18px;
}
.settings-shell.worklist.task-create .wl-presets .chip-select {
    padding: 4px 12px;
    font-size: 11.5px;
}
.settings-shell.worklist.task-create .wl-create-error {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 6px;
    margin-right: auto;
    font-size: 12px;
    color: #a94442;
}
.settings-shell.worklist.task-create .wl-create-error i {
    margin-top: 2px;
}
/* =================================================================== */
/* ! Narrower screens
/* =================================================================== */
@media (max-width: 1100px) {
	.settings-shell.worklist .wl-search {
        width: 220px;
    }
}
/* _settings.css lays the rail out as a row here and hides its footer; the new task button stays */
@media (max-width: 900px) {
	.settings-shell.worklist .settings-nav-footer {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-align: center;
            align-items: center;
        -ms-flex-negative: 0;
            flex-shrink: 0;
        margin: 0;
        padding: 8px 10px;
        border-top: none;
    }
	.settings-shell.worklist .settings-nav-footer .footer-label, .settings-shell.worklist .settings-nav-footer .footer-value {
        display: none;
    }
	.settings-shell.worklist .settings-nav-footer .wl-new-btn {
        margin: 0;
        white-space: nowrap;
    }
	.settings-shell.worklist .wl-tick-row {
        -ms-flex-negative: 0;
            flex-shrink: 0;
    }
	.settings-shell.worklist .wl-tick-row .wl-tick-name {
        white-space: nowrap;
    }
	.settings-shell.worklist .wl-toolbar {
        padding: 14px 16px 10px;
    }
	.settings-shell.worklist .settings-notice.wl-notice {
        margin: 0 16px 10px;
    }
	.settings-shell.worklist .settings-pane-body.wl-body {
        padding: 0 16px 16px;
    }
	.settings-shell.worklist .wl-search {
        -ms-flex: 1 1 200px;
            flex: 1 1 200px;
        width: auto;
    }
}
@keyframes wl-fade-in {
	from {
		opacity: 0;
		transform: translateY(-3px);
	}
}
@keyframes wl-shine {
	from {
		left: -70%;
	}

	to {
		left: 130%;
	}
}
@keyframes wl-pop {
	0% {
		transform: scale(0.4);
	}

	100% {
		transform: scale(1);
	}
}
/* =================================================================== */
/* ! Add to surgery waitlist: the dialog the Surgery Waitlist's rail
/* button opens (laid out as the new task dialog) and the row it adds
/* =================================================================== */
.settings-shell.worklist.waitlist {

	/* =================================================================== */
}
.settings-shell.worklist.waitlist .wl-just-added {
    display: block;
    margin-top: 2px;
    font-size: 11px;
    font-weight: 700;
    color: #1f8a4c;
}
.settings-shell.worklist.waitlist .inv-table > tbody.wl-group.is-just-added > tr > th, .settings-shell.worklist.waitlist .inv-table > tbody.wl-group.is-just-added > tr > td {
    background-color: #f2fbf5;
}
/* The pill on one line; the line under it wraps rather than widening the column */
.settings-shell.worklist.waitlist .wl-col-timeframe {
    min-width: 112px;
}
/* ! Preferred timeframe: the entry's pill, the line under it saying how
	/* it stands, and the rail's Timeframe filters, coloured the same way
	/* =================================================================== */
.settings-shell.worklist.waitlist .wl-tf-note {
    max-width: 140px;
}
/* =================================================================== */
.settings-shell.worklist.waitlist .wl-tf {
    display: inline-block;
    white-space: nowrap;
    padding: 2px 9px;
    border-radius: 12px;
    font-size: 11.5px;
    font-weight: 700;
    background-color: #f1f3f8;
    color: #3c4658;
}
.settings-shell.worklist.waitlist .wl-tf.is-asap {
    background-color: #fff1e8;
    color: #c2410c;
}
.settings-shell.worklist.waitlist .wl-tf.is-ok {
    background-color: #eaf7ef;
    color: #1f8a4c;
}
.settings-shell.worklist.waitlist .wl-tf.is-soon {
    background-color: #fef6e0;
    color: #a16207;
}
.settings-shell.worklist.waitlist .wl-tf.is-late {
    background-color: #fdecec;
    color: #c62828;
}
.settings-shell.worklist.waitlist .wl-tf-note {
    display: block;
    margin-top: 3px;
    font-size: 11px;
    color: #6c757d;
}
.settings-shell.worklist.waitlist .wl-tf-note.is-soon {
    color: #a16207;
    font-weight: 600;
}
.settings-shell.worklist.waitlist .wl-tf-note.is-late {
    color: #c62828;
    font-weight: 600;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-late i {
    color: #c62828;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-soon i {
    color: #a16207;
}
.settings-shell.worklist.waitlist .wl-tf-filter.is-asap i {
    color: #c2410c;
}
/* ! Fitting the table: ten columns in the modal without scrolling it
	/* sideways, so the last column (Surgery) is never off the edge
	/* =================================================================== */
.settings-shell.worklist.waitlist .wl-table > thead > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > td {
    padding-left: 8px;
    padding-right: 8px;
}
.settings-shell.worklist.waitlist .wl-table > tbody > tr > td.wl-col-progress {
    padding-right: 12px;
}
.settings-shell.worklist.waitlist .wl-table .wl-date-pick .wl-date-btn {
    width: 128px;
    min-width: 0;
    padding-left: 10px;
    padding-right: 10px;
}
.settings-shell.worklist.waitlist .wl-table .wl-col-surgeon .wl-chip-select select {
    max-width: 128px;
}
/* Complete surgery: as wide as its words, onto two lines when the table is short of room */
.settings-shell.worklist.waitlist .wl-surgery-btn {
    min-width: 0;
    max-width: 132px;
    padding: 6px 10px;
    white-space: normal;
    text-align: left;
    line-height: 1.25;
}
/* Below a wide screen the modal takes more of the window, and the rail gives the table room */
@media (max-width: 1600px) {
	.worklist-dialog {
		min-width: 96%;
		width: 96%;
	}

	.settings-shell.worklist.waitlist .worklist-rail {
		-ms-flex-preferred-size: 220px;
		    flex-basis: 220px;
		width: 220px;
	}
}
/* A laptop screen: a little less room again for the rail, the list's margins and the widest controls */
@media (max-width: 1400px) {
	.settings-shell.worklist.waitlist .worklist-rail {
        -ms-flex-preferred-size: 196px;
            flex-basis: 196px;
        width: 196px;
    }
	.settings-shell.worklist.waitlist .wl-body {
        padding-left: 16px;
        padding-right: 16px;
    }
	.settings-shell.worklist.waitlist .wl-table > thead > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > th, .settings-shell.worklist.waitlist .wl-table > tbody > tr > td {
        padding-left: 6px;
        padding-right: 6px;
    }
	.settings-shell.worklist.waitlist .wl-table .wl-date-pick .wl-date-btn {
        width: 112px;
    }
	.settings-shell.worklist.waitlist .wl-table .wl-col-surgeon .wl-chip-select select {
        max-width: 104px;
    }
}
/* The add form sits inside the shell, so its element and the form carry the shell's column on to its body
	   and action bar. An element is inline by default, which let the form grow past the dialog and its
	   buttons be cut off once a procedure list opened; held to the dialog's height, only the fields scroll. */
.settings-shell.worklist.task-create surgery-waitlist-add-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-height: 0;
}
.settings-shell.worklist.task-create .wl-create-form {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
}
/* Never wider than the dialog; it scrolls down only when the window is too short for the form */
.settings-shell.worklist.task-create .wl-create-form .settings-pane-body {
    overflow-x: hidden;
    padding: 8px 16px;
}
.settings-shell.worklist.task-create .wl-create-form .settings-pane-body.wl-no-scroll {
    overflow-y: hidden;
}
.settings-shell.worklist.task-create .wl-create-form .wl-create-card {
    padding: 12px 18px;
}
/* Laid out as the new task form, in field-grid rows; these line up what the waitlist's own fields bring */
/* Native radios, centred on their text */
.settings-shell.worklist.task-create .wl-create-form .radio-inline {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin: 0;
    padding: 0;
    min-height: 26px;
}
.settings-shell.worklist.task-create .wl-create-form .radio-inline input[type="radio"] {
    position: static;
    margin: 0;
}
.settings-shell.worklist.task-create .wl-create-form textarea {
    resize: vertical;
}
.settings-shell.worklist.task-create .wl-add-options {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    column-gap: 18px;
    row-gap: 4px;
    min-height: 35px;
    -ms-flex-align: center;
        align-items: center;
}
/* One timeframe option to a line */
.settings-shell.worklist.task-create .wl-timeframe {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.settings-shell.worklist.task-create .wl-timeframe .radio-inline {
    display: -ms-flexbox;
    display: flex;
    min-height: 28px;
}
.settings-shell.worklist.task-create .wl-timeframe-line {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
}
.settings-shell.worklist.task-create .wl-timeframe-weeks {
    width: 64px;
    height: 30px;
    padding: 4px 10px;
}
.settings-shell.worklist.task-create .wl-timeframe-date {
    display: block;
    width: 112px;
}
.settings-shell.worklist.task-create .wl-timeframe-date .form-control {
    height: 30px;
    padding: 4px 10px;
}
/* The procedure search (shared with the operation note): its input and its add button on one line, at
	   the field's full width, each eye's procedures stacked */
.settings-shell.worklist.task-create procedure-search-box {
    display: block;
}
.settings-shell.worklist.task-create procedure-search-box + procedure-search-box {
    margin-top: 10px;
}
.settings-shell.worklist.task-create procedure-search-box .row {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: end;
        align-items: flex-end;
    gap: 8px;
    margin: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row::before, .settings-shell.worklist.task-create procedure-search-box .row::after {
    display: none;
}
.settings-shell.worklist.task-create procedure-search-box .row > [class*="col-"] {
    float: none;
    width: auto;
    padding: 0;
    margin-bottom: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-md-8 {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-md-3 {
    -ms-flex: 0 0 auto;
        flex: 0 0 auto;
    margin-top: 0 !important;
}
.settings-shell.worklist.task-create procedure-search-box .row > .col-xs-12 {
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.settings-shell.worklist.task-create procedure-search-box .row + .row {
    margin-top: 6px;
}
.settings-shell.worklist.task-create procedure-search-box .btn-add-incision {
    height: 35px;
    min-width: 35px;
    margin: 0;
}
/* The list's and Bootstrap's table margins left a gap under the procedures added */
.settings-shell.worklist.task-create procedure-search-box .blue-box, .settings-shell.worklist.task-create procedure-search-box .table-incisions {
    margin-bottom: 0;
}
/* The automation task (shared with the progress note): labelled and spaced as the fields around it */
.settings-shell.worklist.task-create automation-task {
    display: block;
}
.settings-shell.worklist.task-create automation-task .pre-op-form {
    margin: 0;
    padding: 0;
}
.settings-shell.worklist.task-create automation-task .row {
    margin-left: 0 !important;
    margin-right: 0;
}
.settings-shell.worklist.task-create automation-task .row > [class*="col-"] {
    padding-left: 0;
    padding-right: 0;
}
/* The progress note's own label, text colour and marker offsets, undone to match the other fields */
.settings-shell.worklist.task-create automation-task .control-label {
    color: #343a40 !important;
    font-size: 11px !important;
    letter-spacing: 0.05em;
    margin-bottom: 6px;
}
.settings-shell.worklist.task-create automation-task .radio-inline, .settings-shell.worklist.task-create automation-task .marker {
    position: static;
    color: #333333;
    font-size: 13px;
}
.settings-shell.worklist.task-create automation-task .form-group {
    display: -ms-flexbox;
    display: flex;
    column-gap: 18px;
    margin-bottom: 0;
}
.settings-shell.worklist.task-create automation-task .head-link {
    font-size: 12px;
    line-height: 1.6;
    color: #6c757d !important;
}
/* Another practice's patient: listed, but an entry is only added where the patient is registered */
.settings-shell.worklist.task-create .patient-result.is-unavailable {
    cursor: not-allowed;
    opacity: 0.6;
}
/* =================================================================== */
/* ! Imported patients
/* The review dialog (merge into an existing patient, or confirm as new),
/* the review list from the nav, the dialog for a patient the import
/* couldn't create, and the "Needs review" label in patient pickers and
/* search.
/* =================================================================== */
/* "Needs review" next to a patient in a picker or the search results */
.patient-option-review {
	-ms-flex-negative: 0;
	    flex-shrink: 0;
	display: inline-block;
	margin-left: 6px;
	padding: 1px 8px;
	border: 1px solid rgba(255, 193, 7, 0.7);
	border-radius: 20px;
	background-color: rgba(255, 243, 205, 0.9);
	color: #856404;
	font-size: 10.5px;
	font-weight: 600;
	white-space: nowrap;
}
/* The review dialog and the review list. Not built on .settings-shell: that is the Settings dialog's
/* side-by-side frame (a left rail beside the content), which would lay these out in columns. */
.pi-dialog {
	width: 880px;
	max-width: 95vw;
	max-height: 90vh;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
/* Registering a new patient: room for the registration form's three columns */
.pi-dialog.pi-dialog--wide {
    width: 1200px;
}
/* Angular Material transitions every property of an open dialog, which animated the width whenever the step
	/* changed it. Only the dialog's open and close move. */
.pi-dialog.md-transition-in, .pi-dialog.md-transition-out {
    transition-property: opacity, transform;
}
/* Sized to their label, as in the claim flow's action bars: the global .btn-navy / .btn-cancel are full-width
	/* slabs capped at 220px, which read as form fields when two sit side by side. Not the registration form's own. */
.pi-dialog .pi-actions .btn, .pi-dialog .pi-candidate .btn, .pi-dialog .pi-list .btn, .pi-dialog .pi-callout .btn, .pi-dialog .pi-uc-search .btn {
    width: auto;
    max-width: none;
    min-width: 8rem;
    padding: 7px 22px;
    font-size: 13px;
}
/* Who is being reviewed, and where the review is up to */
.pi-dialog .pi-identity {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 16px 28px;
    background-color: #ffffff;
    border-bottom: 1px solid #e0e6ed;
}
.pi-dialog .pi-avatar {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: linear-gradient(135deg, #0035d2 0%, #2a307f 100%);
    color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 15px;
    font-weight: 600;
    letter-spacing: 0.5px;
    box-shadow: 0 4px 12px rgba(0, 53, 210, 0.2);
}
.pi-dialog .pi-identity-text {
    min-width: 0;
}
.pi-dialog .pi-identity-name {
    font-size: 17px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-identity-meta {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 10px;
    margin-top: 2px;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-chip {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 2px 10px;
    border-radius: 20px;
    font-size: 11.5px;
    font-weight: 600;
}
.pi-dialog .pi-chip--import {
    background-color: #e7f0ff;
    color: #0035d2;
}
.pi-dialog .pi-steps {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    margin: 0 0 0 auto;
    padding: 0;
    list-style: none;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-steps li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    white-space: nowrap;
}
.pi-dialog .pi-steps .pi-step-dot {
    width: 24px;
    height: 24px;
    border: 1.5px solid #e0e6ed;
    border-radius: 50%;
    background-color: #ffffff;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    font-size: 11px;
    font-weight: 600;
}
.pi-dialog .pi-steps li.is-current {
    color: #0a2540;
    font-weight: 600;
}
.pi-dialog .pi-steps li.is-current .pi-step-dot {
    border-color: #0035d2;
    background-color: #0035d2;
    color: #ffffff;
}
.pi-dialog .pi-steps li.is-done .pi-step-dot {
    border-color: #20c997;
    background-color: #20c997;
    color: #ffffff;
}
.pi-dialog .pi-steps .pi-steps-line {
    width: 28px;
    height: 1px;
    background-color: #e0e6ed;
}
/* The step itself, which scrolls between the fixed header and footer */
.pi-dialog .pi-body {
    -ms-flex: 1;
        flex: 1;
    min-height: 0;
    overflow-y: auto;
    padding: 24px 28px;
    background-color: #f4f7fe;
}
.pi-dialog .pi-title {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-lede {
    max-width: 700px;
    margin: 0 0 18px;
    line-height: 1.55;
    color: #6c757d;
}
.pi-dialog .pi-muted {
    color: #6c757d;
    font-weight: normal;
}
.pi-dialog .pi-footnote {
    margin: 10px 2px 0;
    font-size: 12.5px;
    color: #6c757d;
}
.pi-dialog .pi-state {
    padding: 48px 0;
    text-align: center;
    color: #6c757d;
}
.pi-dialog .pi-card {
    background-color: #ffffff;
    border: 1px solid #e0e6ed;
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
}
.pi-dialog .pi-card--flush {
    overflow: hidden;
}
.pi-dialog .pi-callout {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 12px;
    margin-bottom: 16px;
    padding: 12px 14px;
    border: 1px solid transparent;
    border-radius: 10px;
    line-height: 1.5;
}
.pi-dialog .pi-callout > i {
    margin-top: 3px;
}
.pi-dialog .pi-callout--info {
    background-color: #e7f0ff;
    border-color: rgba(0, 53, 210, 0.15);
    color: #0a2540;
}
.pi-dialog .pi-callout--info > i {
    color: #0035d2;
}
.pi-dialog .pi-callout--warning {
    background-color: rgba(255, 243, 205, 0.9);
    border-color: rgba(255, 193, 7, 0.7);
    color: #856404;
}
.pi-dialog .pi-callout--warning a {
    color: inherit;
    font-weight: 600;
    text-decoration: underline;
}
.pi-dialog .pi-callout--success {
    background-color: rgba(32, 201, 151, 0.08);
    border-color: rgba(32, 201, 151, 0.3);
    color: #0a2540;
}
.pi-dialog .pi-callout--success > i {
    color: #20c997;
}
.pi-dialog .pi-callout--error {
    background-color: rgba(217, 83, 79, 0.15);
    border-color: #d9534f;
    color: #d9534f;
}
.pi-dialog .pi-tags {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 6px;
    margin-top: 6px;
}
.pi-dialog .pi-tag {
    padding: 2px 10px;
    border: 1px solid rgba(255, 193, 7, 0.7);
    border-radius: 20px;
    background-color: #ffffff;
    font-size: 12px;
}
/* Step 1: possible duplicates */
.pi-dialog .pi-candidates {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
    margin: 0 0 12px;
    padding: 0;
    list-style: none;
}
.pi-dialog .pi-candidate {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 16px;
    padding: 16px 18px;
}
.pi-dialog .pi-candidate .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.pi-dialog .pi-candidate-who {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.pi-dialog .pi-candidate-name {
    margin-bottom: 6px;
    font-size: 15px;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-candidate-facts {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 22px;
    margin: 0;
}
.pi-dialog .pi-candidate-facts > div {
    display: -ms-flexbox;
    display: flex;
    gap: 6px;
}
.pi-dialog .pi-candidate-facts dt {
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-candidate-facts dd {
    margin: 0;
    color: #343a40;
}
.pi-dialog .pi-candidate-blocked {
    margin-top: 8px;
    font-size: 12px;
    color: #6c757d;
}
.pi-dialog .pi-new-patient {
    width: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 14px;
    padding: 16px 18px;
    border-style: dashed;
    color: #0a2540;
    text-align: left;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pi-dialog .pi-new-patient > i:first-child {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    background-color: #e7f0ff;
    color: #0035d2;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
}
.pi-dialog .pi-new-patient > span {
    -ms-flex: 1;
        flex: 1;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 2px;
}
.pi-dialog .pi-new-patient .pi-new-patient-go {
    color: #0035d2;
}
.pi-dialog .pi-new-patient:hover:not([disabled]), .pi-dialog .pi-new-patient:focus-visible {
    border-color: #0035d2;
    box-shadow: 0 4px 14px rgba(0, 53, 210, 0.08);
}
/* Step 2: merging */
.pi-dialog .pi-compare {
    width: 100%;
    border-collapse: collapse;
}
.pi-dialog .pi-compare th, .pi-dialog .pi-compare td {
    padding: 11px 16px;
    border-bottom: 1px solid #eef1f7;
    text-align: left;
    vertical-align: middle;
}
.pi-dialog .pi-compare thead th {
    background-color: #f2f6fb;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-compare tbody th {
    width: 20%;
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-compare tbody tr:last-child th, .pi-dialog .pi-compare tbody tr:last-child td {
    border-bottom: 0;
}
/* Taking the import: its value is what the record will hold, and the existing one is replaced */
.pi-dialog .pi-compare tr.is-taken td:nth-child(3) {
    background-color: #e7f0ff;
    color: #0a2540;
    font-weight: 600;
}
.pi-dialog .pi-compare tr.is-taken td:nth-child(2) span:not(.pi-muted) {
    color: #6c757d;
    text-decoration: line-through;
}
.pi-dialog .pi-compare .pi-compare-take {
    width: 110px;
    text-align: center;
}
.pi-dialog .pi-compare .pi-compare-take input {
    width: 16px;
    height: 16px;
    margin: 0;
    cursor: pointer;
}
.pi-dialog .pi-compare .pi-compare-take input[disabled] {
    cursor: default;
}
/* Step 2: registering - the dashboard's registration form, in a card instead of under its navy rule */
.pi-dialog .pi-form-card {
    padding: 8px 8px 0;
}
.pi-dialog .pi-form-card .operation-form {
    margin: 0;
    padding: 16px 12px 0;
    border-top: 0;
}
/* The footer: always in view, with the step's main action on the right. Ordered after the content, which
	/* Angular Material gives order: 1. */
.pi-dialog .pi-actions {
    -ms-flex-order: 2;
        order: 2;
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 14px 28px;
    background-color: #ffffff;
    border-top: 1px solid #e0e6ed;
}
.pi-dialog .pi-actions .btn {
    margin: 0;
}
.pi-dialog .pi-link {
    padding: 0;
    border: 0;
    background: none;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-link:hover, .pi-dialog .pi-link:focus-visible {
    color: #0035d2;
    text-decoration: underline;
}
.pi-dialog .pi-actions-message {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
    font-size: 12.5px;
    text-align: right;
}
.pi-dialog .pi-actions-error {
    color: #d9534f;
}
/* The review list */
.pi-dialog .pi-list {
    width: 100%;
    border-collapse: collapse;
}
.pi-dialog .pi-list th, .pi-dialog .pi-list td {
    padding: 12px 16px;
    border-bottom: 1px solid #eef1f7;
    text-align: left;
    vertical-align: middle;
}
.pi-dialog .pi-list thead th {
    background-color: #f2f6fb;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-list tbody tr:last-child td {
    border-bottom: 0;
}
.pi-dialog .pi-list .pi-list-name {
    font-weight: 600;
    color: #0a2540;
}
.pi-dialog .pi-list .pi-list-action {
    text-align: right;
    white-space: nowrap;
}
/* What holds the patient back, in the progress tab's colours: green for details to complete, which counts as
		/* a success, and soft red for duplicates and unfinished merges */
.pi-dialog .pi-list .pi-resolve {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border-radius: 20px;
    background-color: rgba(32, 201, 151, 0.1);
    color: #00796b;
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
}
.pi-dialog .pi-list .pi-resolve i {
    font-size: 11px;
    color: #20c997;
}
.pi-dialog .pi-list .pi-resolve.is-failed {
    background-color: #fbeceb;
    color: #a94442;
}
.pi-dialog .pi-list .pi-resolve.is-failed i {
    color: #e48784;
}
.pi-dialog .pi-list .pi-num {
    text-align: right;
    font-variant-numeric: tabular-nums;
}
/* The list and its progress, as tabs */
.pi-dialog .pi-tabs {
    display: -ms-flexbox;
    display: flex;
    gap: 4px;
    margin: 0 0 16px;
    border-bottom: 1px solid #e0e6ed;
}
.pi-dialog .pi-tab {
    margin-bottom: -1px;
    padding: 8px 14px;
    border: 0;
    border-bottom: 2px solid transparent;
    background: none;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-tab:hover, .pi-dialog .pi-tab:focus-visible {
    color: #0035d2;
}
.pi-dialog .pi-tab.is-current {
    border-bottom-color: #0035d2;
    color: #0035d2;
}
/* The progress tab */
.pi-dialog .pi-progress {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-progress > div {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-progress-heading {
    margin: 0 0 8px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: #6c757d;
}
.pi-dialog .pi-progress-hero {
    padding: 18px 20px;
}
.pi-dialog .pi-progress-headline {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 4px 12px;
}
.pi-dialog .pi-progress-percent {
    font-size: 34px;
    font-weight: 600;
    line-height: 1;
    color: #0a2540;
}
.pi-dialog .pi-progress-caption {
    color: #333333;
}
.pi-dialog .pi-progress-track {
    height: 8px;
    margin: 14px 0 16px;
    border-radius: 4px;
    background-color: #e7f0ff;
    overflow: hidden;
}
.pi-dialog .pi-progress-fill {
    height: 100%;
    border-radius: 4px;
    background-color: #20c997;
}
.pi-dialog .pi-progress-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[4];
        grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
}
.pi-dialog .pi-progress-facts dt {
    font-size: 12px;
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-progress-facts dd {
    margin: 2px 0 0;
    font-weight: 600;
    color: #0a2540;
}
/* The successes in a row above the failures, so the ticks line up across the dialog */
.pi-dialog .pi-progress-groups {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 16px;
}
.pi-dialog .pi-stat-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[4];
        grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}
/* Each outcome fills its cell, so a row's cards line up whether or not they open the list */
.pi-dialog .pi-stat-grid > div {
    display: -ms-flexbox;
    display: flex;
}
.pi-dialog .pi-stat {
    display: -ms-flexbox;
    display: flex;
    -ms-flex: 1;
        flex: 1;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 4px;
    padding: 12px 14px;
}
/* A count of patients still to review: opens them on the list */
.pi-dialog button.pi-stat {
    font: inherit;
    text-align: left;
    color: inherit;
    cursor: pointer;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pi-dialog button.pi-stat:hover, .pi-dialog button.pi-stat:focus-visible {
    border-color: #0035d2;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.pi-dialog button.pi-stat:hover .pi-stat-link i, .pi-dialog button.pi-stat:focus-visible .pi-stat-link i {
    transform: translateX(2px);
}
.pi-dialog .pi-stat-link {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    margin-top: auto;
    padding-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #0035d2;
}
.pi-dialog .pi-stat-link i {
    font-size: 10px;
    transition: transform 0.15s ease;
}
.pi-dialog .pi-stat-value {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 8px;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.1;
    color: #0a2540;
}
.pi-dialog .pi-stat-icon {
    font-size: 17px;
}
.pi-dialog .pi-stat-icon.is-ok {
    color: #20c997;
}
.pi-dialog .pi-stat-icon.is-failed {
    color: #e48784;
}
.pi-dialog .pi-stat-label {
    font-size: 12px;
    line-height: 1.3;
    color: #6c757d;
}
/* A callout with an action of its own, at its end */
.pi-dialog .pi-callout-text {
    -ms-flex: 1;
        flex: 1;
    min-width: 0;
}
.pi-dialog .pi-callout-action {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    -ms-flex-item-align: center;
        -ms-grid-row-align: center;
        align-self: center;
}
/* The list's filter: every patient to review, only those the import couldn't create, or one group of the rest */
.pi-dialog .pi-filters {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 14px;
}
.pi-dialog .pi-filter {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 6px;
    padding: 5px 14px;
    border: 1px solid #e0e6ed;
    border-radius: 20px;
    background-color: #ffffff;
    font-size: 12.5px;
    font-weight: 600;
    color: #6c757d;
}
.pi-dialog .pi-filter i {
    font-size: 11px;
}
.pi-dialog .pi-filter:hover, .pi-dialog .pi-filter:focus-visible {
    border-color: #0035d2;
    color: #0035d2;
}
.pi-dialog .pi-filter.is-current {
    border-color: #0035d2;
    background-color: #e7f0ff;
    color: #0035d2;
}
/* How many were not created, in the soft red the list gives them */
.pi-dialog .pi-filter-count {
    padding: 0 7px;
    border-radius: 10px;
    background-color: #fbeceb;
    color: #a94442;
    font-size: 11px;
    font-variant-numeric: tabular-nums;
}
/* A patient the import couldn't create: what the previous system held, beside their records */
.pi-dialog .pi-uc-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-panel {
    padding: 14px 16px;
}
.pi-dialog .pi-uc-panel .pi-progress-heading {
    margin-bottom: 10px;
}
.pi-dialog .pi-uc-panel p {
    margin: 0;
}
.pi-dialog .pi-uc-panel .pi-uc-sections {
    margin-top: 12px;
}
.pi-dialog .pi-uc-facts {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: max-content minmax(0, 1fr);
        grid-template-columns: max-content minmax(0, 1fr);
    gap: 6px 14px;
    margin: 0;
}
.pi-dialog .pi-uc-facts > div {
    display: contents;
}
.pi-dialog .pi-uc-facts dt {
    font-weight: normal;
    color: #6c757d;
}
.pi-dialog .pi-uc-facts dd {
    margin: 0;
    color: #0a2540;
    overflow-wrap: anywhere;
}
.pi-dialog .pi-uc-documents {
    margin: 0;
    padding: 0;
    list-style: none;
}
.pi-dialog .pi-uc-documents li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 10px;
    padding: 7px 0;
    border-bottom: 1px solid #eef1f7;
}
.pi-dialog .pi-uc-documents li:last-child {
    border-bottom: 0;
}
.pi-dialog .pi-uc-documents li > i {
    color: #0035d2;
}
.pi-dialog .pi-uc-documents li .pi-link, .pi-dialog .pi-uc-documents li .pi-muted {
    margin-left: auto;
}
.pi-dialog .pi-uc-documents li .pi-link {
    color: #0035d2;
}
.pi-dialog .pi-uc-documents-note {
    margin: 8px 0 0;
    font-size: 12.5px;
}
/* A record, read in the PDF viewer in place of the patient's details */
.pi-dialog .pi-uc-viewer-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 8px 16px;
    margin-bottom: 12px;
}
.pi-dialog .pi-uc-viewer-head .pi-title {
    margin: 0;
}
.pi-dialog .pi-uc-viewer-nav {
    display: -ms-flexbox;
    display: flex;
    gap: 8px;
}
.pi-dialog .pi-uc-viewer-nav .btn {
    margin: 0;
}
.pi-dialog .pi-uc-viewer-nav i {
    font-size: 11px;
}
/* The pages scroll inside the viewer, sized so the dialog itself never has to: the window's height less the
	   dialog's title, the patient above, the record's heading and the viewer's toolbar, and the actions below */
.pi-dialog .pi-uc-viewer .pdf-scroll-viewer-scroll {
    height: calc(90vh - 360px);
    min-height: 240px;
    max-height: none;
    border-radius: 10px;
}
.pi-dialog .pi-uc-document-date {
    color: #0a2540;
}
/* The patient chosen for the records, on its own above what adding them means */
.pi-dialog .pi-uc-target {
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-options {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 10px;
}
.pi-dialog .pi-uc-search {
    display: -ms-flexbox;
    display: flex;
    gap: 10px;
    margin-bottom: 16px;
}
.pi-dialog .pi-uc-search .form-control {
    -ms-flex: 1;
        flex: 1;
}
/* A narrow window: the outcomes and the facts go two to a row, and the not-created patient's panels stack */
@media (max-width: 760px) {
    .pi-dialog .pi-stat-grid, .pi-dialog .pi-progress-facts {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .pi-dialog .pi-uc-grid {
        -ms-grid-columns: minmax(0, 1fr);
            grid-template-columns: minmax(0, 1fr);
    }
}
.modern-login-page {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	min-height: 100vh;
	width: 100%;
	font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: 16px;
	color: #ffffff;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	--page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	--page-bg-position: center;
	background-image: linear-gradient(rgba(10, 37, 64, 0.95), rgba(10, 37, 64, 0.85)), var(--page-bg-image);
	background-position: var(--page-bg-position);
	background-repeat: no-repeat;
	background-size: cover;
}
.modern-login-page main.hero-section {
    background: none;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: 1.2fr 1fr;
        grid-template-columns: 1.2fr 1fr;
    -ms-flex-align: center;
        align-items: center;
    gap: 4rem;
    padding: 5rem 5%;
    -ms-flex-positive: 1;
        flex-grow: 1;
    max-width: 1400px;
    margin: 0 auto;
}
@media (max-width: 992px) {
    .modern-login-page main.hero-section {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
        text-align: center;
        padding: 3rem 5%;
        gap: 2.5rem;
    }
}
.hero-content {
	padding-right: 2rem;
	color: #ffffff;
}
@media (max-width: 992px) {
    .hero-content {
        padding-right: 0;
        margin-bottom: 0;
        text-align: center;/* This centers the content on mobile */
    }
}
.main-logo {
	max-width: 280px;
	margin-bottom: 2.5rem;
	filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.3));
}
@media (max-width: 992px) {
    .main-logo {
        margin-left: auto;
        margin-right: auto;
    }
}
.hero-title {
	font-size: 3.2rem;
	font-weight: 700;
	line-height: 1.15;
	margin-bottom: 1.25rem;
	color: #ffffff;
	letter-spacing: -0.03em;
}
@media (max-width: 992px) {
    .hero-title {
        font-size: 2.5rem;
    }
}
@media (max-width: 576px) {
    .hero-title {
        font-size: 2rem;
    }
}
.hero-subtitle {
	font-size: 1.15rem;
	font-weight: 300;
	margin-bottom: 3rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.6;
}
@media (max-width: 992px) {
    .hero-subtitle {
        font-size: 1rem;
    }
}
.benefits-list {
	list-style: none;
	padding: 0;
	margin: 0;

}
@media (max-width: 992px) {
    .benefits-list {/* This allows the <ul> to be centered by its parent's text-align:center */
        display: inline-block;
    }
}
.benefits-list li {
    font-size: 1.05rem;
    font-weight: 400;
    margin-bottom: 1.2rem;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    color: #ffffff;
    text-align: left;/* Fixes list item text alignment */
}
.benefits-list .checkmark {
    color: #00bcd4;
    font-size: 1.4rem;
    margin-right: 1rem;
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.privacy-link {
	margin-top: 2rem;
	font-size: 0.9rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.75);
}
.privacy-link a {
    color: #00bcd4;
    font-weight: 500;
    text-decoration: none;
    transition: color 0.3s ease;
}
.privacy-link a:hover {
    text-decoration: underline;
    color: #008c9e;
}
.proof-section {
	background-color: rgba(255, 255, 255, 0.05);
	padding: 3.5rem 5%;
	text-align: center;
	border-top: 1px solid rgba(255, 255, 255, 0.1);
	color: #ffffff;
	font-size: 0.95rem;
}
.proof-title {
	font-size: 2.2rem;
	font-weight: 700;
	margin-bottom: 3rem;
	color: #ffffff;
}
@media (max-width: 992px) {
    .proof-title {
        font-size: 1.8rem;
    }
}
.testimonials-horizontal {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (minmax(300px, 1fr))[auto-fit];
	    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
	gap: 2.5rem;
	max-width: 1200px;
	margin: 0 auto;
}
@media (max-width: 992px) {
    .testimonials-horizontal {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.testimonial-card-horizontal {
	background: rgba(255, 255, 255, 0.1);
	padding: 2.5rem;
	border-radius: 12px;
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	-ms-flex-align: center;
	    align-items: center;
	text-align: center;
	border: 1px solid rgba(255, 255, 255, 0.15);

}
.testimonial-card-horizontal .quote {
    font-size: 1.05rem;
    line-height: 1.7;
    margin-bottom: 1.5rem;
    color: rgba(255, 255, 255, 0.9);
    font-style: italic;
}
.testimonial-card-horizontal cite {
    font-size: 1rem;
    font-weight: 500;
    color: #00bcd4;
    display: block;
    margin-top: auto;
}
.testimonial-avatar {
	width: 90px;
	height: 90px;
	border-radius: 50%;
	-o-object-fit: cover;
	   object-fit: cover;
	margin-bottom: 1.5rem;
	border: 3px solid #00bcd4;
	box-shadow: 0 0 0 5px rgba(0, 188, 212, 0.2);
}
.page-footer {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: 1fr auto 1fr;
	    grid-template-columns: 1fr auto 1fr;
	-ms-flex-align: center;
	    align-items: center;
	padding: 1.5rem 5%;
	width: 100%;
	box-sizing: border-box;
}
@media (max-width: 992px) {
    .page-footer {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-direction: column-reverse;
            flex-direction: column-reverse;
        gap: 1.5rem;
        padding: 2rem 5%;
    }
}
.page-footer .copyright {
    -ms-grid-column: 2;
        grid-column: 2;
    text-align: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: 0.95rem;
}
.page-footer .pentest-badge {
    -ms-grid-column: 2;
        grid-column: 2;
    justify-self: end;
}
.page-footer .pentest-badge img {
    max-width: 300px;
    height: auto;
}
.value-prop-section {
	padding: 6.5rem 5%;
}
@media (max-width: 992px) {
    .value-prop-section {
        padding: 3rem 5%;
    }
}
.value-prop-container {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (1fr)[3];
	    grid-template-columns: repeat(3, 1fr);
	gap: 2.5rem;
	max-width: 1200px;
	margin: 0 auto;
	text-align: center;
}
@media (max-width: 992px) {
    .value-prop-container {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
        gap: 2rem;
    }
}
.value-prop-card {
	background: rgba(255, 255, 255, 0.05);
	padding: 2.5rem 2rem;
	border-radius: 16px;
	border: 1px solid rgba(255, 255, 255, 0.15);
	transition: all 0.3s ease;
	-webkit-backdrop-filter: blur(5px);
	        backdrop-filter: blur(5px);
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
}
.value-prop-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.value-prop-card:hover .title-referral {
    color: #00bcd4;
}
.value-prop-card:hover .icon-management, .value-prop-card:hover .title-management {
    border-color: rgba(32, 201, 151, 0.5);
    color: #20c997;
}
.value-prop-card:hover .icon-management {
    background: rgba(32, 201, 151, 0.2);
}
.value-prop-card:hover .icon-tech, .value-prop-card:hover .title-tech {
    border-color: rgba(255, 182, 39, 0.5);
    color: #FFB627;
}
.value-prop-card:hover .icon-tech {
    background: rgba(255, 182, 39, 0.2);
}
.value-prop-card:hover .value-prop-icon-wrapper {
    transform: scale(1.1) rotate(5deg);
}
.value-prop-icon-wrapper {
	width: 80px;
	height: 80px;
	margin: 0 auto 1.5rem auto;
	border-radius: 50%;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	transition: all 0.3s ease;
}
.value-prop-icon {
	font-size: 2.5rem;
	line-height: 1;
}
.icon-referral {
	background: rgba(0, 188, 212, 0.1);

}
.icon-referral .value-prop-icon {
    color: #00bcd4;
}
.title-referral, .icon-referral .value-prop-icon {
	color: #00bcd4;
}
.icon-management {
	background: rgba(32, 201, 151, 0.1);

}
.icon-management .value-prop-icon {
    color: #20c997;
}
.title-management, .icon-management .value-prop-icon {
	color: #20c997;
}
.icon-tech {
	background: rgba(255, 182, 39, 0.1);

}
.icon-tech .value-prop-icon {
    color: #FFB627;
}
.title-tech, .icon-tech .value-prop-icon {
	color: #FFB627;
}
.value-prop-title {
	font-size: 1.3rem;
	font-weight: 600;
	margin: 0 0 1rem 0;
	transition: color 0.3s ease;
}
.value-prop-text {
	font-size: 1rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.7;
	margin: 0;
	-ms-flex-positive: 1;
	    flex-grow: 1;
}
.btn-see-more {
	display: inline-block;
	-ms-flex-item-align: center;
	    -ms-grid-row-align: center;
	    align-self: center;
	margin-top: auto;
	padding: 0.75rem 1.5rem;
	border: 2px solid rgba(255, 255, 255, 0.6);
	border-radius: 50px;
	background-color: transparent;
	color: #ffffff;
	font-weight: 500;
	text-transform: uppercase;
	font-size: 0.8rem;
	letter-spacing: 0.05em;
	text-decoration: none;
	text-align: center;
	transition: all 0.3s ease;
	cursor: pointer;

}
.btn-see-more:hover {
    background-color: rgba(255, 255, 255, 0.1);
    border-color: #00bcd4;
    transform: translateY(-2px);
}
.features-overview {
	padding-top: 2rem;
	padding-bottom: 4rem;

}
.features-overview .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(320px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 2rem;
}
.feature-category-section {
	max-width: 1400px;
	margin: 0 auto 4rem auto;
	padding: 0 1rem;
}
.category-header {
	text-align: center;
	margin-bottom: 3rem;

}
.category-header h2 {
    font-size: 2.5rem;
    font-weight: 700;
    margin: 0 0 0.75rem 0;
}
.category-header p {
    font-size: 1.15rem;
    max-width: 750px;
    margin: 0 auto;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
}
.category-header.optometry h2 {
    color: #00bcd4;
}
.category-header.ophthalmology h2 {
    color: #20c997;
}
.category-header.management h2 {
    color: #FFB627;
}
.category-header.hospitals h2 {
    color: #a29bfe;
}
.category-icon {
	display: inline-block;
	font-size: 2.5rem;
	width: 80px;
	height: 80px;
	line-height: 80px;
	border-radius: 50%;
	margin-bottom: 1.5rem;
	padding-top: 2rem;
	background: rgba(255, 255, 255, 0.1);
	transition: all 0.3s ease;
}
.category-icon.optometry {
    color: #00bcd4;
    border: 2px solid rgba(0, 188, 212, 0.3);
}
.category-icon.ophthalmology {
    color: #20c997;
    border: 2px solid rgba(32, 201, 151, 0.3);
}
.category-icon.management {
    color: #FFB627;
    border: 2px solid rgba(255, 182, 39, 0.3);
}
.category-icon.hospitals {
    color: #a29bfe;
    border: 2px solid rgba(162, 155, 254, 0.3);
}
.features-grid {
	display: -ms-grid;
	display: grid;
	-ms-grid-columns: (1fr)[3];
	    grid-template-columns: repeat(3, 1fr);
	gap: 2rem;
}
@media (max-width: 992px) {
    .features-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.feature-card {
	text-align: center;
	padding: 2.5rem 2rem;
	background: rgba(255, 255, 255, 0.05);
	border: 1px solid rgba(255, 255, 255, 0.15);
	border-radius: 12px;
	transition: transform 0.3s ease, background-color 0.3s ease;

}
.feature-card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, 0.1);
}
.feature-icon {
	font-size: 2.8rem;
	margin-bottom: 1.5rem;
	color: #00bcd4;
}
.feature-title {
	font-size: 1.3rem;
	font-weight: 600;
	margin: 0 0 0.75rem 0;
	color: #ffffff;
}
.feature-description {
	font-size: 1rem;
	color: rgba(255, 255, 255, 0.85);
	line-height: 1.7;
	margin: 0;
}
.final-cta-section {
	text-align: center;
	padding: 4rem 5%;
	background-color: rgba(0, 0, 0, 0.2);

}
.final-cta-section .btn-nav-demo {
    font-size: 1.2rem;
    padding: 1rem 2.5rem;
}
.features-disclaimer {
	text-align: center;
	padding: 2rem 5% 1rem 5%;
	max-width: 800px;
	margin: 0 auto;
	font-size: 0.9rem;
	color: rgba(255, 255, 255, 0.6);
	line-height: 1.6;
}
@media (max-width: 992px) {
    .section-title {
        font-size: 2rem;
    }
}
.full-screen-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #ffffff;
    z-index: 99999;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    -ms-flex-align: center;
        align-items: center;
}
.modern-login-page .login-card {
    background: #ffffff;
    color: #333333;
    padding: 3rem;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
    width: 100%;
    max-width: 450px;
    position: relative;
}
@media (max-width: 992px) {
    .modern-login-page .login-card {
        padding: 2.5rem;
    }
}
@media (max-width: 576px) {
    .modern-login-page .login-card {
        padding: 2rem 1.5rem;
    }
}
.modern-login-page .processing-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(4px);
    border-radius: 12px;
    -webkit-backdrop-filter: blur(4px);
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    z-index: 10;
    color: #0a2540;
    gap: 1rem;
    font-weight: 500;
    font-size: 1rem;
}
.modern-login-page .spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(10, 37, 64, 0.2);
    border-top-color: #00bcd4;
    border-radius: 50%;
    animation: spinner-rotation 0.8s linear infinite;
}
.modern-login-page .login-panel .btn:focus-visible, .modern-login-page .login-panel a:focus-visible {
    outline: 2px solid #00bcd4;
    outline-offset: 2px;
    box-shadow: none;
}
@media (max-width: 992px) {
    .modern-login-page .login-panel {
        padding: 2rem;
    }
}
.modern-login-page .text-danger {
    color: #d9534f;
    font-weight: 500;
}
.modern-login-page .text-success {
    color: #5cb85c;
    font-weight: 500;
}
.modern-login-page .text-center {
    text-align: center;
}
.modern-login-page .login-panel-text {
    font-size: 1rem;
    color: #6c757d;
    text-align: center;
    line-height: 1.6;
    margin: 0 auto 1.5rem auto;
    max-width: 90%;
}
.modern-login-page .verify-input-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.75rem;
    margin: 2rem auto;
}
.modern-login-page .verify-input-container input {
    width: 45px;
    height: 55px;
    font-size: 1.8rem;
    text-align: center;
    padding: 0.5rem;
    font-weight: 600;
    color: #0a2540;
}
.modern-login-page .form-actions-centered {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    margin-top: 1.8rem;
    gap: 1rem;
}
.modern-login-page .form-group {
    margin-bottom: 1.5rem;
}
.modern-login-page .form-group label {
    display: block;
    font-size: 0.95rem;
    font-weight: 500;
    margin-bottom: 0.6rem;
    color: #333333;
}
.modern-login-page .form-control {
    width: 100%;
    padding: 1rem 1.2rem;
    font-size: 1rem;
    border: 1px solid #e0e6ed;
    border-radius: 8px;
    box-sizing: border-box;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    color: #333333;
    background-color: #ffffff;
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.modern-login-page .form-control:focus {
    outline: none;
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.modern-login-page .form-actions {
    display: -ms-flexbox;
    display: flex;
    gap: 1rem;
    margin-top: 1.8rem;
}
.modern-login-page .btn {
    width: 100%;
    max-width: none;
    padding: 1rem 1.5rem;
    font-size: 1rem;
    font-weight: 700;
    border: none;
    border-radius: 8px;
    cursor: pointer;
    transition: all 0.3s ease;
    letter-spacing: 0.02em;
}
@media (max-width: 576px) {
    .modern-login-page .btn {
        padding: 0.8rem 1rem;
        font-size: 0.95rem;
    }
}
.modern-login-page .btn-login {
    background-color: #00bcd4;
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.modern-login-page .btn-login:hover {
    background-color: #008c9e;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.modern-login-page .btn-lost {
    background-color: transparent;
    color: #0a2540;
    font-weight: 600;
    border: 1px solid #c0cde0;
    box-shadow: none;
    opacity: 0.9;
}
.modern-login-page .btn-lost:hover {
    background-color: rgba(10, 37, 64, 0.05);
    border-color: #0a2540;
    color: #0a2540;
    transform: translateY(-2px);
    opacity: 1;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
}
.modern-login-page .dev-warning {
    background-color: rgba(255, 243, 205, 0.9);
    border: 1px solid rgba(255, 193, 7, 0.7);
    border-radius: 8px;
    padding: 1rem;
    margin-bottom: 1.5rem;
    color: #856404;
    font-size: 0.9rem;
    text-align: center;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
@media (max-width: 576px) {
    .modern-login-page .login-title {
        font-size: 1.6rem;
    }
}
@keyframes spinner-rotation {
	to {
		transform: rotate(360deg);
	}
}
.about-page {
    /* Override the variable for this specific page */
    --page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
    --page-bg-position: center;
}
.modern-login-page .about-section {
    padding: 4rem 5%;
}
.modern-login-page .about-container {
    max-width: 900px;
    margin: 0 auto;
    color: rgba(255, 255, 255, 0.9);
}
.modern-login-page .about-container p {
    font-size: 1.15rem;
    line-height: 1.8;
    margin-bottom: 2rem;
    font-weight: 300;
}
.modern-login-page .about-container .section-title {
    text-align: left;
    font-size: 2.2rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    color: #ffffff;
}
.modern-login-page .about-container .subsection-title {
    font-size: 1.8rem;
    font-weight: 600;
    color: #ffffff;
    margin-top: 4rem;
    margin-bottom: 1.5rem;
}
.modern-login-page .about-container ul {
    list-style: none;
    padding: 0;
    margin-top: 1.5rem;
}
.modern-login-page .about-container li {
    position: relative;
    margin-bottom: 1.25rem;
    font-size: 1.15rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.85);
    padding-left: 2.5rem;
}
.modern-login-page .about-container li i {
    position: absolute;
    left: 0;
    top: 4px;
    color: #00bcd4;
    font-size: 1.1rem;
}
.modern-login-page .about-container li strong {
    color: #ffffff;
    font-weight: 600;
}
.modern-login-page .impact-section {
    background: rgba(0, 0, 0, 0.3);
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    padding: 4rem 5%;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.modern-login-page .impact-container {
    max-width: 1200px;
    margin: 0 auto;
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (0.5fr)[3];
        grid-template-columns: repeat(3, 0.5fr);
    gap: 0rem;
    text-align: center;
}
.modern-login-page .impact-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-pack: center;
        justify-content: center;
    transition: transform 0.3s ease;
}
.modern-login-page .impact-card:hover {
    transform: translateY(-5px);
}
.modern-login-page .impact-number {
    font-size: 3.5rem;
    font-weight: 700;
    color: #00bcd4;
    line-height: 1.2;
    margin-bottom: 0.5rem;
    text-shadow: 0 0 20px rgba(0, 188, 212, 0.2);
}
.modern-login-page .impact-label {
    color: rgba(255, 255, 255, 0.8);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 0.9rem;
    font-weight: 700;
}
.modern-login-page .client-logos-section {
    padding: 3rem 0;
    background: #ffffff;
}
.modern-login-page .client-logos-marquee {
    position: relative;
    overflow: hidden;
    width: 100%;
    mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}
.modern-login-page .client-logos-track {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 4rem;
    width: -webkit-max-content;
    width: -moz-max-content;
    width: max-content;
    animation: client-logos-scroll 40s linear infinite;
    will-change: transform;
}
.modern-login-page .client-logos-track:hover {
    animation-play-state: paused;
}
.modern-login-page .client-logo {
    display: -ms-inline-flexbox;
    display: inline-flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    height: 70px;
    min-width: 150px;
    opacity: 0.6;
    transition: all 0.3s ease;
}
.modern-login-page .client-logo:hover {
    opacity: 1;
    transform: scale(1.05);
}
.modern-login-page .client-logo img {
    max-height: 60px;
    max-width: 180px;
    -o-object-fit: contain;
       object-fit: contain;
}
@keyframes client-logos-scroll {
    from {
        transform: translateX(0);
    }
    to {
        transform: translateX(-50%);
    }
}
@media (max-width: 768px) {
    .modern-login-page .about-section, .modern-login-page .impact-section {
        padding-left: 1.5rem;
        padding-right: 1.5rem;
    }
    .modern-login-page .impact-container {
        -ms-grid-columns: 1fr 1fr;
            grid-template-columns: 1fr 1fr;
        gap: 2rem;
    }
    .modern-login-page .impact-number {
        font-size: 2.5rem;
    }
    .modern-login-page .client-logos-track {
        gap: 2rem;
    }
}
.pricing-page {
	--page-bg-image: url('https://cattrax-media.s3.ap-southeast-2.amazonaws.com/images/surgeon_image_cropped2.jpg');
	--page-bg-position: center 110%;
}
.modern-login-page .pricing-section {
    padding: 3rem 5%;
}
.modern-login-page .pricing-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[5];
        grid-template-columns: repeat(5, 1fr);
    gap: 2rem;
    max-width: 1600px;
    margin: 0 auto;
    -ms-flex-align: stretch;
        align-items: stretch;
}
@media (min-width: 1201px) {
    .modern-login-page .pricing-grid {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-pack: justify;
            justify-content: space-between;
        gap: 0;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: calc((100% - 14rem) / 5);
        margin-right: 2.5rem;
    }
    .modern-login-page .pricing-grid .pricing-card:last-child {
        margin-right: 0;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2) {
        position: relative;
        margin-right: 4.8rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2)::after {
        content: '';
        position: absolute;
        top: 15%;
        bottom: 15%;
        right: -2.7rem;
        width: 2px;
        background-color: rgba(255, 255, 255, 0.2);
        border-radius: 1px;
        transition: transform 0.3s ease;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2):hover::after {
        transform: translateY(10px);
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(3) {
        margin-right: 0;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(4) {
        position: relative;
        margin-left: 2.8rem;
        margin-right: 5.4rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(4)::after {
        content: '';
        position: absolute;
        top: 15%;
        bottom: 15%;
        right: -2.5rem;
        width: 2px;
        background-color: rgba(255, 255, 255, 0.2);
        border-radius: 1px;
    }
}
@media (max-width: 1400px) {
    .modern-login-page .pricing-grid {
        display: -ms-flexbox;
        display: flex;
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
        -ms-flex-pack: center;
            justify-content: center;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: 45%;
        margin: 1rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2), .modern-login-page .pricing-grid .pricing-card:nth-child(3), .modern-login-page .pricing-grid .pricing-card:nth-child(4) {
        margin-right: 1rem;
        margin-left: 1rem;
    }
    .modern-login-page .pricing-grid .pricing-card:nth-child(2)::after, .modern-login-page .pricing-grid .pricing-card:nth-child(3)::after, .modern-login-page .pricing-grid .pricing-card:nth-child(4)::after {
        display: none;
    }
}
@media (max-width: 768px) {
    .modern-login-page .pricing-grid {
        display: -ms-grid;
        display: grid;
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
    .modern-login-page .pricing-grid .pricing-card {
        width: 100%;
        margin: 0;
    }
}
.modern-login-page .pricing-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: rgba(255, 255, 255, 0.05);
    padding: 2.5rem 2rem;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    transition: all 0.3s ease;
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    text-align: left;
    position: relative;
}
.modern-login-page .pricing-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.modern-login-page .pricing-card.popular {
    border-color: #00bcd4;
    border-width: 2px;
    transform: scale(1.05);
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
.modern-login-page .pricing-card.popular::before {
    content: 'Most Popular';
    position: absolute;
    top: 18px;
    right: -35px;
    background-color: #00bcd4;
    color: #ffffff;
    padding: 0.5rem 3rem;
    font-size: 0.85rem;
    font-weight: 700;
    text-align: center;
    transform: rotate(45deg);
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
@media (max-width: 1200px) {
    .modern-login-page .pricing-card.popular {
        transform: scale(1);
    }
}
.modern-login-page .pricing-card.recommended {
    border-color: #00bcd4;
    border-width: 2px;
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
.modern-login-page .pricing-card .btn {
    margin-top: auto;
}
.modern-login-page .pricing-roi {
    text-align: center;
    font-size: 0.95rem;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.9);
    background: rgba(0, 188, 212, 0.1);
    padding: 0.8rem 1rem;
    border-radius: 8px;
    margin-bottom: 2.5rem;
}
.modern-login-page .pricing-title {
    font-size: 1.5rem;
    font-weight: 600;
    color: #ffffff;
    margin: 0 0 1rem 0;
}
.modern-login-page .pricing-price {
    font-size: 2.8rem;
    font-weight: 700;
    color: #00bcd4;
    margin-bottom: 0.75rem;
}
.modern-login-page .pricing-price .price-period {
    font-size: 1rem;
    font-weight: 400;
    color: rgba(255, 255, 255, 0.7);
}
.modern-login-page .pricing-description {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    margin-bottom: 2rem;
}
.modern-login-page .features-list {
    list-style: none;
    padding: 0;
    margin: 0 0 2rem 0;
    -ms-flex-positive: 1;
        flex-grow: 1;
}
.modern-login-page .features-list li {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.9);
}
.modern-login-page .features-list li.disabled {
    color: rgba(255, 255, 255, 0.5);
    text-decoration: line-through;
}
.modern-login-page .features-list .fa-check-circle {
    color: #20c997;
    font-size: 1.2rem;
}
.modern-login-page .features-list .fa-times-circle {
    color: rgba(255, 255, 255, 0.4);
    font-size: 1.2rem;
}
.modern-login-page .btn-secondary {
    background-color: transparent;
    color: #ffffff;
    border: 1px solid #00bcd4;
}
.modern-login-page .btn-secondary:hover {
    background-color: #00bcd4;
    color: #ffffff;
}
/* Add-ons: extras bought on top of a plan rather than instead of one, so they sit below the
	   plan grid in a narrower three-across row of their own. */
.modern-login-page .addon-section {
    padding: 1rem 5% 4rem 5%;
    max-width: 1600px;
    margin: 0 auto;
}
@media (max-width: 576px) {
    .modern-login-page .addon-section {
        padding: 1rem 5% 3rem 5%;
    }
}
.modern-login-page .addon-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
    margin-bottom: 3rem;
}
.modern-login-page .addon-header {
    text-align: center;
    margin-bottom: 3rem;
}
.modern-login-page .addon-header h2 {
    font-size: 2.5rem;
    font-weight: 700;
    color: #ffffff;
    margin: 0 0 1rem 0;
}
.modern-login-page .addon-header p {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}
/* Narrower than the section it sits in: three cards stretched across the full 1600px would each
	   end up wider than a plan card above them. At 1200 they land close to one. */
.modern-login-page .addon-group {
    max-width: 1200px;
    margin: 0 auto 4rem auto;
}
.modern-login-page .addon-group:last-child {
    margin-bottom: 0;
}
/* One group per add-on. There is only transcription today, but the spacing is set up so a
	   second group can be dropped in below without touching anything else. */
.modern-login-page .addon-group-header {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 1.25rem;
    margin-bottom: 2rem;
}
.modern-login-page .addon-group-header .addon-group-icon {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 12px;
    background: rgba(0, 188, 212, 0.1);
    border: 1px solid rgba(0, 188, 212, 0.3);
    color: #00bcd4;
    font-size: 1.5rem;
}
.modern-login-page .addon-group-header h3 {
    font-size: 1.3rem;
    font-weight: 600;
    color: #ffffff;
    margin: 0 0 0.5rem 0;
}
.modern-login-page .addon-group-header p {
    font-size: 0.95rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
    max-width: 900px;
    margin: 0;
}
@media (max-width: 576px) {
    .modern-login-page .addon-group-header {
        -ms-flex-direction: column;
            flex-direction: column;
        gap: 1rem;
    }
}
.modern-login-page .addon-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[3];
        grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 2rem;
    -ms-flex-align: stretch;
        align-items: stretch;
}
/* Two across before one: three cards at tablet width leave no room for the feature lists. */
@media (max-width: 1200px) {
    .modern-login-page .addon-grid {
        -ms-grid-columns: (minmax(0, 1fr))[2];
            grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.5rem;
    }
}
@media (max-width: 768px) {
    .modern-login-page .addon-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.modern-login-page .addon-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    background: rgba(255, 255, 255, 0.05);
    padding: 2rem;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    transition: all 0.3s ease;
    -webkit-backdrop-filter: blur(5px);
            backdrop-filter: blur(5px);
    text-align: left;
    position: relative;
}
.modern-login-page .addon-card:hover {
    transform: translateY(-10px);
    background: rgba(255, 255, 255, 0.1);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
    border-color: rgba(0, 188, 212, 0.5);
}
.modern-login-page .addon-card.recommended {
    border-color: #00bcd4;
    border-width: 2px;
    box-shadow: 0 10px 40px rgba(0, 188, 212, 0.2);
}
/* Dialled back from the plan cards above: an add-on must not out-shout the plan it
		   attaches to. */
.modern-login-page .addon-card .pricing-title {
    font-size: 1.35rem;
    margin-bottom: 0.75rem;
}
.modern-login-page .addon-card .pricing-price {
    font-size: 2.4rem;
}
.modern-login-page .addon-card .pricing-description {
    margin-bottom: 1.5rem;
}
.modern-login-page .addon-card .features-list {
    margin-bottom: 1.5rem;
}
.modern-login-page .addon-card .btn {
    margin-top: auto;
    width: 100%;
}
/* The trial is not a paid tier, so it is marked out rather than left to read as a third
	   price point. */
.modern-login-page .addon-card.trial {
    border-color: rgba(32, 201, 151, 0.4);
    background: rgba(32, 201, 151, 0.08);
}
.modern-login-page .addon-card.trial:hover {
    border-color: rgba(32, 201, 151, 0.7);
}
.modern-login-page .addon-card.trial .pricing-price {
    color: #20c997;
}
/* Sits above the trial card's own button, which holds the bottom slot so all three cards
	   line up along the bottom. */
.modern-login-page .addon-cta-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    gap: 0.6rem;
    margin-top: auto;
    margin-bottom: 1.5rem;
    padding: 0.9rem 1rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.15);
    font-size: 0.85rem;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.85);
}
.modern-login-page .addon-cta-note i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 0.2rem;
    color: #20c997;
}
.modern-login-page .addon-badge {
    position: absolute;
    top: -0.75rem;
    right: 1.5rem;
    background-color: #00bcd4;
    color: #ffffff;
    padding: 0.3rem 1rem;
    border-radius: 8px;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.modern-login-page .addon-badge.free {
    background-color: #20c997;
}
.features-page {
	--page-bg-image: url('https://images.unsplash.com/photo-1522071820081-009f0129c71c?q=80&w=2070&auto=format&fit=crop');
	--page-bg-position: center 80%;
}
.modern-login-page .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (1fr)[3];
        grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}
@media (max-width: 992px) {
    .modern-login-page .features-grid {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
.modern-login-page .features-overview .features-grid {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(320px, 1fr))[auto-fit];
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 2rem;
}
.modern-login-page .feature-card {
    position: relative;
    overflow: hidden;
    text-align: center;
    padding: 2.5rem 2rem;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 12px;
    transition: transform 0.3s ease, background-color 0.3s ease;
}
.modern-login-page .feature-card:hover {
    transform: translateY(-8px);
    background: rgba(255, 255, 255, 0.1);
}
.modern-login-page .feature-icon {
    font-size: 2.8rem;
    margin-bottom: 1.5rem;
    color: #00bcd4;
}
.modern-login-page .feature-title {
    font-size: 1.3rem;
    font-weight: 600;
    margin: 0 0 0.75rem 0;
    color: #ffffff;
}
.modern-login-page .feature-description {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.7;
    margin: 0;
}
.modern-login-page .final-cta-section {
    text-align: center;
    padding: 4rem 5%;
    background-color: rgba(0, 0, 0, 0.2);
}
.modern-login-page .features-disclaimer {
    text-align: center;
    padding: 2rem 5% 1rem 5%;
    max-width: 800px;
    margin: 0 auto;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.6);
    line-height: 1.6;
}
@media (max-width: 992px) {
    .modern-login-page .section-title {
        font-size: 2rem;
    }
}
.coming-soon-banner {
	position: absolute;
	top: 18px;
	right: -35px;
	background-color: #ffab00;
	color: #000;
	padding: 6px 35px;
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	transform: rotate(45deg);
	box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
	letter-spacing: 0.5px;
	z-index: 10;
}
.modern-login-page .demo-hero {
    padding: 4rem 5% 3rem 5%;
    text-align: center;
}
.modern-login-page .demo-hero .hero-title {
    margin-bottom: 1.5rem;
}
.modern-login-page .demo-hero .hero-subtitle {
    max-width: 800px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 0;
}
@media (max-width: 576px) {
    .modern-login-page .demo-hero {
        padding: 3rem 5% 2rem 5%;
    }
}
.modern-login-page .demo-section {
    padding: 3rem 5%;
}
@media (max-width: 576px) {
    .modern-login-page .demo-section {
        padding: 2.5rem 5%;
    }
}
.modern-login-page .demo-container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 1rem;
}
.modern-login-page .video-wrapper {
    position: relative;
    padding-bottom: 56.25%;
    height: 0;
    overflow: hidden;
    border-radius: 16px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
    background-color: #000;
}
.modern-login-page .video-wrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.modern-login-page .section-title {
    font-size: 2.5rem;
    font-weight: 700;
    text-align: center;
    margin-bottom: 1rem;
    color: #ffffff;
}
.modern-login-page .section-subtitle {
    font-size: 1.15rem;
    font-weight: 300;
    text-align: center;
    max-width: 750px;
    margin: 0 auto 3.5rem auto;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.6;
}
.modern-login-page .form-container {
    max-width: 650px;
    margin: 0 auto;
    background-color: #ffffff;
    color: #333333;
    padding: 3rem;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
}
@media (max-width: 576px) {
    .modern-login-page .form-container {
        padding: 2rem 1.5rem;
    }
}
.modern-login-page .btn-primary {
    background-color: #00bcd4;
    color: #ffffff;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.modern-login-page .btn-primary:hover {
    background-color: #008c9e;
    transform: translateY(-3px);
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.modern-login-page .btn-primary:disabled {
    background-color: #a0a0a0;
    cursor: not-allowed;
    box-shadow: none;
    transform: none;
}
.modern-login-page .success-message {
    max-width: 650px;
    margin: 0 auto;
    padding: 2.5rem;
    text-align: center;
    background: rgba(32, 201, 151, 0.1);
    border: 1px solid rgba(32, 201, 151, 0.7);
    color: #ffffff;
    border-radius: 12px;
}
.modern-login-page .success-message h4 {
    font-size: 1.8rem;
    font-weight: 700;
    color: #20c997;
    margin: 0 0 1rem 0;
}
.modern-login-page .success-message p {
    font-size: 1.1rem;
    margin: 0;
    line-height: 1.6;
    color: rgba(255, 255, 255, 0.9);
}
.modern-modal-backdrop {
	background: rgba(10, 37, 64, 0.65);
	backdrop-filter: blur(10px);
	-webkit-backdrop-filter: blur(10px);
}
.modern-modal-window {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 1050;
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: center;
	    align-items: center;
	-ms-flex-pack: center;
	    justify-content: center;
	pointer-events: none;

}
.modern-modal-window .modal-content {
    margin: 0;
    background-color: #ffffff;
    color: #333333;
    border-radius: 16px;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4);
    border: none;
    overflow: hidden;
    max-width: 500px;
    width: 90%;
    pointer-events: auto;
    transform: translateY(-20px);
    opacity: 0;
    animation: modalFadeIn 0.3s ease-out forwards;
}
@media (max-width: 576px) {
    .modern-modal-window .modal-content {
        width: 95%;
        margin: 1rem;
    }
}
@keyframes modalFadeIn {
	from {
		opacity: 0;
		transform: translateY(-30px);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}
.modal-header {
	padding: 1.5rem 2rem;
	border-bottom: 1px solid #e0e6ed;
	position: relative;
	background-color: #f8faff;
}
@media (max-width: 576px) {
    .modal-header {
        padding: 1.2rem 1.5rem;
    }
}
.modal-title {
	font-size: 1.65rem;
	font-weight: 700;
	color: #0a2540;
	margin: 0;
	padding-right: 2rem;
	text-align: center;
}
@media (max-width: 576px) {
    .modal-title {
        font-size: 1.4rem;
    }
}
.close-btn {
	position: absolute;
	top: 1rem;
	right: 1rem;
	font-size: 2.2rem;
	font-weight: 300;
	color: #888888;
	background: none;
	border: none;
	opacity: 0.7;
	cursor: pointer;
	transition: opacity 0.2s ease, color 0.2s ease, transform 0.2s ease;

}
// Added transform 
	.close-btn:hover {
    opacity: 1;
    color: #333333;
    transform: rotate(90deg);
}
@media (max-width: 576px) {
    .close-btn {
        top: 0.8rem;
        right: 0.8rem;
        font-size: 2rem;
    }
}
.modal-body {
	padding: 2.5rem 2rem;

}
.modal-body .form-group {
    margin-bottom: 1.5rem;
}
.modal-body .form-control:focus {
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.25);
}
.modal-body .btn-primary {
    width: 100%;
    padding: 1.1rem;
    font-size: 1.1rem;
    font-weight: 700;
    border-radius: 10px;
    margin-top: 0.5rem;
}
@media (max-width: 576px) {
    .modal-body {
        padding: 1.8rem 1.5rem;
    }
    .modal-body .btn-primary {
        padding: 1rem;
        font-size: 1rem;
    }
}
.modal-subtitle {
	font-size: 1.05rem;
	font-weight: 300;
	text-align: center;
	margin-bottom: 2rem;
	color: #6c757d;
	line-height: 1.6;
}
@media (max-width: 576px) {
    .modal-subtitle {
        font-size: 0.95rem;
    }
}
.modal-success {
	background: rgba(32, 201, 151, 0.08);
	border: 1px solid rgba(32, 201, 151, 0.4);
	border-radius: 10px;
	padding: 1.5rem;
	text-align: center;
	margin-top: 1.5rem;
	color: #333333;
}
.modal-success h4 {
    font-size: 1.6rem;
    font-weight: 700;
    color: #20c997;
    margin: 0 0 0.8rem 0;
}
@media (max-width: 576px) {
    .modal-success h4 {
        font-size: 1.4rem;
    }
}
.modal-success p {
    font-size: 1rem;
    line-height: 1.6;
    color: #555555;
}
.modal-success .fa-check-circle {
    margin-right: 0.75rem;
    color: #20c997;
    font-size: 1.8rem;
    vertical-align: middle;
}
/* Sits above the submit button rather than replacing the form, because the details are still
   filled in and retrying is usually all that is needed. */
.modal-error {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-align: start;
	    align-items: flex-start;
	gap: 0.75rem;
	background: rgba(169, 68, 66, 0.08);
	border: 1px solid rgba(169, 68, 66, 0.4);
	border-radius: 10px;
	padding: 1rem 1.25rem;
	margin-bottom: 1.25rem;
	font-size: 0.9rem;
	line-height: 1.6;
	color: #a94442;
}
.modal-error i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin-top: 0.15rem;
    font-size: 1rem;
}
/* =================================================================== */
/* ! Seat modals (pricing page add-ons)
/*
/* The two modals opened from the AI transcription add-on cards: buying seats, and handing them
/* out. Both share the chrome (.modal-header, .modal-body, .modal-title, .close-btn) with the
/* book-a-demo modal in _website_book_demo.css, and the assign modal reuses the table, avatar and
/* tier selector styling from _transcription-seats.css. Only what is specific to these two lives
/* here.
/* =================================================================== */
/* Both are wider than the shared 500px demo modal: the purchase step carries two tier cards, a
   stepper each and a priced summary, and the assign modal carries a table of the whole practice.
   Capped at the viewport with the body scrolling inside, because both run off a laptop screen. */
.seat-purchase-window .modal-content, .seat-assign-window .modal-content {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    max-height: 90vh;
}
.seat-purchase-window .modal-content {
    max-width: 720px;
}
.seat-assign-window .modal-content {
    max-width: 900px;
}
.seat-purchase-modal {
	display: -ms-flexbox;
	display: flex;
	-ms-flex-direction: column;
	    flex-direction: column;
	min-height: 0;
	position: relative;
}
.seat-purchase-modal .modal-header {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
/* min-height overrides the min-content floor a flex item gets by default, without which the
	   body refuses to shrink and scrolls the whole page instead of itself. */
.seat-purchase-modal .modal-body {
    min-height: 0;
    overflow-y: auto;
}
/* Every step in here is a server round trip - signing in, pricing, charging a card - so the
	   whole modal is blocked rather than each control disabled one at a time. */
.seat-purchase-modal .seat-purchase-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 1rem;
    z-index: 10;
    background: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    color: #0a2540;
    font-weight: 500;
}
.seat-purchase-modal .spinner {
    width: 40px;
    height: 40px;
    border: 4px solid rgba(10, 37, 64, 0.2);
    border-top-color: #00bcd4;
    border-radius: 50%;
    animation: spinner-rotation 0.8s linear infinite;
}
.seat-purchase-modal .seat-purchase-dev-warning {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1.5rem;
    border-radius: 10px;
    background: rgba(255, 182, 39, 0.1);
    border: 1px solid rgba(255, 182, 39, 0.5);
    font-size: 0.9rem;
    color: #856404;
}
.seat-purchase-modal .seat-purchase-dev-warning strong {
    letter-spacing: 0.05em;
}
.seat-purchase-modal .seat-purchase-footnote {
    margin: 1.5rem 0 0 0;
    text-align: center;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-footnote a {
    color: #0097a7;
    cursor: pointer;
    font-weight: 600;
}
/* Two-factor code boxes
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-code-inputs {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: center;
        justify-content: center;
    gap: 0.6rem;
    margin: 1.5rem 0 0.5rem 0;
}
.seat-purchase-modal .seat-code-inputs .form-control {
    width: 48px;
    height: 56px;
    padding: 0;
    text-align: center;
    font-size: 1.6rem;
    font-weight: 700;
    color: #0a2540;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-code-inputs {
        gap: 0.35rem;
    }
    .seat-purchase-modal .seat-code-inputs .form-control {
        width: 40px;
        height: 48px;
        font-size: 1.3rem;
    }
}
/* Practice picker
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-list {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.75rem;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-option {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: 1rem 1.25rem;
    text-align: left;
    background: #f8faff;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    color: #333333;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
}
.seat-purchase-modal .seat-practice-option:hover:not([disabled]) {
    border-color: #00bcd4;
    background: rgba(0, 188, 212, 0.05);
}
/* The one already loaded, so switching away and back is not a guess. */
.seat-purchase-modal .seat-practice-option.current {
    border-color: #00bcd4;
    background: rgba(0, 188, 212, 0.05);
}
.seat-purchase-modal .seat-practice-option .seat-practice-name {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    font-weight: 600;
}
.seat-purchase-modal .seat-practice-option .seat-practice-current {
    font-size: 0.75rem;
    font-weight: 400;
    color: #0097a7;
}
.seat-purchase-modal .seat-practice-option i {
    color: #00bcd4;
}
/* Names the practice being worked on, and carries the way to swap to another. Sits at the top
	   of both modals: a group setting up several needs to see which one it is on before it reads
	   anything below. */
.seat-purchase-modal .seat-practice-bar {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    background: rgba(10, 37, 64, 0.05);
    border: 1px solid #e0e6ed;
}
.seat-purchase-modal .seat-practice-bar .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-practice-bar {
        -ms-flex-direction: column;
            flex-direction: column;
        -ms-flex-align: start;
            align-items: flex-start;
        gap: 0.6rem;
    }
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-practice-bar-label {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.6rem;
    min-width: 0;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-practice-bar-label strong {
    color: #0a2540;
}
.seat-purchase-modal .seat-practice-bar-label i {
    color: #0035d2;
}
/* Buying
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-loading {
    padding: 2.5rem 0;
    text-align: center;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-loading i {
    margin-right: 0.5rem;
    color: #00bcd4;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-tiers {
    display: -ms-grid;
    display: grid;
    -ms-grid-columns: (minmax(0, 1fr))[2];
        grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-purchase-tiers {
        -ms-grid-columns: 1fr;
            grid-template-columns: 1fr;
    }
}
/* The tier whose button was clicked on the pricing page, so the visitor can see that the
	   modal opened on the seat they actually asked for. */
.seat-purchase-modal .seat-purchase-tier {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.6rem;
    padding: 1.25rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
}
.seat-purchase-modal .seat-purchase-tier.selected {
    border-color: #00bcd4;
    box-shadow: 0 0 0 3px rgba(0, 188, 212, 0.1);
}
.seat-purchase-modal .seat-purchase-tier-head {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: baseline;
        align-items: baseline;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 0.5rem;
}
.seat-purchase-modal .seat-purchase-tier-head h4 {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-tier-price {
    font-size: 1.15rem;
    font-weight: 700;
    color: #0035d2;
    white-space: nowrap;
}
.seat-purchase-modal .seat-purchase-tier-price small {
    display: block;
    font-size: 0.7rem;
    font-weight: 400;
    color: #6c757d;
    text-align: right;
}
.seat-purchase-modal .seat-purchase-tier-included {
    margin: 0;
    font-size: 0.9rem;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-tier-state {
    font-size: 0.8rem;
    color: #6c757d;
}
/* Priced summary. Every figure in here comes back from the server.
	/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-summary {
    padding: 1.25rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    background: #f8faff;
    border: 1px solid #e0e6ed;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .seat-purchase-summary-loading, .seat-purchase-modal .seat-purchase-summary-empty {
    text-align: center;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-summary-loading i, .seat-purchase-modal .seat-purchase-summary-empty i {
    margin-right: 0.4rem;
    color: #00bcd4;
}
.seat-purchase-modal .seat-purchase-line {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: start;
        align-items: flex-start;
    -ms-flex-pack: justify;
        justify-content: space-between;
    gap: 1rem;
    padding: 0.4rem 0;
    font-size: 0.9rem;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-line small {
    display: block;
    font-size: 0.75rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-line strong {
    white-space: nowrap;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-line.total {
    margin-top: 0.4rem;
    padding-top: 0.75rem;
    border-top: 1px solid #e0e6ed;
    font-size: 1rem;
    font-weight: 600;
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-line.due {
    margin-top: 0.5rem;
    padding: 0.75rem;
    border-radius: 8px;
    background: rgba(0, 188, 212, 0.1);
}
.seat-purchase-modal .seat-purchase-line.due strong {
    color: #0097a7;
}
.seat-purchase-modal .seat-purchase-next {
    margin: 0.75rem 0 0 0;
    font-size: 0.8rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-cards {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    gap: 0.6rem;
    margin-bottom: 1.25rem;
}
.seat-purchase-modal .seat-purchase-card {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.9rem;
    padding: 0.8rem 1rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
    font-size: 0.9rem;
    color: #6c757d;
}
.seat-purchase-modal .seat-purchase-card > i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    font-size: 1.1rem;
    color: #0035d2;
}
.seat-purchase-modal .seat-purchase-card .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
@media (max-width: 576px) {
    .seat-purchase-modal .seat-purchase-card {
        -ms-flex-wrap: wrap;
            flex-wrap: wrap;
    }
}
/* The label and the card itself stack, and take whatever width is left once the icon and the
	   change button have had theirs. */
.seat-purchase-modal .seat-purchase-card-detail {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-direction: column;
        flex-direction: column;
    -ms-flex: 1 1 auto;
        flex: 1 1 auto;
    min-width: 0;
}
.seat-purchase-modal .seat-purchase-card-detail strong {
    color: #0a2540;
}
.seat-purchase-modal .seat-purchase-note {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1.1rem;
    margin-bottom: 1.25rem;
    border-radius: 10px;
    font-size: 0.9rem;
    line-height: 1.6;
}
.seat-purchase-modal .seat-purchase-note i {
    -ms-flex-negative: 0;
        flex-shrink: 0;
}
.seat-purchase-modal .seat-purchase-note .btn {
    -ms-flex-negative: 0;
        flex-shrink: 0;
    margin: 0;
    padding: 0.4rem 0.9rem;
    font-size: 0.75rem;
    width: auto;
}
.seat-purchase-modal .seat-purchase-note.info {
    background: rgba(10, 37, 64, 0.05);
    border: 1px solid #e0e6ed;
    color: #555555;
}
.seat-purchase-modal .seat-purchase-note.info i {
    color: #0035d2;
}
.seat-purchase-modal .seat-purchase-note.warning {
    background: rgba(255, 182, 39, 0.1);
    border: 1px solid rgba(255, 182, 39, 0.5);
    color: #856404;
}
.seat-purchase-modal .seat-purchase-note.success {
    background: rgba(32, 201, 151, 0.08);
    border: 1px solid rgba(32, 201, 151, 0.4);
    color: #333333;
}
.seat-purchase-modal .seat-purchase-note.success i {
    color: #20c997;
}
.seat-purchase-modal .seat-purchase-validation {
    margin-bottom: 1rem;
    font-size: 0.9rem;
    color: #a94442;
}
.seat-purchase-modal .seat-purchase-validation i {
    margin-right: 0.4rem;
}
.seat-purchase-modal .seat-purchase-stripe {
    padding: 1rem;
    margin-bottom: 1.25rem;
    border: 1px solid #e0e6ed;
    border-radius: 10px;
    background: #ffffff;
}
/* .modal-body in _website_book_demo.css sizes the primary CTA, but its colour is declared
	   inside .modern-login-page - and a modal appended to the body sits outside that. Restated
	   here so the CTA matches the pricing page it was clicked from. */
.seat-purchase-modal .btn-primary {
    background-color: #00bcd4;
    color: #ffffff;
    border: none;
    box-shadow: 0 4px 15px rgba(0, 188, 212, 0.3);
}
.seat-purchase-modal .btn-primary:hover:not([disabled]) {
    background-color: #008c9e;
    box-shadow: 0 6px 20px rgba(0, 188, 212, 0.4);
}
.seat-purchase-modal .btn-primary[disabled] {
    background-color: #a0a0a0;
    box-shadow: none;
    cursor: not-allowed;
}
/* Buttons
	/* -------------------------------------------------------------- */
.seat-purchase-modal .btn-outline-cyan {
    background: transparent;
    border: 1px solid #00bcd4;
    color: #0097a7;
    font-weight: 600;
}
.seat-purchase-modal .btn-outline-cyan:hover {
    background: #00bcd4;
    color: #ffffff;
}
/* -------------------------------------------------------------- */
.seat-purchase-modal .btn-plain {
    display: block;
    width: 100%;
    margin-top: 0.75rem;
    padding: 0.9rem;
    background: transparent;
    border: 1px solid #c0cde0;
    border-radius: 10px;
    color: #6c757d;
    font-weight: 600;
}
.seat-purchase-modal .btn-plain:hover {
    border-color: #6c757d;
    color: #333333;
}
/* =================================================================== */
/* ! Assign seats modal
/* =================================================================== */
/* The count sits hard right of the search box. The app's copy of this toolbar uses Angular
	   Material's flex attribute for the gap, which has no place in a plain Bootstrap modal. */
.seat-assign-modal .seat-table-toolbar {
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-wrap: wrap;
        flex-wrap: wrap;
}
/* The table is the tall part, so it scrolls inside itself rather than pushing the actions
	   below the fold on a practice with a long staff list. */
.seat-assign-modal .seat-table-wrapper {
    max-height: 42vh;
    overflow-y: auto;
}
.seat-assign-modal .seat-assign-actions {
    margin-top: 1.5rem;
}
.seat-assign-modal .seat-assign-actions .btn-plain {
    margin-top: 0.75rem;
}
@media (max-width: 576px) {
    .seat-assign-modal .seat-search {
        width: 100%;
    }
}
.modern-login-page .page-header {
    background-color: rgba(36, 62, 87, 0.9);
    padding: 0.75rem 5%;
    padding-top: 0.5rem;
    margin-top: 0rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
    width: 100%;
    box-sizing: border-box;
}
.modern-login-page .header-container {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
        justify-content: space-between;
    -ms-flex-align: center;
        align-items: center;
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
}
.modern-login-page .nav-logo {
    height: 50px;
    width: auto;
    filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.3));
    vertical-align: middle;
}
.modern-login-page .main-nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-align: center;
        align-items: center;
    gap: 1rem;
}
.modern-login-page .nav-link {
    background-color: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    color: #ffffff;
    font-size: 1rem;
    font-weight: 500;
    text-decoration: none;
    padding: 0.6rem 1.2rem;
    border-radius: 8px;
    transition: all 0.2s ease-in-out;
    cursor: pointer;
}
.modern-login-page .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.5);
    transform: translateY(-2px);
}
.modern-login-page .btn-nav-demo {
    background-color: #ffab00;
    color: #0a2540;
    padding: 0.8rem 1.8rem;
    font-size: 1.15rem;
    font-weight: 700;
    border-radius: 10px;
    border: none;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    text-decoration: none;
    display: inline-block;
    max-width: 25rem;
}
.modern-login-page .btn-nav-demo:hover {
    background-color: #FFB627;
    transform: translateY(-2px);
    box-shadow: 0 3px 20px #FFB627;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl92YXJpYWJsZXMuY3NzIiwiX2ZvbnRzLmNzcyIsIl91dGlsLmNzcyIsIl9idXR0b25zLmNzcyIsIl9uYXYuY3NzIiwiX3dlbGNvbWUuY3NzIiwiX3JlZmVyLmNzcyIsIl9zZWFyY2guY3NzIiwiX21vZGFsLmNzcyIsIl9mb3Jtcy5jc3MiLCJfcG9wb3Zlci5jc3MiLCJfaW5zdXJhbmNlLmNzcyIsIl9jb21wbGV0ZS1yZWZlcnJhbC5jc3MiLCJfZXhhbS5jc3MiLCJfdGVybXMuY3NzIiwiX3ByZS1vcC5jc3MiLCJfb3BlcmF0aW9uLW5vdGUuY3NzIiwiX3VpLXNlbGVjdC5jc3MiLCJfcHJlbWl1bS1sZW5zLmNzcyIsIl9wYXRpZW50LXZlcmlmaWNhdGlvbi5jc3MiLCJfYW5pbWF0aW9uLmNzcyIsIl9haS1hZ2VudC5jc3MiLCJfcmljaHRleHQuY3NzIiwiX3BheW1lbnRzLmNzcyIsIl90cmFuc2NyaXB0aW9uLXNlYXRzLmNzcyIsIl9zZXR0aW5ncy5jc3MiLCJfcGVybWlzc2lvbnMuY3NzIiwiX2NhbGVuZGFyLmNzcyIsIl9wYXRpZW50LWZvcm1zLmNzcyIsIl90aXBzLmNzcyIsIl9lY2xpcHNlLWNsYWltLmNzcyIsIl9wYXRpZW50LWNvdmVyLWNoZWNrLmNzcyIsIl9wZGYtdmlld2VyLmNzcyIsIl90ZXJtaW5hbC1wYXltZW50LmNzcyIsIl9jbGFpbWFibGUtaXRlbXMuY3NzIiwiX2NsYWltcy1saXN0LmNzcyIsIl9zaWduLW9mZi5jc3MiLCJfbm90aWZpY2F0aW9ucy5jc3MiLCJfbGVucy1kaXNwZW5zaW5nLmNzcyIsIl9sZW5zLXByZXNjcmliaW5nLmNzcyIsIl9pbnZlbnRvcnkuY3NzIiwiX2ludm9pY2luZy5jc3MiLCJfd29ya2xpc3RzLmNzcyIsIl9wYXRpZW50LWltcG9ydC5jc3MiLCJfd2Vic2l0ZV9sYW5kaW5nX3BhZ2UuY3NzIiwiX3dlYnNpdGVfbG9naW5fcGFuZWwuY3NzIiwiX3dlYnNpdGVfYWJvdXRfdXMuY3NzIiwiX3dlYnNpdGVfcHJpY2luZy5jc3MiLCJfd2Vic2l0ZV9mZWF0dXJlcy5jc3MiLCJfd2Vic2l0ZV9ib29rX2RlbW8uY3NzIiwiX3dlYnNpdGVfc2VhdF9wdXJjaGFzZS5jc3MiLCJfd2Vic2l0ZV9uYXZfYmFyLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5RUFBeUU7QUFDekU7eUVBQ3lFO0FBTXBELG9EQUFvRDtBQUVqRCxrRkFBa0Y7QUFFckYscUdBQXFHO0FBQzFILHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFDekUsMEJBQTBCO0FBTUosb0RBQW9EO0FBQzFFLHFDQUFxQztBQUdyQyxtQ0FBbUM7QUFFbkMsMkZBQTJGO0FBSzNGLDJCQUEyQjtBQUdQLG1FQUFtRTtBQUN2Rix3QkFBd0I7QUFDTiwyQkFBMkI7QUFDckIsMkJBQTJCO0FBSW5ELHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFDekUsVUFBVTtBQUNXLHVDQUF1QztBQUV0QywrQkFBK0I7QUFDL0IscUJBQXFCO0FBRzNDLGtCQUFrQjtBQUdXLDBCQUEwQjtBQUN6QixxQkFBcUI7QUFDaEMsMEJBQTBCO0FBQ25CLDZEQUE2RDtBQUN2RixpQkFBaUI7QUFHRywyQkFBMkI7QUFHdEIsZ0NBQWdDO0FBQ3pELHlFQUF5RTtBQUN6RTs7eUVBRXlFO0FBQy9DLG1DQUFtQztBQUdyQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQzNELHlFQUF5RTtBQUN6RTt5RUFDeUU7QUFDaEMsc0JBQXNCO0FBR3ZCLGFBQWE7QUFPWiwwQkFBMEI7QUFHbkUseUVBQXlFO0FBQ3pFO3lFQUN5RTtBQU16RSx5RUFBeUU7QUFDekU7eUVBQ3lFO0FBQ3pFLGdCQUFnQjtBQUlzQix1QkFBdUI7QUFJN0QsaUJBQWlCO0FBUWpCLGtCQUFrQjtBQUtsQixlQUFlO0FBRWYsZ0JBQWdCO0FBSWhCLG9CQUFvQjtBQU9wQix5RUFBeUU7QUFDekU7Ozt5RUFHeUU7QUFHekUseUVBQXlFO0FBQ3pFO3lFQUN5RTtBQUl6RSx5RUFBeUU7QUFDekU7Ozs7eUVBSXlFO0FBVXpFLHlFQUF5RTtBQUN6RTt5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O0lBQ3BDLHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsaUJBQWlCO0NBT2pCO0FBTEE7SUFDQywwQkFBMEI7SUFDMUIsNEJBQTRCO0lBQzVCLCtCQUErQjtDQUMvQiIsImZpbGUiOiJzdHlsZS0xNzkzNzc4NDM3MjI0LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ29yZSBCcmFuZCBQYWxldHRlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiR3aGl0ZTogI2ZmZmZmZjtcbiRibGFjazogIzAwMDtcbiRuYXZ5OiAjMDAzNWQyO1xuJGRhcmtOYXZ5OiAjMmEzMDdmO1xuJG5hdnktcGFsZTogI2U3ZjBmZjsgLyogUGFsZSBuYXZ5IHRpbnQgLSBzZXR0aW5ncyBoZWFkaW5ncywgaWNvbiBjaGlwcyAqL1xuJHB1cnBsZTogIzhiNTZhMztcbiRicmFuZC1wdXJwbGU6ICM4YjU2YTM7IC8qIFRoZSBicmFuZCBwdXJwbGUuICRwdXJwbGUgaXMgcmVkZWZpbmVkIGJlbG93LCBzbyBpdCBkb2VzIG5vdCBjb21waWxlIHRvIHRoaXMgKi9cbiRibHVlOiAjMjA3MmJiO1xuJGljb24tbGluZTogIzFlMWU1ZTsgLyogVGhlIGxpbmUgY29sb3VyIG9mIHRoZSBuYXYncyBsaW5lIGljb25zICh0YXNrcywgd2FpdGxpc3QsIGltcG9ydHMsIGZvcm1zKSBhbmQgdGhlIGNvcHktZXllIGljb24gKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVGhlbWUgQ29sb3JzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBQcmltYXJ5IEFjdGlvbiBDb2xvciAqL1xuJGN5YW46ICMwMGJjZDQ7XG4kY3lhbi1kYXJrOiAjMDA5N2E3O1xuJGN5YW4tZGFya2VyOiAjMDA4YzllO1xuJGN5YW4tZGFya2VzdDogIzAwYTViODtcbiRjeWFuLWxpZ2h0OiAjMjNlMmY4O1xuJHllbGxvdy1jdGE6ICNmZmFiMDA7IC8qIFVzZWQgZm9yICdDb21pbmcgU29vbicgYmFubmVyIGFuZCBDVEEgYnV0dG9ucy4gKi9cbi8qIFN1Y2Nlc3MgLyBTZWNvbmRhcnkgVGhlbWUgQ29sb3IgKi9cbiRncmVlbjogIzIwYzk5NztcbiRncmVlbi1zdWNjZXNzLWFsdDogIzVjYjg1Yztcbi8qIEFjY2VudCAvIFRlcnRpYXJ5IFRoZW1lIENvbG9yICovXG4keWVsbG93OiAjRkZCNjI3O1xuLyogRXllczogcmlnaHQgKE9EKSByZWQgYW5kIGxlZnQgKE9TKSBibHVlLCBhcyBleWUgY2hhcnRzIGFuZCBjbGluaWNhbCByZWNvcmRzIG1hcmsgdGhlbSAqL1xuJGV5ZS1vZDogI2M2MjgyODtcbiRleWUtb2QtcGFsZTogI2ZkZWNlYztcbiRleWUtb3M6ICMxNTY1YzA7XG4kZXllLW9zLXBhbGU6ICNlNmYwZmI7XG4vKiBEYW5nZXIgLyBFcnJvciBDb2xvcnMgKi9cbiRkYW5nZXI6ICNhOTQ0NDI7XG4kcmVkLWRhbmdlci1hbHQ6ICNkOTUzNGY7XG4kcmVkLXNvZnQ6ICNlNDg3ODQ7IC8qIEEgZmFpbHVyZSBjb3VudGVkIGluIGEgcmVwb3J0LCByYXRoZXIgdGhhbiBhbiBlcnJvciB0byBhY3Qgb24gKi9cbi8qIFNwZWNpZmljIFVJIENvbG9ycyAqL1xuJG9yYW5nZTogI2Q4N2Q0YTsgLyogRm9yIEFkbWluIG5vdGUgYm9yZGVyICovXG4kZm9yZXN0LWdyZWVuOiAjMmU3ZDMyOyAvKiBGb3IgTnVyc2Ugbm90ZSBib3JkZXIgKi9cbiR0ZWFsOiAjMDA3OTZiO1xuJGxhdmVuZGVyOiAjYTI5YmZlO1xuJHB1cnBsZTogIzlDMjdCMDtcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgR3JleXMgJiBOZXV0cmFsc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogVGV4dCAqL1xuJHRleHQtZGFyazogIzMzMzMzMzsgLyogUHJpbWFyeSB0ZXh0IG9uIGxpZ2h0IGJhY2tncm91bmRzICovXG4kdGV4dEdyZXk6ICMzNDNhNDA7XG4kdGV4dC1tdXRlZDogIzZjNzU3ZDsgLyogU3VidGl0bGVzIGFuZCBoZWxwZXIgdGV4dCAqL1xuJHRleHQtbGlnaHQ6ICM1NTU1NTU7IC8qIE1vZGFsIGJvZHkgdGV4dCAqL1xuJHRleHQtY2xvc2UtYnRuOiAjODg4ODg4O1xuJGxvZ291dEdyZXk6ICM0MDQxNDE7XG4vKiBCb3JkZXJzICYgVUkgKi9cbiRsaW5lQnJlYWs6ICNiY2NhZDI7XG4kY2FuY2VsQm9yZGVyOiAjYmRiZWMxO1xuJGdyZXktYm9yZGVyLWxpZ2h0OiAjZTBlNmVkOyAvKiBGb3JtIGNvbnRyb2wgYm9yZGVycyAqL1xuJGdyZXktYm9yZGVyLW1lZGl1bTogI2MwY2RlMDsgLyogYnRuLWxvc3QgYm9yZGVyICovXG4kbmF2R3JleTogI2U3ZTllOTsgLyogTmF2aWdhdGlvbiBjb21wb25lbnQgKi9cbiR0b29sYmFyRGl2aWRlcjogI2NjY2NjYzsgLyogUnVsZXMgaW5zaWRlIGEgdG9vbGJhciBib3ggLSBBSSBBc3Npc3QsIGNsYWltYWJsZSBpdGVtcyAqL1xuLyogQmFja2dyb3VuZHMgKi9cbiRwYWdlQmFja0dyb3VuZDogI2ViZWNlYTtcbiRkYXNoYm9hcmRCYWNrZ3JvdW5kOiAjZjBmMmY1O1xuJHBhbGVCbHVlOiAjZjJmNmZiOyAvKiBBbHRlcm5hdGUgdGFibGUgY29sb3IgKi9cbiRsaWdodEdyZXk6ICNmOGY5ZmE7XG4kZ3JleS1tb2RhbC1oZWFkZXI6ICNmOGZhZmY7XG4kZ3JleS1kaXNhYmxlZDogI2EwYTBhMDsgLyogRGlzYWJsZWQgYnV0dG9uIGJhY2tncm91bmQgKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRGFyayBUaGVtZSAoTmF2eSlcbi8qIFVzZWQgZm9yIHdlYnNpdGUgbGFuZGluZyBwYWdlc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJG5hdnktZGFyay10ZXh0OiAjMGEyNTQwOyAvKiBNb2RhbCB0aXRsZXMsIHByb2Nlc3NpbmcgdGV4dCAqL1xuJG5hdnktYmctZ3JhZGllbnQtZGFyazogcmdiYSgxMCwgMzcsIDY0LCAwLjk1KTtcbiRuYXZ5LWJnLWdyYWRpZW50LWxpZ2h0OiByZ2JhKDEwLCAzNywgNjQsIDAuODUpO1xuJG5hdnktYmFja2Ryb3A6IHJnYmEoMTAsIDM3LCA2NCwgMC42NSk7IC8qIE1vZGFsIGJhY2tkcm9wICovXG4kbmF2eS1oZWFkZXItYmc6IHJnYmEoMzYsIDYyLCA4NywgMC45KTsgLyogU3RpY2t5IGhlYWRlciAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUcmFuc3BhcmVudCBXaGl0ZXNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiR3aGl0ZS10cC0wNTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsgLyogQ2FyZCBiYWNrZ3JvdW5kcyAqL1xuJHdoaXRlLXRwLTEwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4kd2hpdGUtdHAtMTU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4kd2hpdGUtdHAtMjA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsgLyogQm9yZGVycyAqL1xuJHdoaXRlLXRwLTQwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4kd2hpdGUtdHAtNTA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTtcbiR3aGl0ZS10cC02MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xuJHdoaXRlLXRwLTcwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4kd2hpdGUtdHAtNzU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7XG4kd2hpdGUtdHAtODA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiR3aGl0ZS10cC04NTogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KTsgLyogQm9keSB0ZXh0IG9uIGRhcmsgYmcgKi9cbiR3aGl0ZS10cC05MDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpO1xuJHdoaXRlLXRwLTk1OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTUpO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUcmFuc3BhcmVudCBCbGFja3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRibGFjay10cC0xMDogcmdiYSgwLCAwLCAwLCAwLjEpO1xuJGJsYWNrLXRwLTE1OiByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuJGJsYWNrLXRwLTIwOiByZ2JhKDAsIDAsIDAsIDAuMik7XG4kYmxhY2stdHAtMzA6IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiRibGFjay10cC00MDogcmdiYSgwLCAwLCAwLCAwLjQpO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUcmFuc3BhcmVudCBUaGVtZSBDb2xvcnNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIEN5YW4gVGludHMgKi9cbiRjeWFuLXRwLTA1OiByZ2JhKDAsIDE4OCwgMjEyLCAwLjA1KTtcbiRjeWFuLXRwLTEwOiByZ2JhKDAsIDE4OCwgMjEyLCAwLjEpO1xuJGN5YW4tdHAtMjA6IHJnYmEoMCwgMTg4LCAyMTIsIDAuMik7XG4kY3lhbi10cC0yNTogcmdiYSgwLCAxODgsIDIxMiwgMC4yNSk7IC8qIEZvcm0gZm9jdXMgc2hhZG93ICovXG4kY3lhbi10cC0zMDogcmdiYSgwLCAxODgsIDIxMiwgMC4zKTtcbiRjeWFuLXRwLTQwOiByZ2JhKDAsIDE4OCwgMjEyLCAwLjQpO1xuJGN5YW4tdHAtNTA6IHJnYmEoMCwgMTg4LCAyMTIsIDAuNSk7XG4vKiBHcmVlbiBUaW50cyAqL1xuJGdyZWVuLXRwLTA4OiByZ2JhKDMyLCAyMDEsIDE1MSwgMC4wOCk7XG4kZ3JlZW4tdHAtMTA6IHJnYmEoMzIsIDIwMSwgMTUxLCAwLjEpO1xuJGdyZWVuLXRwLTIwOiByZ2JhKDMyLCAyMDEsIDE1MSwgMC4yKTtcbiRncmVlbi10cC0zMDogcmdiYSgzMiwgMjAxLCAxNTEsIDAuMyk7XG4kZ3JlZW4tdHAtNDA6IHJnYmEoMzIsIDIwMSwgMTUxLCAwLjQpO1xuJGdyZWVuLXRwLTUwOiByZ2JhKDMyLCAyMDEsIDE1MSwgMC41KTtcbiRncmVlbi10cC03MDogcmdiYSgzMiwgMjAxLCAxNTEsIDAuNyk7XG4vKiBZZWxsb3cgVGludHMgKi9cbiR5ZWxsb3ctdHAtMTA6IHJnYmEoMjU1LCAxODIsIDM5LCAwLjEpO1xuJHllbGxvdy10cC0yMDogcmdiYSgyNTUsIDE4MiwgMzksIDAuMik7XG4keWVsbG93LXRwLTMwOiByZ2JhKDI1NSwgMTgyLCAzOSwgMC4zKTtcbiR5ZWxsb3ctdHAtNTA6IHJnYmEoMjU1LCAxODIsIDM5LCAwLjUpO1xuLyogUmVkIFRpbnRzICovXG4kcmVkLWRhbmdlci1hbHQtdHAtMTU6IHJnYmEoMjE3LCA4MywgNzksIDAuMTUpO1xuLyogTmF2eSBUaW50cyAqL1xuJG5hdnktdHAtMDU6IHJnYmEoMTAsIDM3LCA2NCwgMC4wNSk7XG4kbmF2eS10cC0xMDogcmdiYSgxMCwgMzcsIDY0LCAwLjEpO1xuJG5hdnktdHAtMjA6IHJnYmEoMTAsIDM3LCA2NCwgMC4yKTtcbi8qIExhdmVuZGVyIFRpbnRzICovXG4kbGF2ZW5kZXItdHAtMDU6IHJnYmEoMTYyLCAxNTUsIDI1NCwgMC4wNSk7XG4kbGF2ZW5kZXItdHAtMTA6IHJnYmEoMTYyLCAxNTUsIDI1NCwgMC4xKTtcbiRsYXZlbmRlci10cC0yMDogcmdiYSgxNjIsIDE1NSwgMjU0LCAwLjIpO1xuJGxhdmVuZGVyLXRwLTMwOiByZ2JhKDE2MiwgMTU1LCAyNTQsIDAuMyk7XG4kbGF2ZW5kZXItdHAtNDA6IHJnYmEoMTYyLCAxNTUsIDI1NCwgMC40KTtcbiRsYXZlbmRlci10cC01MDogcmdiYSgxNjIsIDE1NSwgMjU0LCAwLjUpO1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQcmFjdGljZSBsZWF2ZVxuLyogU2xhdGUgcmF0aGVyIHRoYW4gcmVkLCBzbyB0aGUgd2hvbGUgcHJhY3RpY2UgYmVpbmcgY2xvc2VkIHJlYWRzXG4vKiBkaWZmZXJlbnRseSBmcm9tIG9uZSBjbGluaWNpYW4ncyBsZWF2ZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRwcmFjdGljZS1sZWF2ZS1zbGF0ZTogIzViNmI4YztcbiRwcmFjdGljZS1sZWF2ZS1pbms6ICMzZDQ1NTk7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFdhcm5pbmcgQ2FsbG91dFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJHdhcm5pbmctdGV4dDogIzg1NjQwNDtcbiR3YXJuaW5nLWJnOiByZ2JhKDI1NSwgMjQzLCAyMDUsIDAuOSk7XG4kd2FybmluZy1ib3JkZXI6IHJnYmEoMjU1LCAxOTMsIDcsIDAuNyk7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5vdGlmaWNhdGlvbiBVcmdlbmN5XG4vKiBPbmUgY29sb3VyIHBlciB1cmdlbmN5LCBzaGFyZWQgYnkgdGhlIGJhbm5lciwgdGhlIG5vdGlmaWNhdGlvbiBtb2RhbFxuLyogYW5kIHRoZSBhZG1pbiBjb25zb2xlIHNvIGFuIHVyZ2VuY3kgcmVhZHMgdGhlIHNhbWUgZXZlcnl3aGVyZS5cbi8qIEJhY2tncm91bmRzIGFyZSBvcGFxdWUgLSB0aGUgYmFubmVyIGZsb2F0cyBvdmVyIHBhZ2UgY29udGVudC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRub3RpY2Utc3RhbmRhcmQ6ICRibHVlO1xuJG5vdGljZS1zdGFuZGFyZC1iZzogI2VhZjJmYjtcbiRub3RpY2UtaGlnaDogJHdhcm5pbmctdGV4dDtcbiRub3RpY2UtaGlnaC1hY2NlbnQ6ICR5ZWxsb3c7XG4kbm90aWNlLWhpZ2gtYmc6ICNmZmY4ZTE7XG4kbm90aWNlLXVyZ2VudDogI2MyNDEwYztcbiRub3RpY2UtdXJnZW50LWJnOiAjZmZmMWU4O1xuJG5vdGljZS1lcnJvcjogJGRhbmdlcjtcbiRub3RpY2UtZXJyb3ItYmc6ICNmYmVjZWI7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFR5cG9ncmFwaHlcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIEZvbnQgRmFtaWx5ICovXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuLyogRm9udCBXZWlnaHRzICovXG4kZm9udC13ZWlnaHQtbGlnaHQ6IDMwMDtcbiRmb250LXdlaWdodC1ub3JtYWw6IDQwMDtcbiRmb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiRmb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xuJGZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcbi8qIEZvbnQgU2l6ZXMgKi9cbiRmb250LXNpemUtc206IDAuOXJlbTtcbiRmb250LXNpemUtYmFzZTogMXJlbTtcbiRmb250LXNpemUtbGc6IDEuM3JlbTtcbiRmb250LXNpemUteGw6IDEuOHJlbTtcbiRmb250LXNpemUteHhsOiAyLjVyZW07XG4kZm9udC1zaXplLXh4eGw6IDMuMnJlbTtcbi8qIExpbmUgSGVpZ2h0cyAqL1xuJGxpbmUtaGVpZ2h0LWJhc2U6IDEuNjtcbiRsaW5lLWhlaWdodC1oZWFkaW5nOiAxLjI7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFNpemluZyAmIExheW91dFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJHNlY3Rpb24tcGFkZGluZy14OiA1JTtcbi8qIEJvcmRlciBSYWRpdXMgKi9cbiRib3JkZXItcmFkaXVzLXNtOiA4cHg7XG4kYm9yZGVyLXJhZGl1cy1tZDogMTBweDtcbiRib3JkZXItcmFkaXVzLWxnOiAxMnB4O1xuJGJvcmRlci1yYWRpdXMteGw6IDE2cHg7XG4kYm9yZGVyLXJhZGl1cy1jaXJjbGU6IDUwJTtcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2hhZG93c1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuJHNoYWRvdy1zbTogMCA0cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4kc2hhZG93LW1kOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4kc2hhZG93LWxnOiAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4kc2hhZG93LWN5YW4tc206IDAgNHB4IDE1cHggcmdiYSgwLCAxODgsIDIxMiwgMC4zKTtcbiRzaGFkb3ctY3lhbi1tZDogMCA2cHggMjBweCByZ2JhKDAsIDE4OCwgMjEyLCAwLjQpO1xuIiwiQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEhlYXZ5IEl0YWxpYyc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNraXRhbGljLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhYmxhY2tpdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhYmxhY2tpdGFsaWMtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi5mb250LWhlYXZ5LWl0YWxpYyB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEhlYXZ5IEl0YWxpYyc7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBIZWF2eSc7XG4gICAgc3JjOiB1cmwoJy4vZm9udHMvZ29yZGl0YWJsYWNrLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhYmxhY2std2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhYmxhY2std2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgZm9udC13ZWlnaHQ6IDkwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbi5mb250LWhlYXZ5IHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgSGVhdnknO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCBJdGFsaWMnO1xuICAgIHNyYzogdXJsKCcuL2ZvbnRzL2dvcmRpdGFib2xkaXRhbGljLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhYm9sZGl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFib2xkaXRhbGljLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uZm9udC1ib2xkLWl0YWxpYyB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQgSXRhbGljJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnO1xuICAgIHNyYzogdXJsKCcuL2ZvbnRzL2dvcmRpdGFib2xkLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhYm9sZC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFib2xkLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4uZm9udC1ib2xkIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBNZWRpdW0gSXRhbGljJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhbWVkaXVtaXRhbGljLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhbWVkaXVtaXRhbGljLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bWl0YWxpYy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvbnQtbWVkaXVtLWl0YWxpYyB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIE1lZGl1bSBJdGFsaWMnO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTWVkaXVtJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhbWVkaXVtLXdlYmZvbnQud29mZjInKSBmb3JtYXQoJ3dvZmYyJyksIHVybCgnLi9mb250cy9nb3JkaXRhbWVkaXVtLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YW1lZGl1bS13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLmZvbnQtbWVkaXVtIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTWVkaXVtJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXIgSXRhbGljJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhcmVndWxhcml0YWxpYy13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXJpdGFsaWMtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhcmVndWxhcml0YWxpYy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvbnQtcmVndWxhci1pdGFsaWMge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyIEl0YWxpYyc7XG59XG5cbkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhcmVndWxhci13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YXJlZ3VsYXItd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksIHVybCgnLi9mb250cy9nb3JkaXRhcmVndWxhci13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuLmZvbnQtcmVndWxhciB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTGlnaHQgSXRhbGljJztcbiAgICBzcmM6IHVybCgnLi9mb250cy9nb3JkaXRhbGlnaHRpdGFsaWMtd2ViZm9udC53b2ZmMicpIGZvcm1hdCgnd29mZjInKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFsaWdodGl0YWxpYy13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSwgdXJsKCcuL2ZvbnRzL2dvcmRpdGFsaWdodGl0YWxpYy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmZvbnQtbGlnaHQtaXRhbGljIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTGlnaHQgSXRhbGljJztcbn1cblxuXG5AZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgTGlnaHQnO1xuICAgIHNyYzogdXJsKCcuL2ZvbnRzL2dvcmRpdGFsaWdodC13ZWJmb250LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWxpZ2h0LXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLCB1cmwoJy4vZm9udHMvZ29yZGl0YWxpZ2h0LXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4uZm9udC1saWdodCB7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0Jztcbn1cbiIsImh0bWwsXG5ib2R5IHtcblx0aGVpZ2h0OiAxMDAlO1xuXHRmb250LXNpemU6IDEycHg7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHVuc2V0ICFpbXBvcnRhbnQ7XG5cdC8qbGV0dGVyLXNwYWNpbmc6IDFweDsqL1xufVxuXG5tYWluIHtcblx0bWluLWhlaWdodDogMTAwdmg7XG59XG5cbi5iZy13aGl0ZSB7XG5cdGJhY2tncm91bmQ6ICR3aGl0ZTtcbn1cbi50ZXh0LXdoaXRlIHtcblx0Y29sb3I6ICR3aGl0ZTtcbn1cblxuLmJnLW5hdnkge1xuXHRiYWNrZ3JvdW5kOiAkbmF2eTtcbn1cbi50ZXh0LW5hdnkge1xuXHRjb2xvcjogJG5hdnk7XG59XG5cbi5iZy1kYXJrTmF2eSB7XG5cdGJhY2tncm91bmQ6ICRkYXJrTmF2eTtcbn1cbi50ZXh0LWRhcmtOYXZ5IHtcblx0Y29sb3I6ICRkYXJrTmF2eTtcbn1cblxuLmJnLWN5YW4ge1xuXHRiYWNrZ3JvdW5kOiAkY3lhbjtcbn1cbi50ZXh0LWN5YW4ge1xuXHRjb2xvcjogJGN5YW47XG59XG5cbi5iZy1ibHVlIHtcblx0YmFja2dyb3VuZDogJGJsdWU7XG59XG4udGV4dC1ibHVlIHtcblx0Y29sb3I6ICRibHVlO1xufVxuXG4uYmctcHVycGxlIHtcblx0YmFja2dyb3VuZDogJHB1cnBsZTtcbn1cbi50ZXh0LXB1cnBsZSB7XG5cdGNvbG9yOiAkcHVycGxlO1xufVxuXG4uYmctcGFsZUJsdWUge1xuXHRiYWNrZ3JvdW5kOiAkcGFsZUJsdWU7XG59XG4udGV4dC1wYWxlQmx1ZSB7XG5cdGNvbG9yOiAkcGFsZUJsdWU7XG59XG5cbi5iZy1uYXZHcmV5IHtcblx0YmFja2dyb3VuZDogJG5hdkdyZXk7XG59XG4udGV4dC1uYXZHcmV5IHtcblx0Y29sb3I6ICRuYXZHcmV5O1xufVxuXG4uYmctcGFnZUJhY2tHcm91bmQge1xuXHRiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG59XG4udGV4dC1wYWdlQmFja0dyb3VuZCB7XG5cdGNvbG9yOiAkcGFnZUJhY2tHcm91bmQ7XG59XG5cbi5iZy10ZXh0R3JleSB7XG5cdGJhY2tncm91bmQ6ICR0ZXh0R3JleTtcbn1cbi50ZXh0LXRleHRHcmV5IHtcblx0Y29sb3I6ICR0ZXh0R3JleTtcbn1cblxuLmJnLWxvZ291dEdyZXkge1xuXHRiYWNrZ3JvdW5kOiAkbG9nb3V0R3JleTtcbn1cbi50ZXh0LWxvZ291dEdyZXkge1xuXHRjb2xvcjogJGxvZ291dEdyZXk7XG59XG5cbi50ZXh0LXJlZCB7XG5cdGNvbG9yOiAjYTk0NDQyICFpbXBvcnRhbnQ7XG59XG4udGV4dC1icmlnaHQtcmVkIHtcblx0Y29sb3I6IHJlZDtcbn1cblxuLm91dGxpbmUge1xuXHRvdXRsaW5lOiAxcHggZG90dGVkIHJlZDtcbn1cblxuLnVuc3R5bGVkIHtcblx0Y29sb3I6IGluaGVyaXQ7XG5cdHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcblx0Y3Vyc29yOiBpbmhlcml0O1xuXHQmOmFjdGl2ZSxcblx0Jjpmb2N1cyB7XG5cdFx0b3V0bGluZTogbm9uZTtcblx0fVxuXHQmOmhvdmVyIHtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSAhaW1wb3J0YW50O1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHR9XG59XG5cbi5wb2ludGVyIHtcblx0Y3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG59XG5cbi50ZXh0LXNtYWxsIHtcblx0Zm9udC1zaXplOiAwLjhlbTtcbn1cblxuLm1iLTAge1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4udGgtbm8tYm9yZGVyIHtcblx0LyogYm9yZGVyLXdpZHRoOiAwcHggIWltcG9ydGFudDsgKi9cblx0Ym9yZGVyLWxlZnQtd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmlnaHQtd2lkdGg6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItYm90dG9tLWNvbG9yOiAkYmx1ZSAhaW1wb3J0YW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGUgIWltcG9ydGFudDtcbn1cbi50aC1ib3JkZXItdG9wIHtcblx0Ym9yZGVyLXRvcC1jb2xvcjogJGJsdWU7XG59XG5cbi50b2FzdC1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiAyNSU7XG59XG5cbi5mbGV4LWhhbGYtcm93IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdHBhZGRpbmctbGVmdDogMmVtO1xuXHRwYWRkaW5nLXJpZ2h0OiAyZW07XG5cdHBhZGRpbmctdG9wOiA4cHg7XG5cdHBhZGRpbmctYm90dG9tOiA4cHg7XG59XG5cbi5mbGV4LWhhbGYtY2VsbCB7XG5cdHdpZHRoOiA1MCU7XG59XG5cbi5mbGV4LXRocmVlLWNlbGwge1xuXHR3aWR0aDogMzMlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5uYXZ5LXRoaW4tbGluZSB7XG5cdGhlaWdodDogMXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkO1xuXHRtYXJnaW4tbGVmdDogMS41ZW07XG5cdG1hcmdpbi1yaWdodDogMS41ZW07XG59XG5cbi5yZW1vdmUtZGlhZ25vc2lzIHtcblx0cGFkZGluZzogMDtcblx0bWFyZ2luOiAwO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0d2lkdGg6IDI0cHg7XG5cdGhlaWdodDogMjRweDtcblx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRjb2xvcjogd2hpdGU7XG5cdH1cbn1cblxuLnJlbW92ZS1wcm9jZWR1cmUge1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNmZjAwMDA7XG5cdHdpZHRoOiAyNHB4O1xuXHRoZWlnaHQ6IDI0cHg7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cblx0Jjpob3ZlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmMDAwMDtcblx0XHRjb2xvcjogd2hpdGU7XG5cdH1cbn1cblxuLmFycm93LXJpZ2h0IHtcblx0Ym9yZGVyOiBzb2xpZCAkbmF2eTtcblx0Ym9yZGVyLXdpZHRoOiAwIDJweCAycHggMDtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwYWRkaW5nOiAzcHg7XG5cdG1hcmdpbi1ib3R0b206IDJweDtcblx0bWFyZ2luLWxlZnQ6IDJweDtcblx0dHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcblx0LXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuXG4udGV4dC1ncmV5LWxpZ2h0IHtcblx0Y29sb3I6ICR0ZXh0R3JleTtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0Jztcbn1cblxuLnRleHQtcHJvY2VkdXJlIHtcblx0Y29sb3I6ICNmZjAwMDA7XG59XG5cbi50aXRsZS1jb250YWluZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0bWFyZ2luLWJvdHRvbTogMC4yZW07XG59XG5cbi5maWx0ZXItZ3JleXtcblx0ZmlsdGVyOiBpbnZlcnQoNjYlKSBzZXBpYSg2JSkgc2F0dXJhdGUoMTczJSkgaHVlLXJvdGF0ZSgxOTBkZWcpIGJyaWdodG5lc3MoODklKSBjb250cmFzdCg4NSUpO1xufVxuXG4udGltZS1waWNrZXIge1xuXHRtYXJnaW4tbGVmdDogMWVtO1xuXHRwYWRkaW5nLWxlZnQ6IDFlbTtcbiAgICBoZWlnaHQ6IDMuMGVtO1xuICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgYm9yZGVyLXJhZGl1czogMjRweDtcbn1cblxuLnNjcm9sbC1jb250YWluZXIge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTtcbiAgICB3aWR0aDogNDIuNWVtO1xuICAgIGhlaWdodDo4MCU7XG5cdG92ZXJmbG93LXk6IHNjcm9sbDtcblx0b3ZlcmZsb3cteDogaGlkZGVuO1xuXHRtYXJnaW4tbGVmdDogMS41ZW07XG5cdG1hcmdpbi10b3A6IDJlbTtcbn1cblxuLnNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0d2lkdGg6IDVweDsgLyogU2V0IHRoZSB3aWR0aCBvZiB0aGUgc2Nyb2xsYmFyICovXG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHQvKiBwb3NpdGlvbjogYWJzb2x1dGU7ICovXG4gfVxuXG4gLnNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7IC8qIFNldCB0aGUgY29sb3Igb2YgdGhlIHRodW1iICovXG4gfVxuXG4vKiBDYXBzIHRoZSBkaWFnbm9zaXMgbGlzdCBoZWlnaHQgb24gdGhlIHBhdGllbnQgZGFzaGJvYXJkIHNvIGEgbG9uZyBsaXN0ICovXG4vKiBkb2Vzbid0IGJsb3cgb3V0IHRoZSBvdmVyYWxsIHBhZ2Ugc2Nyb2xsLiAqL1xuLmRpYWdub3Npcy1zY3JvbGwtY29udGFpbmVyIHtcblx0bWF4LWhlaWdodDogMjRlbTtcblx0b3ZlcmZsb3cteTogYXV0bztcblx0b3ZlcmZsb3cteDogaGlkZGVuO1xuXHRwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcbn1cblxuLmRpYWdub3Npcy1zY3JvbGwtY29udGFpbmVyOjotd2Via2l0LXNjcm9sbGJhciB7XG5cdHdpZHRoOiA1cHg7XG5cdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uZGlhZ25vc2lzLXNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6IDNweDtcbn1cblxuLyogVGhlIGRvY3VtZW50cyBsaXN0IHNjcm9sbHMgaW4gcGxhY2UgaW5zdGVhZCBvZiBwYWdpbmcsIHNvIHRoZSBzZWN0aW9uIGtlZXBzIGEgZml4ZWQgaGVpZ2h0ICovXG4vKiBob3dldmVyIG1hbnkgZG9jdW1lbnRzIGEgcGF0aWVudCBoYXMuIFRoZSBzY3JvbGxiYXIgaXMgbGVmdCB2aXNpYmxlIHJhdGhlciB0aGFuIG92ZXJsYWlkIHNvICovXG4vKiB0aGUgcG9zaXRpb24gaW4gdGhlIGxpc3QgaXMgYWx3YXlzIHJlYWRhYmxlLiAqL1xuLmRvY3VtZW50cy1zY3JvbGwtY29udGFpbmVyIHtcblx0bWF4LWhlaWdodDogMzJlbTtcblx0b3ZlcmZsb3cteTogYXV0bztcblx0b3ZlcmZsb3cteDogaGlkZGVuO1xuXHRwYWRkaW5nLXJpZ2h0OiAwLjVlbTtcblx0c2Nyb2xsYmFyLXdpZHRoOiB0aGluO1xuXHRzY3JvbGxiYXItY29sb3I6ICRuYXZ5IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG59XG5cbi5kb2N1bWVudHMtc2Nyb2xsLWNvbnRhaW5lcjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHR3aWR0aDogOHB4O1xufVxuXG4uZG9jdW1lbnRzLXNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcblx0YmFja2dyb3VuZDogcmdiYSgwLCA1MywgMjEwLCAwLjEyKTtcblx0Ym9yZGVyLXJhZGl1czogNHB4O1xufVxuXG4uZG9jdW1lbnRzLXNjcm9sbC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLmRvY3VtZW50cy1zY3JvbGwtbW9yZSB7XG5cdHBhZGRpbmc6IDAuNWVtIDAgMC4yNWVtO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGNvbG9yOiAkbmF2eTtcblx0Zm9udC1zaXplOiAwLjg1ZW07XG59XG5cbi8qIFdoZXRoZXIgdGhlIGxpc3QgaXMgc3RpbGwgYXJyaXZpbmcsIGVtcHR5LCBvciBzaG9ydCBvZiBvbmUgb2YgaXRzIHR3byBoYWx2ZXMuIEtlcHQgYWJvdmUgdGhlICovXG4vKiBzY3JvbGxpbmcgYXJlYSBzbyBpdCBpcyByZWFkYWJsZSB3aXRob3V0IHNjcm9sbGluZyB0byBmaW5kIGl0LiAqL1xuLmRvY3VtZW50cy1zdGF0dXMge1xuXHRwYWRkaW5nOiAwLjVlbSAwIDAuMjVlbTtcblx0Y29sb3I6ICRuYXZ5O1xuXHRmb250LXNpemU6IDAuODVlbTtcbn1cblxuLmRvY3VtZW50cy1zdGF0dXMtLWVycm9yIHtcblx0Y29sb3I6ICRkYW5nZXI7XG59XG5cbi8qIFBhZ2luZyBpcyByZXBsYWNlZCBieSB0aGUgc2Nyb2xsaW5nIGFib3ZlLCBzbyBuZy10YWJsZSdzIHBhZ2VyIGlzIG5vdCBzaG93bi4gKi9cbnBhdGllbnQtZmlsZS10YWJsZSAubmctdGFibGUtcGFnZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1jb250YWluZXIge1xuXHRib3JkZXItd2lkdGg6IDJweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG5cdHdpZHRoOiAxMDAlO1xuXHRtaW4taGVpZ2h0OiA1ZW07XG5cdHBhZGRpbmc6IDAuNWVtO1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1jb250YWluZXItZGVsZXRlIHtcblx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1jb2xvcjogJHRleHRHcmV5O1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDVlbTtcblx0cGFkZGluZzogMC41ZW07XG59XG5cbi5wcm9ncmVzcy1ub3RlLWNvbnRhaW5lci1hZG1pbiB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRvcmFuZ2U7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogNWVtO1xuXHRwYWRkaW5nOiAwLjVlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtY29udGFpbmVyLW51cnNlIHtcblx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG5cdHdpZHRoOiAxMDAlO1xuXHRtaW4taGVpZ2h0OiA1ZW07XG5cdHBhZGRpbmc6IDAuNWVtO1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1jb250YWluZXItc2NoZWR1bGVkIHtcblx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1jb2xvcjogJHRlYWw7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogNWVtO1xuXHRwYWRkaW5nOiAwLjVlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtY29udGFpbmVyLWluamVjdGlvbiB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRwdXJwbGU7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWluLWhlaWdodDogNWVtO1xuXHRwYWRkaW5nOiAwLjVlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtYm9sZCB7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJztcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbn1cblxuLnByb2dyZXNzLW5vdGUtYm9sZC1kZWxldGUge1xuXHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Y29sb3I6ICR0ZXh0R3JleSAhaW1wb3J0YW50O1xufVxuXG4ucHJvZ3Jlc3Mtbm90ZS1saW5rIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJztcbn1cblxuLnBhbmVsLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnO1xufVxuXG4jc2Nyb2xsYWJsZS1kcm9wZG93bi1tZW51IC5kcm9wZG93bi1tZW51IHtcblx0aGVpZ2h0OiAxMGVtO1xuXHRvdmVyZmxvdy15OiBhdXRvO1xuXHRtYXJnaW4tdG9wOiAtMTIuNWVtO1xuICB9XG5cbi5lcnJvci1tZXNzYWdlIHtcblx0Y29sb3I6ICNhOTQ0NDI7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRtYXJnaW4tdG9wOiA1cHg7XG59XG5cbi5kaWFsb2ctY29udGVudC1ib3gge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGhlaWdodDozMnJlbTtcblx0d2lkdGg6IDEwMCU7XG59XG5cbi5pbnZvaWNlLWl0ZW0tY2VsbCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMC41cmVtO1xufVxuXG4uaW52b2ljZS1jb2RlLWxhYmVsIHtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdHBhZGRpbmctbGVmdDogMC41cmVtO1xuXHRwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG59XG5cbi5pbnZvaWNlLWl0ZW0tcm93IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRnYXA6IDFyZW07XG59XG5cbi5pbnZvaWNlLXJlZmVyZW5jZS1yb3cge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdGdhcDogMXJlbTtcblx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG59XG5cbi5pbnZvaWNlLWRldGFpbHMtY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0Z2FwOiAwLjVyZW07XG5cdG1hcmdpbi1sZWZ0OiA2MCU7XG5cdG1hcmdpbi1yaWdodDogNCU7XG59XG5cbi5pbnZvaWNlLWRldGFpbHMtc2VjdGlvbiB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMC41cmVtO1xuXHRwYWRkaW5nLWJvdHRvbTogMXJlbTtcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDogMXB4O1xuXHRib3JkZXItYm90dG9tLWNvbG9yOiBncmF5O1xuXHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbn1cblxuLmludm9pY2UtZGV0YWlscy1yb3cge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRnYXA6IDFyZW07XG5cdGNvbG9yOiAkbmF2eTtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4udmlldy1pbnZvaWNlLW1vZGFsIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5oZWFkZXItZ3JvdXAge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZGlzbWlzcy1jbG9zZS1pY29uIHtcblx0Y29sb3I6ICR3aGl0ZTtcblx0Zm9udC1zaXplOiAyMHB4O1xuXHRhbGlnbi1zZWxmOiBlbmQ7XG5cdG1hcmdpbi1yaWdodDogMTElO1xufVxuXG4vKiBBIHJvdyBvZiBhY3Rpb24gaWNvbnMgaW5zaWRlIGEgdGFibGUgY2VsbC4gTm90IGEgZmxleCBjb250YWluZXI6IHRoaXMgY2xhc3Mgc2l0cyBvbiB0aGUgPHRkPiwgYW5kIGEgZmxleFxuICAgdGFibGUgY2VsbCBkcm9wcyBvdXQgb2YgdGhlIHRhYmxlJ3Mgcm93IGxheW91dCAtIHRoZSBicm93c2VyIHNpemVzIGl0IHRvIGl0cyBvd24gY29udGVudCwgc28gdGhlIGNlbGwnc1xuICAgYm90dG9tIGJvcmRlciBpcyBkcmF3biBhdCB0aGUgaGVpZ2h0IG9mIHRoZSBpY29ucyBhbmQgbm8gbG9uZ2VyIGxpbmVzIHVwIHdpdGggdGhlIGNlbGxzIGVpdGhlciBzaWRlLiAqL1xuLmljb25zLXJvdyB7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0PiAqIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0fVxuXG5cdD4gKiArICoge1xuXHRcdG1hcmdpbi1sZWZ0OiAxcmVtO1xuXHR9XG59XG5cbi5tZC1kaWFsb2ctY29udGFpbmVyIHtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0Z2FwOiAwLjVyZW07XG59XG5cbiNiaWxsaW5nLWRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLW1lbnUge1xuXHRtYXgtaGVpZ2h0OiAyMHJlbTtcblx0b3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4ucHJvZ3Jlc3Mtbm90ZS1oZWFkZXIge1xuXHRtYXJnaW4tbGVmdDogMHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDBweDtcblx0ZGlzcGxheTogZmxleDtcblx0d2lkdGg6IDEwMCU7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0bWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLnByb2dyZXNzLW5vdGUtaGVhZGVyLWNoaWxkIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuXHRnYXA6IDFyZW07XG59XG5cblxuLmZjLXRvb2xiYXIgaDIge1xuXHRmb250LXNpemU6IDE2cHg7XG5cdHBhZGRpbmctdG9wOiAwLjVyZW07XG59XG5cbi5uaGktY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0Z2FwOiAxcmVtO1xufVxuXG4ubmhpLWNvbnRhaW5lci1sZWZ0IHtcblx0d2lkdGg6IDUwJTtcbn1cblxuLm5oaS1jb250YWluZXItcmlnaHQge1xuXHR3aWR0aDogNTAlO1xufVxuXG4ubmFtZS1yb3ctY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAwLjVyZW07XG59XG5cbi5yZWQtbGFiZWwge1xuXHRjb2xvcjogcmVkICFpbXBvcnRhbnQ7XG59XG5cbi5uaGktY29sdW1uIHtcblx0bWF4LXdpZHRoOiAxMHJlbTtcblx0dGV4dC13cmFwOiB3cmFwO1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG59XG5cbi5uaGktbGFiZWwge1xuXHR0ZXh0LXdyYXA6IHdyYXA7XG5cdHdvcmQtd3JhcDogYnJlYWstd29yZDtcblx0bWF4LXdpZHRoOiA4MCU7XG59XG5cbi5wcm9ncmVzcy1ub3RlLXByb2NlZHVyZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGdhcDogMXJlbTtcbn1cblxuLmZjLW1vcmUtcG9wb3ZlciB7XG5cdG1heC1oZWlnaHQ6IDk1JTtcblx0b3ZlcmZsb3cteTogYXV0bztcbn1cblxuLnNlYXJjaC1yYWRpby1sYWJlbCB7XG5cdGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHRmb250LWZhbWlseTogJ0dvcmRpdGEgTWVkaXVtJyAhaW1wb3J0YW50O1xuXHRmb250LXNpemU6IDE2cHg7XG59XG5cbi5wYXRpZW50LXRhYmxlLXRleHQge1xuXHRjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcbn1cblxuLnJlZC10ZXh0IHtcblx0Y29sb3I6IHJlZDtcbn1cblxuLnRhc2stbGFiZWwtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbn1cblxuLnRhc2stbGFiZWwtY2hpbGQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnRhc2stbGlzdC1wYXRpZW50IHtcblx0d2lkdGg6IDE1JTtcblx0LyogdGV4dC1hbGlnbjogY2VudGVyOyAqL1xufVxuXG4udGFzay1saXN0LWFzc2lnbmVkIHtcblx0d2lkdGg6IDIwJTtcblx0LyogdGV4dC1hbGlnbjogY2VudGVyOyAqL1xufVxuXG4udGFzay1saXN0LWRlc2NyaXB0aW9uIHtcblx0d2lkdGg6IDMwJTtcblx0LyogdGV4dC1hbGlnbjogY2VudGVyOyAqL1xuXHRcbn1cblxuLnRhc2stbGlzdC1zdGF0dXMge1xuXHR3aWR0aDogNSU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cbn1cblxuLnRhc2stbGlzdC1kZWxldGUge1xuXHR3aWR0aDogMyU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRhc2stbGlzdC1kdWUge1xuXHR3aWR0aDogNyU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cbn1cblxuLnRhc2stbGlzdC1sYWJlbCB7XG5cdHdpZHRoOiAxMiU7XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cbn1cblxuLnRhc2stbGlzdC1jb2xvciB7XG5cdHdpZHRoOiAycmVtO1xuXHRoZWlnaHQ6IDJyZW07XG5cdC8qIHRleHQtYWxpZ246IGNlbnRlcjsgKi9cblx0Ym9yZGVyLXJhZGl1czogMC41cmVtO1xufVxuXG4udGFzay1kb25lIHtcblx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG59XG5cbi5idXR0b24tZm9vdGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAxcmVtO1xufVxuXG4ubmF2LWxpIHtcblx0aGVpZ2h0OiAyLjVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDIuNXJlbTtcbn1cblxuLm1kLWJhZGdlIHtcblx0ei1pbmRleDogODAgIWltcG9ydGFudDtcbiB9XG5cbiAuc2lnbi1idXR0b25zLWdyb3VwIHtcbiBcdGRpc3BsYXk6IGZsZXg7XG4gXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuIFx0Z2FwOiAxcmVtO1xuXHR3aWR0aDogMTAwJTtcblx0bWFyZ2luLWxlZnQ6IDFyZW07XG4gfVxuXG4gLnNpZ24tYnV0dG9ucy1jb250YWluZXIge1xuIFx0ZGlzcGxheTogZmxleDtcbiBcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO1xuIH1cblxuIC5oZWFkZXItbGVmdC1hbGlnbiA+IHRoZWFkID4gdHIgPiB0aCB7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5sdmwtb3ZlciB7XG5cdC8qIGFwcGxpZWQgdG8gYSBkcm9wIHRhcmdldCB3aGVuIGEgZHJhZ2dhYmxlIG9iamVjdCBpcyBvdmVyIGl0ICovXG5cdGJvcmRlcjogMnB4IGRhc2hlZCBibGFjayAhaW1wb3J0YW50O1xufVxuXG4ubHZsLXRhcmdldCB7XG5cdC8qIGFwcGxpZWQgdG8gYWxsIGRyb3AgdGFyZ2V0cyB3aGVuIGEgZHJhZyBvcGVyYXRpb24gYmVnaW5zLCB1c2VkIHRvIGluZGljYXRlIGRyb3AgdGFyZ2V0cyBvbiBhIHBhZ2UgKi9cblx0YmFja2dyb3VuZC1jb2xvcjogI2RkZDtcblx0b3BhY2l0eTogLjU7XG59XG5cbltkcmFnZ2FibGVdIHtcblx0LW1vei11c2VyLXNlbGVjdDogbm9uZTtcblx0LWtodG1sLXVzZXItc2VsZWN0OiBub25lO1xuXHQtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcblx0LyogUmVxdWlyZWQgdG8gbWFrZSBlbGVtZW50cyBkcmFnZ2FibGUgaW4gb2xkIFdlYktpdCAqL1xuXHQta2h0bWwtdXNlci1kcmFnOiBlbGVtZW50O1xuXHQtd2Via2l0LXVzZXItZHJhZzogZWxlbWVudDtcblx0Y3Vyc29yOiBtb3ZlO1xuXHRib3JkZXI6MXB4IHNvbGlkIGJsYWNrO1xufVxuXG4ucGVnIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdGJvcmRlci13aWR0aDogMHB4O1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdHdpZHRoOiBhdXRvO1xuXHRoZWlnaHQ6M3JlbTtcblx0bWFyZ2luOiAxMHB4O1xuXHRwYWRkaW5nOiAwLjVyZW07XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDE5Q0QyO1xuXHRjb2xvcjogd2hpdGU7XG59XG5cbi5zbG90IHtcblx0bWFyZ2luLXJpZ2h0OjJweDtcblx0bWFyZ2luLXRvcDoycHg7XG5cdHdpZHRoOjI1cHg7XG5cdGhlaWdodDoyNXB4O1xuICAgIGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbn1cblxuLmdyZXkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBncmV5O1xufVxuXG5wcmUgc3Ryb25nIHtcblx0Zm9udC1zaXplOjEycHQ7XG59XG5cbi5tb2RhbC1jbG9zZSB7XG5cdHotaW5kZXg6IDE7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiA3cmVtO1xufVxuXG4ubXktZHJvcC16b25lIHtcblx0Ym9yZGVyOiBkb3R0ZWQgM3B4IGxpZ2h0Z3JheTtcbn1cblxuLm52LWZpbGUtb3ZlciB7XG5cdGJvcmRlcjogZG90dGVkIDNweCByZWQ7XG59XG5cbi8qIERlZmF1bHQgY2xhc3MgYXBwbGllZCB0byBkcm9wIHpvbmVzIG9uIG92ZXIgKi9cbi5hbm90aGVyLWZpbGUtb3Zlci1jbGFzcyB7XG5cdGJvcmRlcjogZG90dGVkIDNweCBncmVlbjtcbn1cblxuLmxvY2F0aW9uLWNvbnRhaW5lciB7XG5cdG1hcmdpbi10b3A6IDAuNXJlbTtcblx0Ym9yZGVyLXdpZHRoOiAxcHg7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6IDRweDtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0cGFkZGluZzogMC41cmVtO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRjb2xvcjogJG5hdnk7XG59XG5cbi5wb3BvdmVyLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGdhcDogMXJlbTtcblx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuXG5kaXYucHJpbnRDb250cm9sc1xue1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiNlZGYwZWM7XG5cdGhlaWdodDoxMDBweDtcblx0cGFkZGluZzogNXB4O1xuXHRib3R0b206MDtcblx0ZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGdhcDogMXJlbTtcbn1cblxuI2xhYmVsSW1hZ2VEaXZcbntcblx0YmFja2dyb3VuZC1jb2xvcjogI2IyYjJiMjtcblx0cGFkZGluZzogNXB4O1xuXHRtYXJnaW46IDBweDtcbn1cblxuI3ByaW50RGl2XG57XG5cdGZsb2F0OnJpZ2h0O1xuXHR3aWR0aDoxMjZweDtcbn1cblxuXG4jcHJpbnRlcnNEaXZcbntcblx0ZmxvYXQ6bGVmdDtcbn1cblxuLnByb2dyZXNzLWJhci13YXJuaW5nIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG59XG5cbi5jbGluaWMtbGV0dGVycy1mcmFtZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtaGVpZ2h0OiA1MHZoO1xuXHRvdmVyZmxvdy15OiBzY3JvbGw7XG5cdHNjcm9sbGJhci13aWR0aDogbm9uZTtcbn1cblxuLmNsaW5pYy1sZXR0ZXJzLWNvbnRhaW5lciB7XG5cdGJvcmRlci13aWR0aDogMnB4O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRib3JkZXItcmFkaXVzOiA4cHg7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDVlbTtcblx0cGFkZGluZzogMC41ZW07XG5cdGN1cnNvcjogcG9pbnRlcjtcblxuXHQmOmhvdmVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcblxuXHRcdC5jbGluaWMtbGV0dGVycy1ib2xkIHtcblx0XHRcdGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdC5jbGluaWMtbGV0dGVycy1ib2xkIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCc7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxufVxuXG4uY2xpbmljLWxldHRlcnMtY29udGVudCB7XG5cdHdpZHRoOiAxMDAlO1xuXHRkaXNwbGF5OiBmbGV4OyBcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNsaW5pYy10ZW1wbGF0ZS1tZW51IHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0YWxpZ24taXRlbXM6IGVuZDtcbn1cblxuLmNsaW5pYy1sZXR0ZXItZm9vdGVyIHtcblx0bWFyZ2luLWxlZnQ6IC01NXB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogLTU1cHggIWltcG9ydGFudDtcblx0ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcblx0cGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDtcblx0bWFyZ2luLWJvdHRvbTogLTNyZW0gIWltcG9ydGFudDtcbn1cblxuLm1kLWNoaXBzIHtcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY2FyZS10ZWFtLXdpZHRoIHtcblx0d2lkdGg6IDM2cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5ub3RlLWVkaXRvciAubm90ZS1mcmFtZSAubm90ZS1lZGl0aW5nLWFyZWEgLm5vdGUtZWRpdGFibGUge1xuXHRjb2xvcjogIzAwMDAwMDtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInLCBzYW5zLXNlcmlmO1xufVxuXG4ubm90ZS1lZGl0YWJsZT5wIHtcblx0Y29sb3I6ICMwMDAwMDA7XG59XG5cbi5ub3RlLWVkaXRvci5ub3RlLWFpcmZyYW1lIC5ub3RlLXN0YXR1cy1vdXRwdXQsXG4ubm90ZS1lZGl0b3Iubm90ZS1mcmFtZSAubm90ZS1zdGF0dXMtb3V0cHV0IHtcblx0Ym9yZGVyLXRvcC13aWR0aDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbiAgQG1lZGlhIHByaW50IHtcblx0QHBhZ2Uge1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41aW47XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC41aW47XG4gICAgICAgIG1hcmdpbi10b3A6IDAuM2luO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjNpbjtcbiAgICAgIH1cbiAgfSBcblxuLm5vdGUtZWRpdG9yLWRpYWdub3Npcy10YWJsZSB7XG4gICAgd2lkdGg6IDYwJTtcblx0bWFyZ2luLWxlZnQ6IDIwJTtcblx0dGFibGUtbGF5b3V0OiBmaXhlZDtcblxuXHR0aCxcblx0dGQge1xuXHRcdHdpZHRoOiA1MCU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cdH1cbn0gIFxuXG5cbi5oZWFkLW5vLWxpbmsge1xuXHRjb2xvcjogJG5hdnk7XG5cdGZvbnQtc2l6ZTogMTRweDtcblx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xufVxuXG4uaW50cm8tY3VzdG9tVG9vbHRpcCAqIHtcbiAgY29sb3I6ICM0YTRhNGE7XG4gIGZvbnQtc2l6ZTogMTVweFxufVxuIFxuLmludHJvLWN1c3RvbVRvb2x0aXAgLmludHJvanMtdG9vbHRpcC10aXRsZSB7XG4gIGNvbG9yOiAkbmF2eTtcbn1cblxuLmRyb3Bkb3duLW1lbnVbdWliLXR5cGVhaGVhZC1wb3B1cF0ge1xuICAgIG1heC1oZWlnaHQ6IDI1MHB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHotaW5kZXg6IDEwNTA7XG59XG5cbi8qIC5tdWktYWxlcnQge1xuICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gIG1hcmdpbjogMXJlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xufSAqL1xuXG4ubXVpLWFsZXJ0LWluZm8ge1xuICBiYWNrZ3JvdW5kOiAjZThmNGZkO1xuICBjb2xvcjogIzA1NTE2MDtcbiAgYm9yZGVyLWNvbG9yOiAjYjZlMGZlO1xufVxuXG4ubXVpLWFsZXJ0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kOiAjZWRmN2VkO1xuICBjb2xvcjogIzFlNDYyMDtcbiAgYm9yZGVyLWNvbG9yOiAjYzhlNmM5O1xufVxuXG4ubXVpLWFsZXJ0LXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kOiAjZmZmNGU1O1xuICBjb2xvcjogIzY2M2MwMDtcbiAgYm9yZGVyLWNvbG9yOiAjZmZlY2I1O1xufVxuXG4ubXVpLWFsZXJ0LWVycm9yIHtcbiAgYmFja2dyb3VuZDogI2ZkZWNlYTtcbiAgY29sb3I6ICM2MTFhMTU7XG4gIGJvcmRlci1jb2xvcjogI2Y1YzJjNztcbn1cblxuLm11aS1hbGVydCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMTJweCA0MHB4IDEycHggMTZweDtcbiAgbWFyZ2luOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5tdWktYWxlcnQtY2xvc2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiA4cHg7XG4gIHRvcDogOHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDAuNjtcbn1cblxuLm11aS1hbGVydC1jbG9zZTpob3ZlciB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uby1jbGFzcyB7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IDEwMCU7XG59XG5cbi8qIFNpdHMgYmVzaWRlIGEgZG9jdW1lbnQncyBuYW1lIHdoaWxlIGl0cyBmaWxlIGlzIHN0aWxsIGJlaW5nIGFuYWx5c2VkLiBUaGUgYXBwJ3Mgc3Bpbm5lciBpc1xuICAgY29uZmlndXJlZCBwYWdlLXNpemVkLCBzbyB0aGlzIGJveCBnaXZlcyB0aGUgaW5saW5lIG9uZSBzb21ld2hlcmUgaXRzIG93biBzaXplIHRvIGNlbnRyZSBpbiAtXG4gICBzcGluLmpzIHBvc2l0aW9ucyBpdHNlbGYgYWdhaW5zdCB0aGUgbmVhcmVzdCBwb3NpdGlvbmVkIGFuY2VzdG9yLiAqL1xuLmlubGluZS1zcGlubmVyIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHdpZHRoOiAxNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdG1hcmdpbi1yaWdodDogNnB4O1xufVxuXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTZWN0aW9uIGRpdmlkZXJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFRoZSBydWxlIHRoYXQgYnJlYWtzIGEgbG9uZyBjbGluaWNhbCBmb3JtIGludG8gc2VjdGlvbnMgLSB3aGF0IHRoZVxuLyogcHJvZ3Jlc3Mgbm90ZSBoYXMgYWx3YXlzIGRyYXduIGlubGluZS4gR2l2ZW4gYSBjbGFzcyBzbyB0aGUgc3BhY2luZ1xuLyogaXMgZGVjaWRlZCBvbmNlLCBhbmQgc28gdGhlIGNvbGxhcHNlIHJ1bGUgYmVsb3cgY2FuIGZpbmQgb25lLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2VjdGlvbi1kaXZpZGVyIHtcblx0Ym9yZGVyOiBub25lO1xuXHRib3JkZXItdG9wOiAycHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRtYXJnaW46IDIuNWVtIDA7XG59XG5cbi8qIFRoZSBhdXRvbWF0aW9uIHRhc2sgY2FycmllcyBpdHMgb3duIHRyYWlsaW5nIGRpdmlkZXIsIGluc2lkZSB0aGUgZ3VhcmQgdGhhdFxuICAgZGVjaWRlcyB3aGV0aGVyIGl0IHJlbmRlcnMgYXQgYWxsIC0gaXQgaXMgaGlkZGVuIHdoZW5ldmVyIHRoZSBwcmFjdGljZSBoYXMgbm9cbiAgIGF1dG9tYXRpb24gc2V0dGluZyBmb3IgdGhhdCBub3RlIHR5cGUsIHdoaWNoIHRoZSBzdXJyb3VuZGluZyB2aWV3IGhhcyBubyB3YXlcbiAgIG9mIGtub3dpbmcuIFdoZXJlIGEgc2VjdGlvbiBkaXZpZGVyIGFscmVhZHkgZm9sbG93cyBpdCwgdGhhdCB3b3VsZCBkcmF3IHR3b1xuICAgcnVsZXMgd2l0aCBub3RoaW5nIGJldHdlZW4gdGhlbSwgc28gdGhlIHN0YW5kaW5nIG9uZSBzdGFuZHMgZG93biBmb3IgdGhlXG4gICBjb21wb25lbnQncy5cbiAgIDpoYXMoKSBpcyB3aGF0IGxldHMgYSBzaWJsaW5nIGFzayB3aGV0aGVyIHRoZSBjb21wb25lbnQgYWN0dWFsbHkgZHJld1xuICAgYW55dGhpbmc7IGFuIGVtcHR5IDxhdXRvbWF0aW9uLXRhc2s+IGVsZW1lbnQgaXMgbGVmdCBiZWhpbmQgZWl0aGVyIHdheS4gT24gYVxuICAgYnJvd3NlciB3aXRob3V0IGl0IHRoZSBmYWxsYmFjayBpcyB0aGUgZG91YmxlIHJ1bGUgd2UgaGFkIGJlZm9yZSAtIGNvc21ldGljLFxuICAgbm90IGJyb2tlbi4gKi9cbmF1dG9tYXRpb24tdGFzazpoYXMoLnByZS1vcC1mb3JtKSArIC5zZWN0aW9uLWRpdmlkZXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENvcHktdG8tdGhlLW90aGVyLWV5ZSBpY29uIChjb3B5LWV5ZS1pY29uIGNvbXBvbmVudClcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNvcHktZXllLWljb24ge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHdpZHRoOiAxOXB4O1xuXHRoZWlnaHQ6IDI0cHg7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdGNvbG9yOiAkaWNvbi1saW5lO1xufVxuIiwiYnV0dG9uLmJ0biB7XG5cdGJvcmRlci1yYWRpdXM6IDI0cHg7XG59XG5cbi5idG4tZHJvcGRvd24tbXVsdGlzZWxlY3Qge1xuXHRoZWlnaHQ6IDM0cHg7XG5cdHRleHQtYWxpZ246IHN0YXJ0O1xuXHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAkbmF2eTtcblx0cGFkZGluZzogNHB4IDE4cHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0d2lkdGg6IDEwMCU7XG5cdG1pbi13aWR0aDogMTZlbTtcblx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblxuXHQmOmhvdmVyLFxuXHQmOmFjdGl2ZSB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkbmF2eSBsKDM1JSkpO1xuXHRcdG91dGxpbmU6IDA7XG5cdH1cblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdG91dGxpbmU6IDA7XG5cdH1cblx0Jjpob3Zlcjpmb2N1cyB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxufVxuXG4uYnRuLW5hdnkge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0Y29sb3I6ICR3aGl0ZTtcblx0cGFkZGluZzogNHB4IDE4cHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0d2lkdGg6IDEwMCU7XG5cdG1heC13aWR0aDogMjIwcHg7XG5cdHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG5cblx0Jjpob3Zlcixcblx0JjphY3RpdmUge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJG5hdnkgbCgzNSUpKTtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG5cdCY6Zm9jdXMge1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0b3V0bGluZTogMDtcblx0fVxufVxuXG4vKiBGb3IgYSBuYXZ5IGJ1dHRvbiB3aG9zZSBsYWJlbCBkb2VzIG5vdCBmaXQgdGhlIDIyMHB4IGNhcCBhYm92ZS4gQm9vdHN0cmFwJ3MgLmJ0biBpcyBub3dyYXAsIHNvIGFuXG4gICBvdmVyc2l6ZWQgbGFiZWwgcnVucyBvdXQgcGFzdCB0aGUgYnV0dG9uJ3MgZWRnZSByYXRoZXIgdGhhbiB3cmFwcGluZyBpbnNpZGUgaXQuXG5cbiAgIFNpemluZyB0byB0aGUgY29udGVudCBrZWVwcyB0aGUgbGFiZWwgd2hvbGUgYW5kIHRoZSBidXR0b24gYXJvdW5kIGl0LiBtaW4td2lkdGggaG9sZHMgdGhlIGZsb29yIGF0XG4gICB0aGUgMjIwcHggZXZlcnkgb3RoZXIgbmF2eSBidXR0b24gZ2V0cywgc28gYSBidXR0b24gd2hvc2UgbGFiZWwgY2hhbmdlcyBiZXR3ZWVuIGEgbG9uZyBhbmQgYSBzaG9ydFxuICAgb25lIC0gYXMgdGhlIHBhdGllbnQgc2F2ZSBidXR0b24gZG9lcyAtIGRvZXMgbm90IHNocmluayB0byBhIHN0dWIgd2hlbiB0aGUgc2hvcnQgb25lIGlzIHNob3dpbmcuXG4gICBtYXgtd2lkdGggYW5kIG5vcm1hbCB3cmFwcGluZyBhcmUgdGhlIGNlaWxpbmc6IGlmIHRoZSBsYWJlbCBvciB0aGUgZm9udCBldmVyIG91dGdyb3dzIHRoZSBzcGFjZVxuICAgYXZhaWxhYmxlLCB0aGUgYnV0dG9uIHN0YXlzIGluc2lkZSBpdHMgY29udGFpbmVyIGFuZCB0aGUgdGV4dCB3cmFwcyB3aXRoaW4gaXQuICovXG4uYnRuLmJ0bi1uYXZ5LmJ0bi1maXQtbGFiZWwge1xuXHR3aWR0aDogYXV0bztcblx0bWluLXdpZHRoOiAyMjBweDtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4uYnRuLWNhbmNlbCB7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRjb2xvcjogJHRleHRHcmV5O1xuXHRwYWRkaW5nOiA0cHggMThweDtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkY2FuY2VsQm9yZGVyO1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiAyMjBweDtcblx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblxuXHQmOmhvdmVyLFxuXHQmOmFjdGl2ZSB7XG5cdFx0Y29sb3I6ICRsb2dvdXRHcmV5O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCR3aGl0ZSBsKDkwJSkpO1xuXHRcdG91dGxpbmU6IDA7XG5cdH1cblx0Jjpmb2N1cyB7XG5cdFx0b3V0bGluZTogMDtcblx0fVxufVxuXG4uYnRuLWN5YW4ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAkY3lhbjtcblx0Ym9yZGVyOiAxcHggc29saWQgJGN5YW47XG5cdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRmb250LXNpemU6IDEycHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDIyMHB4O1xuXHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcblxuXHQmOmhvdmVyLFxuXHQmOmFjdGl2ZSB7XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCR3aGl0ZSBsKC04JSkpO1xuXHR9XG5cdCY6Zm9jdXMge1xuXHRcdGNvbG9yOiAkY3lhbjtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG59XG5cbi5idG4tY3lhbi1zb2xpZCB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjeWFuO1xuXHRjb2xvcjogJHdoaXRlO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkY3lhbjtcblx0cGFkZGluZzogNHB4IDE4cHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0d2lkdGg6IDEwMCU7XG5cdG1heC13aWR0aDogMjIwcHg7XG5cdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlO1xuXG5cdCY6aG92ZXIsXG5cdCY6YWN0aXZlIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRjeWFuIGwoLTUlKSk7XG5cdH1cblx0Jjpmb2N1cyB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG59XG5cbi5idG4tbW9ycGgtd3JhcCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cblx0LmJ0bi1tb3JwaCB7XG5cdFx0d2lkdGg6IDI3MHB4O1xuXHRcdG1heC13aWR0aDogMjcwcHg7XG5cdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDEwcHg7XG5cdH1cblxuXHQubW9ycGgtcmVzdWx0IHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA1MCU7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdGxlZnQ6IDI4MHB4O1xuXHRcdHdpZHRoOiAxMjBweDtcblx0fVxufVxuXG4jZG93bmxvYWQtcmVmZXJyYWwtYnV0dG9uIHtcblx0d2lkdGg6IDI0MHB4O1xufVxuXG4vKiBDb250YWluZXIgZm9yIHRoZSBBSSBlbGVtZW50cyAqL1xuLmFpLXZlcmlmaWNhdGlvbi1ncm91cCB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICAvKiBTYW1lIGhlaWdodCBhcyAuZGlhZ25vc2lzLXJvdy1hY3Rpb25zIGFuZCBwaW5uZWQgdG8gdGhlIGxpbmUgdG9wIHJhdGhlciB0aGFuIHRoZSB0ZXh0XG4gICAgICAgYmFzZWxpbmUsIHNvIHRoZSBiYWRnZSBzaXRzIGxldmVsIHdpdGggdGhlIGluZm8vZWRpdCBpY29ucyBiZXNpZGUgaXQuICovXG4gICAgaGVpZ2h0OiAxLjVlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4vKiBTdWJ0bGUsIHRoZW1lLW1hdGNoaW5nIGJhZGdlIChTb2Z0IGN5YW4vYmx1ZSBiYWNrZ3JvdW5kLCBOYXZ5IHRleHQpICovXG4uYWktYmFkZ2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNFOEY0Rjg7IC8qIG1hdGNoZXMgYSBzb2Z0IHZlcnNpb24gb2YgeW91ciBiZy1jeWFuICovXG4gICAgY29sb3I6ICMxQTI5NDI7IC8qIG1hdGNoZXMgeW91ciB0ZXh0LWRhcmtOYXZ5ICovXG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4OyAvKiBwaWxsIHNoYXBlICovXG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBNZWRpdW0nLCBzYW5zLXNlcmlmO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEMEU0RUE7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogTWluaW1hbGlzdCBiYXNlIHN0eWxlIGZvciB0aGUgYnV0dG9ucyAqL1xuLmFpLWJ0bi1hY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNFMEUwRTA7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDJweCA2cHg7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlLWluLW91dDtcbiAgICBjb2xvcjogIzg4ODsgLyogU29mdCBncmV5IGJ5IGRlZmF1bHQgKi9cbn1cblxuLyogSG92ZXIgZWZmZWN0IGZvciBBY2NlcHQ6IEZpbGxzIGluIHdpdGggeW91ciBOYXZ5IHRoZW1lICovXG4uYWktYnRuLWFjdGlvbi5hY2NlcHQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxQTI5NDI7IFxuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1jb2xvcjogIzFBMjk0Mjtcbn1cblxuLyogSG92ZXIgZWZmZWN0IGZvciBEZWNsaW5lOiBTbGlnaHRseSBkYXJrZXIgZ3JleSB0byBzaWduaWZ5IHJlbW92YWwgd2l0aG91dCBzY3JlYW1pbmcgXCJEQU5HRVJcIiAqL1xuLmFpLWJ0bi1hY3Rpb24uZGVjbGluZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDtcbiAgICBjb2xvcjogIzMzMzMzMztcbiAgICBib3JkZXItY29sb3I6ICNDQ0NDQ0M7XG59XG5cbi8qIEluZm8gKyBlZGl0IGljb25zIGF0IHRoZSBzdGFydCBvZiBhIGRpYWdub3NpcyByb3csIGNlbnRyZWQgb24gdGhlIGZpcnN0IGxpbmUgb2YgaXRzIHRleHQgKi9cbi5kaWFnbm9zaXMtcm93LWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA1cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgaGVpZ2h0OiAxLjVlbTsgLyogYWJvdXQgb25lIGxpbmUgb2Ygcm93IHRleHQgKi9cblxuICAgIC5mYS1pbmZvLWNpcmNsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLyogRWRpdCAocGVuY2lsKSBidXR0b24gb24gYSBkaWFnbm9zaXMgcm93IC0gYmFyZSBpY29uLCBubyBjaHJvbWUgKi9cbi5kaWFnbm9zaXMtZWRpdC1idG4ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAycHg7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDAuNztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbi1vdXQ7XG5cbiAgICBpbWcge1xuICAgICAgICB3aWR0aDogMTVweDtcbiAgICAgICAgaGVpZ2h0OiAxNXB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgIG9wYWNpdHk6IDAuMzU7XG4gICAgfVxufVxuIiwibWFpbiB7XG5cdG1pbi1oZWlnaHQ6IDEwMHZoO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoJG5hdnktYmctZ3JhZGllbnQtZGFyaywgJG5hdnktYmctZ3JhZGllbnQtbGlnaHQpLCB1cmwoJ2h0dHBzOi8vY2F0dHJheC1tZWRpYS5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2ltYWdlcy9zdXJnZW9uX2ltYWdlX2Nyb3BwZWQyLmpwZycpO1xuXHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbi5uYXYtd3JhcC1mbGV4IHtcblx0cGFkZGluZzogMzBweCAwO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cblx0Lm5hdi1sb2dvLXdyYXAge1xuXHRcdGhlaWdodDogMTIwcHg7XG5cblx0XHRpbWcge1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdH1cblxuXHR9XG5cblx0Lm5hdi1uYXYtd3JhcCB7XG5cdFx0YWxpZ24tc2VsZjogZmxleC1lbmQ7XG5cblx0XHR1bCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0cGFkZGluZzogNXB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogJGxpZ2h0R3JleTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDI1cHg7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMS4ycHg7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHRsaSB7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cdFx0XHRcdHBhZGRpbmc6IDJweCAxMHB4O1xuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0Y29sb3I6ICRjeWFuO1xuXG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogJGN5YW47XG5cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubmF2LXVzZXItd3JhcCB7XG5cdFx0YWxpZ24tc2VsZjogZmxleC1zdGFydDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0dWwge1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDEuMXB4O1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdHBhZGRpbmc6IDhweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyNHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdFx0bGkge1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAyNHB4O1xuXHRcdFx0XHRwYWRkaW5nOiAwcHggMTBweDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjNjYwMTk1LCAkbmF2eSk7XG5cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLnBhdGllbnQtaGVhZGVyIHtcblx0Lm5hdi1uYXYtd3JhcCB1bCBsaSBhIHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Y29sb3I6ICMwMDAwQ0Q7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cblx0fVxufVxuXG4uYnRuLWxvZ291dCB7XG5cdGhlaWdodDogMjBweDtcblx0cGFkZGluZzogMHB4IDEycHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Y29sb3I6ICR0ZXh0R3JleTtcbn1cblxucC5idG4tbG9nb3V0IHtcblx0bWFyZ2luLWJvdHRvbTogMDtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXRvcDogMnB4O1xuXHR2ZXJ0aWNhbC1hbGlnbjogY2VudGVyO1xuXHRjb2xvcjogJHRleHRHcmV5O1xufVxuXG4ubG9jayB7XG5cdGhlaWdodDogMTJweDtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRib3R0b206IDJweDtcblx0bWFyZ2luLWxlZnQ6IDEwcHg7XG59XG5cbi5uby1wYWQtbGVmdCB7XG5cdHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4uY29uc3VsdC10aW1lci1ib3gge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG5cdGdhcDogJGZvbnQtc2l6ZS1iYXNlO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHJpZ2h0OiAkZm9udC1zaXplLWJhc2U7XG59XG5cbi50aW1lci1ib3gge1xuXHRib3JkZXItd2lkdGg6IDFweDtcblx0Ym9yZGVyLWNvbG9yOiAkd2hpdGUtdHAtMjA7XG5cdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdGJvcmRlci1yYWRpdXM6IDRweDtcblx0cGFkZGluZy1sZWZ0OiAwLjVyZW07XG5cdHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcblx0cGFkZGluZy10b3A6IDAuMjVyZW07XG5cdHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6ICRmb250LXNpemUtYmFzZTtcblx0bWluLXdpZHRoOiAxMHJlbTtcblx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTA1O1xufSIsIi5jb250YWluZXItd2VsY29tZSB7XG5cdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0bWluLWhlaWdodDogMTAwJTtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXJhZGl1czogMXJlbTtcblxuXHQud2VsY29tZS13cmFwIHtcblx0XHRwYWRkaW5nOiA3MHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAzMHB4O1xuXHRcdC5oMSB7XG5cdFx0XHRmb250LXNpemU6IDUwcHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0XHQud2VsY29tZS1xdWVzdGlvbiB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdH1cblx0XHRzZWxlY3QuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiA0MDBweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE4cHg7XG5cdFx0XHQvKiBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMThweDtcblx0XHRcdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDE4cHg7ICovXG5cdFx0fVxuXHR9XG59XG5cbi5jb250YWluZXItd2VsY29tZS1mb290ZXIge1xuXHRwYWRkaW5nOiAwO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmYWZmOyAvKiBPZmYtd2hpdGUgYmFja2dyb3VuZCAqL1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTZlZDsgLyogTGlnaHQgYm9yZGVyIGZvciBzZXBhcmF0aW9uICovXG59XG5cblx0LmNvbnRhaW5lci13ZWxjb21lLWZvb3RlciAuZm9vdGVyLXdyYXAge1xuXHRcdHBhZGRpbmc6IDEuNXJlbSA1JTtcblx0fVxuXG5cdFx0LmNvbnRhaW5lci13ZWxjb21lLWZvb3RlciAuZm9vdGVyLXdyYXAgdWwge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDUwMDtcblx0XHRcdGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRnYXA6IDRyZW07XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0XHQuY29udGFpbmVyLXdlbGNvbWUtZm9vdGVyIC5mb290ZXItd3JhcCB1bCBsaSB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblxuXHRcdFx0LyogQXBwbHlpbmcgdGhlIG5hdnkgY29sb3IgdG8gdGhlIGxpbmtzICovXG5cdFx0XHQuY29udGFpbmVyLXdlbGNvbWUtZm9vdGVyIC5mb290ZXItd3JhcCB1bCBhIHtcblx0XHRcdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0XHRcdHRyYW5zaXRpb246IHRleHQtZGVjb3JhdGlvbiAwLjJzIGVhc2U7XG5cdFx0XHR9XG5cblx0XHRcdFx0LyogQWRkaW5nIGEgc2ltcGxlIGhvdmVyIGVmZmVjdCAqL1xuXHRcdFx0XHQuY29udGFpbmVyLXdlbGNvbWUtZm9vdGVyIC5mb290ZXItd3JhcCB1bCBhOmhvdmVyIHtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdFx0fVxuXG5pZnJhbWUge1xuXHQvKmJvcmRlcjozcHggc29saWQgI2RkZDsqL1xuXHRib3gtc2hhZG93OiAwIDAgM3B4IDBweCByZ2JhKDAsMCwwLDAuMyk7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLmNsb3NlLWJ0biB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0cmlnaHQ6IDFlbTtcblx0dG9wOiAwLjVlbTtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGJvcmRlcjogbm9uZTtcblx0Zm9udC1zaXplOiAxLjJlbTtcblx0Y29sb3I6IGluaGVyaXQ7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBcHBvaW50bWVudCBsaXN0IGRvd25sb2FkcyAoY2FsZW5kYXIgZGF5IGhlYWRlcilcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5hcHBvaW50bWVudC1saXN0LWRvd25sb2FkcyB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDAuNzVyZW07XG5cdG1hcmdpbi1yaWdodDogMC41cmVtO1xuXG5cdGEge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0d2lkdGg6IDE2cHg7XG5cdFx0aGVpZ2h0OiAxNnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdGkge1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0fVxuXG5cdGltZyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cbiIsIi5jb250YWluZXItcmVmZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdHBhZGRpbmc6IDEwcHg7XG5cdC8qcGFkZGluZy1ib3R0b206IDIwcHg7Ki9cblx0bWFyZ2luLWJvdHRvbTogMjBweDtcblx0Ym9yZGVyLXJhZGl1czogMXJlbTtcbn1cblxuLnRvLXRvcCB7XG5cdHBvc2l0aW9uOmZpeGVkO1xuXHRib3R0b206IDRlbTtcblx0cmlnaHQ6IDRlbTtcblx0LyogcGFkZGluZzogNXB4OyAqL1xuXHQvKiBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyAqL1xuXHQvKiBiYWNrZ3JvdW5kOiByZWQ7ICovXG5cdC8qIGNvbG9yOiB3aGl0ZTsgKi9cblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0LyogZGlzcGxheTogbm9uZTsgKi9cbiAgfVxuXG4uY29udGFpbmVyLWRhc2hib2FyZCB7XG5cdEBleHRlbmQgLmNvbnRhaW5lci1yZWZlcjtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG4ucmVmZXItbmF2IHtcblx0aGVpZ2h0OiAxMDBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHBhZ2VCYWNrR3JvdW5kO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnZpZXctd3JhcCB7XG5cdHBhZGRpbmc6IDI1cHg7XG5cdHBhZGRpbmctdG9wOiAwO1xufVxuXG5oci5zdWJ0aXRsZS1saW5lLWJyZWFrIHtcblx0Ym9yZGVyLXRvcC1jb2xvcjogJGxpbmVCcmVhaztcbn1cblxuaHIuY3lhbiB7XG5cdGJvcmRlci10b3AtY29sb3I6ICRjeWFuO1xuXHRib3JkZXItdG9wLXdpZHRoOiAxcHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW1wYWN0IG9uIGxpZmUgcmV2aWV3IChhbnN3ZXJzIHN0aWxsIGluc2lkZSB0aGUgdmFsaWRpdHkgd2luZG93KVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uaW1wYWN0LXJldmlldyB7XG5cdC5pbXBhY3QtcmV2aWV3LWFuc3dlcnMge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogNzAwcHg7XG5cblx0XHR0ZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdH1cblxuXHRcdC5pbXBhY3QtcmV2aWV3LXF1ZXN0aW9uIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDIwcHg7XG5cdFx0fVxuXG5cdFx0LmltcGFjdC1yZXZpZXctYW5zd2VyIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQuaW1wYWN0LXJldmlldy1hY3Rpb25zIHtcblx0XHRidXR0b24ge1xuXHRcdFx0d2lkdGg6IDE4MHB4O1xuXHRcdH1cblxuXHRcdGJ1dHRvbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdFx0fVxuXHR9XG59XG5cblxuLnJlZmVyLW5hdi1hbmltYXRpb24ge1xuXHRoZWlnaHQ6IDEwMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnZUJhY2tHcm91bmQ7XG5cdC8qYmFja2dyb3VuZC1jb2xvcjogI0VCRUNFQTsqL1xuXHQvKmJhY2tncm91bmQtY29sb3I6IHBpbms7Ki9cblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdC8qYWxpZ24taXRlbXM6IGNlbnRlcjsqL1xuXG5cdC53b3JkLXdyYXBwZXIge1xuXHRcdC8qYmFja2dyb3VuZDogbGlnaHRibHVlOyovXG5cdFx0cGFkZGluZzogMCAxNDBweDtcblx0XHRwYWRkaW5nOiAwIDEwMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0XHRwIHttYXJnaW4tYm90dG9tOiAwO31cblx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblxuXHQuYW5pbWF0aW9uLW91dHRlci13cmFwcGVyIHtcblx0XHRtYXJnaW46IDAgMTQwcHg7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0aGVpZ2h0OiA2cHg7XG5cdFx0YmFja2dyb3VuZDogI0QyRDNENTtcblxuXG5cdFx0LnByb2cge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0ei1pbmRleDogMjtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdH1cblxuXHRcdC5pbmRpY2F0b3Ige1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAkbmF2eSAwJSwgJG5hdnkgOTAlLCAkY3lhbiA5OCUsICRjeWFuIDEwMCUpO1xuXHRcdFx0aGVpZ2h0OiA2cHg7IFxuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRsZWZ0OjA7XG5cdFx0XHR0b3A6MDtcblx0XHRcdHRyYW5zaXRpb246IGFsbCAxLjVzIGVhc2U7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuXHRcdFx0Lypib3JkZXItcmFkaXVzOiA1MCU7Ki9cblx0XHRcdGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMHB4IDEwcHg7XG5cdFx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweCAxMHB4O1xuXHRcdH1cblxuXHRcdC5pbmRpY2F0b3Iuc2VhcmNoIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTk1JSkgIWltcG9ydGFudDsgfVxuXHRcdC5pbmRpY2F0b3IuZXhhbWluYXRpb24ge3RyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTt9XG5cdFx0LmluZGljYXRvci5pbXBhY3QsXG5cdFx0LmluZGljYXRvci5jb21wbGV0ZSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuXHRcdFx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweCAwcHg7XG5cdFx0XHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMHB4IDBweDtcdFxuXHRcdH1cblx0fVxuXG5cbn0iLCIuc2VhcmNoLXdyYXAge1xufVxuXG4uc2VhcmNoLWZvcm0ge1xuXHRwYWRkaW5nLXRvcDogMTBweDtcblx0LyogcGFkZGluZy1ib3R0b206IDEwcHg7ICovXG5cdC5mb3JtLWdyb3VwIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMCwwLDAsLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsMTc1LDIzMywuNik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGxhYmVsIHtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHR9XG5cdH1cblxuXHQuZm9ybS1ncm91cC1sYXN0TmFtZSB7XG5cdFx0aW5wdXQge1xuXHRcdFx0d2lkdGg6IDI1MHB4O1xuXHRcdH1cblx0fVxuXG5cdC5mb3JtLWdyb3VwLURPQiB7XG5cdFx0LyogbWFyZ2luLWxlZnQ6IDUwcHg7ICovXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogODBweDtcblxuXHRcdFx0JjpudGgtY2hpbGQoMykge1xuXHRcdFx0XHRtYXJnaW46IDAgM3B4O1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvKiBtYXJnaW4tYm90dG9tOiAxcmVtOyAqL1xuXHR9XG5cdC5mb3JtLWdyb3VwLWJ1dHRvbnMge1xuXHRcdC8qcG9zaXRpb246IHJlbGF0aXZlOyovXG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogLTEwcHg7XG5cdFx0YnV0dG9uOmZpcnN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0fVxuXHR9XG5cdC5mb3JtLWdyb3VwLXNlYXJjaC1idXR0b25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogNHJlbTtcblx0fVxufVxuXG4uc2VhcmNoLXJlc3VsdHMge1xuXHR0YWJsZSB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR0ciB7XG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdHRoIHtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLnNlYXJjaC1yZXN1bHRzLXYyIHtcblx0dGFibGUge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0dHIge1xuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHR9XG5cblx0XHRcdHRoIHtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1vZi10eXBlKGV2ZW4pIHtcblx0LyogYmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlOyAqL1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG59XG5cbi50YWJsZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZShvZGQpIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xufVxuXG4udGFibGUtYmx1ZS1zdHJpcGVkID4gdGJvZHkgPiB0cjpudGgtb2YtdHlwZShldmVuKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcbn1cblxuLnRhYmxlLWJsdWUtc3RyaXBlZCA+IHRib2R5ID4gdHI6bnRoLW9mLXR5cGUob2RkKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbn1cblxuLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXG5cdHRkIHtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG59XG5cbi50YWJsZS1uby1ib3JkZXIge1xuXHRib3JkZXItd2lkdGg6IDBweDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMC4xZW07XG5cdGJvcmRlci10b3AtY29sb3I6ICRuYXZ5O1xuXHR0aCB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBIZWF2eSc7XG5cdH1cbn1cblxuLnRhYmxlLW5vLWJvcmRlciA+IHRib2R5ID4gdHJbZGlzYWJsZWRdIHRkIHtcblx0ZmlsdGVyOiBibHVyKDFweCk7XG5cdHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG5cbi5maWx0ZXItZHJvcGRvd24ge1xuXHRjb2xvcjogJG5hdnk7XG4gICAgZm9udC1zaXplOiAxMnB4O1xufVxuXG4uZmlsdGVyLXNlbGVjdCB7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0Ly8gY29sb3I6ICR0ZXh0R3JleTtcblx0Y29sb3I6ICRuYXZ5O1xuXHRmb250LXNpemU6IDEycHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xufVxuXG4uc2VhcmNoLWxhYmVsIHtcblx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG59XG5cbi5vci1saW5lIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0bWFyZ2luLXRvcDogLTFyZW07XG5cdHdpZHRoOiAxMDAlO1xufVxuXG4ub3Itc2VwZXJhdG9yIHtcblx0d2lkdGg6IDEwMCU7XG5cdG1hcmdpbi10b3A6IC01cHg7XG5cdG1hcmdpbi1ib3R0b206IDBweDtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcbn1cblxuLmFkZHJlc3MtaWNvbiB7XG5cdHdpZHRoOiAycmVtOyBcblx0aGVpZ2h0OiAycmVtO1xuXHRtYXJnaW4tdG9wOiAtMC41cmVtO1xufVxuXG4uc2NvcmVfdGV4dCB7XG5cdGNvbG9yOiAkbmF2eTtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIExpZ2h0IEl0YWxpYyc7XG59XG5cbi5mbGV4LWNvbHVtbi1sYXlvdXQge1xuXHRkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGdhcDogMC41cmVtO1xufVxuXG4ubGFzdG5hbWUtaW5wdXQge1xuXHR3aWR0aDogMjUwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4uZmxleC1yb3ctbGF5b3V0IHtcblx0ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRnYXA6IDAuNXJlbTtcblx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuXG4uaHlwZXItbGluayB7XG5cdGNvbG9yOiAkbmF2eTtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0bWFyZ2luLWxlZnQ6IDFyZW07XG59XG5cbi5oaWdobGlnaHQtcm93IHtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdGNvbG9yOiB3aGl0ZTtcblx0Y3Vyc29yOiBwb2ludGVyICFpbXBvcnRhbnQ7XG5cblx0LyogTmF2eSBvbiB0aGUgbmF2eSBoaWdobGlnaHQgb3RoZXJ3aXNlLiAqL1xuXHQuc2NvcmVfdGV4dCB7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxufVxuXG4ubm9ybWFsLXJvdyB7XG5cdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXHRjb2xvcjogJG5hdnk7XG5cdGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xufSIsIi5tb2RhbC1iYWNrZHJvcC5hbS1mYWRlIHtcblx0YmFja2dyb3VuZDogJG5hdnktYmFja2Ryb3A7XG5cdGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcblx0LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG5cdG9wYWNpdHk6IDE7XG5cdHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlO1xuXG5cdCYubmctZW50ZXIge1xuXHRcdG9wYWNpdHk6IDA7XG5cblx0XHQmLm5nLWVudGVyLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdH1cblxuXHR9XG5cblx0Ji5uZy1sZWF2ZSB7XG5cdFx0b3BhY2l0eTogMTtcblxuXHRcdCYubmctbGVhdmUtYWN0aXZlIHtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0fVxuXG5cdH1cbn1cblxuLm1vZGFsLWRpYWxvZyB7XG5cdGJvcmRlcjogMDtcblxuXHQubW9kYWwtY29udGVudCB7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGw7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGJveC1zaGFkb3c6ICRibGFjay10cC00MDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdC5kaXNtaXNzIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHotaW5kZXg6IDEwO1xuXHRcdFx0dG9wOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0XHRyaWdodDogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdFx0Zm9udC1zaXplOiAyLjJyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWNsb3NlLWJ0bjtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRvcGFjaXR5OiAwLjc7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcblx0XHRcdH1cblxuXHRcdH1cblx0fVxuXG5cdCYubW9kYWwtY2VudGVyIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0fVxuXG59XG5cbi5teS1tb2RhbC1oZWFkZXIge1xuXHRwYWRkaW5nOiAxLjVyZW0gMnJlbTtcblx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktbW9kYWwtaGVhZGVyO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xufVxuXG4ubXktbW9kYWwtYm9keSB7XG5cdHBhZGRpbmc6IDIuNXJlbSAycmVtO1xufVxuXG4vKiBMZXRzIHRoZSBkYXRlcGlja2VyIHBvcC11cCBleHRlbmQgcGFzdCB0aGUgbW9kYWwgZWRnZS4gLm1vZGFsLWNvbnRlbnQgbm9ybWFsbHkgY2xpcHMgaXRzXG4gICBjaGlsZHJlbiB0byBpdHMgcm91bmRlZCBjb3JuZXJzLCBzbyB0aGUgaGVhZGVyIGFuZCBmb290ZXIgcm91bmQgdGhlaXIgb3duIG91dGVyIGNvcm5lcnMgaGVyZS4gKi9cbi5kaWFnbm9zaXMtbW9kYWwtY29udGVudCB7XG5cdG92ZXJmbG93OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG5cblx0Lm15LW1vZGFsLWhlYWRlciB7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGwgJGJvcmRlci1yYWRpdXMteGwgMCAwO1xuXHR9XG5cblx0Lm15LW1vZGFsLWZvb3RlciB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMCAwICRib3JkZXItcmFkaXVzLXhsICRib3JkZXItcmFkaXVzLXhsO1xuXHR9XG59XG5cbi8qIFRoZSBkYXRlLW9mLW9uc2V0IGlucHV0IGlzIHJlYWRvbmx5IG9ubHkgc28gdGhlIGRhdGVwaWNrZXIgb3ducyBpdHMgdmFsdWU7IEJvb3RzdHJhcCBncmV5c1xuICAgcmVhZG9ubHkgaW5wdXRzIGFzIGlmIGRpc2FibGVkLCB3aGljaCByZWFkcyBhcyBcIm5vdCBlZGl0YWJsZVwiLiBLZWVwIGl0IGxvb2tpbmcgbGlrZSBhIGZpZWxkLiAqL1xuLmRpYWdub3Npcy1lZGl0LWZvcm0ge1xuXHQuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0fVxuXG5cdC8qIFNhdmUsIHdpdGggdGhlIGJpbiBiZXNpZGUgaXQsIG9uIHRoZSByaWdodCAtIENhbmNlbCBzdGF5cyBvbiB0aGUgbGVmdCBhcyBpbiBldmVyeSBtb2RhbCBmb290ZXIuICovXG5cdC5kaWFnbm9zaXMtZWRpdC1mb290ZXItZW5kIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHR9XG5cblx0LyogUmVtb3ZlOiBhIHNtYWxsIHJlZCBiaW4gdG8gdGhlIHJpZ2h0IG9mIFNhdmUsIHRoZSBzYW1lIGhlaWdodC4gSXQgYXNrcyBpbiBwbGFjZS4gKi9cblx0Lm15LW1vZGFsLWZvb3RlciAuYnRuLmJ0bi1yZW1vdmUtZGlhZ25vc2lzIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRhbGlnbi1zZWxmOiBzdHJldGNoO1xuXHRcdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0JjphY3RpdmUsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHF1ZXN0aW9uIG9uIHRoZSBsZWZ0LCB0aGUgYW5zd2VycyB0b2dldGhlciBvbiB0aGUgcmlnaHQgLSB3cmFwcGluZyBhcyBhIHBhaXIgaWYgbmFycm93LiAqL1xuXHQuY29uZmlybS1yZW1vdmUtZGlhZ25vc2lzIHtcblx0XHRmbGV4OiAxO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0LmNvbmZpcm0tcmVtb3ZlLWRpYWdub3Npcy10ZXh0IGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC5jb25maXJtLXJlbW92ZS1kaWFnbm9zaXMtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHR9XG5cblx0Lm15LW1vZGFsLWZvb3RlciAuY29uZmlybS1yZW1vdmUtZGlhZ25vc2lzIC5idG4ge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC5teS1tb2RhbC1mb290ZXIgLmJ0bi5idG4tY29uZmlybS1yZW1vdmUtZGlhZ25vc2lzIHtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRkYW5nZXI7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0b3BhY2l0eTogMC42O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBmb290ZXIgc3dhcHMgaXRzIGJ1dHRvbnMgd2l0aCBuZy1pZiwgYW5kIG5nQW5pbWF0ZSBob2xkcyBhIGxlYXZpbmcgZWxlbWVudCBvbiBzY3JlZW4gZm9yIGFzXG5cdCAgIGxvbmcgYXMgaXRzIENTUyB0cmFuc2l0aW9uIHJ1bnMgLSBzbyBmb3IgYSBtb21lbnQgYm90aCBzZXRzIHdvdWxkIHNob3cuICFpbXBvcnRhbnQgdG8gYmVhdCAuYnRuJ3Mgb3duLiAqL1xuXHQubXktbW9kYWwtZm9vdGVyIC5uZy1lbnRlcixcblx0Lm15LW1vZGFsLWZvb3RlciAubmctbGVhdmUge1xuXHRcdHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0fVxufVxuXG4ubXktbW9kYWwtZm9vdGVyIHtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0cGFkZGluZzogMzBweCAzMHB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuXHQuYnRuIHtcblx0XHR3aWR0aDogMTgwcHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxufVxuXG4ubXktbW9kYWwtZm9vdGVyLS1yaWdodCB7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cblx0LmJ0biArIC5idG4ge1xuXHRcdG1hcmdpbi1sZWZ0OiAkZm9udC1zaXplLWJhc2U7XG5cdH1cblxufVxuXG4ubXktbW9kYWwtZm9vdGVyLS1jZW50ZXIge1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHQuYnRuIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDIyMHB4O1xuXHR9XG5cbn1cblxuLmZvcm0tY29udHJvbDpmb2N1cyB7XG5cdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdG91dGxpbmU6IDA7XG5cdGJveC1zaGFkb3c6IDAgMCAwIDNweCAkY3lhbi10cC0yNTtcbn1cblxuLm92ZXJyaWRlLW1vZGFsIHtcblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdH1cblxuXHQuYWRkaXRpb25hbC1tZXNzYWdlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQubWVzc2FnZSB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdH1cblxuXHRcdC5jb3VudC1yZW1haW5pbmcge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0Zm9udC1zaXplOiAwLjc1cmVtO1xuXHRcdFx0Ym90dG9tOiA1cHg7XG5cdFx0XHRyaWdodDogOHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHR9XG5cblx0LnNlbGVjdC1vdmVycmlkZSxcblx0Lm1lc3NhZ2Uge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHR9XG5cbn1cblxuLnRhYmxlLWRldGFpbHMge1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiA2MDBweDtcblx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHR0ZCB7XG5cdFx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0cGFkZGluZzogMC41cmVtO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHR3aWR0aDogNDAlO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAkZm9udC1zaXplLWJhc2U7XG5cdFx0fVxuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdHdpZHRoOiA2MCU7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdH1cblxuXHR9XG59XG5cbi5kb3VibGUtbGluZS1oZWFkZXIge1xuXHRwYWRkaW5nOiAkZm9udC1zaXplLWJhc2UgMDtcblx0aGVpZ2h0OiBhdXRvO1xuXHRtaW4taGVpZ2h0OiA4MHB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0Z2FwOiAwLjI1cmVtO1xufVxuXG4uaWNvbi13cmFwLXN1Y2Nlc3Mge1xuXHRoZWlnaHQ6IDEwMHB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbi1ib3R0b206ICRmb250LXNpemUtYmFzZTtcblxuXHRpbWcge1xuXHRcdGhlaWdodDogMTAwJTtcblx0fVxuXG59XG5cbi5saW1pdC13aWR0aCB7XG5cdG1heC13aWR0aDogNDUwcHg7XG5cdG1hcmdpbjogMCBhdXRvO1xufVxuXG4ubGltaXQtd2lkdGgtd2lkZSB7XG5cdG1heC13aWR0aDogNjUwcHg7XG5cdG1hcmdpbjogMCBhdXRvO1xufVxuXG4uZm9ybS1ncm91cC1vdmVycmlkZS1zZWxlY3Qge1xuXHRtYXJnaW46IDAgYXV0bztcblx0bWF4LXdpZHRoOiA3MDBweDtcbn1cblxuLmhlbHAtbW9kYWwge1xuXHQuc3VidGl0bGUtbGluZS1icmVhayB7XG5cdFx0bWFyZ2luOiAxMHB4IDA7XG5cdH1cblxuXHQucS1oZWFkZXItZmxleCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdC5oNSB7XG5cdFx0XHRtYXgtd2lkdGg6IDg1JTtcblx0XHR9XG5cblx0XHQucS1pY29uLXdyYXAge1xuXHRcdFx0aGVpZ2h0OiAzNXB4O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0aW1nIHtcblx0XHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0fVxuXG5cdFx0fVxuXHR9XG59XG5cbi5xLWljb24td3JhcCB7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5yb3RhdGUge1xuXHR0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xufVxuXG4ucS1ib2R5LXdyYXAge1xuXHRkaXNwbGF5OiBub25lO1xuXHRwYWRkaW5nLXJpZ2h0OiA2MHB4O1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5teS1tb2RhbC1ib2R5LWhlbHAge1xuXHRtYXgtd2lkdGg6IDgwMHB4O1xuXHRtYXJnaW46IDAgYXV0bztcbn1cblxuLnRhYmxlLWNvbnRhY3Qge1xuXHRtYXJnaW4tYm90dG9tOiAwO1xuXG5cdHRkIHtcblx0XHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0cGFkZGluZzogM3B4IDAgIWltcG9ydGFudDtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0d2lkdGg6IDEyM3B4O1xuXHRcdH1cblxuXHR9XG59XG5cbi5jb250YWN0LW5hbWUge1xuXHRtYXJnaW4tdG9wOiAyMHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xufVxuXG4ubW9ycGgtbW9kYWwge1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cblx0XHRvcHRpb24ge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0fVxuXG5cdH1cblxuXHQubGVucy13cmFwIHtcblx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cblx0XHRpbWcge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHR9XG5cblx0fVxuXG5cdC5sZW5zLXdyYXAtMSB7XG5cdFx0bWFyZ2luLXRvcDogMjBweDtcblx0fVxuXG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuXHQubW9kYWwtbGctbW9ycGgge1xuXHRcdHdpZHRoOiA5ODRweDtcblx0fVxufVxuXG4ucmVmZXJyYWwtcmFkaW8td3JhcCB7XG5cdG1hcmdpbi10b3A6IDE1cHg7XG5cblx0LnJhZGlvLWlubGluZSAubWFya2VyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bGVmdDogLTNweDtcblx0XHR0b3A6IDBweDtcblx0fVxuXG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0aW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcblx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdH1cblxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTBweDtcblx0fVxuXG59XG5cbi8qIExlYXZpbmcgdGhlIHBhdGllbnQgZGFzaGJvYXJkIG1pZC10cmFuc2NyaXB0aW9uOiB0d28gY2hvaWNlcywgY2VudHJlZCBzaWRlIGJ5IHNpZGUuICovXG4ubGVhdmUtdHJhbnNjcmlwdGlvbi1tb2RhbCAubXktbW9kYWwtZm9vdGVyIHtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGdhcDogMTVweDtcbn1cblxuLm5vdGlmaWNhdGlvbi1ib2R5IHtcblx0bWF4LXdpZHRoOiA0NTBweDtcblx0bWFyZ2luOiAwIGF1dG87XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0dWwge1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cblx0XHQ+IGxpID4gdWwge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA0MHB4O1xuXHRcdH1cblxuXHR9XG5cblx0bGkge1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cblxufVxuXG4uaGlkZGVuIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLmZsZXgtZG91YmxlLXJvd3Mge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdHBhZGRpbmctdG9wOiAxZW0gIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5waGFybWFjeS1vcHRpb24ge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4ucGhhcm1hY3ktdGl0bGUge1xuXHRwYWRkaW5nLXRvcDogMC4xZW07XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xufVxuXG4ucGhhcm1hY3ktYWRkcmVzcyB7XG5cdHBhZGRpbmctdG9wOiAwLjFlbTtcblx0cGFkZGluZy1ib3R0b206IDAuMWVtO1xuXHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLm1kLWRpYWxvZy1jdXN0b21lci1jb250YWluZXIge1xuXHRib3JkZXI6IG5vbmU7XG5cdG91dGxpbmU6IG5vbmU7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRib3gtc2hhZG93OiAkYmxhY2stdHAtNDA7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0LmRpYWxvZy10b29sYmFyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHQvKiBjZW50ZXIgYWxsIGl0ZW1zICovXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0LmRpYWxvZy10aXRsZSB7XG5cdFx0ZmxleDogbm9uZTtcblx0XHQvKiBwcmV2ZW50IHN0cmV0Y2hpbmcgKi9cblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdH1cblxuXHQuZGlhbG9nLXN1YnRpdGxlIHtcblx0XHRmbGV4OiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMTJwdDtcblx0XHQvKiBwcmV2ZW50IHN0cmV0Y2hpbmcgKi9cblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0b3A6IDIuNXJlbTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cdH1cblxuXHQuZGlhbG9nLXRvb2xiYXIgbWQtYnV0dG9uIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IDA7XG5cdH1cblxuXG5cdC5kaXNtaXNzIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0ei1pbmRleDogMTA7XG5cdFx0dG9wOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0cmlnaHQ6ICRmb250LXNpemUtYmFzZTtcblx0XHRmb250LXNpemU6IDIuMnJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHRcdGNvbG9yOiAkdGV4dC1jbG9zZS1idG47XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0b3BhY2l0eTogMC43O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG5cdFx0fVxuXG5cdH1cbn1cblxuLm1kLWRpYWxvZy1jdXN0b21lci1jb250YWluZXIgLmRpYWxvZy10aXRsZSB7XG4gICAgY29sb3I6ICMwYTI1NDAgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDEuNjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTkhJIHN1Z2dlc3RlZCBwYXRpZW50cyBkaWFsb2cgKG1vZGFsLnNlbGVjdC1wYXRpZW50LXYyKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ubmhpLXNlbGVjdC1kaWFsb2cge1xuXHRtaW4td2lkdGg6IDgwJTtcblx0LyogSXRzIGhlaWdodCBvdGhlcndpc2UgZm9sbG93cyB0aGUgdGFibGUsIHNvIGEgc2VhcmNoIHdpdGggb25lIG9yIHR3byByZXN1bHRzIGxlZnQgdGhlIHJlY29yZFxuXHQgICBwcmV2aWV3IGEgZmV3IGh1bmRyZWQgcGl4ZWxzIHRhbGwuICovXG5cdG1pbi1oZWlnaHQ6IG1pbig2NDBweCwgODB2aCk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0LyogVGhlIHJlY29yZCBwcmV2aWV3IHNsaWRlcyBvdmVyIHRoZSB0YWJsZSBhbmQgaXMgb25seSBhcyB0YWxsIGFzIHRoZSBkaWFsb2c6IGl0cyBkZXRhaWxzIHNjcm9sbCxcblx0ICAgYW5kIGl0cyBTRUxFQ1QgYnV0dG9uIHN0YXlzIGluIHZpZXcgYmVsb3cgdGhlbS4gKi9cblx0bWQtc2lkZW5hdiB7XG5cdFx0bWluLXdpZHRoOiA2MCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cblx0XHRtZC1jb250ZW50IHtcblx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0bWluLWhlaWdodDogMDtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0fVxuXHR9XG5cblx0Lm5oaS1wcmV2aWV3LXRpdGxlIHtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG59XG4iLCIucmVnaXN0ZXItZWRpdC1mb3JtIHtcblx0LmNvbC1zbS0zIHtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0fVxuXHRsYWJlbC5jb250cm9sLWxhYmVsIHtcblx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHR9XG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGZvbnQtc2l6ZToxMnB4ICFpbXBvcnRhbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHR9XG5cdC5kb2ItZ3JvdXAge1xuXHRcdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDMxJTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdFx0c3Bhbi5oZWxwLWJsb2NrIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMTAwJTtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXG5cblx0XHQuZm9ybS1jb250cm9sOm50aC1jaGlsZCgyKSB7XG5cdFx0XHQvKm1hcmdpbjogMCAxNXB4OyovXG5cdFx0fVxuXHR9XG5cdC5yYWRpby1pbmxpbmUge1xuXHRcdHdpZHRoOiA4MHB4O1xuXHRcdC8qdGV4dC1hbGlnbjogY2VudGVyOyovXG5cdFx0aW5wdXQge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0LypyaWdodDogMTBweDsqL1xuXHRcdH1cblx0XHQubWFya2VyIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGxlZnQ6IDdweDtcblx0XHRcdHRvcDogLTFweDtcblx0XHR9XG5cdH1cblx0LmV0aG5pY2l0eS1ncm91cCB7XG5cblx0fVxufVxuXG4ucmVnaXN0ZXItZWRpdC1mb3JtLXYyIHtcblx0LmNvbC1zbS0zIHtcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdHBhZGRpbmctbGVmdDogMDtcblx0fVxuXHRsYWJlbC5jb250cm9sLWxhYmVsIHtcblx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHR9XG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGZvbnQtc2l6ZToxMnB4ICFpbXBvcnRhbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHR9XG5cdC5kb2ItZ3JvdXAge1xuXHRcdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0XHQvKiBmbGV4LWRpcmVjdGlvbjogcm93OyAqL1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDMxJTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdFx0c3Bhbi5oZWxwLWJsb2NrIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdG1hcmdpbi10b3A6IDNlbTtcblx0XHR9XG5cdFx0LmZvcm0tY29udHJvbDpudGgtY2hpbGQoMikge1xuXHRcdFx0LyptYXJnaW46IDAgMTVweDsqL1xuXHRcdH1cblx0fVxuXHQucmFkaW8taW5saW5lIHtcblx0XHR3aWR0aDogODBweDtcblx0XHQvKnRleHQtYWxpZ246IGNlbnRlcjsqL1xuXHRcdGlucHV0IHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdC8qcmlnaHQ6IDEwcHg7Ki9cblx0XHR9XG5cdFx0Lm1hcmtlciB7XG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRsZWZ0OiA3cHg7XG5cdFx0XHR0b3A6IC0xcHg7XG5cdFx0fVxuXHR9XG5cdC5ldGhuaWNpdHktZ3JvdXAge1xuXG5cdH1cbn1cblxuLmFuaW1hdGUtc2hvdy1oaWRlLm5nLWhpZGUge1xuXHRvcGFjaXR5OiAwO1xufVxuXG4uYW5pbWF0ZS1zaG93LWhpZGUubmctaGlkZS1hZGQsXG4uYW5pbWF0ZS1zaG93LWhpZGUubmctaGlkZS1yZW1vdmUge1xuXHR0cmFuc2l0aW9uOiBhbGwgZWFzZSAwLjNzO1xufVxuXG4uYW5pbWF0ZS1tZSB7XG5cdG9wYWNpdHk6IDE7XG59XG5cbi5jaGVja2JveC1pbmxpbmUge1xuXHRtaW4td2lkdGg6IDI1JVxufVxuXG4uZm9ybS1ncm91cC1ldGhuaWNpdHkge1xuXHRtYXJnaW4tYm90dG9tOiA5cHg7XG5cblx0bGFiZWwuY2hlY2tib3gtaW5saW5lOmZpcnN0LWNoaWxkIHtcblx0XHRtYXJnaW4tbGVmdDogMTBweDtcblx0fVxuXHRsYWJlbC5jaGVja2JveC1pbmxpbmUge1xuXHRcdHNwYW4ubWFya2VyIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdGJvdHRvbTotMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5jaGVja2JveC1pbmxpbmUtb3RoZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRsZWZ0OiAtNHB4O1xuXHR9XG5cblx0LmNvbC1zbS05IHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cblxuXHRzcGFuLmhlbHAtYmxvY2sge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6MTAwJTtcblx0fVxufVxuXG4vKkdvb2dsZSBQbGFjZXMgQVBJIHRvIGJyaW5nIGF1dG9jb21wbGV0ZSBoaWdoZXIgei1pbmRleCB0aGFuIGJvb3RzdHJhcCBtb2RhbCovXG4ucGFjLWNvbnRhaW5lciB7ei1pbmRleDogMTAwMDAgIWltcG9ydGFudDt9XG5cbi5mb3JtLWltcGFjdCB7XG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xuXHR9XG5cblx0bGFiZWwuY29udHJvbC1sYWJlbCB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50O1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRAZXh0ZW5kIC50ZXh0LXRleHRHcmV5O1xuXG5cdFx0LnF1ZXN0aW9uLW1hcmsge1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0aGVpZ2h0OiAyMHB4O1xuXHRcdFx0Ym90dG9tOjJweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHRcdGltZyB7XG5cdFx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdFx0b3ZlcmZsb3c6aGlkZGVuO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHQucmFkaW8tZmxleC13cmFwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcblxuXHRcdC5yYWRpby1pbmxpbmUge1xuXHRcdFx0d2lkdGg6IDgwcHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdC5tYXJrZXIge1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdHRvcDoycHg7XG5cdFx0XHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0XG5cdC5jb250cm9sLWxhYmVsLWxlZnQge3BhZGRpbmctcmlnaHQ6IDA7fVxuXG5cdC5mb3JtLWdyb3VwLWhlYWRlciB7XG5cdFx0LnJhZGlvLWZsZXgtd3JhcCB7XG5cblx0XHRcdC5yYWRpby1pbmxpbmUge1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHRcdFx0d2lkdGg6IDgwcHg7XG5cdFx0XHRcdEBleHRlbmQgLnRleHQtdGV4dEdyZXk7XG5cdFx0XHRcdEBleHRlbmQgLmZvbnQtbWVkaXVtO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcbn1cbi5saWZlLXF1YWxpdHkge1xuXHQuZm9ybS1ncm91cC5oYXMtZXJyb3Ige1xuXHRcdG91dGxpbmU6IDFweCBzb2xpZCAkZGFuZ2VyO1xuXHRcdHBhZGRpbmctdG9wOiAxNnB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAxNnB4O1xuXHRcdC5yYWRpby1mbGV4LXdyYXAge1xuXHRcdFx0LypwYWRkaW5nLWJvdHRvbTogNnB4OyovXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0XHQuaGVscC1ibG9jayB7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAyNDAlO1xuXHRcdFx0XHQvKiBib3R0b206IC00NXB4OyAqL1xuXHRcdFx0XHRsZWZ0OiA4MCU7XG5cdFx0XHRcdC8qIHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7ICovXG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cbn1cbi5mb3JtLWZvb3RlciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdC5zdWJtaXQtd3JhcC1mbGV4IHtcblx0XHRwYWRkaW5nOiAyMHB4IDMwcHggMjBweCA1MHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwcHg7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRcdC8qYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgJHB1cnBsZSwgJG5hdnkpICFpbXBvcnRhbnQ7Ki9cblx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0Lm5vdGUtd3JhcCB7XG5cdFx0XHR3aWR0aDogNDAwcHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdFx0XHRwIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHQmOmZpcnN0LWNoaWxkIHttYXJnaW4tYm90dG9tOiAxMHB4O31cblx0XHRcdH1cblx0XHR9XG5cdFx0LmJ1dHRvbi13cmFwIHtcblx0XHRcdHdpZHRoOiAyMDBweDtcblx0XHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQuc2hvd2luZy13YXJuaW5nIHtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMjcwZGVnLCAkcHVycGxlLCAkbmF2eSkgIWltcG9ydGFudDtcblx0fVxufVxuXG4uZm9ybS1sb2dpbiB7XG5cdHdpZHRoOiAyODBweDtcblx0cGFkZGluZy10b3A6IDE1cHg7XG5cdFxuXHQuZm9ybS1ncm91cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMzBweDtcblxuXHRcdGlucHV0IHtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDI0cHg7XG5cdFx0fVxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcdH1cblx0fVxuXHRidXR0b24ge2ZvbnQtc2l6ZTogMTJweDt9XG5cblx0LmJ0bi1sb2dpbiB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2lkdGg6IDM0JTtcblx0XHRwYWRkaW5nOiA2cHggMThweDtcblx0fVxuXHQuYnRuLWxvc3Qge1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdHdpZHRoOiA2MCU7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuMXMgbGluZWFyO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxufVxuXG5cbmZvcm1bbmFtZT1zZWFyY2hdIHtcblx0c3Bhbi5oZWxwLWJsb2NrIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5oYXMtc3VjY2VzcyAuZm9ybS1jb250cm9sIHtcblx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0Jjpmb2N1cyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLDAsMCwuMDc1KSwgMCAwIDRweCAkY3lhbjtcblx0fVxufVxuXG4uaGFzLWVycm9yIC5mb3JtLWNvbnRyb2wge1xuXHRib3JkZXItY29sb3I6ICRkYW5nZXI7XG5cdCY6Zm9jdXMge1xuXHRcdGJvcmRlci1jb2xvcjogJGRhbmdlcjtcblx0fVxufVxuXG5mb3JtW25hbWU9bG9naW5Gb3JtXSB7XG5cdC5oZWxwLWJsb2NrIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0cGFkZGluZy1sZWZ0OiAxM3B4O1xuXHR9XG59XG5cbmxhYmVsIHtcblx0Y29sb3I6ICR0ZXh0R3JleSAhaW1wb3J0YW50O1xufVxuXG5mb3JtW25hbWU9c2V0UGFzc3dvcmRdIHtcblx0LmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMDtcblx0fVxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG59XG5cbmZvcm1bbmFtZT1mb3JtSW1wYWN0XSB7XG5cdC5mb3JtLWdyb3VwLmhhcy1lcnJvciB7XG5cdFx0b3V0bGluZTogMXB4IHNvbGlkICRkYW5nZXI7XG5cdFx0cGFkZGluZy10b3A6IDJweDtcblx0XHQucmFkaW8tZmxleC13cmFwIHtcblx0XHRcdC8qcGFkZGluZy1ib3R0b206IDZweDsqL1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0LmhlbHAtYmxvY2sge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdC8qdG9wOiAxMDAlOyovXG5cdFx0XHRcdGJvdHRvbTogLTQwcHg7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHR9XG5cblx0XHR9XG5cdH1cbn1cblxuZm9ybVtuYW1lPWV4YW1dIHtcblx0c3Bhbi5oZWxwLWJsb2NrIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi5idG4tc3dpdGNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjI3ODc4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICNGMjc4Nzg7XG4gICAgYm9yZGVyLXJhZGl1czogNDBweDtcbiAgICBcbiAgICAuYnRuLXN3aXRjaC1jaXJjbGUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGhlaWdodDogMjVweDtcbiAgICAgICAgd2lkdGg6IDI1cHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgfVxufVxuXG4uYnRuLXN3aXRjaC0tb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4MENEQkU7XG4gICAgYm9yZGVyOiAycHggc29saWQgIzgwQ0RCRTtcbiAgICBcbiAgICAuYnRuLXN3aXRjaC1jaXJjbGUtLW9uIHtcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgfVxufVxuXG4uc3VyZ2VyeS1hZ3JlZW1lbnQtZm9ybS1mb290ZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHQuc3VibWl0LXdyYXAtZmxleCB7XG5cdFx0cGFkZGluZzogMTJweCAxNXB4IDEycHggMjVweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MHB4O1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHQvKmJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgyNzBkZWcsICRwdXJwbGUsICRuYXZ5KSAhaW1wb3J0YW50OyovXG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdC5ub3RlLXdyYXAge1xuXHRcdFx0d2lkdGg6IDQwMHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0cCB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0JjpmaXJzdC1jaGlsZCB7bWFyZ2luLWJvdHRvbTogMTBweDt9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5idXR0b24td3JhcCB7XG5cdFx0XHQvKiB3aWR0aDogMjAwcHg7ICovXG5cdFx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LnNob3dpbmctd2FybmluZyB7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI3MGRlZywgJHB1cnBsZSwgJG5hdnkpICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLnByZW1pdW0tbGVucy1yZWNvbW1lbmQtY2hlY2tib3hlcyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5yZWNvbW1lbmRlZC1vcHRpb24taGlnaGxpZ2h0IHtcblx0YmFja2dyb3VuZC1jb2xvcjogI2U2ZjJmZjtcblx0Y29sb3I6ICMwMDdCRkY7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4ucmVjb21tZW5kZWQtbGFiZWwge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0cmlnaHQ6IDA7XG5cdGJhY2tncm91bmQ6ICMwZDZlZmQ7XG5cdGNvbG9yOiAjZmZmO1xuXHRmb250LXNpemU6IDEuMXJlbTtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0cGFkZGluZzogNHB4IDZweDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRsaW5lLWhlaWdodDogMS4yO1xuXHRib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdG1hcmdpbi1ib3R0b206MC41cmVtO1xufVxuXG4vKiBPbmUtdGltZS1jb2RlIGJveGVzIGZvciB0aGUgTUZBIGNvbmZpZyBhbmQgTUZBIHZlcmlmeSBtb2RhbHMuIFRoZSBsb2dpbiBwYWdlIGFuZCB0aGUgcGF0aWVudFxuICAgY29udGFjdCB2ZXJpZmljYXRpb24gcGFnZSBlYWNoIGhhdmUgdGhlaXIgb3duIGNvcHksIHNjb3BlZCB1bmRlciAubW9kZXJuLWxvZ2luLXBhZ2UgYW5kXG4gICAucGF0aWVudC12ZXJpZmljYXRpb24tZm9ybSwgYmVjYXVzZSBuZWl0aGVyIGlzIGEgbW9kYWwuICovXG4uY3JlYXRlLW1vZGFsIC52ZXJpZnktaW5wdXQtY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGdhcDogMC43NXJlbTtcblx0bWFyZ2luOiAycmVtIGF1dG87XG5cblx0aW5wdXQge1xuXHRcdHdpZHRoOiA0NXB4O1xuXHRcdGhlaWdodDogNTVweDtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDAuNXJlbTtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxufVxuXG4vKiBWZXJpZmllZCAvIHVudmVyaWZpZWQgcGlsbCBzaG93biBiZXNpZGUgdGhlIGVtYWlsIGFuZCBtb2JpbGUgZmllbGRzIGluIHBhdGllbnQgZGV0YWlscy4gKi9cbi5jb250YWN0LXZlcmlmaWVkLXBpbGwge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGZvbnQtc2l6ZTogMTBweDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0bGluZS1oZWlnaHQ6IDEuNDtcblx0cGFkZGluZzogMXB4IDZweDtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRtYXJnaW4tbGVmdDogNHB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHQvKiBTdGF0dXMsIG5vdCBhIGNvbnRyb2wuIFRoZSBkZXRhaWwgLSBpbmNsdWRpbmcgdGhlIGRhdGUgaXQgd2FzIHZlcmlmaWVkIC0gaXMgaW5cblx0ICAgdGhlIHRvb2x0aXAuIE1hdGNoZXMgLmNvbW1zLXZlcmlmaWVkLWljb24sIHdoaWNoIHNheXMgdGhlIHNhbWUgc3RhdGUgaW4gdGhlXG5cdCAgIHBhdGllbnQgaGVhZGVyIGFuZCBoYXMgY2FycmllZCB0aGlzIGFmZm9yZGFuY2Ugc2luY2UgaXQgd2FzIHdyaXR0ZW4uICovXG5cdGN1cnNvcjogaGVscDtcblxuXHQmLmlzLXZlcmlmaWVkIHtcblx0XHRiYWNrZ3JvdW5kOiAjZTRmNGVhO1xuXHRcdGNvbG9yOiAjMWM3YTQxO1xuXHR9XG5cblx0Ji5pcy11bnZlcmlmaWVkIHtcblx0XHRiYWNrZ3JvdW5kOiAjZmRlYWVhO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHR9XG59IiwiLnBvcG92ZXIge1xuXHRvdXRsaW5lOm5vbmU7XG5cdG1heC13aWR0aDogMTAwJTtcblx0cGFkZGluZzogMDtcblx0cGFkZGluZy1ib3R0b206IDEwcHg7XG5cdGgzLnBvcG92ZXItdGl0bGUge1xuXHRcdGJhY2tncm91bmQ6ICRjeWFuO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0QGV4dGVuZCAuZm9udC1tZWRpdW07XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cdC5wb3BvdmVyLWNvbnRlbnQge1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cbn1cblxuLnBvcG92ZXItbm9ybWFsIHtcblx0b3V0bGluZTpub25lO1xuXHRtYXgtd2lkdGg6IDEycmVtO1xuXHRwYWRkaW5nOiAwO1xuXHQvKiBwYWRkaW5nLWJvdHRvbTogMTBweDsgKi9cblx0aDMucG9wb3Zlci10aXRsZSB7XG5cdFx0YmFja2dyb3VuZDogJGN5YW47XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRAZXh0ZW5kIC5mb250LW1lZGl1bTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblx0LnBvcG92ZXItY29udGVudCB7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxufVxuXG4uYW0tcG9wb3ZlciB7XG5cdG9wYWNpdHk6IDE7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwcHgpO1xuXHQvKnRyYW5zaXRpb246IGFsbCAuMTVzIGVhc2UtaW47Ki9cblx0Ji5uZy1lbnRlciB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHQvKnRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCk7Ki9cblx0XHRcblx0XHQmLm5nLWVudGVyLWFjdGl2ZSB7XG5cblx0XHR9XG5cdH1cblx0Ji5uZy1sZWF2ZSB7XG5cdFx0b3BhY2l0eTogMTtcblx0XHQmLm5nLWxlYXZlLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdH1cblx0fVxufVxuXG4ucG9wb3Zlci5pbmZvLWRldGFpbC1wb3BvdmVyIHtcblx0bWF4LXdpZHRoOiAyNnJlbTtcblx0d2lkdGg6IGF1dG87XG5cdHotaW5kZXg6IDExMDA7XG59XG5cbi5wb3BvdmVyLmluZm8tZGV0YWlsLXBvcG92ZXIgLnBvcG92ZXItY29udGVudCB7XG5cdHdvcmQtd3JhcDogYnJlYWstd29yZDtcblx0b3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcblx0Y29sb3I6ICR0ZXh0R3JleSAhaW1wb3J0YW50O1xuXG5cdGxhYmVsIHtcblx0XHRjb2xvcjogJHRleHQtZGFyayAhaW1wb3J0YW50O1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLmluZm8tcG9wb3Zlci1jb21tZW50IHtcblx0d2hpdGUtc3BhY2U6IHByZS13cmFwO1xuXHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHRtYXgtd2lkdGg6IDI0cmVtO1xufVxuXG4uZGlhZ25vc2lzLWluZm8tcG9wb3Zlci1hbmNob3Ige1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLndpZGVyLXBvcG92ZXIge1xuXHRtYXgtd2lkdGg6IDI0cmVtO1xuXHRvcGFjaXR5OiAxO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTJyZW0pO1xuXHQvKnRyYW5zaXRpb246IGFsbCAuMTVzIGVhc2UtaW47Ki9cblx0Ji5uZy1lbnRlciB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHQvKnRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzBweCk7Ki9cblx0XHRcblx0XHQmLm5nLWVudGVyLWFjdGl2ZSB7XG5cblx0XHR9XG5cdH1cblx0Ji5uZy1sZWF2ZSB7XG5cdFx0b3BhY2l0eTogMTtcblx0XHQmLm5nLWxlYXZlLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdH1cblx0fVxufVxuXG4vKiAucG9wb3ZlciBoYXMgbm8gbWF4LXdpZHRoIG9mIGl0cyBvd24sIHNvIGEgc2VudGVuY2UgcmVuZGVycyBhcyBvbmUgbG9uZyBsaW5lLiAqL1xuLnBvcG92ZXIuY29udGFjdC12ZXJpZmllZC1wb3BvdmVyIHtcblx0bWF4LXdpZHRoOiAyMnJlbTtcbn1cbiIsIi8qIEluc3VyYW5jZSBzdW1tYXJ5IGNoaXBzIHNob3duIGluIHRoZSBwYXRpZW50IGhlYWRlciwgd2l0aCBhIGhvdmVyIHBvcG92ZXJcbiAgIG9uIHRoZSBcIitOXCIgcGlsbCB0aGF0IHJldmVhbHMgdGhlIGluc3VyZXJzIG5vdCBzaG93biBpbmxpbmUuICovXG5cbi5pbnN1cmFuY2Utc3VtbWFyeSB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogM3B4O1xufVxuXG4uaW5zdXJhbmNlLXN1bW1hcnkgLmlucy1jaGlwIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3JkZXItcmFkaXVzOiAxMXB4O1xuXHRwYWRkaW5nOiAxcHggOHB4O1xuXHRmb250LXNpemU6IDExLjVweDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtbW9yZSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRib3JkZXItcmFkaXVzOiAxMXB4O1xuXHRwYWRkaW5nOiAxcHggN3B4O1xuXHRmb250LXNpemU6IDExLjVweDtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0YmFja2dyb3VuZDogI0U4RjRGODtcblx0Y29sb3I6ICMwMDM1ZDI7XG5cdGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtcG9wIHtcblx0ZGlzcGxheTogbm9uZTtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRib3R0b206IGNhbGMoMTAwJSArIDlweCk7XG5cdGxlZnQ6IDUwJTtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuXHR6LWluZGV4OiAxMDUwO1xuXHRtaW4td2lkdGg6IDE1MHB4O1xuXHRwYWRkaW5nOiAxMHB4IDExcHg7XG5cdGJhY2tncm91bmQ6ICNmZmY7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNkY2UzZWU7XG5cdGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdGJveC1zaGFkb3c6IDAgMTBweCAyOHB4IHJnYmEoMjYsIDQxLCA2NiwgLjE4KTtcblx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0dGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtbW9yZTpob3ZlciAuaW5zLXBvcCxcbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLW1vcmU6Zm9jdXMgLmlucy1wb3Age1xuXHRkaXNwbGF5OiBibG9jaztcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtcG9wOjphZnRlciB7XG5cdGNvbnRlbnQ6IFwiXCI7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAxMDAlO1xuXHRsZWZ0OiA1MCU7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0Ym9yZGVyOiA3cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdGJvcmRlci10b3AtY29sb3I6ICNmZmY7XG59XG5cbi5pbnN1cmFuY2Utc3VtbWFyeSAuaW5zLXBvcC1oIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDdweDtcblx0Zm9udC1zaXplOiAxMC41cHg7XG5cdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdGxldHRlci1zcGFjaW5nOiAuNXB4O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRjb2xvcjogIzdhODY5YTtcbn1cblxuLmluc3VyYW5jZS1zdW1tYXJ5IC5pbnMtcG9wLWNoaXBzIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRnYXA6IDZweDtcbn1cblxuLyogQ29sbGFwc2libGUgd3JhcHBlciB1c2VkIHdoZXJlIHRoZSBwaWNrZXIgc2l0cyBpbiBhIGNyb3dkZWQgZm9ybS4gVGhlIGhlYWRlclxuICAgZG91YmxlcyBhcyB0aGUgc3VtbWFyeSBvZiB3aGF0IGlzIGN1cnJlbnRseSBzZWxlY3RlZC4gKi9cblxuLmluc3VyYW5jZS1tdWx0aXNlbGVjdCAuaW5zLWNvbGxhcHNlIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRnYXA6IDEwcHg7XG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nOiA3cHggMTFweDtcblx0YmFja2dyb3VuZDogI2ZmZjtcblx0Ym9yZGVyOiAxcHggc29saWQgI2RjZTNlZTtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHRjb2xvcjogIzFBMjk0Mjtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdGZvbnQtc2l6ZTogMTNweDtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0Y3Vyc29yOiBwb2ludGVyO1xufVxuXG4uaW5zdXJhbmNlLW11bHRpc2VsZWN0IC5pbnMtY29sbGFwc2U6aG92ZXIsXG4uaW5zdXJhbmNlLW11bHRpc2VsZWN0IC5pbnMtY29sbGFwc2U6Zm9jdXMge1xuXHRib3JkZXItY29sb3I6ICNiOWM2ZGU7XG59XG5cbi5pbnN1cmFuY2UtbXVsdGlzZWxlY3QgLmlucy1jb2xsYXBzZS10ZXh0IHtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5pbnN1cmFuY2UtbXVsdGlzZWxlY3QgLmlucy1jb2xsYXBzZS1jYXJldCB7XG5cdGZsZXg6IDAgMCBhdXRvO1xuXHR3aWR0aDogMDtcblx0aGVpZ2h0OiAwO1xuXHRib3JkZXItcmlnaHQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWxlZnQ6IDVweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLXRvcDogNnB4IHNvbGlkICM1YjY1NzY7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMTVzIGVhc2U7XG59XG5cbi5pbnN1cmFuY2UtbXVsdGlzZWxlY3QgLmlucy1jb2xsYXBzZS1jYXJldC5pcy1vcGVuIHtcblx0dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cblxuLmluc3VyYW5jZS1tdWx0aXNlbGVjdCAuaW5zLWNvbGxhcHNlLWJvZHkge1xuXHRtYXJnaW4tdG9wOiA4cHg7XG59XG5cbi8qIEEgY2hlY2tib3ggdGhhdCBzaXRzIGRpcmVjdGx5IGJlc2lkZSBpdHMgb3duIHRleHQsIHJhdGhlciB0aGFuIGJlaW5nIHNwbGl0XG4gICBhY3Jvc3MgdGhlIGZvcm0gZ3JpZCdzIGxhYmVsIGFuZCBmaWVsZCBjb2x1bW5zLiAqL1xuXG4uaW5zLWlubGluZS1jaGVjayB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogOHB4O1xuXHRtYXJnaW46IDA7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmlucy1pbmxpbmUtY2hlY2sgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcblx0ZmxleDogMCAwIGF1dG87XG5cdG1hcmdpbjogMDtcbn1cblxuLyogVGhlIFBheWVyIGJveCBvbiB0aGUgb3BlcmF0aW9uIG5vdGUuIFNpdHMgaW4gdGhlIHNhbWUgYmx1ZS1ib3ggc2hlbGwgYXMgdGhlXG4gICBcIk5ISSBub3Qgc2V0XCIgcGFuZWwgYWJvdmUgaXQsIHNvIHRoZSB0d28gcmVhZCBhcyBvbmUgY29sdW1uIG9mIHByb21wdHMuICovXG5cbi5vcC1ub3RlLXBheWVyLWhlYWQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGdhcDogMTJweDtcblx0bWFyZ2luLWJvdHRvbTogM3B4O1xufVxuXG4ub3Atbm90ZS1wYXllci10aXRsZSB7XG5cdG1hcmdpbjogMDtcblx0Zm9udC1zaXplOiAxNXB4O1xuXHRmb250LXdlaWdodDogNzAwO1xuXHRjb2xvcjogIzAwMzVkMjtcbn1cblxuLm9wLW5vdGUtcGF5ZXItbm90ZSB7XG5cdG1hcmdpbjogMCAwIDExcHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRjb2xvcjogIzZjNzU3ZDtcbn1cblxuLm9wLW5vdGUtcGF5ZXItZXllIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDVweDtcblx0Zm9udC1zaXplOiAxMXB4O1xuXHRmb250LXdlaWdodDogNzAwO1xuXHRjb2xvcjogIzJhMzA3Zjtcbn1cblxuLm9wLW5vdGUtcGF5ZXItZXJyb3Ige1xuXHRtYXJnaW46IDlweCAwIDA7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0Y29sb3I6ICNhOTQ0NDI7XG59XG4iLCIudGFibGUtY29tcGxldGUge1xuXHR0aCxcblx0dGQge1xuXHRcdGJvcmRlci10b3A6IDAgIWltcG9ydGFudDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG5cdH1cblxuXHR0aCB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHR0ZDpudGgtY2hpbGQoMSkge1xuXHRcdC8qYmFja2dyb3VuZDogcGluazsqL1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHQvKndpZHRoOiA1MCU7Ki9cblx0fVxuXG5cdHRkOm50aC1jaGlsZCgyKSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGhlaWdodDogNjBweDtcblx0XHR3aWR0aDogMTYwcHg7XG5cdFx0aW1nIHtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0fVxuXHR9XG5cdHRkOm50aC1jaGlsZCgzKSB7XG5cdFx0LypiYWNrZ3JvdW5kOiBwaW5rOyovXG5cdFx0d2lkdGg6IDI0MHB4O1xuXHR9XG5cdHRoOm50aC1jaGlsZCgyKSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHdpZHRoOiAyMDBweDtcblx0fVxuXG5cdC5pbmRlbnQge1xuXHRcdHBhZGRpbmctbGVmdDogMzBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG59XG5cbi5jb21wbGV0ZS1mbGV4LXdyYXAge1xuXHRkaXNwbGF5OmZsZXg7XG5cdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnF1ZXN0aW9uLXdyYXAge1xuXHRoZWlnaHQ6IDQ0cHg7XG5cdHdpZHRoOiA0NHB4O1xuXHRib3JkZXI6IDJweCBzb2xpZCBnb2xkO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdHNwYW4ge1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRjb2xvcjogZ29sZDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcblx0fVxufVxuXG4ucGF0aWVudC1zdW1tYXJ5LWRldGFpbHMge1xuXHRmb250LXNpemU6IDEwcHg7XG59XG5cbi5kb2MtZmxleC13cmFwIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdG1heC1oZWlnaHQ6IDQwMHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmV5O1xuICAgIHBhZGRpbmc6IDVweDtcblx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcblx0Ji5kb2Mtd2FybmluZyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE4MiwgMTkzLCAwLjQpO1xuXHR9XG5cblx0LmRvYy1jYXJkIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuXHRcdHdpZHRoOiAzMi41JTtcblx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0XG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3gtc2hhZG93OiAwcHggMHB4IDNweCAwcHggcmdiYSgwLDAsMCwwLjMpO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdH1cblxuXHRcdCYuZG9jLWNhcmQtZ2hvc3Qge1xuXHRcdFx0Ym9yZGVyOm5vbmU7XG5cdFx0XHRoZWlnaHQ6IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cbn1cblxuLnNlbGVjdGVkLWRvYy13cmFwIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRsaW5lQnJlYWs7XG5cdHBhZGRpbmc6IDEwcHg7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDZweDtcblxuXHQuc2VsZWN0ZWQtZG9jLW5hbWUge1xuXHRcdEBleHRlbmQgLmZvbnQtYm9sZC1pdGFsaWM7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR9XG5cdC5zZWxlY3RlZC1kb2MtcHJhY3RpY2Uge1xuXHRcdEBleHRlbmQgLm1iLTA7XG5cdFx0QGV4dGVuZCAudGV4dC10ZXh0R3JleTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdH1cbn1cblxuLmRvY3Rvci1maWx0ZXItZ3JvdXAge1xuXHRpbnB1dFt0eXBlPXJhZGlvXSB7XG5cdFx0dG9wOiAtMnB4O1xuXG5cdH1cblx0XG5cdC5yYWRpby1pbmxpbmUge1xuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDE1cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW1wYWN0IG9uIGxpZmUgYWdlIChob3cgb2xkIHRoZSBhbnN3ZXJzIGJlaGluZCB0aGUgcHVibGljIHNjb3JlIGFyZSlcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmltcGFjdC1yZXZpZXctd3JhcCB7XG5cdG1hcmdpbi10b3A6IDhweDtcblx0bWF4LXdpZHRoOiAyNjBweDtcblxuXHQuaW1wYWN0LXJldmlldy1kYXRlIHtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDExcHg7XG5cdH1cblxuXHQvKiBBbnN3ZXJzIHBhc3QgdGhlIHZhbGlkaXR5IHdpbmRvdyAtIHRoZSBwdWJsaWMgc2NvcmUgaXMgcGVuZGluZyB1bnRpbCB0aGVcblx0ICAgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZCBhZ2Fpbiwgc28gdGhpcyBoYXMgdG8gcmVhZCBhcyBhIHByb21wdCwgbm90IGEgbm90ZS4gKi9cblx0LmltcGFjdC1yZXZpZXctZXhwaXJlZCB7XG5cdFx0QGV4dGVuZCAuZm9udC1tZWRpdW07XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHR9XG59XG4iLCIuZXhhbS13cmFwIHtcblxufVxuXG4uZm9ybS1leGFtIHtcblx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRjb2xvcjogJHRleHRHcmV5O1xuXHRmb250LXNpemU6IDEycHg7XG5cdFxuXHRzZWxlY3QsXG5cdC5mb3JtLWNvbnRyb2wge1xuXHRcdGJvcmRlci1yYWRpdXM6IDA7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblx0XG5cdC5mb3JtLWdyb3VwLWxhYmVsIHtcblx0XHRwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHQvKmFsaWduLXNlbGY6IGNlbnRlcjsqL1xuXHRcdH1cblx0fVxuXG5cdC5zbmVsbGVuIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdC8qanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyovXG5cdFx0cGFkZGluZzogMDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRzZWxlY3QsXG5cdFx0Lm1hcmstd3JhcCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdFx0XHQvKndpZHRoOiBjYWxjKDUwJSAtIDYwcHgpOyovXG5cdFx0XHR3aWR0aDogMTAwcHg7XG5cdFx0fVxuXHR9XG5cdFxuXHQubWFyay13cmFwLFxuXHQubWFyay13cmFwLWRlZyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LnNpeC1wcmUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOjUwJTtcblx0XHRcdHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0bGVmdDotMjBweDtcblx0XHR9XG5cblx0XHQuc3RyaXBlLXBvc3Qge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOjUwJTtcblx0XHRcdHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0cmlnaHQ6LTE1cHg7XG5cdFx0fVxuXG5cdFx0LnN0cmlwZS1wcmUge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOjUwJTtcblx0XHRcdHRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0bGVmdDotMTJweDtcblx0XHR9XG5cdH1cblxuXG5cdC5tYXJrLXdyYXAtZGVnIHtcblx0XG5cdFx0LmRlZyB7XG5cdFx0XHR3aWR0aDogODBweDtcblx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogNnB4O1xuXHRcdH1cblx0XHRcblx0XHQuc3RyaXBlLXBvc3Qge1xuXHRcdFx0cmlnaHQ6IC0zN3B4O1xuXHRcdH1cblxuXHR9XG59XG5cbi5jaGVjay1sYWJlbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQuY2hlY2stc3BhbiB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5sZW5zIHtcblx0d2lkdGg6IDIyMHB4O1xufVxuXG4ubGVucy1sYWJlbCB7XG5cdG1hcmdpbi10b3A6IDM0cHg7XG59XG5cbi52aXN1YWwtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiA3MHB4O1xufVxuXG4uZm9ybS1ncm91cC1sYWJlbC10b3Age1xuXHRtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4uY29sLWJpbiB7XG5cdHBhZGRpbmctbGVmdDogNjBweDtcbn0iLCIudGVybXMge1xuXHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdEBleHRlbmQgLnRleHQtdGV4dEdyZXk7XG5cdFxuXHRoMSB7XG5cdFx0bWFyZ2luOiAzMHB4IDA7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbG9nb3V0R3JleTtcblx0fVxuXG5cdGgzIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRcdEBleHRlbmQgLmZvbnQtbWVkaXVtO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXHRcblx0cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0fVxuXG5cdGEge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5pbWFnZTEge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdHdpZHRoOiA1MCU7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHR9XG59IiwiLm9wLWhlYWRlciB7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZzogNXB4IDA7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cblx0aDQge1xuXHRcdGZvbnQtc2l6ZTogMWVtO1xuXHR9XG59XG5cbi5uYXZ5LXRleHQge1xuXHRjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcbn1cblxuLm5hdnktbGluZSB7XG5cdGhlaWdodDogMnB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0bWFyZ2luLWxlZnQ6IDEuNWVtO1xuXHRtYXJnaW4tcmlnaHQ6IDEuNWVtO1xuXHRtYXJnaW4tdG9wOiAxZW07XG59XG5cbi5wcmUtb3AtZm9ybSB7XG5cdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0Y29sb3I6ICR0ZXh0R3JleTtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHQvLyBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rO1xuXHRwYWRkaW5nOiAwIDIwcHg7XG5cblx0c2VsZWN0LFxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdC8vIGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0fVxuXG5cdC5mb3JtLWdyb3VwLWxhYmVsIHtcblx0XHRwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LmZsZXgge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRzZWxlY3QsXG5cdFx0LmlucHV0LFxuXHRcdC5pbmxpbmUtbnVtYmVyLFxuXHRcdC5tYXJrLXdyYXAge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0d2lkdGg6IDEwMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5tYXJrLXdyYXAsXG5cdC5tYXJrLXdyYXAtZGVnIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuc2l4LXByZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGxlZnQ6IC0yMHB4O1xuXHRcdH1cblxuXHRcdC5zdHJpcGUtcG9zdCB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdHJpZ2h0OiAtMTVweDtcblx0XHR9XG5cblx0XHQuc3RyaXBlLXByZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGxlZnQ6IC0xMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5tYXJrLXdyYXAtZGVnIHtcblx0XHQuZGVnIHtcblx0XHRcdHdpZHRoOiA4MHB4O1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA2cHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXG5cdFx0LnN0cmlwZS1wb3N0IHtcblx0XHRcdHJpZ2h0OiAtMzdweDtcblx0XHR9XG5cdH1cblxuXHRsYWJlbCB7XG5cdFx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQubWFya2VyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAycHg7XG5cdH1cbn1cblxuLmJ0bi1uZXh0IHtcblx0d2lkdGg6IDEyMHB4O1xuXHRAZXh0ZW5kIC5mb250LWJvbGQ7XG59XG5cbi5jaGVjay1sYWJlbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHQuY2hlY2stc3BhbiB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHR9XG59XG5cbi5sZW5zIHtcblx0d2lkdGg6IDIyMHB4O1xufVxuXG4ubGVucy1sYWJlbCB7XG5cdG1hcmdpbi10b3A6IDM0cHg7XG59XG5cbi52aXN1YWwtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiA3MHB4O1xufVxuXG4uZm9ybS1ncm91cC1sYWJlbC10b3Age1xuXHRtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4uY29sLWJpbiB7XG5cdHBhZGRpbmctbGVmdDogNjBweDtcbn1cblxuLnByZXNzdXJlLXdyYXAge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdG1heC13aWR0aDogNDYwcHg7XG5cblx0LmZvcm0tZ3JvdXAge1xuXHRcdHdpZHRoOiA0NyU7XG5cdH1cbn1cblxuLmhhbGYtd2lkdGgge1xuXHRtYXgtd2lkdGg6IDUwJTtcbn1cblxuLnF1YXJ0ZXItd2lkdGgge1xuXHRtYXgtd2lkdGg6IDI1JTtcbn1cblxuLmJsdWUtYm94IHtcblx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdHBhZGRpbmc6IDE1cHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcblx0bWFyZ2luLWJvdHRvbTogMTVweDtcblx0Ym9yZGVyLXJhZGl1czogOHB4O1xuXHQuaGVhZGVyIHtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cblx0XHQuaDQge1xuXHRcdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNXB4O1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHR9XG5cdH1cbn1cblxuLmV5ZS1oZWFkaW5nIHtcblx0bWFyZ2luLWJvdHRvbTogMjBweDtcbn1cblxuLnByZS1vcC1zYXZlLXdyYXAge1xuXHRtaW4taGVpZ2h0OiA4MHB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdG1hcmdpbjogMjBweCAwO1xuXG5cdC5wcm9ncmVzc2lvbi13cmFwIHtcblx0XHRtaW4td2lkdGg6IDI1MHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdFx0LnNhdmUtcHJvZ3Jlc3Mge1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5wcm9ncmVzc2lvbi1hbGVydC13cmFwIHtcblx0XHR3aWR0aDogY2FsYygxMDAlIC0gMjgwcHgpO1xuXG5cdFx0LmFsZXJ0IHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdCYgKyAuYWxlcnQge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4uc3RhY2stdmVydCB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHRvcDogMnB4O1xuXHRtYXJnaW4tbGVmdDogMTBweDtcblxuXHQucmFkaW8taW5saW5lICsgLnJhZGlvLWlubGluZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0bWFyZ2luLXRvcDogNXB4O1xuXHR9XG59XG5cbi5vcHRpb25hbCB7XG5cdEBleHRlbmQgLnRleHQtcHVycGxlO1xuXHRAZXh0ZW5kIC5mb250LWxpZ2h0LWl0YWxpYztcbn1cblxuLmZsZXgtYmlvbWV0cnkge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5jb250cm9sLWxhYmVsIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4uYmlvbWV0cnktaW5wdXQge1xuXHR3aWR0aDogMTAwcHg7XG5cdG1hcmdpbi1yaWdodDogMjBweDtcbn1cblxuLmF4aXMtd3JhcCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmF4aXMtdGltZXMsXG4uYXhpcy1kZWcge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogNTAlO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLmF4aXMtdGltZXMge1xuXHRyaWdodDogY2FsYygxMDAlICsgNnB4KTtcbn1cblxuLmF4aXMtZGVnIHtcblx0bGVmdDogMTEwcHg7XG59XG5cbi5zZWN0aW9uLWxhYmVsIHtcblx0bWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLmJpb21ldHJ5IHtcblx0LmZvcm0tcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHR9XG5cdC5sZWZ0LWNvbHVtbiB7XG5cdFx0d2lkdGg6IDI4cHg7XG5cdH1cblx0LmZvcm0tZ3JvdXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAzMDBweDtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi5iaW8taW50ZXJuYWwtZmxleCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50YWJsZS1tZWRpY2F0aW9uIHtcblx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR0aCxcblx0dGQge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlICFpbXBvcnRhbnQ7XG5cdH1cblx0dGQ6bGFzdC1jaGlsZCB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdH1cblxuXHQucmVtb3ZlLW1lZCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0d2lkdGg6IDI0cHg7XG5cdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogd2hpdGU7XG5cdFx0fVxuXHR9XG59XG5cbi5idG4tYWRkLWFsbGVyZ3kge1xuXHRoZWlnaHQ6IDM0cHg7XG5cdHdpZHRoOiAzNHB4O1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG59XG5cbi5mbGV4LWFsbGVyZ3kge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5ncm93IHtcblx0XHRmbGV4OiAxIDA7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHR9XG59XG5cbi5hbmFlc3RoZXRpYy13cmFwIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuZm9ybS1ncm91cCB7XG5cdFx0d2lkdGg6IDI2MHB4O1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxuXG5cdC5oZWxwLWJsb2NrIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4udGV4dC1hcmVhLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0LmNvdW50LXJlbWFpbmluZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRib3R0b206IDA7XG5cdFx0cmlnaHQ6IDE1cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhci1pdGFsaWM7XG5cdH1cbn1cblxuLmRpYWJldGVzLXBvcC11cC13cmFwIHtcblx0d2lkdGg6IDUwJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucmV0aW5vcGF0aHktcG9wLXVwLU9EIHtcblx0LnJldGlub3BhdGh5LXBvcHVwIHtcblx0XHRsZWZ0OiBjYWxjKDEwMCUgKyAxMHB4KTtcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wLXVwLU9TIHtcblx0LnJldGlub3BhdGh5LXBvcHVwIHtcblx0XHRyaWdodDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLnNob3dSZXRpbm9wYXRoeSB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLm1hY3Vsb3BhdGh5LXBvcC11cC1PRCB7XG5cdC5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdFx0bGVmdDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLm1hY3Vsb3BhdGh5LXBvcC11cC1PUyB7XG5cdC5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdFx0cmlnaHQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5zaG93TWFjdWxvcGF0aHkge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5yZXRpbm9wYXRoeS1wb3B1cCxcbi5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRwYWRkaW5nOiAxNXB4O1xuXHRmb250LXNpemU6IDEwcHg7XG5cdGNvbG9yOiAkbmF2eTtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cdHdpZHRoOiA0ODBweDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAxO1xuXHR0b3A6IDA7XG5cdGRpc3BsYXk6IG5vbmU7XG5cblx0LnRhYmxlLWJvcmRlcmVkIHtcblx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdFx0dGgge1xuXHRcdFx0QGV4dGVuZCAuZm9udC1ib2xkLWl0YWxpYztcblx0XHR9XG5cblx0XHR0aCxcblx0XHR0ZCB7XG5cdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbmF2eTtcblx0XHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJG5hdnk7XG5cblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRib3JkZXItbGVmdDogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRyOmxhc3QtY2hpbGQge1xuXHRcdFx0dGQge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0ZCxcblx0cCB7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyLWl0YWxpYztcblx0fVxuXG5cdHRkLFxuXHR0aCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHR9XG5cblx0cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wdXAge1xuXHR0aDpmaXJzdC1jaGlsZCxcblx0dGQ6Zmlyc3QtY2hpbGQge1xuXHRcdHdpZHRoOiAxMjBweDtcblx0fVxufVxuXG4ucHJlLW9wLWZvcm0ge1xuXHQuZmxleC1sZW5zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0LmZvcm0tZ3JvdXAge1xuXHRcdFx0d2lkdGg6IDE1MHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdH1cblxuXHRcdC5mb3JtLWdyb3VwLWF4aXMge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0d2lkdGg6IDExMHB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEFVIFBCUyBwcmVzY3JpcHRpb24gZmllbGRzIChtZWRpY2F0aW9uIGZvcm0pXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRoZSBQQlMgZGV0YWlscyBwcmludGVkIG9udG8gdGhlIHByZS1wcmludGVkIFBCMDIzIGZvcm0uIEdyb3VwZWQgaW4gYSBsaWdodFxuICAgcGFuZWwgdW5kZXIgdGhlIGRvc2Ugcm93IHNvIHRoZXkgcmVhZCBhcyBvbmUgc2V0OyBmbGV4IHJhdGhlciB0aGFuIEJvb3RzdHJhcFxuICAgY29sdW1ucyBzbyB0aGUgY2hlY2tib3hlcyBsaW5lIHVwIHdpdGggdGhlIGlucHV0cyBiZXNpZGUgdGhlbSBhbmQgdGhlIHJvd3NcbiAgIHdyYXAgY2xlYW5seSB3aGVuIHRoZSBtb2RhbCBpcyBuYXJyb3cuICovXG4ucGJzLWZpZWxkcyB7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdHBhZGRpbmc6IDEwcHggMTJweCAycHg7XG5cdGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGN5YW47XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbi10cC0wNTtcblxuXHQucGJzLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHRcdGdhcDogMCAxNnB4O1xuXHR9XG5cblx0LnBicy1maWVsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdFx0fVxuXHR9XG5cblx0LnBicy1maWVsZC1zbSB7XG5cdFx0d2lkdGg6IDdyZW07XG5cdH1cblxuXHQucGJzLWZpZWxkLW1kIHtcblx0XHR3aWR0aDogMTFyZW07XG5cdH1cblxuXHQucGJzLWZpZWxkLWZ1bGwge1xuXHRcdGZsZXg6IDEgMSAxMDAlO1xuXHR9XG5cblx0LyogU2FtZSBoZWlnaHQgYXMgLmZvcm0tY29udHJvbCBzbyB0aGUgbGFiZWwgc2l0cyBsZXZlbCB3aXRoIHRoZSBpbnB1dHMuICovXG5cdC5wYnMtZmllbGQtY2hlY2sge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdH1cblxuXHQucGJzLWNoZWNrIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0Ji5pcy1kaXNhYmxlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxufVxuXG4uYWxsZXJneS1mb3JtLXdyYXAge1xuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG59XG5cbi5sb2NzaWlpLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHdpZHRoOiA1MCU7XG59XG5cbi5sb2NzaWlpLWltZy13cmFwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNTAwcHg7XG5cdGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLmxvY3NpaWktaW1nLXdyYXAtT0Qge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHdpZHRoOiA3MDBweDtcblx0bGVmdDogY2FsYygxMDAlICsgMTVweCk7XG5cdHRvcDogMDtcblx0ei1pbmRleDogMTtcblx0ZGlzcGxheTogbm9uZTtcblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5sb2NzaWlpLWltZy13cmFwLU9TIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNTAwcHg7XG5cdHJpZ2h0OiBjYWxjKDEwMCUgKyAxNXB4KTtcblx0dG9wOiAwO1xuXHR6LWluZGV4OiAxO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLnNob3dPcGFsLFxuLnNob3dDb2xvdXIsXG4uc2hvd0NvcnRpY2FsLFxuLnNob3dQdXBpbCxcbi5zaG93U3ViIHtcblx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cblxuLnByZS1vcC1oZWFkZXIge1xuXHQvLyBvdXRsaW5lOiAxcHggZG90dGVkIHBpbms7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cblx0LmhlYWQtZmxleCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0aDMsXG5cdGg0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXG5cdC5oZWFkLWxpbmsge1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0fVxuXG5cdC5oZWFkLW5hbWUge1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxuXG5cdC5oZWFkZXItbGVmdCxcblx0LmhlYWRlci1yaWdodCB7XG5cdFx0Ly8gb3V0bGluZTogMXB4IHNvbGlkIGdyZWVuO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHR9XG5cblx0LmhlYWRlci1yaWdodCB7XG5cdFx0Ly8gbWFyZ2luLXJpZ2h0OiA4MHB4O1xuXHRcdC8vIG91dGxpbmU6IDFweCBzb2xpZCBibHVlO1xuXHR9XG59XG5cbi5ncmFwaHMtY29udGFpbmVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xufSBcblxuLmNhcmQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDAgNHB4IHJnYigwIDAgMCAvIDIwJSk7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblx0bWFyZ2luOiAxZW07XG5cdG1hcmdpbi1yaWdodDogMDtcbn1cbiAgXG4uY2FyZDpob3ZlciB7XG5cdC8qIGJveC1zaGFkb3c6IDAgOHB4IDI4cHggMCByZ2JhKDAsMCwwLDAuMik7ICovXG4gIH1cbiAgXG4uY2FyZC1jb250YWluZXIge1xuXHRwYWRkaW5nLWxlZnQ6IDFlbTtcblx0cGFkZGluZy1yaWdodDogMWVtO1xuXHQvKiBwYWRkaW5nOiAycHggMTZweDsgKi9cbn1cblxuLnBhdGllbnRzLWVtcHR5IHtcblx0QGV4dGVuZCAuY2FyZDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTsgXG5cdG1hcmdpbjogMDtcblx0aGVpZ2h0OiAnYXV0byc7XG5cdGg0IHtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdHBhZGRpbmc6IDJlbTtcblx0fVxufVxuXG4ubWVudS1zZWN0aW9uIHtcblx0QGV4dGVuZCAuY2FyZDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTsgXG5cdG1pbi1oZWlnaHQ6IDEwZW07XG5cdG1hcmdpbi1sZWZ0OiAwO1xuXHRtYXJnaW4tdG9wOiAwO1xuXHRoNCB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdHBhZGRpbmctbGVmdDogMWVtO1xuXHRcdHBhZGRpbmctdG9wOiAxZW07XG5cdFx0cGFkZGluZy1ib3R0b206IDAuNGVtO1xuXHR9XG59XG5cbi5tZW51LWNvbnRhaW5lciB7XG59XG5cbi5tZW51LWxpc3Qge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5tZW51LWFycm93IHtcblx0Ym9yZGVyLXdpZHRoOiAxMXB4O1xuXHQvKiBwb3NpdGlvbjogYWJzb2x1dGU7ICovXG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogMDtcblx0aGVpZ2h0OiAwO1xuXHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRtYXJnaW4tdG9wOiAtMTFweDtcblx0bWFyZ2luLWxlZnQ6IC0xMXB4O1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xuXHRib3JkZXItYm90dG9tLWNvbG9yOiAjZjRmN2ZlO1xuXHRtYXJnaW4tbGVmdDogNDglO1xuXHQvKiBsZWZ0OiA1MCU7ICovXG59XG5cbi52ZXJ0aWNhbC1iYXIge1xuXHR3aWR0aDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0YWxpZ24tc2VsZjogc3RyZXRjaDtcblx0bWFyZ2luLWxlZnQ6IDJlbTtcblx0bWFyZ2luLXRvcDogMWVtO1xuXHRtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbi5tZW51LWJsb2NrIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4ucmlnaHQtYXJyb3cge1xuXHRtYXJnaW4tdG9wOiAxZW07XG5cdHdpZHRoOiAxNnB4O1xuXHRoZWlnaHQ6IDE2cHg7XG59XG5cbi5tZW51LWl0ZW0ge1xuXHR3aWR0aDogMTFlbTtcblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXHRwIHtcblx0ICBwYWRkaW5nLWxlZnQ6IDFlbTtcblx0ICBwYWRkaW5nLXJpZ2h0OiAwLjJlbTtcblx0ICB0ZXh0LWFsaWduOiBsZWZ0O1xuXHQgIGZvbnQtc2l6ZTogMTJweDtcblx0fVxufVxuXG4ucGF0aWVudC1oZWFkZXIge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0LmhlYWRlci10aXRsZSB7XG5cdFx0ZmxleDogMTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAxMHJlbTtcblx0fVxuXG5cdC5tZW51LWNvbnRhaW5lciB7XG5cdFx0ZmxleDogMTI7XG5cdH1cblxuXHQubGluay1kaXNhYmxlZCB7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdG9wYWNpdHk6IDAuNjtcblx0fVxuXG5cdC5hcnJvdy1kb3duIHtcblx0XHRib3JkZXI6IHNvbGlkICRuYXZ5O1xuXHRcdGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDNweDtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXHR9XG5cblx0LmFycm93LXJpZ2h0IHtcblx0XHRib3JkZXI6IHNvbGlkICRuYXZ5O1xuXHRcdGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDNweDtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG5cdH1cblxuXHRoMyxcblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR9XG5cblx0aDUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0fVxuXG5cdC5wYXRpZW50LWNhcmQge1xuXHRcdEBleHRlbmQgLmNhcmQ7XG5cdFx0cGFkZGluZy1ib3R0b206IDFlbTtcblx0fVxuXG5cdC5wYXRpZW50LWRldGFpbC1zZWN0aW9uIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRwYWRkaW5nLXRvcDogMC41ZW07XG5cdFx0aDQge1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFZlcmlmaWVkL3VudmVyaWZpZWQgY29tbXMgaWNvbnMgYmVzaWRlIHRoZSBtb2JpbGUgbnVtYmVyLiBUaGUgc3RhdGUgYmVoaW5kIHRoZW0gaXMgdGhlIHNhbWUgb25lXG5cdCAgIC5jb250YWN0LXZlcmlmaWVkLXBpbGwgKF9mb3Jtcy5jc3MpIHNwZWxscyBvdXQgaW4gd29yZHMgb24gdGhlIHBhdGllbnQgZWRpdCBmb3JtOyB1cCBoZXJlIHRoZXJlXG5cdCAgIGlzIG5vIHJvb20gZm9yIGEgd29yZCwgc28gZWFjaCBjaGFubmVsIGtlZXBzIGl0cyBvd24gZ2x5cGggd2l0aCBhIHRpY2sgb3IgYSBjcm9zcyBiYWRnZWQgb24gaXQuXG5cblx0ICAgRGVsaWJlcmF0ZWx5IG5vIG1hcmdpbi10b3Agb3IgYWxpZ24tc2VsZjogdGhlIHJvdyBpcyBiYXNlbGluZS1hbGlnbmVkLCB3aGljaCBwdXRzIHRoZSBnbHlwaHMgb25cblx0ICAgdGhlIHNhbWUgbGluZSBhcyB0aGUgbnVtYmVyIHRoZXkgYmVsb25nIHRvIHdpdGhvdXQgaGF2aW5nIHRvIG1hdGNoIHRoZSBsaW5rJ3Mgb3duIG9mZnNldC4gKi9cblx0LmNvbW1zLXZlcmlmaWVkIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdG1hcmdpbi1sZWZ0OiAuNzVlbTtcblx0XHRtYXJnaW4tcmlnaHQ6IC43NWVtO1xuXHR9XG5cblx0LmNvbW1zLXZlcmlmaWVkLWljb24ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0LyogV2lkZSBlbm91Z2ggdGhhdCB0aGUgYmFkZ2Ugb24gb25lIGdseXBoIGNsZWFycyB0aGUgbmV4dCBnbHlwaCBlbnRpcmVseS4gVGhlIGJhZGdlIGhhbmdzXG5cdFx0ICAgaGFsZiBvdXRzaWRlIGl0cyBvd24gYm94LCBzbyBhIGdhcCB0aGUgc2l6ZSBvZiB0aGUgYmFkZ2UgaXMgdGhlIG1pbmltdW0gdGhhdCByZWFkcyBhcyB0d29cblx0XHQgICBzZXBhcmF0ZSBpY29ucyByYXRoZXIgdGhhbiBvbmUgc211ZGdlLiAqL1xuXHRcdG1hcmdpbi1yaWdodDogMWVtO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHQvKiBTdGF0dXMsIG5vdCBhIGNvbnRyb2wuIFRoZSBkZXRhaWwgLSBpbmNsdWRpbmcgdGhlIGRhdGUgaXQgd2FzIHZlcmlmaWVkIC0gaXMgaW4gdGhlIHRpdGxlLiAqL1xuXHRcdGN1cnNvcjogaGVscDtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0LyogUGFsZXR0ZSBjb2xvdXJzIHJhdGhlciB0aGFuIGEgb25lLW9mZiBncmVlbjogdGhlc2Ugc2l0IGFtb25nIHRoZSBoZWFkZXIncyBvdGhlciBnbHlwaHMgYW5kXG5cdFx0ICAgaGF2ZSB0byBiZWxvbmcgdG8gdGhlIHNhbWUgc2V0LiBOYXZ5IHJlYWRzIGFzIFwib24gZmlsZSBhbmQgY29uZmlybWVkXCIgd2l0aG91dCBjb21wZXRpbmdcblx0XHQgICB3aXRoIHRoZSByZWQsIHdoaWNoIGlzIHRoZSBvbmUgdGhhdCB3YW50cyB0byBiZSBub3RpY2VkLiAqL1xuXHRcdCYuaXMtdmVyaWZpZWQge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuaXMtdW52ZXJpZmllZCB7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHR9XG5cdH1cblxuXHQvKiBCYWRnZWQgb24gdGhlIGJvdHRvbSByaWdodCBvZiB0aGUgY2hhbm5lbCBnbHlwaC4gVGhlIGNhcmQgYmVoaW5kIGlzIHdoaXRlLCBzbyBhIHdoaXRlIGRpc2Ncblx0ICAga2VlcHMgdGhlIGJhZGdlIGxlZ2libGUgd2hlcmUgaXQgb3ZlcmxhcHMgdGhlIGdseXBoLiBQdWxsZWQgaW4gdGlnaHRlciB0aGFuIHRoZSBnbHlwaCdzIG93blxuXHQgICBlZGdlIHNvIGl0IHJlYWRzIGFzIGF0dGFjaGVkIHRvIGl0IHJhdGhlciB0aGFuIGFzIGEgdGhpcmQgZmxvYXRpbmcgaWNvbi4gKi9cblx0LmNvbW1zLXZlcmlmaWVkLWJhZGdlIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IC0wLjM1ZW07XG5cdFx0Ym90dG9tOiAtMC4xZW07XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdH1cblxuXHQudmVydGljYWwtc2VjdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHR9XG5cbn1cblxuXG4ucG9wb3Zlci1wcmVvcC13cmFwIHtcblx0cGFkZGluZzogMjBweDtcblx0cGFkZGluZy1ib3R0b206IDA7XG5cdHdpZHRoOiAzMDBweDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdGxhYmVsIHtcblx0XHRjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cblxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdH1cblxuXHQuZm9ybS1ncm91cDpsYXN0LWNoaWxkIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG59XG5cbi5wb3BvdmVyIHtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICAvKiB3aWR0aDogMjBlbTtcblx0bWF4LXdpZHRoOiAyMGVtOyAqL1xuXHQubWFya2VyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAycHg7XG5cdH1cbn1cblxuLnBvcG92ZXIuYm90dG9tID4gLmFycm93IHtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJG5hdnk7XG59XG5cbi5zcGlubmVyLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52ZXJ0aWNhbC1idXR0b25zIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuXHRidXR0b24gKyBidXR0b24ge1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdH1cbn1cblxuLnZlcnRpY2FsLXJhZGlvLWdyb3VwcyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1hcmdpbi10b3A6IDFlbTtcbn1cblxuLnJhZGlvLWJ1dHRvbi1pbmxpbmUge1xuXHRtYXJnaW4tbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuLm15LW1vZGFsLWZvb3Rlci1wYXRpZW50LWRldGFpbHMge1xuXHQuYnRuLW5hdnkge1xuXHRcdHdpZHRoOiAyMjBweDtcblx0fVxufVxuXG4ud2lkdGhfMzVfZW17XG5cdHdpZHRoOiAzNWVtO1xufVxuXG5oci5saWZlLXF1YWxpdHktbGluZS1icmVhayB7XG5cdGJvcmRlci10b3AtY29sb3I6ICMzODUwYTI7XG5cdG1hcmdpbi10b3A6IDA7XG5cdG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5jdXN0b21lcl9jaGVja2JveF9yZWQge1xuICAgaW5wdXRbdHlwZT1jaGVja2JveF06YmVmb3JlIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR3aWR0aDogMTNweDtcblx0XHRoZWlnaHQ6IDEzcHg7XG5cdFx0Ym9yZGVyOiBzb2xpZCByZWQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpiZWZvcmUge1xuXHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAxNXB4O1xuXHRcdGhlaWdodDogMTVweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG59XG4gICBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkOmFmdGVyIHtcblx0XHRjb250ZW50OiBcIlwiO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiA1cHg7XG5cdFx0aGVpZ2h0OiAxMHB4O1xuXHRcdGJvcmRlcjogc29saWQgd2hpdGU7XG5cdFx0Ym9yZGVyLXdpZHRoOiAwIDJweCAycHggMDtcblx0XHQtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHQtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA1cHg7XG5cdFx0bGVmdDogNXB4O1xufVxuIHNwYW4ge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtMXB4O1xuXHRwYWRkaW5nLWxlZnQ6IDAuNWVtO1xuIH1cbn1cblxuLmN1c3RvbWVyX2NoZWNrYm94X2dyZWVuIHtcblx0aW5wdXRbdHlwZT1jaGVja2JveF06YmVmb3JlIHtcblx0XHQgY29udGVudDogXCJcIjtcblx0XHQgZGlzcGxheTogYmxvY2s7XG5cdFx0IHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHQgd2lkdGg6IDEzcHg7XG5cdFx0IGhlaWdodDogMTNweDtcblx0XHQgYm9yZGVyOiBzb2xpZCBncmVlbjtcblx0XHQgYm9yZGVyLXJhZGl1czogMnB4O1xuXHRcdCBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiB9XG4gaW5wdXRbdHlwZT1jaGVja2JveF06Y2hlY2tlZDpiZWZvcmUge1xuXHRcdCBjb250ZW50OiBcIlwiO1xuXHRcdCBkaXNwbGF5OiBibG9jaztcblx0XHQgcG9zaXRpb246IGFic29sdXRlO1xuXHRcdCB3aWR0aDogMTVweDtcblx0XHQgaGVpZ2h0OiAxNXB4O1xuXHRcdCBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbiB9XG5cdGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQ6YWZ0ZXIge1xuXHRcdCBjb250ZW50OiBcIlwiO1xuXHRcdCBkaXNwbGF5OiBibG9jaztcblx0XHQgd2lkdGg6IDVweDtcblx0XHQgaGVpZ2h0OiAxMHB4O1xuXHRcdCBib3JkZXI6IHNvbGlkIHdoaXRlO1xuXHRcdCBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwO1xuXHRcdCAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHQgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcblx0XHQgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXHRcdCBwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0IHRvcDogNXB4O1xuXHRcdCBsZWZ0OiA1cHg7XG4gfVxuICBzcGFuIHtcblx0IHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0IHRvcDogLTFweDtcblx0IHBhZGRpbmctbGVmdDogMC41ZW07XG4gIH1cbiB9XG5cblxuLmN1c3RvbWVyX3JhZGlvX3JlZCB7XG5cdC5tYXJrZXIge1xuXHRcdG1hcmdpbi1sZWZ0OiAwLjVlbTtcblx0XHRtYXJnaW4tcmlnaHQ6IDFlbTtcblx0XHRmb250LXNpemU6IDEuNmVtO1xuXHRcdGNvbG9yOiByZWQgIWltcG9ydGFudDtcblx0fVxuXHRpbnB1dFt0eXBlPVwicmFkaW9cIl06YWZ0ZXIge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2QxZDNkMTtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAwcHggc29saWQgd2hpdGU7XG4gICAgfTtcblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICBsZWZ0OiAtMXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAwcHggc29saWQgd2hpdGU7XG4gICAgfTtcbn1cblxuLmN1c3RvbWVyX3JhZGlvX2dyZWVuIHtcblx0Lm1hcmtlciB7XG5cdFx0bWFyZ2luLWxlZnQ6IDAuNWVtO1xuXHRcdG1hcmdpbi1yaWdodDogMWVtO1xuXHRcdGZvbnQtc2l6ZTogMS42ZW07XG5cdFx0Y29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7XG5cdH1cblx0aW5wdXRbdHlwZT1cInJhZGlvXCJdOmFmdGVyIHtcbiAgICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICAgIGhlaWdodDogMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICAgICAgdG9wOiAtMnB4O1xuICAgICAgICBsZWZ0OiAtMXB4O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkMWQzZDE7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIHdoaXRlO1xuICAgIH07XG5cbiAgICBpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZDphZnRlciB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgbGVmdDogLTFweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgYm9yZGVyOiAwcHggc29saWQgd2hpdGU7XG4gICAgfTtcbn1cblxuLmN1c3RvbWVyX3JhZGlvX25vcm1hbCB7XG5cdC5tYXJrZXIge1xuXHRcdG1hcmdpbi1sZWZ0OiAwLjVlbTtcblx0XHRtYXJnaW4tcmlnaHQ6IDFlbTtcblx0XHRmb250LXNpemU6IDEuNmVtO1xuXHR9XG5cdGlucHV0W3R5cGU9XCJyYWRpb1wiXTphZnRlciB7XG4gICAgICAgIHdpZHRoOiAxNnB4O1xuICAgICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgICAgIHRvcDogLTJweDtcbiAgICAgICAgbGVmdDogLTFweDtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFkM2QxO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICBib3JkZXI6IDBweCBzb2xpZCB3aGl0ZTtcbiAgICB9O1xuXG4gICAgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmNoZWNrZWQ6YWZ0ZXIge1xuICAgICAgICB3aWR0aDogMTZweDtcbiAgICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICB0b3A6IC0ycHg7XG4gICAgICAgIGxlZnQ6IC0xcHg7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIGJvcmRlcjogMHB4IHNvbGlkIHdoaXRlO1xuICAgIH07XG59XG5cbi5wYWdpbmF0aW9uIHtcblx0bWFyZ2luLXRvcDogMmVtICFpbXBvcnRhbnQ7XG59XG5cbi5wYWdpbmF0aW9uPmxpPmEsXG4ucGFnaW5hdGlvbj5saT5zcGFuIHtcbiAgYm9yZGVyOiAwcHg7XG4gIHBhZGRpbmc6IDNweCA2cHg7XG59XG5cbi5wYWdpbmF0aW9uPmxpLmFjdGl2ZT5hIHtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdGNvbG9yOiAjMzM3YWI3O1xuXHRmb250LXdlaWdodDogYm9sZDtcblx0Zm9udC1zaXplOiAxNnB4O1xuXHRtYXJnaW4tdG9wOiAtMC4yZW07XG4gIH1cbi8qIC5wYWdpbmF0aW9uPmxpLmFjdGl2ZT5hIHtcbiAgYmFja2dyb3VuZDogcHVycGxlO1xuICBjb2xvcjogI2ZmZjtcbn0gKi9cblxuLyogLnBhZ2luYXRpb24ge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHBhZGRpbmctbGVmdDogMDtcblx0LmxpIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XG5cdH1cbn0gKi9cblxuLnBvcG92ZXJfdWwge1xuXHRtYXJnaW4tbGVmdDogLTJlbTtcbn1cblxuLnBvcG92ZXJfY29udGFpbmVyIHtcblx0LnBvcG92ZXIge1xuXHRcdHdpZHRoOiA0MGVtO1xuXHRcdG1heC13aWR0aDogNDBlbTtcblx0fVxufVxuXG4ucG9wb3Zlcl9sYWJlbCB7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJztcbn1cblxuLnBpbmtfaGVhZGVyIHtcblx0cGFkZGluZy1sZWZ0OiAyJTtcblx0cGFkZGluZy1yaWdodDogMiU7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0VFRTZGRjtcbn1cblxuLnB1cnBsZV9oZWFkZXIge1xuXHRwYWRkaW5nLWxlZnQ6IDIlO1xuXHRwYWRkaW5nLXJpZ2h0OiAyJTtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE3LDIxMCwyMzMpO1xufVxuXG4uYmx1ZV9oZWFkZXIge1xuXHRwYWRkaW5nLWxlZnQ6IDIlO1xuXHRwYWRkaW5nLXJpZ2h0OiAyJTtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA3LDIyNiwyNDMpO1xufVxuXG4ubG9uZ19zZWN0aW9ue1xuXHR3aWR0aDogMzAlICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAtNSU7XG5cdG1hcmdpbi1yaWdodDoxNSU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSU9MIGNhbGN1bGF0b3IgaGFuZC1vZmYgKHN1cmdpY2FsIHBsYW4pXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRoZSBsZW5zIHR5cGUgc2VsZWN0IGtlZXBzIGl0cyBoYWxmLXdpZHRoOyB0aGUgYnV0dG9uIHNpdHMgaW4gdGhlIHNwYWNlIHRoYXQgbGVhdmVzLiAqL1xuLmxlbnMtdHlwZS1jb250cm9scyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cblx0LmlvbC1jYWxjdWxhdG9yIHtcblx0XHRtYXJnaW4tbGVmdDogMjBweDtcblx0fVxufVxuXG4uaW9sLWNhbGN1bGF0b3Ige1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0LmlvbC1jYWxjdWxhdG9yLWJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBUaGUgc21hbGwgaXRhbGljIGxpbmUgdW5kZXIgdGhlIGJ1dHRvbiwgZm9sbG93aW5nIHRoZSBzdWJ0ZXh0IHVuZGVyIHRoZSB2ZXJpZnkgYnV0dG9uIGluIHRoZVxuXHQgICBDYXRUcmF4IGVtYWlscyAoLnZlcmlmeV9jYXR0cmF4X3N1YnRleHQgaW4gcGF0aWVudF9lbWFpbF92ZXJpZmljYXRpb25faHRtbC5mdGwpLiAqL1xuXHQuaW9sLWNhbGN1bGF0b3ItYXR0cmlidXRpb24ge1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdH1cblxuXHQuaW9sLWNhbGN1bGF0b3ItZXJyb3Ige1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRtYXgtd2lkdGg6IDIyMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFZpc2lvbiBtb2R1bGU6IHByaXNtIHZhbHVlICsgYmFzZSwgYW5kIHRoZSBjb3B5LWFkZHMgYnV0dG9uXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ucHJlLW9wLWZvcm0ge1xuXHQucHJpc20taW5wdXQtZ3JvdXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHQuaW5saW5lLW51bWJlciB7XG5cdFx0XHR3aWR0aDogMTAwcHg7XG5cdFx0fVxuXG5cdFx0LnByaXNtLWJhc2Uge1xuXHRcdFx0d2lkdGg6IDExMHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBpY29uLW9ubHkgY29weS1hZGRzLXRvLXRoZS1vdGhlci1leWUgYnV0dG9uLCBsaW5lZCB1cCB3aXRoIHRoZSBhZGQgaW5wdXRzICovXG5cdC5tZC1idXR0b24ubWQtZmFiLmJ0bi1jb3B5LWFkZHMge1xuXHRcdG1hcmdpbjogMDtcblx0XHR3aWR0aDogMzZweDtcblx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0bWluLWhlaWdodDogMzZweDtcblx0XHRsaW5lLWhlaWdodDogMzZweDtcblx0fVxufVxuIiwiLyogLm9wLWhlYWRlciB7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZzogNXB4IDA7XG5cdG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgY29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdGg0IHtcblx0XHRmb250LXNpemU6IDFlbTtcblx0fVxufSAqL1xuXG4ub3BlcmF0aW9uLWZvcm0ge1xuXHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdGNvbG9yOiAkdGV4dEdyZXk7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Ly8gYmFja2dyb3VuZC1jb2xvcjogcGluaztcblx0cGFkZGluZzogMCAyMHB4O1xuXHRib3JkZXItdG9wOiAycHggc29saWQgJG5hdnk7XG5cdGJvcmRlci1yYWRpdXM6IDByZW07XG5cdHBhZGRpbmctdG9wOiAzZW07XG5cdHNlbGVjdCwgLmZvcm0tY29udHJvbCB7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0XHQvLyBjb2xvcjogJHRleHRHcmV5O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0LyogRG8gbm90IHNldCBhcHBlYXJhbmNlIChlLmcuIHJhZGlvKTogQ2hyb21lIG1pc2FsaWducyB0ZXh0IGluIGlucHV0cywgc2VsZWN0cywgYW5kIGRpdi5mb3JtLWNvbnRyb2wuICovXG5cdH1cbiAgICBcbiAgICAuc2luZ2xlLXZhbHVlLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogNDAlO1xuICAgICAgICBtYXJnaW4tbGVmdDogMTAwcHg7XG4gICAgfVxuXG5cdC5mb3JtLWdyb3VwLWxhYmVsIHtcblx0XHRwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRtYXJnaW4tYm90dG9tOiAyNXB4O1xuXG5cdFx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LmZsZXgge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRzZWxlY3QsXG5cdFx0LmlucHV0LFxuXHRcdC5pbmxpbmUtbnVtYmVyLFxuXHRcdC5tYXJrLXdyYXAge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0d2lkdGg6IDEwMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5tYXJrLXdyYXAsXG5cdC5tYXJrLXdyYXAtZGVnIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQuc2l4LXByZSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDIwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgICAgIC8qIGxlZnQ6IC0yMHB4OyAqL1xuICAgICAgICAgICAgY29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXG5cdFx0LnN0cmlwZS1wb3N0IHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0cmlnaHQ6IC0xNXB4O1xuXHRcdH1cblxuXHRcdC5zdHJpcGUtcHJlIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0bGVmdDogLTEycHg7XG5cdFx0fVxuXHR9XG5cblx0Lm1hcmstd3JhcC1kZWcge1xuXHRcdC5kZWcge1xuXHRcdFx0d2lkdGg6IDgwcHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDZweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDZweDtcblx0XHR9XG5cdFx0XG5cdFx0LnN0cmlwZS1wb3N0IHtcblx0XHRcdHJpZ2h0OiAtMzdweDtcblx0XHR9XG5cdH1cblxuXHRsYWJlbCB7XG5cdFx0Y29sb3I6ICRuYXZ5ICFpbXBvcnRhbnQ7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHR9XG5cblx0Lm1hcmtlciB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogMnB4O1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhcjtcblx0fVxufVxuXG4uYnRuLW5leHQge1xuXHR3aWR0aDogMTIwcHg7XG5cdEBleHRlbmQgLmZvbnQtYm9sZDtcbn1cblxuLmNoZWNrLWxhYmVsIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdC5jaGVjay1zcGFuIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAycHg7XG5cdH1cbn1cblxuLmxlbnMge1xuXHR3aWR0aDogMjIwcHg7XG59XG5cbi5sZW5zLWxhYmVsIHtcblx0bWFyZ2luLXRvcDogMzRweDtcbn1cblxuLnZpc3VhbC1sYWJlbCB7XG5cdG1hcmdpbi10b3A6IDcwcHg7XG59XG5cbi5mb3JtLWdyb3VwLWxhYmVsLXRvcCB7XG5cdG1hcmdpbi10b3A6IDQwcHg7XG59XG5cbi5jb2wtYmluIHtcblx0cGFkZGluZy1sZWZ0OiA2MHB4O1xufVxuXG4ucHJlc3N1cmUtd3JhcCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDpmbGV4LXN0YXJ0O1xuXHQvKiBtYXgtd2lkdGg6IDQ2MHB4OyAqL1xuXG5cdC5mb3JtLWdyb3VwIHtcblx0XHR3aWR0aDogNDAlO1xuXHR9XG59XG5cbi5oYWxmLXdpZHRoIHtcblx0bWF4LXdpZHRoOiA1MCU7XG59XG5cbi5xdWFydGVyLXdpZHRoIHtcblx0bWF4LXdpZHRoOiAyNSU7XG59XG5cbi5ibHVlLWJveCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRwYWRkaW5nOiAxNXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdGJvcmRlci1yYWRpdXM6IDhweDtcblx0LmhlYWRlciB7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXG5cdFx0Lmg0IHtcblx0XHRcdEBleHRlbmQgLmZvbnQtYm9sZDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDVweDtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXHR9XG59XG5cbi5leWUtaGVhZGluZyB7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbi5vcGVyYXRpb24tbm90ZS1zYXZlLXdyYXAge1xuXHRtaW4taGVpZ2h0OiA4MHB4O1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdG1hcmdpbjogMjBweCAwO1xuXG5cdC5wcm9ncmVzc2lvbi13cmFwIHtcblx0XHRtaW4td2lkdGg6IDI1MHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdFx0LnNhdmUtcHJvZ3Jlc3Mge1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5wcm9ncmVzc2lvbi1hbGVydC13cmFwIHtcblx0XHR3aWR0aDogY2FsYygxMDAlIC0gMjgwcHgpO1xuXG5cdFx0LmFsZXJ0IHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cblx0XHRcdCYgKyAuYWxlcnQge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4uc3RhY2stdmVydCB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHRvcDogMnB4O1xuXHRtYXJnaW4tbGVmdDogMTBweDtcblxuXHQucmFkaW8taW5saW5lICsgLnJhZGlvLWlubGluZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0bWFyZ2luLXRvcDogNXB4O1xuXHR9XG59XG5cbi5vcHRpb25hbCB7XG5cdEBleHRlbmQgLnRleHQtcHVycGxlO1xuXHRAZXh0ZW5kIC5mb250LWxpZ2h0LWl0YWxpYztcbn1cblxuLmZsZXgtYmlvbWV0cnkge1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5jb250cm9sLWxhYmVsIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDE1cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4uYmlvbWV0cnktaW5wdXQge1xuXHR3aWR0aDogMTAwcHg7XG5cdG1hcmdpbi1yaWdodDogMjBweDtcbn1cblxuLmF4aXMtd3JhcCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmF4aXMtdGltZXMsXG4uYXhpcy1kZWcge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogNTAlO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbn1cblxuLmF4aXMtdGltZXMge1xuXHRyaWdodDogY2FsYygxMDAlICsgNnB4KTtcbn1cblxuLmF4aXMtZGVnIHtcblx0bGVmdDogMTEwcHg7XG59XG5cbi5zZWN0aW9uLWxhYmVsIHtcblx0bWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLmJpb21ldHJ5IHtcblx0LmZvcm0tcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHR9XG5cdC5sZWZ0LWNvbHVtbiB7XG5cdFx0d2lkdGg6IDE4cHg7XG5cdH1cblx0LmZvcm0tZ3JvdXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHdpZHRoOiAzMDBweDtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG59XG5cbi50YWJsZS1pbmNpc2lvbnMge1xuXHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdHRoLFxuXHR0ZCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGUgIWltcG9ydGFudDtcblx0XHRib3JkZXItdG9wOiAwICFpbXBvcnRhbnQ7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyLWl0YWxpYztcblx0fVxuXHR0ZDpsYXN0LWNoaWxkIHtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0fVxuXG5cdC5yZW1vdmUtbWVkIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0XHR3aWR0aDogMjRweDtcblx0XHRoZWlnaHQ6IDI0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiB3aGl0ZTtcblx0XHR9XG5cdH1cbn1cblxuLmJ0bi1hZGQtaW5jaXNpb24ge1xuXHRoZWlnaHQ6IDM0cHg7XG5cdHdpZHRoOiAzNHB4O1xuXHRtYXJnaW4tbGVmdDogMC41ZW07XG5cdHBhZGRpbmc6IDA7XG59XG5cbi5mbGV4LWFsbGVyZ3kge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdC5ncm93IHtcblx0XHRmbGV4OiAxIDA7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHR9XG59XG5cbi5hbmFlc3RoZXRpYy13cmFwIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHQuZm9ybS1ncm91cCB7XG5cdFx0d2lkdGg6IDI2MHB4O1xuXHRcdG1hcmdpbi1yaWdodDogMjBweDtcblx0fVxuXG5cdC5oZWxwLWJsb2NrIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bWFyZ2luLXRvcDogMDtcblx0fVxufVxuXG4udGV4dC1hcmVhLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0LmNvdW50LXJlbWFpbmluZyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRib3R0b206IDA7XG5cdFx0cmlnaHQ6IDE1cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdEBleHRlbmQgLmZvbnQtcmVndWxhci1pdGFsaWM7XG5cdH1cbn1cblxuLmRpYWJldGVzLXBvcC11cC13cmFwIHtcblx0d2lkdGg6IDUwJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4ucmV0aW5vcGF0aHktcG9wLXVwLU9EIHtcblx0LnJldGlub3BhdGh5LXBvcHVwIHtcblx0XHRsZWZ0OiBjYWxjKDEwMCUgKyAxMHB4KTtcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wLXVwLU9TIHtcblx0LnJldGlub3BhdGh5LXBvcHVwIHtcblx0XHRyaWdodDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLnNob3dSZXRpbm9wYXRoeSB7XG5cdC5yZXRpbm9wYXRoeS1wb3B1cCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLm1hY3Vsb3BhdGh5LXBvcC11cC1PRCB7XG5cdC5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdFx0bGVmdDogY2FsYygxMDAlICsgMTBweCk7XG5cdH1cbn1cblxuLm1hY3Vsb3BhdGh5LXBvcC11cC1PUyB7XG5cdC5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdFx0cmlnaHQ6IGNhbGMoMTAwJSArIDEwcHgpO1xuXHR9XG59XG5cbi5zaG93TWFjdWxvcGF0aHkge1xuXHQubWFjdWxvcGF0aHktcG9wdXAge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG59XG5cbi5yZXRpbm9wYXRoeS1wb3B1cCxcbi5tYWN1bG9wYXRoeS1wb3B1cCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRwYWRkaW5nOiAxNXB4O1xuXHRmb250LXNpemU6IDEwcHg7XG5cdGNvbG9yOiAkbmF2eTtcblx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG5cdHdpZHRoOiA0ODBweDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR6LWluZGV4OiAxO1xuXHR0b3A6IDA7XG5cdGRpc3BsYXk6IG5vbmU7XG5cblx0LnRhYmxlLWJvcmRlcmVkIHtcblx0XHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdFx0dGgge1xuXHRcdFx0QGV4dGVuZCAuZm9udC1ib2xkLWl0YWxpYztcblx0XHR9XG5cblx0XHR0aCxcblx0XHR0ZCB7XG5cdFx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbmF2eTtcblx0XHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJG5hdnk7XG5cblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRib3JkZXItbGVmdDogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0OiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRyOmxhc3QtY2hpbGQge1xuXHRcdFx0dGQge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHR0ZCxcblx0cCB7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyLWl0YWxpYztcblx0fVxuXG5cdHRkLFxuXHR0aCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xuXHR9XG5cblx0cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4ucmV0aW5vcGF0aHktcG9wdXAge1xuXHR0aDpmaXJzdC1jaGlsZCxcblx0dGQ6Zmlyc3QtY2hpbGQge1xuXHRcdHdpZHRoOiAxMjBweDtcblx0fVxufVxuXG4ub3BlcmF0aW9uLWZvcm0ge1xuXHQuZmxleC1sZW5zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXG5cdFx0LmZvcm0tZ3JvdXAge1xuXHRcdFx0d2lkdGg6IDE1MHB4O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAyMHB4O1xuXHRcdH1cblxuXHRcdC5mb3JtLWdyb3VwLWF4aXMge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0d2lkdGg6IDExMHB4O1xuXHRcdH1cblx0fVxufVxuXG4uYWxsZXJneS1mb3JtLXdyYXAge1xuXHQuaGVscC1ibG9jayB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHR9XG59XG5cbi5sb2NzaWlpLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHdpZHRoOiA1MCU7XG59XG5cbi5sb2NzaWlpLWltZy13cmFwIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNTAwcHg7XG5cdGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLmxvY3NpaWktaW1nLXdyYXAtT0Qge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHdpZHRoOiA3MDBweDtcblx0bGVmdDogY2FsYygxMDAlICsgMTVweCk7XG5cdHRvcDogMDtcblx0ei1pbmRleDogMTtcblx0ZGlzcGxheTogbm9uZTtcblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5sb2NzaWlpLWltZy13cmFwLU9TIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR3aWR0aDogNTAwcHg7XG5cdHJpZ2h0OiBjYWxjKDEwMCUgKyAxNXB4KTtcblx0dG9wOiAwO1xuXHR6LWluZGV4OiAxO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuLnNob3dPcGFsLFxuLnNob3dDb2xvdXIsXG4uc2hvd0NvcnRpY2FsLFxuLnNob3dQdXBpbCxcbi5zaG93U3ViIHtcblx0ZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDtcbn1cblxuLm9wZXJhdGlvbi1ub3RlLWhlYWRlciB7XG5cdC8vIG91dGxpbmU6IDFweCBkb3R0ZWQgcGluaztcblx0bWFyZ2luLWJvdHRvbTogMjBweDtcblxuXHQuaGVhZC1mbGV4IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cblx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHR9XG5cdH1cblxuXHRoMyxcblx0aDQge1xuXHRcdG1hcmdpbjogMDtcblx0XHRAZXh0ZW5kIC5mb250LWJvbGQ7XG5cdFx0QGV4dGVuZCAudGV4dC1uYXZ5O1xuXHR9XG5cblx0aDYge1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nLWxlZnQ6IDEuNWVtO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRAZXh0ZW5kIC50ZXh0LW5hdnk7XG5cdH1cblxuXHQuaGVhZC1saW5rIHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdH1cblxuXHQuaGVhZC1uYW1lIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblxuXHQuaGVhZGVyLWxlZnQsXG5cdC5oZWFkZXItcmlnaHQge1xuXHRcdC8vIG91dGxpbmU6IDFweCBzb2xpZCBncmVlbjtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0fVxuXG5cdC5oZWFkZXItcmlnaHQge1xuXHRcdC8vIG1hcmdpbi1yaWdodDogODBweDtcblx0XHQvLyBvdXRsaW5lOiAxcHggc29saWQgYmx1ZTtcblx0fVxufVxuXG4ucG9wb3Zlci1wcmVvcC13cmFwIHtcblx0cGFkZGluZzogMjBweDtcblx0cGFkZGluZy1ib3R0b206IDA7XG5cdHdpZHRoOiAzMDBweDtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdGxhYmVsIHtcblx0XHRjb2xvcjogJG5hdnkgIWltcG9ydGFudDtcblx0XHRAZXh0ZW5kIC5mb250LXJlZ3VsYXI7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cblxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdH1cblxuXHQuZm9ybS1ncm91cDpsYXN0LWNoaWxkIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG59XG5cbi5wb3BvdmVyIHtcblx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblxuXHQubWFya2VyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0dG9wOiAycHg7XG5cdH1cbn1cblxuLnBvcG92ZXIuYm90dG9tID4gLmFycm93IHtcblx0Ym9yZGVyLWJvdHRvbS1jb2xvcjogJG5hdnk7XG59XG5cbi5zcGlubmVyLXdyYXAge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi52ZXJ0aWNhbC1idXR0b25zIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuXHRidXR0b24gKyBidXR0b24ge1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdH1cbn1cblxuLm15LW1vZGFsLWZvb3Rlci1wYXRpZW50LWRldGFpbHMge1xuXHQuYnRuLW5hdnkge1xuXHRcdHdpZHRoOiAyMjBweDtcblx0fVxufVxuXG4uaW5jaXNpb25zLWltYWdlIHtcblx0d2lkdGg6IDEwMCU7XG5cdHBhZGRpbmctbGVmdDogNWVtO1xuXHRwYWRkaW5nLXJpZ2h0OiA1ZW07XG5cdG1hcmdpbi10b3A6IDFlbTtcblx0bWFyZ2luLWJvdHRvbTogMmVtO1xufVxuXG4ubWFyZ2luLXRvcC0yZW0ge1xuXHRtYXJnaW4tdG9wOiAyZW07XG59XG5cbi5tYXJnaW4tdG9wLTFlbSB7XG5cdG1hcmdpbi10b3A6IDFlbTtcbn1cblxuLnBhZGRpbmctdG9wLWRvdC00ZW0ge1xuXHRwYWRkaW5nLXRvcDogMC40ZW07XG59XG5cbi5jdXN0b20tc2xpZGVyLnJ6c2xpZGVyIDpmb2N1cyB7b3V0bGluZTpub25lO31cblxuLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIge1xuXHRtYXJnaW4tdG9wOiAxZW07XG5cdG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LWJhciB7XG5cdGhlaWdodDogOHB4O1xuXHRib3JkZXItcmFkaXVzOiA0cHg7XG4gIH1cblxuICAuY3VzdG9tLXNsaWRlci5yenNsaWRlciAucnotcG9pbnRlciB7XG5cdHdpZHRoOiAxNnB4O1xuXHRoZWlnaHQ6IDE2cHg7XG5cdHRvcDogYXV0bzsgLyogdG8gcmVtb3ZlIHRoZSBkZWZhdWx0IHBvc2l0aW9uaW5nICovXG5cdGJvdHRvbTogMDtcblx0bWFyZ2luLWJvdHRvbTogLTZweDtcbiAgfVxuICBcbiAgLmN1c3RvbS1zbGlkZXIucnpzbGlkZXIgLnJ6LXBvaW50ZXI6YWZ0ZXIge1xuXHRkaXNwbGF5OiBub25lO1xuICB9XG4gIFxuICAuY3VzdG9tLXNsaWRlci5yenNsaWRlciAucnotYnViYmxlIHtcblx0Ym90dG9tOiAxNHB4O1xuICB9XG4gIFxuICAuY3VzdG9tLXNsaWRlci5yenNsaWRlciAucnotbGltaXQge1xuXHRmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC5jdXN0b20tc2xpZGVyLnJ6c2xpZGVyIC5yei10aWNrLXZhbHVlIHtcblx0dG9wOjBweDtcblx0Y29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gIFxuICAuY3VzdG9tLXNsaWRlci5yenNsaWRlciAucnotdGljayB7XG5cdHdpZHRoOiAxcHg7XG5cdGhlaWdodDogMTBweDtcblx0bWFyZ2luLWxlZnQ6IDhweDtcblx0Ym9yZGVyLXJhZGl1czogMDtcblx0dG9wOiAtMXB4O1xuICB9XG5cbiAgLnRyYW5zcGFyZW50LWNvbG9yIHtcblx0ICBjb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmJ0bi13aGl0ZSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0Y29sb3I6ICRuYXZ5O1xuXHR3aWR0aDogMjAwcHg7XG5cdGJvcmRlci1jb2xvcjogJG5hdnk7XG59XG5cbi5tYXJnaW4tbWlkZGxlIHtcblx0bWFyZ2luLWxlZnQ6IDFlbTtcblx0bWFyZ2luLXJpZ2h0OiAxZW07XG59XG5cbi5oZWFkLWxpbmsge1xuXHRjb2xvcjogJG5hdnk7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0Zm9udC1zaXplOiAxNHB4O1xuXHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0QGV4dGVuZCAuZm9udC1yZWd1bGFyO1xufVxuXG4uZm9udC1zaXplLTE2IHtcblx0Zm9udC1zaXplOiAxNnB4O1xufVxuXG4ucG9zdG9wZXJhdGl2ZS1oZWFkZXIge1xuXHR3aWR0aDogMTAwJTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRtYXJnaW4tdG9wOiAyZW07XG5cdG1hcmdpbi1ib3R0b206IDJlbTtcbn1cblxuLmNhcmV0IHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMDtcblx0aGVpZ2h0OiAwO1xuXHRtYXJnaW4tbGVmdDogMnB4O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRib3JkZXItdG9wOiAwcHggZGFzaGVkO1xuXHRib3JkZXItdG9wOiAwcHggc29saWQgXFw5O1xuXHRib3JkZXItcmlnaHQ6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0Ym9yZGVyLWxlZnQ6IDBweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgfVxuXG4uZm9udC1yZWd1bGFyIHtcblx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInICFpbXBvcnRhbnQ7XG59XG5cbi5mb250LXNpemUtOCB7XG5cdGZvbnQtc2l6ZTogOHB4ICFpbXBvcnRhbnQ7XG59XG4ubWFyZ2luLXRvLXJpZ2h0IHtcblx0bWFyZ2luLWxlZnQ6IDUwJTtcbn1cblxuLmdyaWQtY29sdW1uLW5vLXBhZGRpbmcge1xuXHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0cGFkZGluZy1yaWdodDogMHB4O1xuXG59XG4uc2VsZWN0LW5vLW1hcmdpbiB7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSW5qZWN0aW9uIG5vdGUgaW5qZWN0aW9ucyAocGVyLWluamVjdGlvbiBibG9jayArIGRydWcgYmF0Y2gpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEVhY2ggaW5qZWN0aW9uIGlzIGVkaXRlZCBpbiBwbGFjZSBpbiBpdHMgb3duIGNhcmQsIHNvIGEgcHJlLWZpbGxlZCBvbmUgaXNcbiAgIHZpc2libGUgaW4gdGhlIGZpZWxkcyByYXRoZXIgdGhhbiBzdW1tYXJpc2VkIHVuZGVybmVhdGggdGhlbS4gKi9cbi5pbmplY3Rpb24tYmxvY2sge1xuXHQuaW5qZWN0aW9uLWJsb2NrLWhlYWRlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LmluamVjdGlvbi1ibG9jay10aXRsZSB7XG5cdFx0QGV4dGVuZCAuZm9udC1ib2xkO1xuXHRcdEBleHRlbmQgLnRleHQtbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHR9XG5cblx0LnJlbW92ZS1tZWQge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdHdpZHRoOiAyNHB4O1xuXHRcdGhlaWdodDogMjRweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG59XG5cbi5idG4tYWRkLWluamVjdGlvbiB7XG5cdHdpZHRoOiBhdXRvO1xuXHRtYXgtd2lkdGg6IG5vbmU7XG5cdHBhZGRpbmc6IDZweCAxNnB4O1xufVxuXG4vKiBCYXRjaCBudW1iZXIgYW5kIGV4cGlyeSBzaXQgYmVzaWRlIHRoZSBtZWRpY2F0aW9uIHRoZXkgYmVsb25nIHRvLiBFdmVyeXRoaW5nXG4gICBlbHNlIG9uIGFuIGluamVjdGlvbiBpcyB1c3VhbGx5IHByZS1maWxsZWQgZnJvbSB0aGUgcGF0aWVudCdzIHNldHRpbmdzLCBzbyB0aGVcbiAgIHBhaXIgZ2V0cyBhIGxpZ2h0IGFjY2VudCB0byBzZXQgaXQgYXBhcnQg4oCUIGVub3VnaCB0byBjYXRjaCB0aGUgZXllIG9uIHRoZSB3YXlcbiAgIHBhc3QsIG5vdCBlbm91Z2ggdG8gc2hvdXQuICovXG4uYmF0Y2gtZmllbGRzIHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAxMHB4O1xuXHRwYWRkaW5nOiA4cHggMTBweDtcblx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkeWVsbG93O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0xMDtcblxuXHQuYmF0Y2gtZmllbGQge1xuXHRcdGZsZXg6IDEgMSAwO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC8qIDxkYXRlcGlja2VyPiBpcyBhIGN1c3RvbSBlbGVtZW50LCBzbyBpdCBuZWVkcyBhIGJveCBvZiBpdHMgb3duIGJlZm9yZSB0aGVcblx0ICAgaW5wdXQgaW5zaWRlIGl0IGNhbiBmaWxsIHRoZSBmaWVsZCBhbmQgdGhlIGNhbGVuZGFyIGNhbiBhbmNob3IgdG8gaXQuICovXG5cdGRhdGVwaWNrZXIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXG5cdC5jb250cm9sLWxhYmVsIHtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdH1cbn1cblxuLmJhdGNoLXdhcm5pbmcge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWFyZ2luLXRvcDogNHB4O1xuXHRmb250LXNpemU6IDExcHg7XG5cdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0Y29sb3I6ICRkYW5nZXI7XG59XG4iLCIvKiFcbiAqIHVpLXNlbGVjdFxuICogaHR0cDovL2dpdGh1Yi5jb20vYW5ndWxhci11aS91aS1zZWxlY3RcbiAqIFZlcnNpb246IDAuMTguMCAtIDIwMTYtMDYtMTRUMDY6NTQ6NDMuMTU5WlxuICogTGljZW5zZTogTUlUXG4gKi9cblxuLyogU3R5bGUgd2hlbiBoaWdobGlnaHRpbmcgYSBzZWFyY2guICovXG4udWktc2VsZWN0LWhpZ2hsaWdodCB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi51aS1zZWxlY3Qtb2Zmc2NyZWVuIHtcbiAgICBjbGlwOiByZWN0KDAgMCAwIDApICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IDFweCAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMXB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG4gICAgbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG4gICAgdG9wOiAwcHggIWltcG9ydGFudDtcbn1cblxuLnVpLXNlbGVjdC1jaG9pY2VzLXJvdzpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbn1cblxuLnVpLXNlbGVjdC1jaG9pY2VzLXJvdyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLnNlbGVjdGl6ZS1jb250cm9sLnNpbmdsZSAuc2VsZWN0aXplLWlucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7XG59XG4vKiBTZWxlY3QyIHRoZW1lICovXG5cbi8qIE1hcmsgaW52YWxpZCBTZWxlY3QyICovXG4ubmctZGlydHkubmctaW52YWxpZCA+IGEuc2VsZWN0Mi1jaG9pY2Uge1xuICAgIGJvcmRlci1jb2xvcjogI2Q0NDk1MDtcbn1cblxuLnNlbGVjdDItcmVzdWx0LXNpbmdsZSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4uc2VsZWN0Mi1sb2NrZWQgPiAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWNsb3NlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uc2VsZWN0LWxvY2tlZCA+IC51aS1zZWxlY3QtbWF0Y2gtY2xvc2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbmJvZHkgPiAuc2VsZWN0Mi1jb250YWluZXIub3BlbiB7XG4gICAgei1pbmRleDogOTk5OTsgLyogVGhlIHotaW5kZXggU2VsZWN0MiBhcHBsaWVzIHRvIHRoZSBzZWxlY3QyLWRyb3AgKi9cbn1cblxuLyogSGFuZGxlIHVwIGRpcmVjdGlvbiBTZWxlY3QyICovXG4udWktc2VsZWN0LWNvbnRhaW5lclt0aGVtZT1cInNlbGVjdDJcIl0uZGlyZWN0aW9uLXVwIC51aS1zZWxlY3QtbWF0Y2gge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDsgLyogRklYTUUgaGFyZGNvZGVkIHZhbHVlIDotLyAqL1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG59XG4udWktc2VsZWN0LWNvbnRhaW5lclt0aGVtZT1cInNlbGVjdDJcIl0uZGlyZWN0aW9uLXVwIC51aS1zZWxlY3QtZHJvcGRvd24ge1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDsgLyogRklYTUUgaGFyZGNvZGVkIHZhbHVlIDotLyAqL1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG5cbiAgICBib3JkZXItdG9wLXdpZHRoOiAxcHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbiAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcblxuICAgIGJveC1zaGFkb3c6IDAgLTRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcblxuICAgIG1hcmdpbi10b3A6IC00cHg7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbn1cbi51aS1zZWxlY3QtY29udGFpbmVyW3RoZW1lPVwic2VsZWN0MlwiXS5kaXJlY3Rpb24tdXAgLnVpLXNlbGVjdC1kcm9wZG93biAuc2VsZWN0Mi1zZWFyY2gge1xuICAgIG1hcmdpbi10b3A6IDRweDsgLyogRklYTUUgaGFyZGNvZGVkIHZhbHVlIDotLyAqL1xufVxuLnVpLXNlbGVjdC1jb250YWluZXJbdGhlbWU9XCJzZWxlY3QyXCJdLmRpcmVjdGlvbi11cC5zZWxlY3QyLWRyb3Bkb3duLW9wZW4gLnVpLXNlbGVjdC1tYXRjaCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzU4OTdmYjtcbn1cbi8qIFNlbGVjdGl6ZSB0aGVtZSAqL1xuXG4vKiBIZWxwZXIgY2xhc3MgdG8gc2hvdyBzdHlsZXMgd2hlbiBmb2N1cyAqL1xuLnNlbGVjdGl6ZS1pbnB1dC5zZWxlY3RpemUtZm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLnNlbGVjdGl6ZS1pbnB1dCA+IGlucHV0OmZvY3VzIHtcbiAgICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG4gICAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gICAgb3V0bGluZS1jb2xvcjogcmVkO1xuICAgIC8qIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgKi9cbn1cblxuLnNlbGVjdGl6ZS1jb250cm9sLnNpbmdsZSAuc2VsZWN0aXplLWlucHV0LFxuLnNlbGVjdGl6ZS1kcm9wZG93bi5zaW5nbGUge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEZpeCBpbnB1dCB3aWR0aCBmb3IgU2VsZWN0aXplIHRoZW1lICovXG4uc2VsZWN0aXplLWNvbnRyb2wgPiAuc2VsZWN0aXplLWlucHV0ID4gaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4vKiBGaXggZHJvcGRvd24gd2lkdGggZm9yIFNlbGVjdGl6ZSB0aGVtZSAqL1xuLnNlbGVjdGl6ZS1jb250cm9sID4gLnNlbGVjdGl6ZS1kcm9wZG93biB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5zZWxlY3RpemUtY29udHJvbC5zaW5nbGUgLnNlbGVjdGl6ZS1pbnB1dCxcbsKgLnNlbGVjdGl6ZS1kcm9wZG93bi5zaW5nbGXCoCB7XG4gICAgYm9yZGVyLWNvbG9yOiAjMzg1MGEyICFpbXBvcnRhbnQ7XG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgIzM4NTBhMiAhaW1wb3J0YW50OyAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogLTRweDtcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIE1hcmsgaW52YWxpZCBTZWxlY3RpemUgKi9cbi5uZy1kaXJ0eS5uZy1pbnZhbGlkID4gZGl2LnNlbGVjdGl6ZS1pbnB1dCB7XG4gICAgYm9yZGVyLWNvbG9yOiAjZDQ0OTUwO1xufVxuXG4uc2VsZWN0aXplLWRyb3Bkb3duIHtcbiAgICBib3JkZXI6IDBweCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG59XG5cbi8qIEhhbmRsZSB1cCBkaXJlY3Rpb24gU2VsZWN0aXplICovXG4udWktc2VsZWN0LWNvbnRhaW5lclt0aGVtZT1cInNlbGVjdGl6ZVwiXS5kaXJlY3Rpb24tdXAgLnVpLXNlbGVjdC1kcm9wZG93biB7XG4gICAgYm94LXNoYWRvdzogMCAtNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuXG4gICAgbWFyZ2luLXRvcDogLTJweDsgLyogRklYTUUgaGFyZGNvZGVkIHZhbHVlIDotLyAqL1xufVxuXG4vKiBCb290c3RyYXAgdGhlbWUgKi9cblxuLyogSGVscGVyIGNsYXNzIHRvIHNob3cgc3R5bGVzIHdoZW4gZm9jdXMgKi9cbi5idG4tZGVmYXVsdC1mb2N1cyB7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ViZWJlYjtcbiAgICBib3JkZXItY29sb3I6ICNhZGFkYWQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbiAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA3NSksIDAgMCA4cHggcmdiYSgxMDIsIDE3NSwgMjMzLCAwLjYpO1xufVxuXG4udWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LXRvZ2dsZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4udWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LXRvZ2dsZSA+IC5jYXJldCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTBweDtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMTBweDtcbiAgICBtYXJnaW4tdG9wOiAtMnB4O1xufVxuXG4vKiBGaXggQm9vdHN0cmFwIGRyb3Bkb3duIHBvc2l0aW9uIHdoZW4gaW5zaWRlIGEgaW5wdXQtZ3JvdXAgKi9cbi5pbnB1dC1ncm91cCA+IC51aS1zZWxlY3QtYm9vdHN0cmFwLmRyb3Bkb3duIHtcbiAgICAvKiBJbnN0ZWFkIG9mIHJlbGF0aXZlICovXG4gICAgcG9zaXRpb246IHN0YXRpYztcbn1cblxuLmlucHV0LWdyb3VwID4gLnVpLXNlbGVjdC1ib290c3RyYXAgPiBpbnB1dC51aS1zZWxlY3Qtc2VhcmNoLmZvcm0tY29udHJvbCB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4OyAvKiBGSVhNRSBoYXJkY29kZWQgdmFsdWUgOi0vICovXG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG59XG4uaW5wdXQtZ3JvdXAgPiAudWktc2VsZWN0LWJvb3RzdHJhcCA+IGlucHV0LnVpLXNlbGVjdC1zZWFyY2guZm9ybS1jb250cm9sLmRpcmVjdGlvbi11cCB7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7IC8qIEZJWE1FIGhhcmRjb2RlZCB2YWx1ZSA6LS8gKi9cbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwICFpbXBvcnRhbnQ7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwID4gLnVpLXNlbGVjdC1tYXRjaCA+IC5idG4ge1xuICAgIC8qIEluc3RlYWQgb2YgY2VudGVyIGJlY2F1c2Ugb2YgLmJ0biAqL1xuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgPiAudWktc2VsZWN0LW1hdGNoID4gLmNhcmV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA0NSU7XG4gICAgcmlnaHQ6IDE1cHg7XG59XG5cbi8qIFNlZSBTY3JvbGxhYmxlIE1lbnUgd2l0aCBCb290c3RyYXAgMyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE5MjI3NDk2ICovXG4udWktc2VsZWN0LWJvb3RzdHJhcCA+IC51aS1zZWxlY3QtY2hvaWNlcyxcbi51aS1zZWxlY3QtYm9vdHN0cmFwID4gLnVpLXNlbGVjdC1uby1jaG9pY2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXgtaGVpZ2h0OiAyMDBweDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgbWFyZ2luLXRvcDogLTFweDtcbn1cblxuYm9keSA+IC51aS1zZWxlY3QtYm9vdHN0cmFwLm9wZW4ge1xuICAgIHotaW5kZXg6IDEwMDA7IC8qIFN0YW5kYXJkIEJvb3RzdHJhcCBkcm9wZG93biB6LWluZGV4ICovXG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGUudWktc2VsZWN0LWJvb3RzdHJhcCB7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmc6IDNweCAzcHggMCAzcHg7XG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGUudWktc2VsZWN0LWJvb3RzdHJhcCBpbnB1dC51aS1zZWxlY3Qtc2VhcmNoIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiBUbyBwcmV2ZW50IGRvdWJsZSBiYWNrZ3JvdW5kIHdoZW4gZGlzYWJsZWQgKi9cbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBoZWlnaHQ6IDEuNjY2NjY2ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogM3B4O1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1tYXRjaCAuY2xvc2Uge1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gICAgbGluZS1oZWlnaHQ6IDAuNzU7XG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGUudWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LW1hdGNoLWl0ZW0ge1xuICAgIG91dGxpbmU6IDA7XG4gICAgbWFyZ2luOiAwIDNweCAzcHggMDtcbn1cblxuLnVpLXNlbGVjdC1tdWx0aXBsZSAudWktc2VsZWN0LW1hdGNoLWl0ZW0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnVpLXNlbGVjdC1tdWx0aXBsZSAudWktc2VsZWN0LW1hdGNoLWl0ZW0uZHJvcHBpbmcgLnVpLXNlbGVjdC1tYXRjaC1jbG9zZSB7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi51aS1zZWxlY3QtbXVsdGlwbGU6aG92ZXIgLnVpLXNlbGVjdC1tYXRjaC1pdGVtLmRyb3BwaW5nLWJlZm9yZTpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNDI4YmNhO1xufVxuXG4udWktc2VsZWN0LW11bHRpcGxlOmhvdmVyIC51aS1zZWxlY3QtbWF0Y2gtaXRlbS5kcm9wcGluZy1hZnRlcjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgIzQyOGJjYTtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1jaG9pY2VzLXJvdyA+IGEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCAyMHB4O1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1jaG9pY2VzLXJvdyA+IGE6aG92ZXIsXG4udWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LWNob2ljZXMtcm93ID4gYTpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiAjMjYyNjI2O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG59XG5cbi51aS1zZWxlY3QtYm9vdHN0cmFwIC51aS1zZWxlY3QtY2hvaWNlcy1yb3cuYWN0aXZlID4gYSB7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQyOGJjYTtcbn1cblxuLnVpLXNlbGVjdC1ib290c3RyYXAgLnVpLXNlbGVjdC1jaG9pY2VzLXJvdy5kaXNhYmxlZCA+IGEsXG4udWktc2VsZWN0LWJvb3RzdHJhcCAudWktc2VsZWN0LWNob2ljZXMtcm93LmFjdGl2ZS5kaXNhYmxlZCA+IGEge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuLyogZml4IGhpZGUvc2hvdyBhbmd1bGFyIGFuaW1hdGlvbiAqL1xuLnVpLXNlbGVjdC1tYXRjaC5uZy1oaWRlLWFkZCxcbi51aS1zZWxlY3Qtc2VhcmNoLm5nLWhpZGUtYWRkIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIE1hcmsgaW52YWxpZCBCb290c3RyYXAgKi9cbi51aS1zZWxlY3QtYm9vdHN0cmFwLm5nLWRpcnR5Lm5nLWludmFsaWQgPiBidXR0b24uYnRuLnVpLXNlbGVjdC1tYXRjaCB7XG4gICAgYm9yZGVyLWNvbG9yOiAjZDQ0OTUwO1xufVxuXG4vKiBIYW5kbGUgdXAgZGlyZWN0aW9uIEJvb3RzdHJhcCAqL1xuLnVpLXNlbGVjdC1jb250YWluZXJbdGhlbWU9XCJib290c3RyYXBcIl0uZGlyZWN0aW9uLXVwIC51aS1zZWxlY3QtZHJvcGRvd24ge1xuICAgIGJveC1zaGFkb3c6IDAgLTRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbn1cblxuLnNlbGVjdGl6ZS1jb250cm9sLnNpbmdsZSAuc2VsZWN0aXplLWlucHV0OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgcmlnaHQ6IDVweCAhaW1wb3J0YW50O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA3cHggIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDdweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi10b3A6IC01cHggIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICRuYXZ5ICRuYXZ5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci13aWR0aDogMnB4IDJweCAwcHggMHB4ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTM1ZGVnKTtcbn1cblxuLmxpc3RjbGFzcyB7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4ICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyLXdpZHRoOiAxcHggIWltcG9ydGFudDtcbn0iLCIucHJlbWl1bS1sZW5zLXByaWNlLWJveCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xuICAgIC8qIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbmF2eTsgKi9cbn1cblxuLmg0LW1lZGl1bSB7XG4gICAgZm9udC1zaXplOiAxLjJlbTtcbn1cblxuLm5hdnktY29sb3Ige1xuICAgIGNvbG9yOiAkbmF2eSAhaW1wb3J0YW50O1xufVxuLmZsZXgtcm93IHtcbiAgICB3aWR0aDogMjAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDFlbTtcbn1cbi5kb2xsYXIge1xuICAgIG1hcmdpbi1sZWZ0OiAtNmVtO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBwYWRkaW5nLXRvcDogMC44ZW07XG59XG5cbi5kb2xsYXItbm9uLXRvcmljIHtcbiAgICBtYXJnaW4tbGVmdDogLTZlbTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcGFkZGluZy10b3A6IDAuOGVtO1xufVxuXG4ucGFkZGluZy16ZXJvIHtcbiAgICBwYWRkaW5nLXRvcDogMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAwcHg7XG4gICAgbWFyZ2luLXRvcDogMWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cblxuLmFsaWduLWxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5uZXh0LWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFByZW1pdW0gbGVucyBwcmljZXMgKHNldHRpbmdzKVxuLyogQSBwcmFjdGljZSdzIG93biBwcmljZSBmb3IgZWFjaCBsZW5zLCB0b3JpYyBhbmQgbm9uLXRvcmljLiBUaGVcbi8qIGNhcmRzLCBmZWUgaW5wdXRzLCBub3RpY2VzIGFuZCBhY3Rpb24gYmFyIGNvbWUgZnJvbSBfc2V0dGluZ3MuY3NzLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsIC5wcmVtaXVtLWxlbnMtcHJpY2VzIHtcbiAgICAuY2FyZC1oZWFkZXItZmxleCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgIH1cblxuICAgIC5wbHAtdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWF4LXdpZHRoOiA2MjBweDtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuXG4gICAgICAgID4gdGhlYWQgPiB0ciA+IHRoIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTJweCA4cHg7XG4gICAgICAgICAgICBmb250LXNpemU6IDEwcHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcbiAgICAgICAgICAgIGNvbG9yOiAjYTNhYWMwO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgID4gdGJvZHkgPiB0ciA+IHRoLFxuICAgICAgICA+IHRib2R5ID4gdHIgPiB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHggMTJweDtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICAgIH1cblxuICAgICAgICA+IHRib2R5ID4gdHIgPiB0aFtzY29wZT1cInJvd1wiXSB7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuICAgICAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cblxuICAgICAgICAucGxwLXByaWNlLWNvbCB7XG4gICAgICAgICAgICB3aWR0aDogMTcwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAuZmVlLWlucHV0IC5mb3JtLWNvbnRyb2wge1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogUGFsZSBlbm91Z2ggdG8gcmVhZCBhcyBcIm5vdGhpbmcgc2V0XCIgcmF0aGVyIHRoYW4gYXMgYSBwcmljZSBvZiB6ZXJvICovXG4gICAgICAgIC5mb3JtLWNvbnRyb2w6OnBsYWNlaG9sZGVyIHtcbiAgICAgICAgICAgIGNvbG9yOiAjYzNjOWRhO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5oYXMtZXJyb3IgLmZvcm0tY29udHJvbCB7XG4gICAgICAgICAgICBib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBBIGhlYWRpbmcgYWNyb3NzIHRoZSB0YWJsZSBiZXR3ZWVuIHRoZSB0d28ga2luZHMgb2YgbGVucyAqL1xuICAgIC5wbHAtZ3JvdXAtcm93ID4gdGgge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDEycHggNnB4O1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcblxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gICAgICAgICAgICBmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcbiAgICAgICAgICAgIGNvbG9yOiAjYTNhYWMwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGJvZHkgPiAucGxwLWdyb3VwLXJvdzpmaXJzdC1jaGlsZCA+IHRoIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDRweDtcbiAgICB9XG5cbiAgICAucGxwLWluY2x1ZGVkIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGNvbG9yOiAjYTNhYWMwO1xuICAgIH1cblxuICAgIC5wbHAtZW1haWwtZmllbGQge1xuICAgICAgICBtYXgtd2lkdGg6IDQyMHB4O1xuICAgIH1cblxuICAgIC8qIFJlYWQgb25seSBmb3IgYW55b25lIHdobyBjYW5ub3QgY2hhbmdlIHRoZSBwcmljZXM7IG90aGVyd2lzZSBqdXN0IHRoZSBzdGFjayBvZiBjYXJkcyAqL1xuICAgIC5wbHAtZmllbGRzZXQge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgIH1cblxuICAgIC5wbHAtcmV0cnkge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgbWFyZ2luOiAtM3B4IDAgLTNweCBhdXRvO1xuICAgICAgICBwYWRkaW5nOiA0cHggMTRweDtcbiAgICB9XG5cbiAgICAuc2V0dGluZ3Mtbm90aWNlIC5ub3RpY2UtdGV4dCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxufVxuXG4vKiBUb3JpYyAvIG5vbi10b3JpYzogZWFjaCBjaG9pY2UgaXMgb25lIGJ1dHRvbiAtIHRoZSB3aG9sZSBsYWJlbCBpcyB3aGF0IGlzIGNsaWNrZWQgYW5kIHdoYXQgc2hvd3MgaXQgaXNcbiAgIGNob3NlbiwgaW4gdGhlIHN0ZXAncyBvd24gY29sb3VyczogZ3JlZW4gcmVjb21tZW5kZWQsIHJlZCB1c2Ugd2l0aCBjYXV0aW9uLCBuYXZ5IHdpdGggbm8gc3VnZ2VzdGlvbi4gVGhlXG4gICByYWRpbyBzdGF5cyBmb3IgdGhlIGtleWJvYXJkIGFuZCBzY3JlZW4gcmVhZGVycywgaGlkZGVuOyB0aGUgbGFiZWwgZmlsbHMgd2l0aCBpdHMgY29sb3VyIHdoZW4gY2hvc2VuLiAqL1xuLnByZW1pdW0tbGVucy10eXBlLW9wdGlvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAxMDRweDtcbiAgICBtYXJnaW46IDAgM3B4IDZweDtcbiAgICBwYWRkaW5nOiAzcHggMTJweDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkICRuYXZ5O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgfVxuXG4gICAgLyogVGhlIG1hcmtlciBpcyB0aGUgbGFiZWwncyB0ZXh0IG5vdywgbm90IGEgY2FwdGlvbiBiZXNpZGUgYSBkb3Q6IGRyb3AgdGhlIGNhcHRpb24ncyBzcGFjaW5nLCBzaXplIGFuZCB0aGVcbiAgICAgICAycHggbnVkZ2UgaXQgZ2V0cyBmcm9tIHRoZSBzdGVwJ3Mgb3duIC5tYXJrZXIgcnVsZSwgc28gdGhlIHRleHQgc2l0cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBidXR0b24gKi9cbiAgICAubWFya2VyIHtcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYyAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuM3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICB9XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcbiAgICB9XG5cbiAgICAmOmZvY3VzLXdpdGhpbiB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuICAgIH1cblxuICAgIC8qIEJvcmRlciBjb2xvdXJzIGFyZSBzZXQgb3V0cmlnaHQ6IHRoZSBzdGVwIG1ha2VzIGV2ZXJ5IGxhYmVsJ3MgdGV4dCBuYXZ5ICFpbXBvcnRhbnQsIHNvIGN1cnJlbnRDb2xvclxuICAgICAgIHdvdWxkIGFsd2F5cyBiZSBuYXZ5ICovXG4gICAgJi5jdXN0b21lcl9yYWRpb19ncmVlbiB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogZ3JlZW47XG4gICAgfVxuXG4gICAgJi5jdXN0b21lcl9yYWRpb19yZWQge1xuICAgICAgICBib3JkZXItY29sb3I6IHJlZDtcbiAgICB9XG5cbiAgICAvKiBUaGUgY29sb3VycyBhYm92ZSBhcmUgIWltcG9ydGFudCBvbiAubWFya2VyIChfcHJlLW9wLmNzcyksIHNvIGNob3NlbiB0ZXh0IG5lZWRzIGl0IHRvIHR1cm4gd2hpdGUgKi9cbiAgICAmLmlzLWNoZWNrZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcblxuICAgICAgICAubWFya2VyIHtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICYuY3VzdG9tZXJfcmFkaW9fZ3JlZW4ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47XG4gICAgICAgICAgICBib3JkZXItY29sb3I6IGdyZWVuO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5jdXN0b21lcl9yYWRpb19yZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZWQ7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKiBUaGUgcGF0aWVudC1mYWNpbmcgY29udGFjdCB2ZXJpZmljYXRpb24gcGFnZS4gU3R5bGVkIHRvIHNpdCBhbG9uZ3NpZGUgdGhlIHByZW1pdW0gbGVucyBzZWxlY3Rpb25cbiAgIGZvcm0gLSBib3RoIGFyZSBzdGFuZGFsb25lIHBhZ2VzIGEgcGF0aWVudCByZWFjaGVzIGZyb20gYW4gZW1haWxlZCBsaW5rLCBub3QgYXBwIHNjcmVlbnMuXG5cbiAgIFR3byB0aGluZ3MgZHJpdmUgdGhlIGNob2ljZXMgYmVsb3cuIEZpcnN0LCB0aGUgcGFnZSBpbmhlcml0cyBgZm9udC1zaXplOiAxMnB4YCBmcm9tIGh0bWwvYm9keVxuICAgKF91dGlsLmNzcyksIHdoaWNoIGlzIHRvbyBzbWFsbCBmb3IgYSBwYXRpZW50LWZhY2luZyBwYWdlLCBzbyB0eXBlIHNpemVzIGhlcmUgYXJlIGV4cGxpY2l0IHB4XG4gICByYXRoZXIgdGhhbiByZW0uIFNlY29uZCwgdGhpcyBpcyBvcGVuZWQgZnJvbSBhIHRleHQgbWVzc2FnZSBvbiB3aGF0ZXZlciBwaG9uZSB0aGUgcGF0aWVudCBvd25zLFxuICAgc28gc3BhY2luZyB1c2VzIG1hcmdpbnMgcmF0aGVyIHRoYW4gZmxleCBgZ2FwYCAoaWdub3JlZCBiZWxvdyBpT1MgMTQuMSkgYW5kIGNvbnRyb2xzIGFyZSBzaXplZFxuICAgZm9yIGEgdGh1bWIuIEV2ZXJ5dGhpbmcgaXMgc2NvcGVkIHNvIG5vbmUgb2YgaXQgbGVha3MgaW50byBhcHAgc2NyZWVucy4gKi9cblxuLnBhdGllbnQtdmVyaWZpY2F0aW9uLXBhZ2Uge1xuXHQvKiBSZXBsYWNlcyBhIHNwYWNlciA8ZGl2IHN0eWxlPVwiaGVpZ2h0OjEwcmVtXCI+IHRoYXQgdXNlZCB0byBzaXQgYWJvdmUgdGhlIGNhcmQuICovXG5cdHBhZGRpbmc6IDNyZW0gMDtcbn1cblxuLnBhdGllbnQtdmVyaWZpY2F0aW9uLWZvcm0ge1xuXG5cdC52aWV3LXdyYXAge1xuXHRcdHBhZGRpbmc6IDJyZW0gMS41cmVtIDIuNXJlbTtcblx0fVxuXG5cdC8qIE9uZSBjZW50cmVkIG1lYXN1cmUgZm9yIHRoZSB3aG9sZSBjYXJkLCBzbyB0aGUgaGVhZGluZywgY29kZSBib3hlcywgY29uc2VudHMgYW5kIGJ1dHRvbiBzaGFyZVxuXHQgICBhIGxlZnQgYW5kIHJpZ2h0IGVkZ2UgaW5zdGVhZCBvZiBlYWNoIGJsb2NrIHBpY2tpbmcgaXRzIG93biBncmlkIGNvbHVtbnMuICovXG5cdC5wdi1wYW5lbCB7XG5cdFx0bWF4LXdpZHRoOiA0NDBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0fVxuXG5cdC5wdi1zdGF0dXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0cGFkZGluZzogNHJlbSAwO1xuXHR9XG5cblx0LnB2LWxvZ28ge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxODBweDtcblx0XHRtYXgtd2lkdGg6IDYwJTtcblx0XHRtYXJnaW46IDAgYXV0byAycmVtO1xuXHR9XG5cblx0LnB2LXRpdGxlIHtcblx0XHRtYXJnaW46IDAgMCAxcmVtO1xuXHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5wdi1sZWRlIHtcblx0XHRtYXJnaW46IDAgMCAyLjVyZW07XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC8qIEZpZWxkc2V0cyBjYXJyeSB0aGUgZ3JvdXBpbmcgc2VtYW50aWNzIGZvciB0aGUgY29kZSBib3hlcyBhbmQgdGhlIGNvbnNlbnRzLiBCb290c3RyYXAncyBsZWdlbmRcblx0ICAgZGVmYXVsdHMgKDEwMCUgd2lkZSwgMjFweCwgYm90dG9tIGJvcmRlcikgd291bGQgZHJhdyBhIHJ1bGUgYWNyb3NzIHRoZSBjYXJkLCBzbyByZXNldCB0aGVtLiAqL1xuXHQucHYtZmllbGRzZXQge1xuXHRcdG1hcmdpbjogMCAwIDIuNXJlbTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0fVxuXG5cdC8qIHdpZHRoOjEwMCUsIG5vdCBhdXRvLiBBIDxsZWdlbmQ+IHNocmluay13cmFwcyBpdHMgY29udGVudCwgc28gYHRleHQtYWxpZ246IGNlbnRlcmAgaGFzIG5vdGhpbmdcblx0ICAgdG8gY2VudHJlIHdpdGhpbiBhbmQgdGhlIGhlYWRpbmcgc2l0cyBhZ2FpbnN0IHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGZpZWxkc2V0LiBUaGlzIHJlc3RvcmVzIHRoZVxuXHQgICBibG9jay9mdWxsLXdpZHRoIHBhcnQgb2YgQm9vdHN0cmFwJ3Mgb3duIGxlZ2VuZCBydWxlIHdoaWxlIHN0aWxsIGRyb3BwaW5nIHRoZSBib3JkZXIgYW5kIHNpemVcblx0ICAgaXQgYWxzbyBicmluZ3MuICovXG5cdC5wdi1sZWdlbmQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQvKiBQcm9ncmVzcyBoZWFkZXIuIFRoZSBwYWdlIGlzIG9uZSBzdGVwIGF0IGEgdGltZSBub3csIGFuZCBhIHBhdGllbnQgcmVhZGluZyB0aGlzIG9uIGEgcGhvbmVcblx0ICAgbmVlZHMgdG8ga25vdyBob3cgbXVjaCBpcyBsZWZ0IGJlZm9yZSB0aGV5IHN0YXJ0IHJhdGhlciB0aGFuIGRpc2NvdmVyaW5nIGl0IGEgc3RlcCBhdCBhIHRpbWUuXG5cdCAgIFRoZSBiYXIgaXMgZGVjb3JhdGl2ZSAtIHRoZSBjb3VudCBiZW5lYXRoIGl0IGlzIHdoYXQgY2FycmllcyB0aGUgaW5mb3JtYXRpb24sIGFuZCBpdCBpcyB0aGVcblx0ICAgcGFydCBhIHNjcmVlbiByZWFkZXIgYW5ub3VuY2VzLiAqL1xuXHQucHYtcHJvZ3Jlc3Mge1xuXHRcdG1hcmdpbjogMCAwIDJyZW07XG5cdH1cblxuXHQucHYtcHJvZ3Jlc3MtYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdG1hcmdpbjogMCAwIDAuNXJlbTtcblx0fVxuXG5cdC8qIE1hcmdpbiByYXRoZXIgdGhhbiBmbGV4IGBnYXBgLCB3aGljaCBpcyBpZ25vcmVkIGJlbG93IGlPUyAxNC4xIC0gdGhlIHNlZ21lbnRzIHdvdWxkIHJ1biBpbnRvXG5cdCAgIG9uZSBjb250aW51b3VzIGJhciB0aGVyZSBhbmQgc3RvcCByZWFkaW5nIGFzIHN0ZXBzIGF0IGFsbC4gKi9cblx0LnB2LXByb2dyZXNzLXNlZyB7XG5cdFx0ZmxleDogMTtcblx0XHRoZWlnaHQ6IDRweDtcblx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0YmFja2dyb3VuZDogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yNXMgZWFzZTtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0LyogRG9uZSBhbmQgY3VycmVudCBhcmUgdG9sZCBhcGFydCBieSBodWUsIG5vdCBqdXN0IGxpZ2h0bmVzczogY3lhbiByZWFkcyBhcyBiZWhpbmQgeW91IGFuZFxuXHRcdCAgIG5hdnkgYXMgd2hlcmUgeW91IGFyZSwgd2hpY2ggc3Vydml2ZXMgYmVpbmcgdmlld2VkIG9uIGEgcGhvbmUgaW4gZGF5bGlnaHQuICovXG5cdFx0Ji5pcy1kb25lIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjeWFuLWRhcms7XG5cdFx0fVxuXG5cdFx0Ji5pcy1jdXJyZW50IHtcblx0XHRcdGJhY2tncm91bmQ6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5wdi1wcm9ncmVzcy10ZXh0IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdGIge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogU2l0cyB1bmRlciBhIGxlZ2VuZCB0byBzYXkgd2hhdCB0aGUgc3RlcCBpcyBmb3IuIE11dGVkIHNvIHRoZSBsZWdlbmQgc3RheXMgdGhlIGhlYWRpbmcuICovXG5cdC5wdi1zdWJsZWdlbmQge1xuXHRcdG1hcmdpbjogMCAwIDFyZW07XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiBEYXRlIG9mIGJpcnRoLiBUaHJlZSBib3hlcyByYXRoZXIgdGhhbiBhIG5hdGl2ZSBkYXRlIGlucHV0OiBhIHBhdGllbnQgYm9ybiBpbiB0aGUgMTk0MHMgc2hvdWxkXG5cdCAgIG5vdCBoYXZlIHRvIHNjcm9sbCBhIGNhbGVuZGFyIGJhY2sgZWlnaHR5IHllYXJzIG9uIGEgcGhvbmUsIGFuZCB0aGUga2V5Ym9hcmQgdGhhdCBvcGVucyBmb3Jcblx0ICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiIGlzIHRoZSBvbmUgdGhleSB3YW50LiAqL1xuXHQucHYtZG9iIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRtYXJnaW46IDEuNXJlbSBhdXRvIDA7XG5cdH1cblxuXHQucHYtZG9iLWZpZWxkIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbjogMCAwIDAuMzVyZW07XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0aW5wdXQge1xuXHRcdFx0aGVpZ2h0OiA1MnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxOXB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMC41cmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBEcml2ZW4gYnkgYXJpYS1pbnZhbGlkLCBzbyB0aGUgdmlzdWFsIHN0YXRlIGFuZCB0aGUgc3RhdGUgYW5ub3VuY2VkIHRvIGEgc2NyZWVuIHJlYWRlclxuXHRcdFx0ICAgY2FuIG5ldmVyIGRyaWZ0IGFwYXJ0IC0gdGhlIHNhbWUgcnVsZSB0aGUgY29kZSBib3hlcyBmb2xsb3cuICovXG5cdFx0XHQmW2FyaWEtaW52YWxpZD1cInRydWVcIl0ge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRkYW5nZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnB2LWRvYi1kYXkgaW5wdXQsXG5cdC5wdi1kb2ItbW9udGggaW5wdXQge1xuXHRcdHdpZHRoOiA2MHB4O1xuXHR9XG5cblx0LnB2LWRvYi15ZWFyIGlucHV0IHtcblx0XHR3aWR0aDogODhweDtcblx0fVxuXG5cdC5wdi1kb2Itc2VwIHtcblx0XHRwYWRkaW5nOiAwIDAuNXJlbSAxcmVtO1xuXHRcdGZvbnQtc2l6ZTogMTlweDtcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdGNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHR9XG5cblx0LyogSG93IG1hbnkgd3JvbmcgYW5zd2VycyBhcmUgbGVmdC4gU2hvd24gZnJvbSB0aGUgZmlyc3QgZmFpbHVyZSBvbiwgYW5kIG9uIGJvdGggY3JlZGVudGlhbCBzdGVwc1xuXHQgICBiZWNhdXNlIHRoZXkgc2hhcmUgb25lIGJ1ZGdldCAtIHNwcmluZ2luZyB0aGUgbGltaXQgb24gdGhlIHBhdGllbnQgYXQgdGhlIGxhc3QgYXR0ZW1wdCB3b3VsZCBiZVxuXHQgICB0aGUgb25lIG1vbWVudCB0aGV5IGNvdWxkIGxlYXN0IGFmZm9yZCB0aGUgc3VycHJpc2UuICovXG5cdC5wdi1hdHRlbXB0cyB7XG5cdFx0bWFyZ2luOiAxcmVtIDAgMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogT25lLXRpbWUtY29kZSBib3hlcy4gVGhlIGxvZ2luIHBhZ2UgaGFzIGl0cyBvd24gY29weSBvZiB0aGVzZSBzY29wZWQgdW5kZXJcblx0ICAgLm1vZGVybi1sb2dpbi1wYWdlLCB3aGljaCBkb2VzIG5vdCByZWFjaCB0aGlzIHBhZ2UuICovXG5cdC52ZXJpZnktaW5wdXQtY29udGFpbmVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdG1hcmdpbjogMS41cmVtIGF1dG8gMDtcblxuXHRcdGlucHV0IHtcblx0XHRcdHdpZHRoOiA0OHB4O1xuXHRcdFx0aGVpZ2h0OiA1NnB4O1xuXHRcdFx0bWFyZ2luOiAwIDAuMzc1cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMC41cmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBEcml2ZW4gYnkgYXJpYS1pbnZhbGlkIG9uIHRoZSBpbnB1dHMsIHNvIHRoZSB2aXN1YWwgc3RhdGUgYW5kIHRoZSBzdGF0ZSBhbm5vdW5jZWQgdG8gYVxuXHRcdFx0ICAgc2NyZWVuIHJlYWRlciBjYW4gbmV2ZXIgZHJpZnQgYXBhcnQuICovXG5cdFx0XHQmW2FyaWEtaW52YWxpZD1cInRydWVcIl0ge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRkYW5nZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnB2LWVycm9yIHtcblx0XHRtYXJnaW46IDFyZW0gMCAwO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdC8qIFJlc2VuZCBjb250cm9sLiBTdHlsZWQgYXMgYSBsaW5rIHJhdGhlciB0aGFuIGEgc2Vjb25kIGJ1dHRvbiBzbyBpdCBuZXZlciBjb21wZXRlcyB3aXRoIFwiVmVyaWZ5XG5cdCAgIG15IGRldGFpbHNcIiBmb3IgdGhlIHByaW1hcnkgYWN0aW9uIC0gYSBwYXRpZW50IHdobyBkaWQgZ2V0IHRoZSBjb2RlIHNob3VsZCBub3QgaGF2ZSB0byB3b3JrIG91dFxuXHQgICB3aGljaCBvZiB0d28gYnV0dG9ucyBpcyB0aGUgb25lIHRoZXkgd2FudC4gKi9cblx0LnB2LXJlc2VuZCB7XG5cdFx0bWFyZ2luLXRvcDogMXJlbTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQucHYtcmVzZW5kLWJ1dHRvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmc6IDAuNXJlbSAwO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdGNvbG9yOiAkY3lhbi1kYXJrO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cblx0XHQvKiBHcmV5ZWQgb3V0IHRocm91Z2ggdGhlIGNvb2xkb3duIGFuZCB3aGlsZSB0aGUgcmVxdWVzdCBpcyBpbiBmbGlnaHQuIFRoZSBoaW50IGJlbG93IHNheXNcblx0XHQgICB3aHksIHNvIHRoaXMgbmV2ZXIgcmVhZHMgYXMgYSBkZWFkIGNvbnRyb2wuICovXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5wdi1yZXNlbmQtaGludCxcblx0LnB2LXJlc2VuZC1zdGF0dXMge1xuXHRcdG1hcmdpbjogMC4yNXJlbSAwIDA7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC8qIENvbnNlbnQgYmxvY2suIFJvd3MgYXJlIGxlZnQtYWxpZ25lZCBpbnNpZGUgdGhlIGNlbnRyZWQgcGFuZWw6IHRoZSBoZWxwIHRleHQgcnVucyB0byB0d28gb3Jcblx0ICAgdGhyZWUgbGluZXMsIGFuZCBjZW50cmVkIG11bHRpLWxpbmUgdGV4dCB1bmRlciBhIGNoZWNrYm94IHJlYWRzIGFzIGEgcmFnZ2VkIGJsb2IuIEVhY2ggb3B0aW9uXG5cdCAgIGdldHMgaXRzIG93biB3cmFwcGVyIHNvIEJvb3RzdHJhcCdzIGAuY2hlY2tib3gtaW5saW5lICsgLmNoZWNrYm94LWlubGluZSB7IG1hcmdpbi1sZWZ0OiAxMHB4IH1gXG5cdCAgIG5ldmVyIG1hdGNoZXMgYW5kIGJvdGggcm93cyBzaGFyZSBhIGxlZnQgZWRnZS4gKi9cblx0LmNvbnNlbnQtb3B0aW9ucyB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRcdC5wdi1sZWdlbmQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcblx0XHR9XG5cblx0XHQuY29uc2VudC1pbnRybyB7XG5cdFx0XHRtYXJnaW46IDAgMCAxLjVyZW07XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdC5jb25zZW50LW9wdGlvbiB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0fVxuXG5cdFx0LyogVGhlIGNvbnNlbnQgaXRzZWxmLCBhcyBhIHN0YXRlbWVudCByYXRoZXIgdGhhbiBhIGxhYmVsOiB0aGUgYW5zd2VyIGlzIGEgcGFpciBvZiBidXR0b25zXG5cdFx0ICAgYmVsb3cgaXQsIHNvIHRoZXJlIGlzIG5vdGhpbmcgZm9yIGEgPGxhYmVsPiB0byBwb2ludCBhdC4gKi9cblx0XHQuY29uc2VudC1zdGF0ZW1lbnQge1xuXHRcdFx0bWFyZ2luOiAwIDAgMXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0LmNvbnNlbnQtcmFkaW9zIHtcblx0XHRcdG1hcmdpbjogMCAwIDAuNXJlbTtcblx0XHR9XG5cblx0XHQvKiBGdWxsLXdpZHRoIHJvd3MgcmF0aGVyIHRoYW4gaW5saW5lIHJhZGlvcy4gQ29uc2VudCBoYXMgdG8gYmUgYW4gYWN0aXZlIGNob2ljZSwgc28gWWVzIGFuZCBOb1xuXHRcdCAgIGFyZSBnaXZlbiBpZGVudGljYWwgd2VpZ2h0IC0gbmVpdGhlciBpcyBzdHlsZWQgYXMgdGhlIGRlZmF1bHQsIGFuZCBuZWl0aGVyIGlzIHNtYWxsIGVub3VnaFxuXHRcdCAgIHRvIGhpdCBieSBhY2NpZGVudC4gNTJweCBjbGVhcnMgdGhlIDQ0cHggdG91Y2ggdGFyZ2V0IGEgdGh1bWIgbmVlZHMuICovXG5cdFx0LmNvbnNlbnQtcmFkaW8ge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdG1pbi1oZWlnaHQ6IDUycHg7XG5cdFx0XHRwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG5cdFx0XHRtYXJnaW46IDAgMCAwLjYyNXJlbTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRcdGJhY2tncm91bmQ6ICNmZmY7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0XHRmb250LXdlaWdodDogNjAwO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHR9XG5cblx0XHRcdCY6Zm9jdXMge1xuXHRcdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRcdH1cblxuXHRcdFx0LyogU2VsZWN0aW9uIGlzIGNhcnJpZWQgYnkgdGhlIGJvcmRlciBhbmQgdGhlIGZpbGxlZCBkb3QgdG9nZXRoZXIsIG5vdCBieSBjb2xvdXIgYWxvbmUuICovXG5cdFx0XHQmLmlzLXNlbGVjdGVkIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmNvbnNlbnQtcmFkaW8tZG90IHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0d2lkdGg6IDIwcHg7XG5cdFx0XHRoZWlnaHQ6IDIwcHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDAuN3JlbTtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRiYWNrZ3JvdW5kOiAjZmZmO1xuXHRcdH1cblxuXHRcdC5jb25zZW50LXJhZGlvLmlzLXNlbGVjdGVkIC5jb25zZW50LXJhZGlvLWRvdCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXG5cdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAzcHg7XG5cdFx0XHRcdGxlZnQ6IDNweDtcblx0XHRcdFx0d2lkdGg6IDEwcHg7XG5cdFx0XHRcdGhlaWdodDogMTBweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogNTAlO1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBPbmx5IHNob3duIG9uY2UgdGhlIHBhdGllbnQgaGFzIHRyaWVkIHRvIG1vdmUgb24gd2l0aG91dCBhbnN3ZXJpbmcsIHNvIHRoZSBzdGVwIGRvZXMgbm90XG5cdFx0ICAgb3BlbiBhbHJlYWR5IHRlbGxpbmcgdGhlbSBvZmYuICovXG5cdFx0LmNvbnNlbnQtcmVxdWlyZWQge1xuXHRcdFx0bWFyZ2luOiAwIDAgMC43NXJlbTtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHR9XG5cblx0XHQvKiBMaW5rLXN0eWxlZCwgYnV0IGEgcmVhbCA8YnV0dG9uPiBzbyBpdCBpcyBrZXlib2FyZCByZWFjaGFibGUgYW5kIGFubm91bmNlZCBhcyBhIGNvbnRyb2wuXG5cdFx0ICAgVGhlIHZlcnRpY2FsIHBhZGRpbmcgaXMgdGhlcmUgdG8gZ2l2ZSBpdCBhIHRodW1iLXNpemVkIGhpdCBhcmVhLCBhbmQgaXMgY2FuY2VsbGVkIGJ5IHRoZVxuXHRcdCAgIG1hcmdpbi10b3Agc28gaXQgc3RpbGwgc2l0cyB0aWdodCB1bmRlciBpdHMgbGFiZWwuICovXG5cdFx0LmNvbnNlbnQtaGVscC10b2dnbGUge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0cGFkZGluZzogMC41cmVtIDA7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRjb2xvcjogJGN5YW4tZGFyaztcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRib3JkZXI6IDA7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Y29sb3I6ICRjeWFuLWRhcmtlcjtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHR9XG5cblx0XHRcdC5nbHlwaGljb24ge1xuXHRcdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMC40cmVtO1xuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmNvbnNlbnQtaGVscCB7XG5cblx0XHRcdHAge1xuXHRcdFx0XHRtYXJnaW46IDAgMCAwLjVyZW07XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRwOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIFRoZSBsZWdpc2xhdGlvbiB0aGUgY29uc2VudCBpcyBnaXZlbiB1bmRlci4gTGVmdC1hbGlnbmVkIGFuZCBydWxlZCBvZmYgcmF0aGVyIHRoYW4gY2VudHJlZDpcblx0XHQgICBpdCBydW5zIHRvIHR3byBvciB0aHJlZSBsaW5lcywgYW5kIGNlbnRyZWQgbXVsdGktbGluZSB0ZXh0IHVuZGVyIGEgcXVlc3Rpb24gcmVhZHMgYXMgYVxuXHRcdCAgIHJhZ2dlZCBibG9iLiBSZXBlYXRlZCBvbiBib3RoIGNvbnNlbnQgc3RlcHMgYmVjYXVzZSBpdCBkZXNjcmliZXMgaG93IHRoZSBkYXRhIGlzIGhhbmRsZWQsXG5cdFx0ICAgbm90IHdoYXQgZWl0aGVyIHF1ZXN0aW9uIGlzIGFza2luZy4gKi9cblx0XHQuY29uc2VudC1sZWdhbCB7XG5cdFx0XHRtYXJnaW46IDFyZW0gMCAwO1xuXHRcdFx0cGFkZGluZy10b3A6IDFyZW07XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdFx0LyogS2VlcHMgZWFjaCByZWZlcmVuY2Ugd2hvbGUuIFRoZSBuYW1lcyBhcmUgbGVnaXNsYXRpb24gdGl0bGVzLCBhbmQgb25lIGJyb2tlbiBhY3Jvc3MgYVxuXHRcdFx0ICAgbGluZSByZWFkcyBhcyB0d28gc2VwYXJhdGUgdGhpbmdzIC0gd2hpY2ggb24gYSBjb25zZW50IG5vdGljZSBpcyB0aGUgd3JvbmcgaW1wcmVzc2lvblxuXHRcdFx0ICAgdG8gZ2l2ZS4gVGhlIHBhcmFncmFwaCBzdGlsbCB3cmFwcyBiZXR3ZWVuIHRoZW0uICovXG5cdFx0XHRhIHtcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucHYtYWN0aW9ucyB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LyogT3ZlcnJpZGVzIC5idG4tbmF2eSdzIDEycHggLyA0cHggcGFkZGluZyBmcm9tIF9idXR0b25zLmNzcywgd2hpY2ggaXMgc2l6ZWQgZm9yIGRlbnNlIGFwcFxuXHQgICBzY3JlZW5zIGFuZCBsYW5kcyB3ZWxsIHVuZGVyIGEgNDRweCB0b3VjaCB0YXJnZXQuICovXG5cdC5wdi1zdWJtaXQge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogMzIwcHg7XG5cdFx0bWluLWhlaWdodDogNDhweDtcblx0XHRwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcblx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxuXG5cdC8qIE9mZmVyZWQgb24gdGhlIGNvbnNlbnQgc3RlcHMgb25seSAtIHRoZSBjb2RlIGFuZCBkYXRlIG9mIGJpcnRoIGxvY2sgb25jZSB0aGUgc2VydmVyIGhhc1xuXHQgICBhY2NlcHRlZCB0aGVtLlxuXG5cdCAgIEFuIG91dGxpbmVkIGJ1dHRvbiByYXRoZXIgdGhhbiB0aGUgYmFyZSBsaW5rIHRoaXMgdXNlZCB0byBiZS4gQXMgYSBsaW5rIGl0IHJlYWQgYXMgZmluZSBwcmludFxuXHQgICB1bmRlciB0aGUgcHJpbWFyeSBhY3Rpb24gYW5kIHdhcyBlYXN5IHRvIG1pc3MgZW50aXJlbHksIHdoaWNoIG1hdHRlcnMgaGVyZTogaXQgaXMgdGhlIG9ubHkgd2F5XG5cdCAgIGJhY2sgdG8gYSBjb25zZW50IGFuc3dlciB0aGUgcGF0aWVudCB3YW50cyB0byBjaGFuZ2UuIE91dGxpbmVkIHJhdGhlciB0aGFuIGZpbGxlZCBrZWVwcyB0aGVcblx0ICAgaGllcmFyY2h5IC0gQ29udGludWUgaXMgc3RpbGwgdGhlIG9uZSB0aGF0IGNhcnJpZXMgY29sb3VyIC0gd2hpbGUgZ2l2aW5nIHRoaXMgYSByZWFsIGVkZ2UsIGFcblx0ICAgcmVhbCBoaXQgYXJlYSBhbmQgdGhlIHNhbWUgd2lkdGggYXMgdGhlIGJ1dHRvbiBhYm92ZSBpdC4gKi9cblx0LnB2LWJhY2sge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDMyMHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDQ0cHg7XG5cdFx0bWFyZ2luLXRvcDogMC43NXJlbTtcblx0XHRwYWRkaW5nOiAwLjYyNXJlbSAxLjVyZW07XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiA2MDA7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQ6IHJnYmEoMCwgNTMsIDIxMCwgMC4wNCk7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogU3VjY2VzcyBhbmQgZXhwaXJlZC1saW5rIHBhbmVscy4gQm90aCByZXBsYWNlIHRoZSBmb3JtIGVudGlyZWx5LCBzbyBlYWNoIG93bnMgdGhlIHBhZ2UncyBvbmx5XG5cdCAgIDxoMT4gYW5kIG5laXRoZXIgY29tcGV0ZXMgd2l0aCB0aGUgb3RoZXIuICovXG5cdC5wdi1vdXRjb21lIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMS41cmVtO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwIDAgMC41cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcblx0XHR9XG5cblx0XHRwOmxhc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cblxuXHQucHYtb3V0Y29tZS10aXRsZSB7XG5cdFx0bWFyZ2luOiAwIDAgMXJlbTtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMztcblx0XHRmb250LXdlaWdodDogNjAwO1xuXHR9XG59XG4iLCIuc2xpZGVJbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cbi5zbGlkZUluLm5nLWVudGVyLFxuLnNsaWRlSW4ubmctbGVhdmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG4gICAgdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG59XG4uc2xpZGVJbi5uZy1lbnRlciB7XG4gICAgbGVmdDogMTAwJTtcbn1cbi5zbGlkZUluLm5nLWVudGVyLWFjdGl2ZSB7XG4gICAgbGVmdDogMDtcbn1cbi5zbGlkZUluLm5nLWxlYXZlIHtcbiAgICBsZWZ0OiAwO1xufVxuLnNsaWRlSW4ubmctbGVhdmUtYWN0aXZlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4uc2xpZGVPdXQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG4uc2xpZGVPdXQubmctZW50ZXIsXG4uc2xpZGVPdXQubmctbGVhdmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG4gICAgdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG59XG4uc2xpZGVPdXQubmctZW50ZXIge1xuICAgIGxlZnQ6IC0xMDAlO1xufVxuLnNsaWRlT3V0Lm5nLWVudGVyLWFjdGl2ZSB7XG4gICAgbGVmdDogMDtcbn1cbi5zbGlkZU91dC5uZy1sZWF2ZSB7XG4gICAgbGVmdDogMDtcbn1cbi5zbGlkZU91dC5uZy1sZWF2ZS1hY3RpdmUge1xuICAgIGxlZnQ6IC0xMDAlO1xufVxuXG4uc2xpZGVkb3duIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLnNsaWRlZG93bi5uZy1lbnRlcixcbi5zbGlkZWRvd24ubmctbGVhdmUge1xuICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG4gICAgdHJhbnNpdGlvbjogYWxsIDFzIGVhc2U7XG59XG4uc2xpZGVkb3duLm5nLWVudGVyIHtcbiAgICB0b3A6IC0xMDAlO1xufVxuLnNsaWRlZG93bi5uZy1lbnRlci1hY3RpdmUge1xuICAgIHRvcDogMDtcbn1cbi5zbGlkZWRvd24ubmctbGVhdmUge1xuICAgIHRvcDogMDtcbn1cbi5zbGlkZWRvd24ubmctbGVhdmUtYWN0aXZlIHtcbiAgICB0b3A6IDEwMCU7XG59XG5cbi5zbGlkZXVwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xufVxuLnNsaWRldXAubmctZW50ZXIsXG4uc2xpZGV1cC5uZy1sZWF2ZSB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMXMgZWFzZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMXMgZWFzZTtcbn1cbi5zbGlkZXVwLm5nLWVudGVyIHtcbiAgICB0b3A6IDEwMCU7XG59XG4uc2xpZGV1cC5uZy1lbnRlci1hY3RpdmUge1xuICAgIHRvcDogMDtcbn1cbi5zbGlkZXVwLm5nLWxlYXZlIHtcbiAgICB0b3A6IDA7XG59XG4uc2xpZGV1cC5uZy1sZWF2ZS1hY3RpdmUge1xuICAgIHRvcDogLTEwMCU7XG59IiwiXG5cbi5haS1mdWxsLWNvbnRlbnQge1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLyogLS0tIE1haW4gTGF5b3V0IENvbnRhaW5lciAtLS0gKi9cbi5haS1hZ2VudC1tYWluIHtcbiAgICAvKiBDaGFuZ2VkIGZyb20gbWFyZ2luIHRvIHBhZGRpbmcgc28gaGVpZ2h0OiAxMDAlIHdvcmtzIGNvcnJlY3RseSAqL1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAycmVtOyBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIFxuICAgIC8qIEVOQUJMRVMgVEhFIFNUSUNLWSBGT09URVIgTEFZT1VUICovXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4vKiAtLS0gU2Nyb2xsYWJsZSBDb250ZW50IEFyZWEgLS0tICovXG4vKiBUaGlzIHRhcmdldHMgdGhlIGNvbnRhaW5lciBob2xkaW5nIHRoZSB0YWJsZXMgYW5kIGZvcm1zICovXG4uZGlhbG9nLWNvbnRlbnQtYm94LCAuYWktc2Nyb2xsIHtcbiAgICAvKiBHcm93IHRvIGZpbGwgZW1wdHkgc3BhY2UgKi9cbiAgICBmbGV4OiAxOyBcbiAgICBcbiAgICAvKiBIYW5kbGUgU2Nyb2xsaW5nICovXG4gICAgb3ZlcmZsb3cteTogYXV0bzsgXG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIFxuICAgIC8qIFJlbW92ZSBmaXhlZCBoZWlnaHRzICovXG4gICAgaGVpZ2h0OiBhdXRvOyBcbiAgICB3aWR0aDogMTAwJTtcbiAgICBcbiAgICAvKiBBZGQgYnJlYXRoaW5nIHJvb20gZm9yIHNjcm9sbGJhciAqL1xuICAgIHBhZGRpbmctcmlnaHQ6IDVweDsgXG4gICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgIFxuICAgIC8qIEZpeCBmb3IgRmlyZWZveCBmbGV4IHNjcm9sbGluZyAqL1xuICAgIG1pbi1oZWlnaHQ6IDA7IFxufVxuXG4vKiAtLS0gRm9vdGVyIEJ1dHRvbnMgLS0tICovXG4uYWktYWdlbnQtZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBcbiAgICAvKiBMYXlvdXQgKi9cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDFyZW07XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyBcbiAgICBib3R0b206IGF1dG87XG4gICAgZmxleC1zaHJpbms6IDA7IFxuICAgIHBhZGRpbmctdG9wOiAxLjVyZW07XG4gICAgbWFyZ2luLXRvcDogYXV0bzsgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICB6LWluZGV4OiAxMDtcbn1cblxuLyogLS0tIFV0aWxpdHkgQ2xhc3NlcyAtLS0gKi9cbi5haS1hZ2VudC1pdGVtLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IDFyZW07XG59XG5cbi8qIC0tLSBBbmltYXRpb25zIC0tLSAqL1xuLnBsYXlpbmcgaSB7XG4gICAgYW5pbWF0aW9uOiBmbGFzaCAxcyBpbmZpbml0ZTtcbiAgICBjb2xvcjogI2U5MWU2Mztcbn1cblxuQGtleWZyYW1lcyBmbGFzaCB7XG4gICAgMCUsIDEwMCUgeyBvcGFjaXR5OiAxOyB9XG4gICAgNTAlIHsgb3BhY2l0eTogMC4zOyB9XG59XG5cbi8qIC0tLSBUcmFuc2NyaXB0aW9uIHN0eWxlcyAtLS0gKi9cbi50ci1jb21wYWN0LXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA2cHggMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgbWluLWhlaWdodDogNDJweDtcbn1cblxuLyogU3RhbmRhcmRpemVkIDMweDMwIHNxdWFyZSBidXR0b25zIGZvciBpY29ucyAqL1xuLnRyLWljb24tYnRuIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDMycHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi50ci1taWMtc2VsZWN0b3Ige1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWF4LXdpZHRoOiAxNjBweDtcbn1cblxuICAgIC50ci1taWMtc2VsZWN0b3IgLmZvcm0tY29udHJvbCB7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICB9XG5cbi50ci1taWMtaWNvbi1hZGRvbiB7XG4gICAgcGFkZGluZzogNHB4IDhweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi50ci10aW1lci1kaXNwbGF5IHtcbiAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbn1cblxuLnRyLXRvb2xiYXItZGl2aWRlciB7XG4gICAgd2lkdGg6IDFweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcbiAgICBtYXJnaW46IDAgMnB4O1xufVxuXG4udHItcGVybWlzc2lvbi1lcnJvciB7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4uYmxpbmsge1xuICAgIGFuaW1hdGlvbjogYmxpbmtlciAxLjVzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBibGlua2VyIHtcbiAgICA1MCUge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbn1cblxuIiwiLypcbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFRoZW1lZCBRdWlsbCBFZGl0b3IgQ29tcG9uZW50XG4gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuLyogLS0tIDEuIFRoZW1lIFZhcmlhYmxlcyAtLS0gKi9cbjpyb290IHtcbiAgICAtLXFsLWZvbnQtZmFtaWx5OiAnR29yZGl0YSBSZWd1bGFyJywgc2Fucy1zZXJpZjtcbiAgICAtLXFsLWJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAtLXFsLWJvcmRlci1jb2xvcjogIzk0OTU5OTsgXG4gICAgLS1xbC1hY2NlbnQtY29sb3I6ICMwMDM1ZDI7IFxuICAgIC0tcWwtd2hpdGUtY29sb3I6ICNmZmZmZmY7XG4gICAgLS1xbC10ZXh0LWJnLWNvbG9yOiAjZjJmNmZiOyBcbiAgICAtLXFsLXRvb2xiYXItYmctY29sb3I6ICNlYmVjZWE7IFxuICAgIC0tcWwtdGV4dC1jb2xvcjogIzQwNDE0MTsgXG4gICAgLS1xbC1zdWJ0bGUtYm9yZGVyLWNvbG9yOiAjYmNjYWQyOyBcbn1cblxuLyogLS0tIDIuIE1haW4gRWRpdG9yIENvbnRhaW5lciAtLS0gKi9cbi5xbC10b29sYmFyLFxuLnFsLWNvbnRhaW5lciB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXFsLWZvbnQtZmFtaWx5KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXFsLWJvcmRlci1jb2xvcikgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcbn1cblxuLyogLS0tIDMuIFRvb2xiYXIgVUkgLS0tICovXG4ucWwtdG9vbGJhciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcWwtdG9vbGJhci1iZy1jb2xvcik7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tcWwtYm9yZGVyLXJhZGl1cyk7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLXFsLWJvcmRlci1yYWRpdXMpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1xbC1ib3JkZXItY29sb3IpICFpbXBvcnRhbnQ7XG59XG5cbiAgICAucWwtdG9vbGJhciAucWwtc3Ryb2tlIHtcbiAgICAgICAgc3Ryb2tlOiB2YXIoLS1xbC10ZXh0LWNvbG9yKTtcbiAgICB9XG5cbiAgICAucWwtdG9vbGJhciAucWwtZmlsbCB7XG4gICAgICAgIGZpbGw6IHZhcigtLXFsLXRleHQtY29sb3IpO1xuICAgIH1cblxuICAgIC5xbC10b29sYmFyIC5xbC1waWNrZXItbGFiZWwge1xuICAgICAgICBjb2xvcjogdmFyKC0tcWwtdGV4dC1jb2xvcik7XG4gICAgfVxuXG4gICAgICAgIC5xbC10b29sYmFyIGJ1dHRvbjpob3ZlcixcbiAgICAgICAgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbDpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLnFsLXRvb2xiYXIgYnV0dG9uLnFsLWFjdGl2ZSxcbiAgICAgICAgLnFsLXRvb2xiYXIgLnFsLXBpY2tlci1sYWJlbC5xbC1hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCA1MywgMjEwLCAwLjEpOyBcbiAgICAgICAgfVxuXG4gICAgLnFsLXRvb2xiYXIgLnFsLXRvb2x0aXAge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG5cbi8qIC0tLSA0LiBFZGl0YWJsZSBDb250ZW50IEFyZWEgLS0tICovXG4ucWwtY29udGFpbmVyIHtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1xbC1ib3JkZXItcmFkaXVzKTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tcWwtYm9yZGVyLXJhZGl1cyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tcWwtdGV4dC1iZy1jb2xvcik7XG59XG5cbi5xbC1lZGl0b3Ige1xuICAgIG1pbi1oZWlnaHQ6IDI1MHB4O1xuICAgIGNvbG9yOiB2YXIoLS1xbC10ZXh0LWNvbG9yKTtcbiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcbn1cblxuICAgIC5xbC1lZGl0b3IucWwtYmxhbms6OmJlZm9yZSB7XG4gICAgICAgIGNvbG9yOiAjOTQ5NTk5O1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgICAgIGxlZnQ6IDEuNXJlbTtcbiAgICB9XG5cblxuLyogLS0tIDUuIEZvY3VzIFN0YXRlIC0tLSAqL1xuLnFsLWNvbnRhaW5lci5xbC1mb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1xbC1hY2NlbnQtY29sb3IpICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG59XG5cbi5xbC10b29sYmFyLnFsLWZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXFsLWFjY2VudC1jb2xvcikgIWltcG9ydGFudDtcbn1cblxuXG4vKiAtLS0gNi4gQ29udGVudCBTdHlsaW5nIC0tLSAqL1xuLnFsLWVkaXRvciBoMSwgLnFsLWVkaXRvciBoMiwgLnFsLWVkaXRvciBoMyB7XG4gICAgY29sb3I6IHZhcigtLXFsLXRleHQtY29sb3IpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXFsLXN1YnRsZS1ib3JkZXItY29sb3IpO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjNlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjhlbTtcbn1cblxuLnFsLWVkaXRvciBoMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG59XG5cbi5xbC1lZGl0b3IgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ucWwtZWRpdG9yIGgzIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xufVxuXG4ucWwtZWRpdG9yIHAsIC5xbC1lZGl0b3Igb2wsIC5xbC1lZGl0b3IgdWwge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS43O1xuICAgIGNvbG9yOiB2YXIoLS1xbC10ZXh0LWNvbG9yKTtcbn1cblxuLnFsLWVkaXRvciBhIHtcbiAgICBjb2xvcjogdmFyKC0tcWwtYWNjZW50LWNvbG9yKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuICAgIC5xbC1lZGl0b3IgYTpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cblxuLyogLS0tIDcuIEZvbnQgRmFtaWx5IFNlbGVjdG9yIC0tLSAqL1xuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IHtcbiAgICB3aWR0aDogMTMwcHg7XG59XG5cbi8qIERlZmF1bHQgb3B0aW9uIChubyBmb250IHZhbHVlKSBpcyB0aGUgdGhlbWUgZm9udCwgR29yZGl0YSBSZWd1bGFyLiAqL1xuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItbGFiZWw6OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW06OmJlZm9yZSB7XG4gICAgY29udGVudDogJ0dvcmRpdGEgUmVndWxhcic7XG4gICAgZm9udC1mYW1pbHk6ICdHb3JkaXRhIFJlZ3VsYXInLCBzYW5zLXNlcmlmO1xufVxuXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwiYXJpYWxcIl06OmJlZm9yZSxcbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWl0ZW1bZGF0YS12YWx1ZT1cImFyaWFsXCJdOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdBcmlhbCc7XG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwiZ2VvcmdpYVwiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwiZ2VvcmdpYVwiXTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnR2VvcmdpYSc7XG4gICAgZm9udC1mYW1pbHk6IEdlb3JnaWEsIHNlcmlmO1xufVxuXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwidGltZXMtbmV3LXJvbWFuXCJdOjpiZWZvcmUsXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1pdGVtW2RhdGEtdmFsdWU9XCJ0aW1lcy1uZXctcm9tYW5cIl06OmJlZm9yZSB7XG4gICAgY29udGVudDogJ1RpbWVzIE5ldyBSb21hbic7XG4gICAgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWY7XG59XG5cbi5xbC1zbm93IC5xbC1waWNrZXIucWwtZm9udCAucWwtcGlja2VyLWxhYmVsW2RhdGEtdmFsdWU9XCJjb3VyaWVyLW5ld1wiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwiY291cmllci1uZXdcIl06OmJlZm9yZSB7XG4gICAgY29udGVudDogJ0NvdXJpZXIgTmV3JztcbiAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlO1xufVxuXG4ucWwtc25vdyAucWwtcGlja2VyLnFsLWZvbnQgLnFsLXBpY2tlci1sYWJlbFtkYXRhLXZhbHVlPVwidmVyZGFuYVwiXTo6YmVmb3JlLFxuLnFsLXNub3cgLnFsLXBpY2tlci5xbC1mb250IC5xbC1waWNrZXItaXRlbVtkYXRhLXZhbHVlPVwidmVyZGFuYVwiXTo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnVmVyZGFuYSc7XG4gICAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEdlbmV2YSwgc2Fucy1zZXJpZjtcbn1cblxuLyogQXBwbHkgdGhlIGNob3NlbiBmb250IHRvIHRoZSBlZGl0b3IgY29udGVudC4gKi9cbi5xbC1mb250LWFyaWFsIHtcbiAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7XG59XG5cbi5xbC1mb250LWdlb3JnaWEge1xuICAgIGZvbnQtZmFtaWx5OiBHZW9yZ2lhLCBzZXJpZjtcbn1cblxuLnFsLWZvbnQtdGltZXMtbmV3LXJvbWFuIHtcbiAgICBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsIFRpbWVzLCBzZXJpZjtcbn1cblxuLnFsLWZvbnQtY291cmllci1uZXcge1xuICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBDb3VyaWVyLCBtb25vc3BhY2U7XG59XG5cbi5xbC1mb250LXZlcmRhbmEge1xuICAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBHZW5ldmEsIHNhbnMtc2VyaWY7XG59XG5cbi5xdWlsbC12aWV3ZXItY29udGFpbmVyIHtcbiAgICAtLXFsLXRleHQtYmctY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4gICAgLnF1aWxsLXZpZXdlci1jb250YWluZXIucWwtY29udGFpbmVyIHtcbiAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgICAgIC5xdWlsbC12aWV3ZXItY29udGFpbmVyLnFsLWNvbnRhaW5lciAucWwtZWRpdG9yIHtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgfVxuXG4gICAgICAgICAgICAucXVpbGwtdmlld2VyLWNvbnRhaW5lci5xbC1jb250YWluZXIgLnFsLWVkaXRvciBhIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICAgICAgICAgIH0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBheW1lbnQgU2V0dGluZ3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tIE1haW4gVmlldyBDb250YWluZXIgLS0tICovXG4ucGF5bWVudC1zZXR0aW5ncy1tYWluIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMjBweCAzMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAvKiAtLS0gVHlwb2dyYXBoeSBPdmVycmlkZXMgLS0tICovXG4gICAgaDMsIGg0LCBoNSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSGVybyBTZWN0aW9uIChEaWdpdGFsIFdhbGxldClcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi53YWxsZXQtaGVyby1zZWN0aW9uIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4ud2FsbGV0LWNhcmQtdmlzdWFsIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDAzNWQyIDAlLCAjMmEzMDdmIDEwMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgcGFkZGluZzogMjVweCAzNXB4O1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTUwcHg7XG4gICAgICAgIHRvcDogLTUwcHg7XG4gICAgICAgIHdpZHRoOiAyMDBweDtcbiAgICAgICAgaGVpZ2h0OiAyMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cblxuICAgIC53YWxsZXQtaW5mbyB7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIGg1IHtcbiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICAgICAgaDEge1xuICAgICAgICAgICAgZm9udC1zaXplOiA0MnB4O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBzbWFsbCB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLndhbGxldC1zdGF0dXMge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgXG4gICAgICAgIC5zdGF0dXMtYmFkZ2Uge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIpO1xuICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjMjBjOTk3O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICAmLmluYWN0aXZlIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEdyaWQgTGF5b3V0XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZ3MtZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDIwcHg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uZ3JpZC1jb2wtbGVmdCB7XG4gICAgZmxleDogMztcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xufVxuXG4uZ3JpZC1jb2wtcmlnaHQge1xuICAgIGZsZXg6IDI7XG4gICAgbWluLXdpZHRoOiAyODBweDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDYXJkIENvbXBvbmVudHNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZXR0aW5ncy1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICBwYWRkaW5nOiAyNXB4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuY2FyZC1oZWFkZXIsXG4gICAgLmNhcmQtaGVhZGVyLWZsZXgge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTZlZDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgIFxuICAgICAgICBoNCB7XG4gICAgICAgICAgICBjb2xvcjogIzAwMzVkMjsgLyogJG5hdnkgKi9cbiAgICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuY2FyZC1oZWFkZXItZmxleCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQmFja3VwIENhcmQgJiBGb290ZXIgV2FybmluZ3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLnNldHRpbmdzLWNhcmQge1xuICAgIC5iYWNrdXAtbWlzc2luZy1mb290ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmNWY1O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2ZmZTVjYztcbiAgICAgICAgcGFkZGluZzogMTJweCAyMHB4O1xuICAgICAgICBcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0yNXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IC0yNXB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAtMjVweDtcbiAgICAgICAgbWFyZ2luLXRvcDogYXV0bzsgXG4gICAgICAgIFxuICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTJweDtcblxuICAgICAgICAud2FybmluZy10ZXh0IHtcbiAgICAgICAgICAgIGNvbG9yOiAjODU2NDA0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZhYjAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3Ryb25nIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLW91dGxpbmUtd2FybmluZyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmZhYjAwO1xuICAgICAgICAgICAgY29sb3I6ICNmZmFiMDA7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgICBwYWRkaW5nOiA2cHggMTJweDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWIwMDtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBMZWZ0IENvbHVtbjogQXV0by1SZWxvYWQgSW5wdXRzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZy1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMTVweCAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgI2UwZTZlZDtcblxuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG5cbiAgICAuc2V0dGluZy1pY29uIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcbiAgICAgICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgIH1cblxuICAgIC5zZXR0aW5nLWNvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICAgICAgY29sb3I6ICM1NTU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLmhlbHBlci10ZXh0IHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgICAgIGNvbG9yOiAjODg4O1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNldHRpbmctaW5wdXQtd3JhcHBlciB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgd2lkdGg6IDEwMHB4O1xuICAgICAgICBcbiAgICAgICAgaW5wdXQge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlNmVkO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgICAgICBjb2xvcjogIzAwMzVkMjtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7XG5cbiAgICAgICAgICAgICY6Zm9jdXMge1xuICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzAwMzVkMjtcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNhYWE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFRvZ2dsZSBTd2l0Y2ggKi9cbi50b2dnbGUtc3dpdGNoIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiA0NHB4O1xuICAgIGhlaWdodDogMjRweDtcblxuICAgIGlucHV0IHsgXG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHdpZHRoOiAwO1xuICAgICAgICBoZWlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLnNsaWRlciB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7XG4gICAgICAgIHRyYW5zaXRpb246IC40cztcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjRweDtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICAgICAgaGVpZ2h0OiAxOHB4O1xuICAgICAgICAgICAgd2lkdGg6IDE4cHg7XG4gICAgICAgICAgICBsZWZ0OiAzcHg7XG4gICAgICAgICAgICBib3R0b206IDNweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogLjRzO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5wdXQ6Y2hlY2tlZCArIC5zbGlkZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjBjOTk3O1xuICAgIH1cblxuICAgIGlucHV0OmZvY3VzICsgLnNsaWRlciB7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAxcHggIzIwYzk5NztcbiAgICB9XG5cbiAgICBpbnB1dDpjaGVja2VkICsgLnNsaWRlcjpiZWZvcmUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7XG4gICAgfVxufVxuXG4uZGlzYWJsZWQtb3ZlcmxheSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcztcbn1cblxuLnNhdmUtc3RhdHVzLWluZGljYXRvciB7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBjb2xvcjogIzIwYzk5NztcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7XG4gICAgXG4gICAgJi5lcnJvciB7IGNvbG9yOiAjZDk1MzRmOyB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmlnaHQgQ29sdW1uOiBQYXltZW50IE1ldGhvZCAoUmVkZXNpZ25lZClcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogQ2VudGVyIGNvbnRhaW5lciBmb3IgdGhlIHJpZ2h0IGNvbHVtbiAqL1xuLnBheW1lbnQtY2FyZC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAzMHB4IDIwcHg7XG59XG5cbi8qIENyZWRpdCBDYXJkIFZpc3VhbCBCb3ggKi9cbi5jYy12aXN1YWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBnYXA6IDIwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlNmVkO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgcGFkZGluZzogMjBweCAyNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjA4KTsgXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAzODBweDsgXG4gICAgbWFyZ2luLWJvdHRvbTogMjVweDtcbiAgICBcbiAgICAuY2MtaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjMDAzNWQyO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgd2lkdGg6IDUwcHg7XG4gICAgfVxuXG4gICAgLmNjLXRleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBcbiAgICAgICAgaDUgeyBcbiAgICAgICAgICAgIG1hcmdpbjogMDsgXG4gICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICAgICAgICBjb2xvcjogIzMzMzsgXG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwOyBcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyogTmV3IGNsYXNzIGZvciB0aGUgbWFza2VkIGRvdHMgKi9cbiAgICAgICAgLm1hc2tlZC1kb3RzIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxMHB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB0b3A6IDRweDtcbiAgICAgICAgICAgIGNvbG9yOiAjODg4O1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7IFxuICAgICAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7IFxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OyBcbiAgICAgICAgICAgIGNvbG9yOiAjODg4OyBcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFN0cmlwZSBJbnB1dCBDb250YWluZXIgKENvbnN0cmFpbmVkIHdpZHRoKSAqL1xuLnN0cmlwZS1pbnB1dC1jb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogMzgwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG59XG5cbiNjYXJkLWVsZW1lbnQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDM1ZDI7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE1cHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuI2NhcmQtZXJyb3JzIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgbWluLWhlaWdodDogMThweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIEJ1dHRvbnMgKENlbnRlcmVkICYgQ29uc3RyYWluZWQpICovXG4udmVydGljYWwtYnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5idG4tY2VudGVyZWQge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgbWF4LXdpZHRoOiAyNDBweDtcbiAgICBtYXJnaW46IDVweCAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFVzYWdlIEhpc3RvcnkgVGFibGVcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi51c2FnZS1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICAgIFxuICAgIG1heC1oZWlnaHQ6IGNhbGMoMTcwdmgpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmNGY3ZmU7XG4gICAgICAgICAgICBjb2xvcjogIzAwMzVkMjtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgei1pbmRleDogMTA7XG4gICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIC0xcHggMCAjZWVlOyBcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xuICAgICAgICAgICAgY29sb3I6ICMzNDNhNDA7XG4gICAgICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGQgc21hbGwge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBjb2xvcjogIzk4YTZhZDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgICAgIH1cblxuICAgICAgICB0cjpsYXN0LWNoaWxkIHRkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfVxuICAgIH1cblxuICAgIC8qIE9wdGlvbmFsOiBDdXN0b20gc2Nyb2xsYmFyIGZvciB0aGUgdGFibGUgY29udGFpbmVyICovXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgICB3aWR0aDogNnB4O1xuICAgIH1cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICB9XG59XG4udXNhZ2UtY29udGFpbmVyIC5sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIHBhZGRpbmc6IDNweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi8qIEN1c3RvbSBTY3JvbGxiYXIgZm9yIHRoZSBNYWluIENvbnRhaW5lciAqL1xuLnBheW1lbnQtc2V0dGluZ3MtbWFpbjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5wYXltZW50LXNldHRpbmdzLW1haW46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgXG59XG5cbi5wYXltZW50LXNldHRpbmdzLW1haW46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7IC8qIExpZ2h0IE5hdnkgKi9cbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuXG4ucGF5bWVudC1zZXR0aW5ncy1tYWluOmhvdmVyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjMpO1xufVxuXG4vKiBVdGlsaXR5ICovXG4ubXQtYXV0byB7IG1hcmdpbi10b3A6IGF1dG87IH1cblxuLyogQ2FyZCBTd2l0Y2hlciBIZWFkZXIgKi9cbi5jYXJkLXN3aXRjaGVyIHtcbiAgICBiYWNrZ3JvdW5kOiAjZjRmN2ZlO1xuICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7XG4gICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xuICAgIFxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMDAzNWQyO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgfVxufVxuXG4vKiBCYWNrdXAgQ2FyZCBWaXN1YWwgVmFyaWFudCAqL1xuLmNjLXZpc3VhbC5iYWNrdXAtc3R5bGUge1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCAjZmZhYjAwO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNTUsIDE3MSwgMCwgMC4xKTtcbiAgICBcbiAgICAuY2MtaWNvbiB7XG4gICAgICAgIGNvbG9yOiAjZmZhYjAwO1xuICAgIH1cbn1cblxuLyogSGVscGVyIENvbG9ycyAqL1xuLnRleHQtd2FybmluZyB7IGNvbG9yOiAjZmZhYjAwICFpbXBvcnRhbnQ7IH1cbi5idG4td2FybmluZyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYWIwMCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgJjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlNjlhMDAgIWltcG9ydGFudDsgfVxufVxuXG4vKiBTbmFwcHkgRmFkaW5nIGZvciBCdXR0b25zICovXG4uYW5pbWF0ZS1mYWRlLm5nLWVudGVyLCBcbi5hbmltYXRlLWZhZGUubmctbGVhdmUge1xuICAgIHRyYW5zaXRpb246IDE1MG1zIGN1YmljLWJlemllcigwLjI1MCwgMC40NjAsIDAuNDUwLCAwLjk0MCkgYWxsO1xufVxuXG4uYW5pbWF0ZS1mYWRlLm5nLWVudGVyLFxuLmFuaW1hdGUtZmFkZS5uZy1sZWF2ZS5uZy1sZWF2ZS1hY3RpdmUge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbi5hbmltYXRlLWZhZGUubmctbGVhdmUsXG4uYW5pbWF0ZS1mYWRlLm5nLWVudGVyLm5nLWVudGVyLWFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLyogRW5zdXJlIGJ1dHRvbnMgZG9uJ3QganVtcCBsYXlvdXQgd2hlbiBzd2l0Y2hpbmcgKi9cbi52ZXJ0aWNhbC1idXR0b25zIHtcbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uYW5pbWF0ZS1mYWRlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogLS0tIFVuaXZlcnNhbCBUb2tlbiBTZWN0aW9uIC0tLSAqL1xuLnVuaXZlcnNhbC10b2tlbi1zZWN0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4vKiBIZWFkZXIgJiBUaXRsZSBTdHlsaW5nICovXG4udG9rZW4taGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxNXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5cbi50b2tlbi1jaXJjbGUtaWNvbiB7XG4gICAgd2lkdGg6IDQ2cHg7XG4gICAgaGVpZ2h0OiA0NnB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDM1ZDIgMCUsICMyYTMwN2YgMTAwJSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG4gICAgZmxleC1zaHJpbms6IDA7IC8qIFByZXZlbnRzIGljb24gZnJvbSBzcXVpc2hpbmcgKi9cbn1cblxuLnRva2VuLXRpdGxlLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5wcmVtaXVtLXRpdGxlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcbiAgICBjb2xvcjogIzJhMzA3ZjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi50aXRsZS1zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiA0cHg7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMzVkMjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb3BhY2l0eTogMC40O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLnByZW1pdW0tc3VidGl0bGUge1xuICAgIG1hcmdpbjogNHB4IDAgMCAwICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjODc4YmEwO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5wcmVtaXVtLXRpdGxlIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcbiAgICBjb2xvcjogIzJhMzA3ZjtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4udG9rZW4tcHJpY2UtYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmZmZhOyBcbiAgICBjb2xvcjogIzIwYzk5NzsgXG4gICAgcGFkZGluZzogNHB4IDEwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMzIsIDIwMSwgMTUxLCAwLjIpO1xuICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xufVxuXG4vKiBHcmlkICYgSXRlbXMgU3R5bGluZyAqL1xuLnRva2VuLXZhbHVlLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMTJweDtcbn1cblxuLnRva2VuLWl0ZW0ge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgcGFkZGluZzogMTJweCAxNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTZlZDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xufVxuXG4udG9rZW4taXRlbTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJvcmRlci1jb2xvcjogI2NiZDVlMDtcbn1cblxuLml0ZW0taWNvbiB7XG4gICAgd2lkdGg6IDM0cHg7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLml0ZW0taWNvbi5haS1hZ2VudCB7IGJhY2tncm91bmQ6ICNlN2YwZmY7IGNvbG9yOiAjMDAzNWQyOyB9XG4uaXRlbS1pY29uLnNtcyB7IGJhY2tncm91bmQ6ICNlNmZmZmE7IGNvbG9yOiAjMjBjOTk3OyB9XG4uaXRlbS1pY29uLnRyYW5zY3JpcHRpb24geyBiYWNrZ3JvdW5kOiAjZmZmNGU1OyBjb2xvcjogI2ZmYWIwMDsgfVxuXG4uaXRlbS1kZXRhaWxzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5pdGVtLWxhYmVsIHtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgY29sb3I6ICM4ODg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4uaXRlbS12YWx1ZSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuLml0ZW0tdmFsdWUgc21hbGwge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICMwMDM1ZDI7XG4gICAgZm9udC1zaXplOiAxM3B4O1xufVxuXG4uYnRuLW91dGxpbmUtd2hpdGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG59XG5cbi5idG4tb3V0bGluZS13aGl0ZTpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzAwMzVkMjtcbiAgICBib3JkZXItY29sb3I6ICNmZmZmZmY7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsMCwwLDAuMTUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmJ0bi1vdXRsaW5lLXdoaXRlOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLmJ0bi1vdXRsaW5lLXdoaXRlIGkge1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xufVxuXG4vKiBSZXNwb25zaXZlIExvZ2ljICovXG5AbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcbiAgICAudG9rZW4tdmFsdWUtZ3JpZCB7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG4gICAgLnRva2VuLWl0ZW0ge1xuICAgICAgICBtaW4td2lkdGg6IGNhbGMoNTAlIC0gMTJweCk7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAudG9rZW4taXRlbSB7XG4gICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICB9XG4gICAgLnByZW1pdW0tdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgfVxufSIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQUkgVHJhbnNjcmlwdGlvbiBTZWF0c1xuLyogU2hhcmVkIGJ5IHRoZSBzZWF0IHBsYW4gZGlhbG9nIGFuZCB0aGUgc2VhdCBhc3NpZ25tZW50IC8gdXNhZ2UgZGlhbG9nLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBUaGUgY29tcG9uZW50IHNpdHMgZGlyZWN0bHkgaW5zaWRlIGFuIG1kLXRhYiwgc28gaXRzIGhvc3QgZWxlbWVudCBoYXMgdG8gY2FycnkgdGhlIGhlaWdodCBpdHNlbGYuICovXG50cmFuc2NyaXB0aW9uLXNlYXRzLXZpZXcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLnNlYXQtbWFpbiB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDIwcHggMzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgaDMsIGg0LCBoNSB7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VjdGlvbiBzd2l0Y2hlclxuLyogQnV5aW5nLCBhc3NpZ25pbmcgYW5kIHJlcG9ydGluZyBhcmUgb25lIHZpZXcgb3ZlciBvbmUgbG9hZCBvZiB0aGVcbi8qIHN1YnNjcmlwdGlvbiwgc28gdGhleSBzd2l0Y2ggaGVyZSByYXRoZXIgdGhhbiB0aHJvdWdoIHRoZSBkaWFsb2cnc1xuLyogb3duIHRhYnMuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1zdWJuYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiA2cHg7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMThweDtcblxuICAgIGJ1dHRvbiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgICAgIHBhZGRpbmc6IDlweCAxMnB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7XG5cbiAgICAgICAgaSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXI6bm90KC5hY3RpdmUpIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgICAgICB9XG5cbiAgICAgICAgJi5hY3RpdmUge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENhbGxvdXRzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1hbGVydCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTJweDtcbiAgICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMTRweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG4gICAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgID4gaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgPiBzcGFuIHtcbiAgICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAvKiBUaGUgc2hhcmVkIC5idG4gcnVsZXMgc3RyZXRjaCB0byAyMjBweCwgd2hpY2ggcmVhZHMgYXMgYSBzbGFiIG9uIGEgc2luZ2xlLWxpbmUgY2FsbG91dC4gKi9cbiAgICAuYnRuIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgICYudGlnaHQge1xuICAgICAgICBtYXJnaW46IDEycHggMCAwO1xuICAgICAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgIH1cblxuICAgICYuaW5mbyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkbmF2eTtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICB9XG5cbiAgICAmLndhcm5pbmcge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcbiAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgfVxuXG4gICAgJi5kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjEpO1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICB9XG5cbiAgICAmLnRyaWFsIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGN5YW4tdHAtMTA7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY3lhbjtcbiAgICAgICAgY29sb3I6ICR0ZWFsO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTdWJzY3JpcHRpb24gc3RhdHVzIHN0cmlwXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1zdGF0dXMtc3RyaXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIHBhZGRpbmc6IDE2cHggMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xufVxuXG4uc2VhdC1zdGF0dXMtaXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogNHB4O1xufVxuXG4uc2VhdC1zdGF0dXMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjZweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnNlYXQtc3RhdHVzLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xufVxuXG4uc2VhdC1waWxsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogM3B4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcblxuICAgICYucGlsbC1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMjA7XG4gICAgICAgIGNvbG9yOiAjMTI4MDVjO1xuICAgIH1cblxuICAgICYucGlsbC13YXJuaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0zMDtcbiAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgfVxuXG4gICAgJi5waWxsLWRhbmdlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuMTUpO1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcbiAgICB9XG5cbiAgICAmLnBpbGwtbXV0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUGxhbiBwaWNrZXIgbGF5b3V0XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1wbGFuLWxheW91dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDIycHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG59XG5cbi5zZWF0LXBsYW4tY29sdW1uIHtcbiAgICBmbGV4OiAxIDEgNjAlO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLnNlYXQtc3VtbWFyeS1jb2x1bW4ge1xuICAgIGZsZXg6IDAgMCAzMjBweDtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHRvcDogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTZWF0IHRpZXIgY2FyZFxuLyogVHdvIHRpZXJzLCBzaWRlIGJ5IHNpZGUgYW5kIGVxdWFsIGhlaWdodCwgc28gY2hvb3NpbmcgYmV0d2VlbiB0aGVtIGlzXG4vKiBvbmUgY29tcGFyaXNvbiByYXRoZXIgdGhhbiBhIHNjcm9sbC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXRpZXItZ3JpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBnYXA6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbn1cblxuLnNlYXQtdGllci1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleDogMSAxIDA7XG4gICAgbWluLXdpZHRoOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UsIGJvcmRlci1jb2xvciAwLjJzIGVhc2U7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcbiAgICB9XG5cbiAgICAmLnJlY29tbWVuZGVkIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTIpO1xuICAgIH1cbn1cblxuLnNlYXQtdGllci1mbGFnIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuOHB4O1xuICAgIHBhZGRpbmc6IDRweCAxNHB4O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xufVxuXG4uc2VhdC10aWVyLWhlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTRweDtcbiAgICBwYWRkaW5nOiAyMHB4IDI0cHggMTBweDtcblxuICAgIGg0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxufVxuXG4uc2VhdC10aWVyLWljb24ge1xuICAgIHdpZHRoOiA0NnB4O1xuICAgIGhlaWdodDogNDZweDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBmbGV4LXNocmluazogMDtcblxuICAgICYuc3RhbmRhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgfVxuXG4gICAgJi5wcmVtaXVtIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxhdmVuZGVyLXRwLTIwO1xuICAgICAgICBjb2xvcjogJHB1cnBsZTtcbiAgICB9XG59XG5cbi5zZWF0LXRpZXItcHJpY2Uge1xuICAgIHBhZGRpbmc6IDAgMjRweDtcblxuICAgIC5hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDMwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICAgIH1cblxuICAgIC5wZXJpb2Qge1xuICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB9XG59XG5cbi5zZWF0LXRpZXItaW5jbHVkZWQge1xuICAgIG1hcmdpbjogNHB4IDAgMDtcbiAgICBwYWRkaW5nOiAwIDI0cHg7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAkdGV4dEdyZXk7XG59XG5cbi8qIFB1c2hlZCB0byB0aGUgYm90dG9tIG9mIHRoZSBjYXJkIHNvIGJvdGggc3RlcHBlcnMgbGluZSB1cCB3aGF0ZXZlciB0aGUgY29weSBhYm92ZSBkb2VzLiAqL1xuLnNlYXQtdGllci1ib2R5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxOHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHBhZGRpbmc6IDE4cHggMjRweCAyMHB4O1xufVxuXG4uc2VhdC10aWVyLXN0YXRlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLnNlYXQtc3RlcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlYXQtc3RlcC1idG4ge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogJGxpZ2h0R3JleTtcbiAgICBjb2xvcjogJG5hdnk7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMTVzIGVhc2U7XG5cbiAgICAmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5LXBhbGU7XG4gICAgfVxuXG4gICAgJltkaXNhYmxlZF0ge1xuICAgICAgICBjb2xvcjogJGNhbmNlbEJvcmRlcjtcbiAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB9XG59XG5cbi5zZWF0LXN0ZXAtaW5wdXQge1xuICAgIHdpZHRoOiA2OHB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBib3JkZXI6IDA7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcblxuICAgIC8qIFRoZSArIGFuZCAtIGJ1dHRvbnMgZWl0aGVyIHNpZGUgYXJlIHRoZSBvbmx5IHN0ZXBwZXJzOiB0aGUgYnJvd3NlcidzIG93biBhcnJvd3Mgc2l0IGluc2lkZSB0aGVcbiAgICAgICBib3gsIGFyZSBmYXIgdG9vIHNtYWxsIHRvIGFpbSBhdCwgYW5kIHN0ZXAgcGFzdCB0aGUgbWluaW11bSB0aGUgcHJhY3RpY2UgaXMgYWxsb3dlZCB0byBrZWVwLiAqL1xuICAgIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAgIGFwcGVhcmFuY2U6IHRleHRmaWVsZDtcblxuICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG4gICAgJjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgIH1cbn1cblxuLnNlYXQtb3ZlcmZsb3ctbm90ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDEycHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuICAgIHBhZGRpbmc6IDE0cHggMThweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG5cbiAgICBpIHtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgT3JkZXIgc3VtbWFyeVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtc3VtbWFyeS1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcbn1cblxuLnNlYXQtc3VtbWFyeS1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJG5hdnkgMCUsICRkYXJrTmF2eSAxMDAlKTtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIHBhZGRpbmc6IDE0cHggMjBweDtcblxuICAgIGg0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICBmb250LXNpemU6IDE1cHg7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICB9XG59XG5cbi5zZWF0LXN1bW1hcnktY3VycmVuY3kge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG9wYWNpdHk6IDAuODtcbn1cblxuLnNlYXQtc3VtbWFyeS1ib2R5IHtcbiAgICBwYWRkaW5nOiAxOHB4IDIwcHg7XG4gICAgbWluLWhlaWdodDogMTIwcHg7XG59XG5cbi5zZWF0LXN1bW1hcnktbG9hZGluZyxcbi5zZWF0LXN1bW1hcnktZW1wdHkge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIHBhZGRpbmc6IDI0cHggMDtcblxuICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB9XG59XG5cbi5zdW1tYXJ5LWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBwYWRkaW5nOiA4cHggMDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcblxuICAgICYudG90YWwge1xuICAgICAgICBib3JkZXItYm90dG9tOiAwO1xuICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgJGRhcmtOYXZ5O1xuICAgICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgfVxufVxuXG4uc3VtbWFyeS1sYWJlbCB7XG4gICAgY29sb3I6ICR0ZXh0R3JleTtcblxuICAgIHNtYWxsIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgIH1cbn1cblxuLnN1bW1hcnktYW1vdW50IHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLnN1bW1hcnktY2hhcmdlIHtcbiAgICBtYXJnaW4tdG9wOiAxNHB4O1xuICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcbiAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuXG4gICAgJi5kb3duZ3JhZGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2FybmluZy1iZztcblxuICAgICAgICAuY2hhcmdlLXJvdyB7XG4gICAgICAgICAgICBjb2xvcjogJHdhcm5pbmctdGV4dDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNoYXJnZS1yb3cge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcblxuICAgIHN0cm9uZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG59XG5cbi5jaGFyZ2Utbm90ZSB7XG4gICAgbWFyZ2luOiA2cHggMCAwO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5zdW1tYXJ5LW5leHQge1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zZWF0LXN1bW1hcnktZm9vdGVyIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBiYWNrZ3JvdW5kOiAkZ3JleS1tb2RhbC1oZWFkZXI7XG5cbiAgICAuYnRuIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgIH1cblxuICAgIC8qIFRoZSBnbG9iYWwgLmJ0bi1uYXZ5IGlzIGNhcHBlZCBhdCAyMjBweCwgd2hpY2ggbGVhdmVzIHRoZSBibG9jayBidXR0b25cbiAgICAgICBodWdnaW5nIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGNhcmQuIFNwYW4gdGhlIGZvb3RlciBpbnN0ZWFkLiAqL1xuICAgIC5idG4tYmxvY2sge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxufVxuXG4uc2VhdC12YWxpZGF0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkd2FybmluZy1iZztcbiAgICBjb2xvcjogJHdhcm5pbmctdGV4dDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcbiAgICBwYWRkaW5nOiA5cHggMTJweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gICAgaSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIH1cbn1cblxuLnNlYXQtdmFsaWRhdGlvbi1hY3Rpb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogOHB4IDAgMDtcbn1cblxuLnNlYXQtZmVlZGJhY2sge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG5cbiAgICBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgfVxuXG4gICAgJi5lcnJvciB7XG4gICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgIH1cblxuICAgICYuc3VjY2VzcyB7XG4gICAgICAgIGNvbG9yOiAjMTI4MDVjO1xuICAgIH1cbn1cblxuLnNlYXQtcmVuZXctbm90ZSB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDJweCAwIDA7XG59XG5cbi5zZWF0LWNhbmNlbC1saW5rIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VhdCBhdmFpbGFiaWxpdHkgaGVhZGVyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1hdmFpbGFiaWxpdHktcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLnNlYXQtYXZhaWxhYmlsaXR5LWNhcmQge1xuICAgIGZsZXg6IDEgMSAyNDBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxNHB4O1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiA0cHg7XG5cbiAgICAmLnN0YW5kYXJkIHtcbiAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRuYXZ5O1xuICAgIH1cblxuICAgICYucHJlbWl1bSB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkcHVycGxlO1xuICAgIH1cblxuICAgICYuZ2hvc3Qge1xuICAgICAgICBib3JkZXItc3R5bGU6IGRhc2hlZDtcbiAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmF2YWlsYWJpbGl0eS1pY29uIHtcbiAgICB3aWR0aDogMzhweDtcbiAgICBoZWlnaHQ6IDM4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGNvbG9yOiAkbmF2eTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmF2YWlsYWJpbGl0eS1kZXRhaWwge1xuICAgIGZsZXg6IDE7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uYXZhaWxhYmlsaXR5LWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5hdmFpbGFiaWxpdHktY291bnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICBzbWFsbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIH1cbn1cblxuLmF2YWlsYWJpbGl0eS1iYXIge1xuICAgIGhlaWdodDogNXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hdmFpbGFiaWxpdHktZmlsbCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2U7XG59XG5cbi5hdmFpbGFiaWxpdHktcmVtYWluaW5nIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG4gICAgJi5ub25lLWxlZnQgLnJlbWFpbmluZy1udW1iZXIge1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxufVxuXG4ucmVtYWluaW5nLW51bWJlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICRncmVlbjtcbiAgICBsaW5lLWhlaWdodDogMS4xO1xufVxuXG4ucmVtYWluaW5nLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFRhYmxlIHRvb2xiYXJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXRhYmxlLXRvb2xiYXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDE2cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cblxuLnNlYXQtc2VhcmNoIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIHBhZGRpbmc6IDZweCAxNHB4O1xuICAgIHdpZHRoOiAzMjBweDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgICBpIHtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxuXG4gICAgaW5wdXQge1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICB9XG59XG5cbi5zZWF0LXRhYmxlLWNvdW50IHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5zZWF0LXBlcmlvZC1zZWxlY3RvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcblxuICAgIGxhYmVsIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDExcHg7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjZweDtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgIH1cblxuICAgIHNlbGVjdCB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICAgICAgbWluLXdpZHRoOiAyMjBweDtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VhdCB0YWJsZXNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXRhYmxlLXdyYXBwZXIge1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnNlYXQtdGFibGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICA+IHRoZWFkID4gdHIgPiB0aCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRncmV5LW1vZGFsLWhlYWRlcjtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC42cHg7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIH1cblxuICAgID4gdGJvZHkgPiB0ciA+IHRkIHtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgfVxuXG4gICAgPiB0Ym9keSA+IHRyIHtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjE1cyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogJHBhbGVCbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5yb3ctc2F2aW5nIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5LXBhbGU7XG5cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5LXBhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmLnJvdy1vcnBoYW5lZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjQzLCAyMDUsIDAuNSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWF0LXVzZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG59XG5cbi5zZWF0LWF2YXRhciB7XG4gICAgd2lkdGg6IDM0cHg7XG4gICAgaGVpZ2h0OiAzNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICAmLnRpZXItc3RhbmRhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eTtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG5cbiAgICAmLnRpZXItcHJlbWl1bSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRwdXJwbGU7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgJi50aWVyLXRyaWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGN5YW47XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgJi50aWVyLW5vbmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB9XG59XG5cbi5zZWF0LXVzZXItZGV0YWlsIHtcbiAgICBtaW4td2lkdGg6IDA7XG59XG5cbi5zZWF0LXVzZXItbmFtZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xufVxuXG4uc2VhdC11c2VyLWVtYWlsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG59XG5cbi5zZWF0LXVzZXItYXNzaWduZWQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4vKiBUaGUgcm9sZSByaWRlcyBvbiB0aGUgbmFtZSBsaW5lLCBzbyBpdCBpcyBzZXQgYXBhcnQgYnkgd2VpZ2h0IGFuZCBhIHNlcGFyYXRvciByYXRoZXIgdGhhbiBieVxuICAgc2l0dGluZyBpbiBhIGNvbHVtbiBvZiBpdHMgb3duLiAqL1xuLnNlYXQtdXNlci1yb2xlIHtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlxcMDBiN1wiO1xuICAgICAgICBtYXJnaW46IDAgNXB4O1xuICAgIH1cbn1cblxuLyogTGFiZWxzIGFyZSB3cml0dGVuIG91dCBpbiB0aGUgdGllciBtYXAgcmF0aGVyIHRoYW4gc2hvdXRlZCBieSB0aGUgc3R5bGVzaGVldCwgc28gbm8gc2NyZWVuIGV2ZXJcbiAgIHNob3dzIGEgcmF3IGVudW0gdmFsdWUuICovXG4uc2VhdC1iYWRnZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDJweCA5cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuXG4gICAgaSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIH1cblxuICAgICYuc3RhbmRhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgfVxuXG4gICAgJi5wcmVtaXVtIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxhdmVuZGVyLXRwLTIwO1xuICAgICAgICBjb2xvcjogJHB1cnBsZTtcbiAgICB9XG5cbiAgICAmLndhbGxldCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB9XG5cbiAgICAmLnRyaWFsIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGN5YW4tdHAtMjA7XG4gICAgICAgIGNvbG9yOiAkdGVhbDtcbiAgICB9XG5cbiAgICAmLm9ycGhhbmVkIHtcbiAgICAgICAgYmFja2dyb3VuZDogJHllbGxvdy10cC0zMDtcbiAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgfVxufVxuXG4vKiBCYWRnZXMgdHJhaWxpbmcgYSBuYW1lIG5lZWQgc2VwYXJhdGluZyBmcm9tIGl0OyB0aGUgc2FtZSBiYWRnZSBpbiBpdHMgb3duIHRhYmxlIGNlbGwgZG9lcyBub3QuICovXG4uc2VhdC11c2VyLW5hbWUgLnNlYXQtYmFkZ2Uge1xuICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgZm9udC1zaXplOiAxMHB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBlci1yb3cgdGllciBzZWxlY3RvclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtdGllci1zZWxlY3RvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG5cbi8qIFRoZSBzcGlubmVyIGlzIG92ZXJsYWlkIHJhdGhlciB0aGFuIGluc2VydGVkLCBzbyBhbiBpbi1mbGlnaHQgcm93IGtlZXBzIGl0cyBoZWlnaHQuICovXG4uc2VhdC10aWVyLWNlbGwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNlYXQtdGllci1zZWxlY3Rvci5zYXZpbmcge1xuICAgIG9wYWNpdHk6IDAuNDU7XG4gICAgY3Vyc29yOiBwcm9ncmVzcztcbn1cblxuLnNlYXQtdGllci1zcGlubmVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbjogLTdweCAwIDAgLTdweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICRuYXZ5O1xufVxuXG4udGllci1vcHRpb24ge1xuICAgIGZsZXg6IDE7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgcGFkZGluZzogN3B4IDZweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIH1cblxuICAgICY6aG92ZXI6bm90KFtkaXNhYmxlZF0pOm5vdCguc2VsZWN0ZWQpIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGxpZ2h0R3JleTtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICB9XG5cbiAgICAmW2Rpc2FibGVkXSB7XG4gICAgICAgIGNvbG9yOiAjYzhjZGQ0O1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuICAgIH1cblxuICAgICYuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkdGV4dEdyZXk7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgJi5zdGFuZGFyZC5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5O1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgICYucHJlbWl1bS5zZWxlY3RlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRwdXJwbGU7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgLyogVGhlIHRyaWFsIHNsb3Qgc3RhbmRzIGluIGZvciBcIm5vbmVcIiBvbiBhIHRyaWFsIGhvbGRlciwgd2hvc2UgdHJpYWwgY2Fubm90IGJlIHJlbGVhc2VkLiAqL1xuICAgICYudHJpYWwuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY3lhbjtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgRmVlZGJhY2sgYmFyXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhdC1mZWVkYmFjay1iYXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgYm90dG9tOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDIwcHg7XG4gICAgbWFyZ2luLXRvcDogMTRweDtcbiAgICBwYWRkaW5nOiAwIDE4cHg7XG4gICAgbWF4LWhlaWdodDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctbWQ7XG4gICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2UsIG9wYWNpdHkgMC4ycyBlYXNlLCBwYWRkaW5nIDAuMnMgZWFzZTtcblxuICAgICYudmlzaWJsZSB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDkwcHg7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMThweDtcbiAgICB9XG5cbiAgICAuc2VhdC1mZWVkYmFjayB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFVzYWdlIHRvdGFsc1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNlYXQtdG90YWxzLWdyaWQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxNnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xufVxuXG4uc2VhdC10b3RhbC1jYXJkIHtcbiAgICBmbGV4OiAxIDEgMjAwcHg7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBwYWRkaW5nOiAxNnB4IDE4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogM3B4O1xufVxuXG4udG90YWwtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjZweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLnRvdGFsLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDI2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE1O1xufVxuXG4udG90YWwtc3ViIHtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi50b3RhbC1iYXIge1xuICAgIGhlaWdodDogNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBiYWNrZ3JvdW5kOiAkcGFnZUJhY2tHcm91bmQ7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi50b3RhbC1maWxsIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4yNXMgZWFzZTtcblxuICAgICYub3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3ctY3RhO1xuICAgIH1cbn1cblxuLnRvdGFsLWxpbmsge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAkbmF2eTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBlci11c2VyIHVzYWdlIGJhclxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnVzYWdlLWJhciB7XG4gICAgaGVpZ2h0OiA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJhY2tncm91bmQ6ICRwYWdlQmFja0dyb3VuZDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLnVzYWdlLWZpbGwge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiAkZ3JlZW47XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMC4yNXMgZWFzZTtcblxuICAgICYub3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR5ZWxsb3ctY3RhO1xuICAgIH1cbn1cblxuLnVzYWdlLWNhcHRpb24ge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBjb2xvcjogJHRleHRHcmV5O1xufVxuXG4uc2VhdC1mb290bm90ZSB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIG1hcmdpbjogMTRweCA0cHggMDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VhdCBwcm9tbyBwYW5lbFxuLyogU2l0cyBvbiB0aGUgd2FsbGV0IHRhYiBvZiB0aGUgcGF5bWVudCBkaWFsb2cgYW5kIGxpbmtzIGFjcm9zcyB0byB0aGVcbi8qIHNlYXRzIHRhYi4gS2VwdCBpbiB0aGlzIGZpbGUgcmF0aGVyIHRoYW4gX3BheW1lbnRzLmNzcyBzbyBldmVyeXRoaW5nXG4vKiBkZXNjcmliaW5nIHNlYXRzIHN0YXlzIGluIG9uZSBwbGFjZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZWF0LXByb21vIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICAvKiBUaGUgNHB4IGVkZ2UgaXMgaG93IHRoZSByZXN0IG9mIHRoaXMgZmlsZSBtYXJrcyBhIGNhbGxvdXQsIGFuZCBpdCBnaXZlcyB0aGUgcGFuZWwgYSBicmFuZFxuICAgICAgIGFuY2hvciB3aXRob3V0IHRoZSBmaWxsZWQgbmF2eSBiYW5uZXIgdGhhdCBjcm93ZGVkIHRoZSB3YWxsZXQgY2FyZCBhYm92ZSBpdC4gKi9cbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkICRuYXZ5O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgU2VhdCBwcm9tbyBvcGVuaW5nIHBpbmdcbi8qIFRoZSBwYW5lbCBpcyBlYXN5IHRvIHNjcm9sbCBwYXN0LCBzbyB0d28gdGhpbmdzIGhhcHBlbiB3aGVuIHRoZSBkaWFsb2dcbi8qIGZpcnN0IHNob3dzIGl0OiBpdCBsaWZ0cyBvZmYgdGhlIHBhZ2Ugb25jZSwgYW5kIGEgYmFuZCBvZiBjeWFuIGxpZ2h0XG4vKiBzd2VlcHMgYWNyb3NzIGl0LiBUaGUgd2hpdGUgYm9keSBpcyBuZXZlciByZWNvbG91cmVkIC0gdGhlIGJhbmQgb25seVxuLyogcGFzc2VzIG92ZXIgaXQgLSBhbmQgYm90aCBhbmltYXRpb25zIGVuZCBvbiB0aGUgcmVzdGluZyBsb29rLCBzbyB0aGVcbi8qIGNsYXNzIGNhbiBiZSBkcm9wcGVkIGF0IGFueSBwb2ludCB3aXRob3V0IHRoZSBwYW5lbCBhcHBlYXJpbmcgdG9cbi8qIGNoYW5nZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogT25lIHJpc2UgYW5kIHNldHRsZS4gS2VwdCB0byBhIGZldyBwaXhlbHM6IHRoaXMgaXMgYSBwYW5lbCBpbiBhIGRpYWxvZywgbm90IGEgY2FyZCBiZWluZyBwaWNrZWQgdXAuICovXG5Aa2V5ZnJhbWVzIHNlYXQtcHJvbW8tbGlmdCB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxuXG4gICAgMzAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHNjYWxlKDEuMDA4KTtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLyogVHJhdmVscyB0aGUgcGFuZWwncyBvd24gd2lkdGggcGx1cyBpdHMgb3ZlcmhhbmcsIHNvIHRoZSBiYW5kIGVudGVycyBhbmQgbGVhdmVzIG9mZiB0aGUgZWRnZXMuICovXG5Aa2V5ZnJhbWVzIHNlYXQtcHJvbW8tc3dlZXAge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEzMCUpIHNrZXdYKC0xMmRlZyk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzIwJSkgc2tld1goLTEyZGVnKTtcbiAgICB9XG59XG5cbi8qIEhlbGQgZm9yIHRoZSBmaXJzdCBtb21lbnRzIG9mIHRoZSBkaWFsb2cgb25seSAtIHRoZSBjb250cm9sbGVyIGRyb3BzIHRoZSBjbGFzcyBhcyB0aGVzZSBmaW5pc2guICovXG4uc2VhdC1wcm9tby1oaWdobGlnaHQge1xuICAgIGFuaW1hdGlvbjogc2VhdC1wcm9tby1saWZ0IDEuN3MgZWFzZS1vdXQgMSBib3RoO1xuXG4gICAgLyogVGhlIGJhbmQgb2YgbGlnaHQuIENsaXBwZWQgYnkgdGhlIHBhbmVsJ3Mgb3duIG92ZXJmbG93LCBhbmQgb3ZlciB0aGUgaGVybyBjb250ZW50IHJhdGhlciB0aGFuXG4gICAgICAgdW5kZXIgaXQsIHNvIGl0IHBhc3NlcyBhY3Jvc3MgdGhlIGNvcHkgYXMgd2VsbCBhcyB0aGUgdGludGVkIHN0cmlwLiBDeWFuIGNhcnJpZXMgYWdhaW5zdCBib3RoXG4gICAgICAgdGhlIHdoaXRlIGJvZHkgYW5kIHRoZSBwYWxlIGhlcm87IGEgd2hpdGUgc2hlZW4gd291bGQgYmUgaW52aXNpYmxlIG9uIGVpdGhlci4gKi9cbiAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTEwJTtcbiAgICAgICAgYm90dG9tOiAtMTAlO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogNDUlO1xuICAgICAgICB6LWluZGV4OiAzO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEwMGRlZyxcbiAgICAgICAgICAgIGNvbG9yKCRjeWFuIGEoMCUpKSAwJSxcbiAgICAgICAgICAgIGNvbG9yKCRjeWFuIGEoMjYlKSkgNTAlLFxuICAgICAgICAgICAgY29sb3IoJGN5YW4gYSgwJSkpIDEwMCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEzMCUpIHNrZXdYKC0xMmRlZyk7XG4gICAgICAgIGFuaW1hdGlvbjogc2VhdC1wcm9tby1zd2VlcCAxLjI1cyBlYXNlLWluLW91dCAyIGJvdGg7XG4gICAgfVxufVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuICAgIC5zZWF0LXByb21vLWhpZ2hsaWdodCB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcblxuICAgICAgICAvKiBIaWRkZW4gb3V0cmlnaHQ6IHdpdGggdGhlIGFuaW1hdGlvbiBvZmYsIGEgc3RhdGljIGJhbmQgd291bGQganVzdCBzaXQgb3ZlciB0aGUgcGFuZWwuICovXG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qIFRpbnRlZCB3ZWxsIHNob3J0IG9mIHRoZSB3YWxsZXQgY2FyZCdzIHNhdHVyYXRpb24sIGJ1dCBmYXIgZW5vdWdoIHVwIGZyb20gd2hpdGUgdGhhdCB0aGUgcGFuZWxcbiAgIHN0aWxsIHJlYWRzIGFzIGFuIGFkdmVydGlzZW1lbnQgcmF0aGVyIHRoYW4gYW5vdGhlciBzZXR0aW5ncyBjYXJkLiAqL1xuLnNlYXQtcHJvbW8taGVybyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMjRweDtcbiAgICBwYWRkaW5nOiAyNHB4IDI4cHggMjJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCBjb2xvcigkbmF2eSBsKDkwJSkpIDAlLCBjb2xvcigkY3lhbiBsKDg4JSkpIDEwMCUpO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcblxuICAgICY6OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC02MHB4O1xuICAgICAgICB0b3A6IC04MHB4O1xuICAgICAgICB3aWR0aDogMjMwcHg7XG4gICAgICAgIGhlaWdodDogMjMwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZS10cC00MDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB9XG59XG5cbi5zZWF0LXByb21vLXdhdGVybWFyayB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAyMnB4O1xuICAgIGJvdHRvbTogLTM0cHg7XG4gICAgZm9udC1zaXplOiAxMThweDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogJHdoaXRlLXRwLTUwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uc2VhdC1wcm9tby1pbnRybyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMThweDtcbiAgICBmbGV4OiAxO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLyogVGhlIG9uZSBzYXR1cmF0ZWQgZWxlbWVudCBsZWZ0IGluIHRoZSBoZXJvLCBtYXRjaGluZyB0aGUgd2FsbGV0IHBhZ2UncyBvd24gaWNvbiBjaGlwcy4gKi9cbi5zZWF0LXByb21vLWljb24ge1xuICAgIHdpZHRoOiA1MnB4O1xuICAgIGhlaWdodDogNTJweDtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkbmF2eSAwJSwgJGRhcmtOYXZ5IDEwMCUpO1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5zZWF0LXByb21vLWNvcHkge1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIGgzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIG1hcmdpbjogMCAwIDZweDtcbiAgICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICB9XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBtYXgtd2lkdGg6IDYyMHB4O1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGNvbG9yOiAkdGV4dEdyZXk7XG4gICAgfVxuXG4gICAgc3Ryb25nIHtcbiAgICAgICAgY29sb3I6ICRkYXJrTmF2eTtcbiAgICB9XG59XG5cbi5zZWF0LXByb21vLWZsYWcge1xuICAgIGJhY2tncm91bmQ6ICR5ZWxsb3ctY3RhO1xuICAgIGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG4gICAgZm9udC1zaXplOiA5cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC44cHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBwYWRkaW5nOiAzcHggOXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zLXNlcmlmO1xuXG4gICAgJi5saXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGdyZWVuO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cblxuICAgICYuYWxlcnQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkcmVkLWRhbmdlci1hbHQ7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1jdGEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgIGZsZXg6IDAgMCAyMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiA4cHg7XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbn1cblxuLnNlYXQtcHJvbW8tYnRuLXByaW1hcnksXG4uc2VhdC1wcm9tby1idG4tc2Vjb25kYXJ5IHtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIHBhZGRpbmc6IDlweCAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG5cbiAgICBpIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1idG4tcHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZDogJG5hdnk7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDA7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMik7XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkZGFya05hdnk7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1idG4tc2Vjb25kYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgY29sb3I6ICRuYXZ5O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cbiAgICAmOmhvdmVyLFxuICAgICY6YWN0aXZlLFxuICAgICY6Zm9jdXMge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICAgICAgb3V0bGluZTogMDtcbiAgICB9XG59XG5cbi5zZWF0LXByb21vLWxpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDZweDtcbiAgICBtYXJnaW4tdG9wOiAycHg7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6ICRuYXZ5O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgIH1cbn1cblxuLyogLS0tIFRoZSB0d28gdGllcnMsIHByaWNlZC4gU2lkZSBieSBzaWRlLCBhcyB0aGV5IGFyZSBvbiB0aGUgc2VhdHMgdGFiIGl0c2VsZi4gLS0tICovXG4uc2VhdC1wcm9tby1wbGFucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDtcbiAgICBnYXA6IDEycHg7XG4gICAgcGFkZGluZzogMTZweCAyOHB4IDE4cHg7XG59XG5cbi5zZWF0LXByb21vLXBsYW4ge1xuICAgIGZsZXg6IDEgMSAwO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgYmFja2dyb3VuZDogJGxpZ2h0R3JleTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyBlYXNlLCBib3JkZXItY29sb3IgMC4ycyBlYXNlO1xuXG4gICAgJi5yZWNvbW1lbmRlZCB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5LXBhbGU7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG4gICAgICAgIGJvcmRlci1jb2xvcjogJG5hdnk7XG4gICAgfVxufVxuXG4ucHJvbW8tcGxhbi1uYW1lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICBpIHtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgfVxufVxuXG4ucHJvbW8tcGxhbi1wcmljZSB7XG4gICAgbWFyZ2luLXRvcDogM3B4O1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcblxuICAgIHNtYWxsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICAgICAgZm9udC1zaXplOiAxMXB4O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgfVxufVxuXG4uc2VhdC1wcm9tby1wbGFucy1zdGF0dXMge1xuICAgIGZsZXg6IDE7XG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xuICAgIGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuICAgIGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB9XG59XG5cbi8qIC0tLSBGb290ZXJzOiB0aGUgdGhpbmdzIHRoYXQgYmxvY2sgb3Igd2FzdGUgYSBzZWF0IHB1cmNoYXNlIC0tLSAqL1xuLnNlYXQtcHJvbW8tbm90ZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTBweDtcbiAgICBwYWRkaW5nOiAxMXB4IDI4cHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDU7XG5cbiAgICA+IGkge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIH1cblxuICAgID4gc3BhbiB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLyogVGhlIHNoYXJlZCAuYnRuIHJ1bGVzIHN0cmV0Y2ggdG8gMjIwcHgsIHdoaWNoIHJlYWRzIGFzIGEgc2xhYiBpbiBhIG9uZS1saW5lIGZvb3Rlci4gKi9cbiAgICAuYnRuIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cblxuICAgICYuaW5mbyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRuYXZ5LXBhbGU7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG5cbiAgICAgICAgPiBpIHtcbiAgICAgICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYud2FybmluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICR3YXJuaW5nLWJnO1xuICAgICAgICBjb2xvcjogJHdhcm5pbmctdGV4dDtcblxuICAgICAgICA+IGkge1xuICAgICAgICAgICAgY29sb3I6ICR5ZWxsb3ctY3RhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5kYW5nZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxNywgODMsIDc5LCAwLjEpO1xuICAgICAgICBjb2xvcjogJGRhbmdlcjtcblxuICAgICAgICA+IGkge1xuICAgICAgICAgICAgY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDYW5jZWwgc2VhdHMgbW9kYWxcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIENhbmNlbGxpbmcgYXNrcyBob3cgbWFueSBzZWF0cyB0byBnaXZlIHVwIGJlZm9yZSBpdCBvZmZlcnMgdG8gZW5kIHRoZSBsb3QsIHNvIHRoZSBtb2RhbCBjYXJyaWVzXG4gICB0aGUgc2FtZSBzdGVwcGVyIGFzIHRoZSBidXkgc2NyZWVuIGFuZCB0aGUgd2hvbGUtc3Vic2NyaXB0aW9uIGJ1dHRvbiBzaXRzIGFwYXJ0IGZyb20gaXQuICovXG4uc2VhdC1jYW5jZWwtbW9kYWwge1xuXG4gICAgLm1vZGFsLWRpYWxvZyB7XG4gICAgICAgIHdpZHRoOiA1NjBweDtcbiAgICAgICAgbWF4LXdpZHRoOiA5NHZ3O1xuICAgIH1cblxuICAgIC8qIENhcHBlZCBzbyB1bmZvbGRpbmcgYSBwaWNrZXIgY2FuIG5ldmVyIHB1c2ggdGhlIGZvb3RlciBvZmYgdGhlIHNjcmVlbiAtIHRoZSBwYW5lbCBzY3JvbGxzXG4gICAgICAgaW5zaWRlIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBkaWFsb2cgZ3Jvd2luZyBwYXN0IHRoZSB2aWV3cG9ydC4gKi9cbiAgICAubXktbW9kYWwtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDJyZW07XG4gICAgICAgIG1heC1oZWlnaHQ6IDYydmg7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxufVxuXG4uc2VhdC1jYW5jZWwtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMTRweDtcbiAgICBwYWRkaW5nOiAxNHB4IDA7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1kZXRhaWwge1xuICAgIGZsZXg6IDEgMSAxNTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycHg7XG59XG5cbi5zZWF0LWNhbmNlbC1uYW1lIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuXG4gICAgPiBpIHtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1oZWxkIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4uc2VhdC1jYW5jZWwta2VlcGluZyB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgbWluLXdpZHRoOiA3MnB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDJweDtcbn1cblxuLmtlZXBpbmctbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG59XG5cbi5rZWVwaW5nLXZhbHVlIHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogJGRhcmtOYXZ5O1xuXG4gICAgLyogTm90aGluZyBiZWluZyBnaXZlbiB1cCByZWFkcyBhcyBhIG5ldXRyYWwgemVybzsgdGhlIG1vbWVudCBpdCBpcyBub3QsIGl0IHNob3VsZCBjYXRjaCB0aGUgZXllLiAqL1xuICAgICYuaXMtY2FuY2VsbGluZyB7XG4gICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgIH1cbn1cblxuLyogRnVsbCB3aWR0aCB1bmRlciB0aGUgcm93IGl0IGV4cGxhaW5zLCByYXRoZXIgdGhhbiBzcXVlZXplZCBiZXR3ZWVuIHRoZSBzdGVwcGVyIGFuZCB0aGUgY291bnQuICovXG4uc2VhdC1jYW5jZWwtbm90ZSB7XG4gICAgZmxleDogMSAxIDEwMCU7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBsaW5lLWhlaWdodDogMS40O1xufVxuXG4vKiBUaGUgcGlja2VyIG9ubHkgYXBwZWFycyBvbmNlIHRoZSBzdGVwcGVyIHJlYWNoZXMgc2VhdHMgcGVvcGxlIGFyZSBob2xkaW5nLCBzbyBpdCBzaXRzIGluc2lkZSB0aGVcbiAgIHJvdyBpdCBiZWxvbmdzIHRvIGFuZCBpcyBpbmRlbnRlZCBhd2F5IGZyb20gdGhlIHN0ZXBwZXIgYWJvdmUgaXQuICovXG4uc2VhdC1yZWxlYXNlLXBpY2tlciB7XG4gICAgZmxleDogMSAxIDEwMCU7XG4gICAgbWFyZ2luLXRvcDogNHB4O1xuICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICBiYWNrZ3JvdW5kOiAkbGlnaHRHcmV5O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgJG5hdnk7XG4gICAgbWF4LWhlaWdodDogNDAwcHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcblxuICAgIC8qIFNsaWQgcmF0aGVyIHRoYW4gcG9wcGVkOiBpdCBpcyB0aGUgb25lIGJsb2NrIG9uIHRoZSBwYW5lbCB0aGF0IGhhcyB0byBjb21lIGFuZCBnbywgYW5kIGF0XG4gICAgICAgMTYwbXMgaXQgcmVhZHMgYXMgdGhlIHJvdyBvcGVuaW5nIHVwIGluc3RlYWQgb2YgdGhlIG1vZGFsIHJlYXJyYW5naW5nIGl0c2VsZi4gQSBtYXgtaGVpZ2h0IGlzXG4gICAgICAgdGhlIG9ubHkgaGVpZ2h0IGEgdHJhbnNpdGlvbiBjYW4gd29yayB3aXRoIGhlcmUsIHNvIGl0IGlzIHNldCBwYXN0IGFueSByZWFsaXN0aWMgbGlzdCBhbmQgdGhlXG4gICAgICAgbGlzdCBzY3JvbGxzIGluc2lkZSBpdC4gKi9cbiAgICAmLm5nLWVudGVyLFxuICAgICYubmctbGVhdmUge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMTZzIGVhc2Utb3V0LCBvcGFjaXR5IDAuMTZzIGVhc2Utb3V0O1xuICAgIH1cblxuICAgICYubmctZW50ZXIsXG4gICAgJi5uZy1sZWF2ZS1hY3RpdmUge1xuICAgICAgICBtYXgtaGVpZ2h0OiAwO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cblxuICAgICYubmctZW50ZXItYWN0aXZlLFxuICAgICYubmctbGVhdmUge1xuICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi5zZWF0LXJlbGVhc2UtaGVhZCB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ1O1xuICAgIGNvbG9yOiAkdGV4dC1saWdodDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG4gICAgPiBzdHJvbmcge1xuICAgICAgICBjb2xvcjogJGRhcmtOYXZ5O1xuICAgIH1cbn1cblxuLnNlYXQtcmVsZWFzZS1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDdweCA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG4gICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgIH1cblxuICAgICYuc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkbmF2eS1wYWxlO1xuICAgIH1cblxuICAgIGlucHV0IHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG59XG5cbi5zZWF0LXJlbGVhc2UtbmFtZSB7XG4gICAgZmxleDogMTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgY29sb3I6ICRkYXJrTmF2eTtcbn1cblxuLnNlYXQtcmVsZWFzZS11c2FnZSB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnNlYXQtcmVsZWFzZS1zaG9ydGZhbGwge1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICRkYW5nZXI7XG5cbiAgICA+IGkge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1zdW1tYXJ5IHtcbiAgICBtYXJnaW4tdG9wOiAxOHB4O1xuICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAkcGFsZUJsdWU7XG4gICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG59XG5cbi5zZWF0LWNhbmNlbC1zdW1tYXJ5LWxpbmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAkdGV4dC1saWdodDtcblxuICAgICsgLnNlYXQtY2FuY2VsLXN1bW1hcnktbGluZSB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICB9XG5cbiAgICA+IHN0cm9uZyB7XG4gICAgICAgIGNvbG9yOiAkZGFya05hdnk7XG4gICAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlO1xuXG4gICAgICAgIC8qIEJlaW5nIHJlLXByaWNlZC4gVGhlIGZpZ3VyZSBzdGFuZGluZyB0aGVyZSBpcyBhIHN0ZXAgYmVoaW5kLCBub3Qgd3JvbmcsIGFuZCBzYXlpbmcgc28gYnlcbiAgICAgICAgICAgZmFkaW5nIGl0IGJlYXRzIHN3YXBwaW5nIHRoZSBsaW5lIGZvciBhIHNwaW5uZXIgYW5kIG1vdmluZyB0aGUgcGFuZWwgdHdpY2UuICovXG4gICAgICAgICYuaXMtdXBkYXRpbmcge1xuICAgICAgICAgICAgb3BhY2l0eTogMC40NTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnNlYXQtY2FuY2VsLWZvb3Rub3RlIHtcbiAgICBtYXJnaW4tdG9wOiAxNHB4O1xuXG4gICAgLyogSGVsZCBvcGVuIGZvciB0aGUgdGFsbGVzdCBtZXNzYWdlIGl0IGNhcnJpZXMsIHNvIHRoZSBzdW1tYXJ5IGFib3ZlIGFuZCB0aGUgZm9vdGVyIGJlbG93IGRvIG5vdFxuICAgICAgIG1vdmUgYXMgdGhlIHdvcmRzIGluIGl0IGNoYW5nZS4gKi9cbiAgICBtaW4taGVpZ2h0OiA0MHB4O1xuXG4gICAgPiBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuICAgICAgICA+IGkge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgICAgICAgICBjb2xvcjogJG5hdnk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1mb290ZXIge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgZ2FwOiAxNnB4O1xufVxuXG4uc2VhdC1jYW5jZWwtYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDE0cHg7XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMjIwcHg7XG4gICAgfVxufVxuXG4vKiBTZXBhcmF0ZWQgYnkgYSBydWxlIHNvIGVuZGluZyBldmVyeXRoaW5nIGNhbm5vdCBiZSByZWFjaGVkIGZvciBieSBtaXN0YWtlIHdoaWxlIGFpbWluZyBhdCB0aGVcbiAgIGNvbmZpcm0gYnV0dG9uIGFib3ZlIGl0LiAqL1xuLnNlYXQtY2FuY2VsLWV2ZXJ5dGhpbmcge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIHBhZGRpbmctdG9wOiAxNHB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG59XG5cbi5zZWF0LWNhbmNlbC1ldmVyeXRoaW5nLW5vdGUge1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICBsaW5lLWhlaWdodDogMS40NTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5hcnJvdyBzY3JlZW5zXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG4gICAgLnNlYXQtcGxhbi1sYXlvdXQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIH1cblxuICAgIC5zZWF0LXN1bW1hcnktY29sdW1uIHtcbiAgICAgICAgZmxleDogMSAxIGF1dG87XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDgyMHB4KSB7XG4gICAgLnNlYXQtcHJvbW8taGVybyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5zZWF0LXByb21vLWN0YSB7XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIH1cblxuICAgIC8qIEJlbG93IHRoaXMgdGhlcmUgaXMgbm90IHJvb20gdG8gY29tcGFyZSB0aGUgdGllcnMgc2lkZSBieSBzaWRlLCBvbiBlaXRoZXIgc2NyZWVuLiAqL1xuICAgIC5zZWF0LXRpZXItZ3JpZCxcbiAgICAuc2VhdC1wcm9tby1wbGFucyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgLyogQSBGb250IEF3ZXNvbWUgZWxlbWVudCwgd2hvc2Ugb3duIC5mYSBydWxlIGlzIGxvYWRlZCBhZnRlciB0aGlzIGZpbGUgYW5kIGNhcnJpZXMgdGhlIHNhbWVcbiAgICAgICBzcGVjaWZpY2l0eSwgc28gdGhlIHBhcmVudCBoYXMgdG8gYmUgbmFtZWQgdG8gaGlkZSBpdC4gKi9cbiAgICAuc2VhdC1wcm9tby1oZXJvIC5zZWF0LXByb21vLXdhdGVybWFyayB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTZXR0aW5ncyBNb2RhbFxuLyogU2hhcmVzIHRoZSB2aXN1YWwgbGFuZ3VhZ2Ugb2YgX3BheW1lbnRzLmNzcyAtIHBhbGUgYmx1ZSBjYW52YXMsIHdoaXRlXG4vKiByb3VuZGVkIGNhcmRzLCBuYXZ5IGFjY2VudHMgLSBhbmQgcmV1c2VzIC5zZXR0aW5ncy1jYXJkLCAuc2V0dGluZy1yb3csXG4vKiAudG9nZ2xlLXN3aXRjaCwgLnNhdmUtc3RhdHVzLWluZGljYXRvciBhbmQgLmRpc2FibGVkLW92ZXJsYXkgZnJvbSBpdC5cbi8qIEV2ZXJ5dGhpbmcgZWxzZSBpcyBzY29wZWQgdG8gLnNldHRpbmdzLXNoZWxsIHNvIHRoZSBnZW5lcmljIG5hbWVzIGhlcmVcbi8qIGNhbm5vdCBsZWFrIGludG8gdGhlIHJlc3Qgb2YgdGhlIGFwcC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVGhlIHNjb3BlIGJhbmQgd2lwZXMgb3BlbiB3aGVuIGEgc2VjdGlvbiBpcyBzaG93bi4gQ2xpcC1wYXRoIG9ubHkgYWZmZWN0cyBwYWludCxcbiAgIHNvIHRoZSBib3ggb2NjdXBpZXMgaXRzIHNwYWNlIGltbWVkaWF0ZWx5IGFuZCBub3RoaW5nIHNoaWZ0cyBhcm91bmQgaXQuICovXG5Aa2V5ZnJhbWVzIHNldHRpbmdzLXNjb3BlLWJhbmQtb3BlbiB7XG5cdGZyb20ge1xuXHRcdGNsaXAtcGF0aDogaW5zZXQoMCAxMDAlIDAgMCk7XG5cdH1cblxuXHR0byB7XG5cdFx0Y2xpcC1wYXRoOiBpbnNldCgwIDAgMCAwKTtcblx0fVxufVxuXG4uc2V0dGluZ3MtZGlhbG9nIHtcblx0bWQtZGlhbG9nLWNvbnRlbnQge1xuXHRcdGJvcmRlci10b3A6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG59XG5cbi5zZXR0aW5ncy1zaGVsbCB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXg6IDE7XG5cdG1pbi1oZWlnaHQ6IDA7XG5cdHdpZHRoOiAxMDAlO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBMZWZ0IFJhaWwgTmF2aWdhdGlvblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1uYXYge1xuXHRcdGZsZXg6IDAgMCAyNzJweDtcblx0XHR3aWR0aDogMjcycHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblxuXHRcdCY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcblx0XHRcdHdpZHRoOiA2cHg7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtaWRlbnRpdHkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMjBweCAxOHB4IDE4cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdH1cblxuXHQuc2V0dGluZ3MtYXZhdGFyIHtcblx0XHR3aWR0aDogNDJweDtcblx0XHRoZWlnaHQ6IDQycHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRuYXZ5IDAlLCAkZGFya05hdnkgMTAwJSk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC41cHg7XG5cdFx0Ym94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDUzLCAyMTAsIDAuMik7XG5cdH1cblxuXHQuc2V0dGluZ3MtaWRlbnRpdHktdGV4dCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LmlkZW50aXR5LW5hbWUge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdC5pZGVudGl0eS1yb2xlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLW5hdi1ncm91cCB7XG5cdFx0cGFkZGluZzogMTZweCAxMHB4IDRweDtcblxuXHRcdC8qIFByYWN0aWNlIG5hbWVzIGFyZSBidXR0b25zIHRoYXQgZm9sZCB0aGVpciBzZXR0aW5ncyBhd2F5OyBcIllvdXIgYWNjb3VudFwiXG5cdFx0ICAgdXNlcyB0aGUgc2FtZSBsb29rIGJ1dCBpcyBub3QgaW50ZXJhY3RpdmUuICovXG5cdFx0LnNldHRpbmdzLW5hdi1ncm91cC10aXRsZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogN3B4O1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdHBhZGRpbmc6IDVweCAxMnB4IDdweDtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdFx0Ji5zdGF0aWMge1xuXHRcdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQmOm5vdCguc3RhdGljKTpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblxuXHRcdFx0XHQubmF2LWdyb3VwLWNoZXZyb24ge1xuXHRcdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQubmF2LWdyb3VwLW5hbWUge1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdH1cblxuXHRcdFx0Lm5hdi1ncm91cC1jaGV2cm9uIHtcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0XHRjb2xvcjogI2MzYzlkYTtcblx0XHRcdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZTtcblx0XHRcdH1cblxuXHRcdFx0Ji5jb2xsYXBzZWQgLm5hdi1ncm91cC1jaGV2cm9uIHtcblx0XHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoLTkwZGVnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBDb2xsYXBzZSBhbmltYXRpb24uIG1heC1oZWlnaHQgY2Fubm90IHRyYW5zaXRpb24gdG8gYXV0bywgc28gaXQgcnVucyB0byBhXG5cdFx0ICAgY2VpbGluZyBjb21mb3J0YWJseSBhYm92ZSB0aGUgdGFsbGVzdCBncm91cCAoNSBpdGVtcyB+IDIwMHB4KTsgdGhlIGVhc2luZyBpc1xuXHRcdCAgIHdoYXQgaXMgc2Vlbiwgbm90IHRoZSBleGFjdCB2YWx1ZS4gT3BhY2l0eSBhbmQgYSBzbWFsbCBsaWZ0IGRvIHRoZSByZXN0LiAqL1xuXHRcdC5uYXYtZ3JvdXAtaXRlbXMge1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdG1heC1oZWlnaHQ6IDMyMHB4O1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4yNHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSxcblx0XHRcdFx0b3BhY2l0eSAwLjE4cyBlYXNlLFxuXHRcdFx0XHR0cmFuc2Zvcm0gMC4yNHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcblx0XHR9XG5cblx0XHQubmF2LWdyb3VwLWl0ZW1zLm5nLWVudGVyLFxuXHRcdC5uYXYtZ3JvdXAtaXRlbXMubmctbGVhdmUubmctbGVhdmUtYWN0aXZlIHtcblx0XHRcdG1heC1oZWlnaHQ6IDA7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpO1xuXHRcdH1cblxuXHRcdC5uYXYtZ3JvdXAtaXRlbXMubmctZW50ZXIubmctZW50ZXItYWN0aXZlLFxuXHRcdC5uYXYtZ3JvdXAtaXRlbXMubmctbGVhdmUge1xuXHRcdFx0bWF4LWhlaWdodDogMzIwcHg7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHRcdH1cblxuXHRcdC5uYXYtZ3JvdXAtdGFnIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXNpemU6IDhweDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdFx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblxuXHRcdFx0LyogRmlsbGVkIHBpbGwgbWFya3MgdGhlIG9uZSBwcmFjdGljZSB0aGF0IGlzIG9wZW4gLSBvbmx5IGV2ZXIgb25lLiAqL1xuXHRcdFx0Ji5vcGVuIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLW5hdi1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMXB4O1xuXHRcdHBhZGRpbmc6IDlweCAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDJweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cblx0XHRpIHtcblx0XHRcdHdpZHRoOiAxNXB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuYWN0aXZlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtbmF2LWZvb3RlciB7XG5cdFx0bWFyZ2luLXRvcDogYXV0bztcblx0XHRwYWRkaW5nOiAxNHB4IDE4cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWYxZjc7XG5cblx0XHQuZm9vdGVyLWxhYmVsIHtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cblx0XHQuZm9vdGVyLXZhbHVlIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFJpZ2h0IENvbnRlbnQgUGFuZVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1wYW5lIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0LyogRWFjaCBzZWN0aW9uIGlzIGEgY29tcG9uZW50IGVsZW1lbnQgLSBtYWtlIGl0IG93biB0aGUgcGFuZSdzIGhlaWdodCAqL1xuXHRcdD4gKiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLWhlaWdodDogMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1wYW5lLWJvZHkge1xuXHRcdGZsZXg6IDE7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRwYWRkaW5nOiAyNHB4IDI4cHggMjhweDtcblxuXHRcdGgzLFxuXHRcdGg0LFxuXHRcdGg1IHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRcdFx0d2lkdGg6IDZweDtcblx0XHR9XG5cblx0XHQmOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG5cdFx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0XHR9XG5cblx0XHQmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHR9XG5cdH1cblxuXHQvKiBfcGF5bWVudHMuY3NzIHN0cmV0Y2hlcyBjYXJkcyB0byBmaWxsIHRoZWlyIGNvbHVtbjsgaGVyZSB0aGV5IGh1ZyB0aGVpciBjb250ZW50ICovXG5cdC5zZXR0aW5ncy1jYXJkIHtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdH1cblxuXHQvKiBDb2x1bW4gZmxleCBzbyB0aGUgYmFkZ2UsIGhlYWRpbmcgYW5kIGRlc2NyaXB0aW9uIGVhY2ggZ2V0IHRoZWlyIG93biBsaW5lXG5cdCAgIHdoaWxlIHN0aWxsIGh1Z2dpbmcgdGhlaXIgY29udGVudCAtIHRoZSBoZWFkaW5nIGFuZCBiYWRnZSBhcmUgcGlsbHMsIG5vdCBiYXJzLiAqL1xuXHQuc2V0dGluZ3MtcGFuZS1oZWFkZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdFx0LyogQSBiYW5kIG9mIHRoZSBicmFuZCdzIG93biBwYWxlIG5hdnkgcmF0aGVyIHRoYW4gcGxhaW4gdGV4dCwgc28gdGhlIHNlY3Rpb25cblx0XHQgICB5b3UgYXJlIGluIHJlYWRzIGF0IGEgZ2xhbmNlIGFnYWluc3QgdGhlIHBhbGUgYmx1ZSBjYW52YXMuIFNhbWUgdGludCBhcyB0aGVcblx0XHQgICBpY29uIGNoaXBzIHRocm91Z2hvdXQgdGhlIHBhbmUsIHNvIG5vdGhpbmcgbmV3IGlzIGludHJvZHVjZWQuICovXG5cdFx0aDMge1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuXHRcdFx0bWFyZ2luOiAwIDAgMTBweDtcblx0XHRcdHBhZGRpbmc6IDdweCAxNXB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdG1heC13aWR0aDogNzJjaDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0fVxuXHR9XG5cblx0LyogV2hvIGEgc2V0dGluZyBhZmZlY3RzIGlzIHRoZSBzaW5nbGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgb24gdGhlc2Ugc2NyZWVucyAtXG5cdCAgIGNoYW5naW5nIHNvbWV0aGluZyBwcmFjdGljZS13aWRlIHRvdWNoZXMgZXZlcnkgY2xpbmljaWFuIHRoZXJlLiBBIHNvbGlkIGJhbmRcblx0ICAgYWNyb3NzIGEgdGhpcmQgb2YgdGhlIHBhbmUgLSB3aWRlIGVub3VnaCBub3QgdG8gYmUgc2tpbW1lZCBwYXN0IGFzIGEgY2FwdGlvbixcblx0ICAgbmFycm93IGVub3VnaCBub3QgdG8gc2hvdXQgb3ZlciB0aGUgc2V0dGluZ3MgdGhlbXNlbHZlcy4gKi9cblx0LnNjb3BlLWJhZGdlIHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXHRcdHdpZHRoOiAzMyU7XG5cdFx0bWluLXdpZHRoOiAzMDBweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRsaW5lLWhlaWdodDogMS4zNTtcblx0XHRwYWRkaW5nOiAxMXB4IDE2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0LyogRWFjaCBzZWN0aW9uIGlzIGNyZWF0ZWQgZnJlc2ggYnkgbmctaWYsIHNvIHRoaXMgcmVwbGF5cyBldmVyeSB0aW1lIHlvdVxuXHRcdCAgIG1vdmUgYmV0d2VlbiBzZXR0aW5ncyAtIHJlLWFubm91bmNpbmcgdGhlIHNjb3BlIHJhdGhlciB0aGFuIGxldHRpbmcgaXRcblx0XHQgICBzaXQgdGhlcmUgdW5yZWFkLiAqL1xuXHRcdGFuaW1hdGlvbjogc2V0dGluZ3Mtc2NvcGUtYmFuZC1vcGVuIDQyMG1zIGN1YmljLWJlemllcigwLjIyLCAxLCAwLjM2LCAxKSBib3RoO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0XHRvcGFjaXR5OiAwLjk7XG5cdFx0fVxuXG5cdFx0LyogWW91cnMgYWxvbmUgLSB0aGUgYnJhbmQgYmx1ZS4gKi9cblx0XHQmLnBlcnNvbmFsIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC8qIEFmZmVjdHMgb3RoZXIgcGVvcGxlLCBzbyBpdCBjYXJyaWVzIGEgY2F1dGlvbiB0b25lIHJhdGhlciB0aGFuIGEgc2Vjb25kXG5cdFx0ICAgc2hhZGUgb2YgYmx1ZS4gRGVlcCBhbWJlciBrZWVwcyB3aGl0ZSB0ZXh0IGF0IH42LjQ6MTsgYSBicmlnaHQgJHllbGxvdy1jdGFcblx0XHQgICBmaWxsIHdvdWxkIGRyb3AgaXQgdG8gMy40OjEgYW5kIGZhaWwgQUEuICovXG5cdFx0Ji5wcmFjdGljZSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFN0aWNreSBhY3Rpb24gYmFyIGF0IHRoZSBib3R0b20gb2YgYSBwYW5lLiBUaGUgY29uZmlybWF0aW9uIHNpdHMgaW1tZWRpYXRlbHlcblx0ICAgbGVmdCBvZiB0aGUgYnV0dG9uIHJhdGhlciB0aGFuIGFjcm9zcyB0aGUgYmFyLCBzbyBpdCBsYW5kcyB3aGVyZSB0aGUgZXllXG5cdCAgIGFscmVhZHkgaXMgYWZ0ZXIgY2xpY2tpbmcuICovXG5cdC5zZXR0aW5ncy1hY3Rpb24tYmFyIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMTJweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0LmFjdGlvbi1oaW50IHtcblx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdH1cblxuXHRcdC5idG4ge1xuXHRcdFx0bWF4LXdpZHRoOiAyMDBweDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHQvKiBBbiBvcHRpb24gdGhhdCBjaGFuZ2VzIHdoYXQgU2F2ZSBkb2VzLCBzbyBpdCBsaXZlcyB3aXRoIFNhdmUgcmF0aGVyIHRoYW5cblx0XHQgICB1cCBpbiBhIGNhcmQgaGVhZGVyIHdoZXJlIGl0IHJlYWQgYXMgdW5yZWxhdGVkLiAqL1xuXHRcdC5jaGlwLXNlbGVjdC5hcHBseS1hbGwge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdHBhZGRpbmc6IDZweCAxM3B4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFN1Y2Nlc3MgZ3JlZW4sIG5vdCB0aGUgbmF2eSB1c2VkIGV2ZXJ5d2hlcmUgZWxzZSwgc28gYSBzYXZlIHJlYWRzIGFzIGEgZGlzdGluY3Rcblx0ICAgZXZlbnQgcmF0aGVyIHRoYW4gbW9yZSBvZiB0aGUgc2FtZSBwYWdlLiAqL1xuXHQuc2F2ZS1mbGFzaCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDdweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRwYWRkaW5nOiA3cHggMTRweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiBjb2xvcigkZ3JlZW4gbCgtMTIlKSk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTMwO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0fVxuXG5cdFx0Ji5zYXZpbmcge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0Ji5lcnJvciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgyMTcsIDgzLCA3OSwgMC4zKTtcblx0XHR9XG5cblx0XHQvKiBQb3BzIGluLCBzbyBpdCBpcyBub3RpY2VkIGV2ZW4gd2hlbiB0aGUgd29yZGluZyBpcyB1bmNoYW5nZWQuICovXG5cdFx0Ji5uZy1lbnRlciB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjg1KTtcblx0XHR9XG5cblx0XHQmLm5nLWVudGVyLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xOHMgZWFzZSwgdHJhbnNmb3JtIDAuMjJzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcblx0XHR9XG5cblx0XHQmLm5nLWxlYXZlIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0fVxuXG5cdFx0Ji5uZy1sZWF2ZS1hY3RpdmUge1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgTGF5b3V0IGhlbHBlcnNcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuc2V0dGluZ3Mtc3RhY2sge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQuc2V0dGluZ3MtY29sdW1ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDIwcHg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG5cdFx0PiAqIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDMwMHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBSZWFkLW9ubHkgZGV0YWlsIHJvd3Ncblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuZGV0YWlsLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTZweDtcblx0XHRwYWRkaW5nOiAxM3B4IDA7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0bWluLWhlaWdodDogNTJweDtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQuZGV0YWlsLWxhYmVsIHtcblx0XHRcdGZsZXg6IDAgMCAxNTBweDtcblx0XHRcdHdpZHRoOiAxNTBweDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LmRldGFpbC12YWx1ZSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0d29yZC1icmVhazogYnJlYWstd29yZDtcblxuXHRcdFx0Ji5tdXRlZCB7XG5cdFx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5kZXRhaWwtYWN0aW9uIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIE9ubHkgdGhlIHJvdyB0aGF0IG9wZW5zIGEgY2FyZCBzaXRzIGZsdXNoIHdpdGggdGhlIGNhcmQgaGVhZGVyICovXG5cdC5jYXJkLWJvZHkgPiAuZGV0YWlsLXJvdzpmaXJzdC1jaGlsZCB7XG5cdFx0cGFkZGluZy10b3A6IDA7XG5cdH1cblxuXHQvKiBTbWFsbCBpbmxpbmUgXCJlZGl0XCIgYWZmb3JkYW5jZSAqL1xuXHQubGluay1hY3Rpb24ge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRvcGFjaXR5OiAwLjc7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQuaW5saW5lLWVkaXQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQ2hpcHMgKGZlYXR1cmVzLCByZWZlcnJhbCB0eXBlcylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuY2hpcC1saXN0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0fVxuXG5cdC5jaGlwIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHBhZGRpbmc6IDVweCAxMXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLCA1MywgMjEwLCAwLjEyKTtcblx0XHRsaW5lLWhlaWdodDogMS40O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdG9wYWNpdHk6IDAuNztcblx0XHR9XG5cblx0XHQmLmNoaXAtbXV0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0fVxuXHR9XG5cblx0LyogU2VsZWN0YWJsZSBjaGlwIC0gd3JhcHMgYSBjaGVja2JveCAqL1xuXHQuY2hpcC1zZWxlY3Qge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0cGFkZGluZzogN3B4IDE0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRtYXJnaW46IDA7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cblx0XHRpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2JkNWUwO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjM1KTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmRpc2FibGVkIHtcblx0XHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBFZGl0YWJsZSByb3cgbGlzdCAoYXBwb2ludG1lbnQgdHlwZXMsIHRhc2sgbGFiZWxzKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5yb3ctbGlzdC1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDAgMTRweCA4cHg7XG5cblx0XHRzcGFuIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGlucHV0cyBjYXJyeSB0aGVpciBvd24gYm9yZGVycywgc28gdGhlIHJvd3MgdGhlbXNlbHZlcyBzdGF5IHVuYm94ZWQgKi9cblx0LnJvdy1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDVweCAxNHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDRweDtcblxuXHRcdC8qIFNlcGFyYXRlZCBieSBhIHJ1bGUgcmF0aGVyIHRoYW4gYSBib3ggb2YgaXRzIG93biAqL1xuXHRcdCYucm93LWl0ZW0tbmV3IHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDE1cHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0fVxuXHR9XG5cblx0LyogQ29sdW1uIHdpZHRocyBzaGFyZWQgYnkgdGhlIGhlYWQgYW5kIHRoZSByb3dzICovXG5cdC5jb2wtbmFtZSB7XG5cdFx0ZmxleDogMSAxIDIwMHB4O1xuXHRcdG1pbi13aWR0aDogMTUwcHg7XG5cdH1cblxuXHQuY29sLWNvbG91ciB7XG5cdFx0ZmxleDogMCAwIDEzMHB4O1xuXHRcdHdpZHRoOiAxMzBweDtcblx0fVxuXG5cdC5jb2wtZHVyYXRpb24ge1xuXHRcdGZsZXg6IDAgMCAxMTBweDtcblx0XHR3aWR0aDogMTEwcHg7XG5cblx0XHQvKiBMZW5ndGhzIGFyZSBpbiBzdGVwcyBvZiA1IG1pbnV0ZXMgKG1pbnV0ZS1zdGVwIGRpcmVjdGl2ZSkuICovXG5cdFx0LmZvcm0tY29udHJvbC5uZy1pbnZhbGlkLW1pbnV0ZS1zdGVwIHtcblx0XHRcdGJvcmRlci1jb2xvcjogI2UwNzk2Zjtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDIyNCwgMTIxLCAxMTEsIDAuMTUpO1xuXHRcdH1cblx0fVxuXG5cdC5jb2wtdHlwZSB7XG5cdFx0ZmxleDogMCAwIDE5MHB4O1xuXHRcdHdpZHRoOiAxOTBweDtcblx0fVxuXG5cdC5jb2wtaW1hZ2luZyB7XG5cdFx0ZmxleDogMCAwIDE5MHB4O1xuXHRcdHdpZHRoOiAxOTBweDtcblxuXHRcdC8qIFRoZSBtdWx0aXNlbGVjdCByZW5kZXJzIGEgYm9vdHN0cmFwIGRyb3Bkb3duIC0gbWFrZSB0aGUgYnV0dG9uIGZpbGwgdGhlIGNlbGwgbGlrZSB0aGVcblx0XHQgICBvdGhlciBjb250cm9scyBpbiB0aGUgcm93IHJhdGhlciB0aGFuIHNpemluZyB0byBpdHMgbGFiZWwuICovXG5cdFx0LmJ0bi1kcm9wZG93bi1tdWx0aXNlbGVjdCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5kcm9wZG93bi1tZW51IHtcblx0XHRcdG1pbi13aWR0aDogMjQwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmNvbC1hZGQge1xuXHRcdGZsZXg6IDAgMCA0MHB4O1xuXHRcdHdpZHRoOiA0MHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0fVxuXG5cdC5jb2wtYWRkLXdpZGUge1xuXHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0fVxuXG5cdC8qIFRoZSBvbGQgcm91bmQgXCIrXCIgd2FzIG1pc3NlZCAtIHRoZSBhZGQgc3RlcCBub3cgYW5ub3VuY2VzIGl0c2VsZiBhbmQgaXRzXG5cdCAgIGJ1dHRvbiBzYXlzIHdoYXQgaXQgZG9lcy4gVGhlIGZvcm0gY2xlYXJzIGFmdGVyIGVhY2ggYWRkLCBzbyBhIHJ1biBvZlxuXHQgICBlbnRyaWVzIGNhbiBiZSB0eXBlZCBvbmUgYWZ0ZXIgYW5vdGhlciB3aXRob3V0IGxlYXZpbmcgdGhlIHNjcmVlbi4gKi9cblx0LmFkZC1yb3cge1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdFx0cGFkZGluZy10b3A6IDE0cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXG5cdFx0LmFkZC1yb3ctdGl0bGUge1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHBhZGRpbmc6IDAgMTRweCA4cHg7XG5cdFx0fVxuXG5cdFx0LnJvdy1pdGVtLnJvdy1pdGVtLW5ldyB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRcdGJvcmRlci10b3A6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmFkZC1yb3ctYWN0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRcdHBhZGRpbmc6IDEycHggMTRweCAwO1xuXHRcdH1cblx0fVxuXG5cdC5idG4tYWRkIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDhweCAxOHB4O1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQ2xhaW0gaXRlbXMgKHByYWN0aWNlIGl0ZW0gY29kZXMsIG5hbWVzIGFuZCBmZWVzKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cblx0LyogQ29sdW1uIHdpZHRocyBzaGFyZWQgYnkgdGhlIGhlYWQgYW5kIHRoZSByb3dzLCBhbG9uZ3NpZGUgLmNvbC1uYW1lIGFib3ZlICovXG5cdC5jb2wtY29kZSB7XG5cdFx0ZmxleDogMCAwIDE1MHB4O1xuXHRcdHdpZHRoOiAxNTBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHR9XG5cblx0LmNvbC1mZWUge1xuXHRcdGZsZXg6IDAgMCAxMjBweDtcblx0XHR3aWR0aDogMTIwcHg7XG5cdH1cblxuXHQuY29sLWF2YWlsYWJsZSB7XG5cdFx0ZmxleDogMCAwIDcwcHg7XG5cdFx0d2lkdGg6IDcwcHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdC8qIFRoZSBjb2RlIGlkZW50aWZpZXMgdGhlIGl0ZW0gYW5kIGNhbm5vdCBiZSBlZGl0ZWQgb24gYW4gZXhpc3Rpbmcgcm93LCBzbyBpdCBpcyBzZXQgYXMgYSBwbGFpblxuXHQgICB0b2tlbiByYXRoZXIgdGhhbiBhIGRpc2FibGVkIGlucHV0IC0gYSBncmV5ZWQtb3V0IGZpZWxkIGludml0ZXMgcGVvcGxlIHRvIHRyeS4gKi9cblx0LmNsYWltLWl0ZW0tY29kZSB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdHBhZGRpbmc6IDVweCAxMHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjI7XG5cdH1cblxuXHQuY2xhaW0taXRlbS10YWcge1xuXHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICM3ZDgzOTk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBUaGUgZG9sbGFyIHNpZ24gc2l0cyBpbnNpZGUgdGhlIGZpZWxkIHJhdGhlciB0aGFuIGJlc2lkZSBpdCwgc28gYSBjb2x1bW4gb2YgZmVlcyBsaW5lcyB1cCBvbiB0aGVcblx0ICAgbnVtYmVyIGluc3RlYWQgb2Ygb24gdGhlIHN5bWJvbC4gKi9cblx0LmZlZS1pbnB1dCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LmZlZS1wcmVmaXgge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMjRweDtcblx0XHR9XG5cdH1cblxuXHQvKiBSZXRpcmluZyBhbiBpdGVtIGlzIGEgcXVpZXRlciBhY3QgdGhhbiBkZWxldGluZyBvbmUsIGFuZCByZWFkcyBiZXR0ZXIgYXMgYSBzd2l0Y2ggdGhhbiBhcyBhIGJhcmVcblx0ICAgY2hlY2tib3ggaW4gYSBjb2x1bW4gb2YgaW5wdXRzLiAqL1xuXHQuY2xhaW0taXRlbS10b2dnbGUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDM4cHg7XG5cdFx0aGVpZ2h0OiAyMXB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRpbnB1dCB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0d2lkdGg6IDA7XG5cdFx0XHRoZWlnaHQ6IDA7XG5cdFx0fVxuXG5cdFx0LnN3aXRjaC10cmFjayB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRpbnNldDogMDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkOWU2O1xuXHRcdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE4cyBlYXNlO1xuXG5cdFx0XHQmOmFmdGVyIHtcblx0XHRcdFx0Y29udGVudDogXCJcIjtcblx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHR0b3A6IDNweDtcblx0XHRcdFx0bGVmdDogM3B4O1xuXHRcdFx0XHR3aWR0aDogMTVweDtcblx0XHRcdFx0aGVpZ2h0OiAxNXB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE4cyBlYXNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlucHV0OmNoZWNrZWQgKyAuc3dpdGNoLXRyYWNrIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdGlucHV0OmNoZWNrZWQgKyAuc3dpdGNoLXRyYWNrOmFmdGVyIHtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxN3B4KTtcblx0XHR9XG5cblx0XHRpbnB1dDpmb2N1cyArIC5zd2l0Y2gtdHJhY2sge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4ICRjeWFuLXRwLTI1O1xuXHRcdH1cblx0fVxuXG5cdC8qIE9ubHkgc2hvd24gb25jZSB0aGUgbGlzdCBpcyBsb25nIGVub3VnaCB0byBiZSB3b3J0aCBuYXJyb3dpbmcgKi9cblx0LmNsYWltLWl0ZW0tZmlsdGVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWF4LXdpZHRoOiAzMjBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXG5cdFx0aSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAxMnB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAzMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBzZWFyY2ggc2l0cyBpbiB0aGUgYWRkIHJvdyBhcyBpdHMgZmlyc3QgY29udHJvbCwgc28gZmluZGluZyBhIHN0YW5kYXJkIGl0ZW0gYW5kIHR5cGluZyBvbmUgb2Zcblx0ICAgeW91ciBvd24gYXJlIHRoZSBzYW1lIGdlc3R1cmUgaW4gdGhlIHNhbWUgcGxhY2UgcmF0aGVyIHRoYW4gdHdvIHN0YWNrZWQgZm9ybXMuICovXG5cdC5jb2wtcGlja2VyIHtcblx0XHRmbGV4OiAxIDEgMjQwcHg7XG5cdFx0bWluLXdpZHRoOiAyMDBweDtcblxuXHRcdC51aS1zZWxlY3QtY29udGFpbmVyIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgb25seSByb3cgdGhhdCB3cmFwczogZml2ZSBjb250cm9scyBkbyBub3QgYWx3YXlzIGZpdCBhIG5hcnJvdyBwYW5lLCBhbmQgYSBzcXVlZXplZCBmZWUgZmllbGRcblx0ICAgaXMgd29yc2UgdGhhbiBhIHNlY29uZCBsaW5lLiAqL1xuXHQuY2xhaW0taXRlbS1hZGQge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRyb3ctZ2FwOiAxMHB4O1xuXHR9XG5cblx0LyogUmV0aXJlZCBpdGVtcyBzdGF5IG9uIHRoZSBsaXN0IC0gdGhleSBhcmUgc3RpbGwgdGhlIHByYWN0aWNlJ3MsIGp1c3Qgbm90IG9mZmVyZWQgLSBzbyB0aGV5IGFyZVxuXHQgICBkaW1tZWQgcmF0aGVyIHRoYW4gaGlkZGVuLCBhbmQgcmVhZCBhcyBzd2l0Y2hlZCBvZmYgYXQgYSBnbGFuY2UuICovXG5cdC5jbGFpbS1pdGVtLXJvdy5yZXRpcmVkIHtcblx0XHQuY2xhaW0taXRlbS1jb2RlLFxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0b3BhY2l0eTogMC41NTtcblx0XHR9XG5cdH1cblxuXHQvKiBSZXF1aXJlZCBhbmQgZW1wdHkgc2F5cyBpdHNlbGYsIHNvIG5vdGhpbmcgaGFzIHRvIHNheSBpdCBpbiBhIHNlbnRlbmNlIHVuZGVybmVhdGggLSBpbmNsdWRpbmcgb25cblx0ICAgYXJyaXZhbCwgd2hpY2ggaXMgaG93IGEgcm93IHNhdmVkIGJlZm9yZSBhIGZlZSB3YXMgcmVxdWlyZWQgZXhwbGFpbnMgaXRzIG93biBkaXNhYmxlZCBTYXZlLlxuXHQgICBTY29wZWQgdG8gdGhlIHNhdmVkIHJvd3M6IHRoZSBhZGQgcm93J3MgZmllbGRzIGNhcnJ5IG5vIGByZXF1aXJlZGAsIHNvIGFuIGVtcHR5IG9uZSBpdCBpcyBub3QgeWV0XG5cdCAgIHRpbWUgdG8gZmlsbCBpbiBpcyBuZXZlciBtYXJrZWQgd3JvbmcuICovXG5cdC5jbGFpbS1pdGVtLXJvdyAuZm9ybS1jb250cm9sLm5nLWludmFsaWQge1xuXHRcdGJvcmRlci1jb2xvcjogI2UwNzk2Zjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyMjQsIDEyMSwgMTExLCAwLjE1KTtcblx0fVxuXG5cdC8qIE5vIGRlc2NyaXB0aW9uIHVuZGVyIHRoZSBoZWFkaW5nLCBzbyB0aGUgYmxvY2sgZG9lcyBub3QgbmVlZCB0aGUgcm9vbSBmb3Igb25lLiAqL1xuXHQuY2xhaW0taXRlbS1lbXB0eSB7XG5cdFx0cGFkZGluZzogMzRweCAzMnB4O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUHJhY3RpY2UgbGVhdmUgKHJlY3VycmluZyBicmVha3MsIGNsb3N1cmVzIGFuZCBob2xpZGF5cylcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuY2FyZC1oZWFkZXItc3ViIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHR9XG5cblx0LyogQ29sdW1uIHdpZHRocyBzaGFyZWQgYnkgdGhlIGhlYWQgYW5kIHRoZSByb3dzLCBhbG9uZ3NpZGUgLmNvbC1uYW1lIGFib3ZlICovXG5cdC5jb2wtZGF5cyB7XG5cdFx0ZmxleDogMCAwIDMzMHB4O1xuXHRcdHdpZHRoOiAzMzBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNXB4O1xuXHR9XG5cblx0LmNvbC10aW1lIHtcblx0XHRmbGV4OiAwIDAgMTEwcHg7XG5cdFx0d2lkdGg6IDExMHB4O1xuXHR9XG5cblx0LmNvbC1kYXRlIHtcblx0XHRmbGV4OiAwIDAgMTUwcHg7XG5cdFx0d2lkdGg6IDE1MHB4O1xuXHR9XG5cblx0LmNvbC1hbGwtZGF5IHtcblx0XHRmbGV4OiAwIDAgNjRweDtcblx0XHR3aWR0aDogNjRweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LyogQSBkYXkgb2YgdGhlIHdlZWsgcmVhZHMgYXMgYSBwaWxsIHlvdSBzd2l0Y2ggb24sIHRoZSBzYW1lIHBhbGUgbmF2eSBhcyAuY2hpcC1zZWxlY3Quc2VsZWN0ZWQuICovXG5cdC5kYXktcGlsbCB7XG5cdFx0ZmxleDogMCAwIDQycHg7XG5cdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICNjYmQ1ZTA7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMzUpO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cdH1cblxuXHQucHJhY3RpY2UtbGVhdmUtcm93IHtcblx0XHQuY29sLW5hbWUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDhweDtcblx0XHR9XG5cblx0XHQvKiBGaW5pc2hlZCBjbG9zdXJlcyBhcmUga2VwdCBmb3IgcmVmZXJlbmNlLCBzbyB0aGV5IGFyZSBkaW1tZWQgcmF0aGVyIHRoYW4gaGlkZGVuLiAqL1xuXHRcdCYucGFzdCB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdH1cblxuXHRcdC5wYXN0LXRhZyB7XG5cdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMWY3O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRcdHBhZGRpbmc6IDJweCA3cHg7XG5cdFx0fVxuXHR9XG5cblx0LnByYWN0aWNlLWxlYXZlIC5mb3JtLWNvbnRyb2wucmFuZ2UtaW52YWxpZCxcblx0LnByYWN0aWNlLWxlYXZlLXJvdyAuZm9ybS1jb250cm9sLm5nLWludmFsaWQ6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRib3JkZXItY29sb3I6ICNlMDc5NmY7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjI0LCAxMjEsIDExMSwgMC4xNSk7XG5cdH1cblxuXHQvKiBTZXZlbiBkYXkgcGlsbHMgYW5kIHR3byB0aW1lcyBkbyBub3QgYWx3YXlzIGZpdCBhIG5hcnJvdyBwYW5lLiAqL1xuXHQucHJhY3RpY2UtbGVhdmUtYWRkLFxuXHQucHJhY3RpY2UtbGVhdmUtcm93IHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0cm93LWdhcDogMTBweDtcblx0fVxuXG5cdC8qIFB1YmxpYyBob2xpZGF5cyBhcmUgc2V0IGJ5IENhdFRyYXgsIHNvIHRoZXkgcmVhZCBhcyBhIGxpc3Qgd2l0aCBvbmUgc3dpdGNoIHJhdGhlciB0aGFuIGFzIGVkaXRhYmxlIHJvd3MuICovXG5cdC5wdWJsaWMtaG9saWRheS1yb3cge1xuXHRcdC5ob2xpZGF5LW5hbWUge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXG5cdFx0LmhvbGlkYXktdGFnIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiA4cHg7XG5cdFx0XHRmb250LXNpemU6IDlweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJHRlYWwgdGludCg5MCUpKTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdFx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogM3B4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5ob2xpZGF5LWRhdGUge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0fVxuXG5cdFx0LyogT3BlbiBvbiB0aGUgaG9saWRheTogdGhlIHN3aXRjaCBzYXlzIHNvLCBhbmQgdGhlIHJvdyBzdGVwcyBiYWNrLiAqL1xuXHRcdCYub3BlbiB7XG5cdFx0XHQuaG9saWRheS1uYW1lLFxuXHRcdFx0LmhvbGlkYXktZGF0ZSB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNTU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmNvbC1ob2xpZGF5LW5vdGUge1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblx0fVxuXG5cdC5wdWJsaWMtaG9saWRheXMtaGVscCB7XG5cdFx0bWFyZ2luOiA2cHggMTRweCAwO1xuXHR9XG5cblx0LnByYWN0aWNlLWxlYXZlLXN1YmhlYWQge1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdFx0cGFkZGluZzogMTRweCAxNHB4IDhweDtcblx0XHRib3JkZXItdG9wOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDdlbTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQucHJhY3RpY2UtbGVhdmUtZW1wdHkge1xuXHRcdHBhZGRpbmc6IDI2cHggMzJweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMjZweDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDhweDtcblx0XHR9XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFJvb21zICh0aGUgcHJhY3RpY2UncyBwaHlzaWNhbCByb29tcyBhcHBvaW50bWVudHMgYXJlIGJvb2tlZCBpbnRvKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cblx0LyogQ29sdW1uIHdpZHRoIHNoYXJlZCBieSB0aGUgaGVhZCBhbmQgdGhlIHJvd3MsIGFsb25nc2lkZSAuY29sLW5hbWUsIC5jb2wtY29sb3VyIGFuZCAuY29sLWF2YWlsYWJsZSAqL1xuXHQuY29sLWRlc2NyaXB0aW9uIHtcblx0XHRmbGV4OiAxIDEgMjIwcHg7XG5cdFx0bWluLXdpZHRoOiAxNjBweDtcblx0fVxuXG5cdC8qIEFyY2hpdmVkIHJvb21zIHN0YXkgb24gdGhlIGxpc3QgLSBhcHBvaW50bWVudHMgdGhhdCB1c2VkIHRoZW0gc3RpbGwgc2hvdyB0aGVtIC0gc28gdGhleSBhcmUgZGltbWVkXG5cdCAgIHJhdGhlciB0aGFuIGhpZGRlbiwgdGhlIHNhbWUgYXMgYSByZXRpcmVkIGNsYWltIGl0ZW0uICovXG5cdC5yb29tLXJvdy5yZXRpcmVkIHtcblx0XHQuZm9ybS1jb250cm9sLFxuXHRcdC5jb2xvci1waWNrZXItd3JhcHBlciB7XG5cdFx0XHRvcGFjaXR5OiAwLjU1O1xuXHRcdH1cblx0fVxuXG5cdC5yb29tLXJvdyAuZm9ybS1jb250cm9sLm5nLWludmFsaWQge1xuXHRcdGJvcmRlci1jb2xvcjogI2UwNzk2Zjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyMjQsIDEyMSwgMTExLCAwLjE1KTtcblx0fVxuXG5cdC5yb29tLWVtcHR5IHtcblx0XHRwYWRkaW5nOiAzNHB4IDMycHg7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LyogYW5ndWxhcmpzLWNvbG9yLXBpY2tlciByZW5kZXJzIGEgYm9vdHN0cmFwIGlucHV0IGdyb3VwIC0ga2VlcCB0aGUgam9pbnQgdGlkeSAqL1xuXHQuY29sLWNvbG91ciB7XG5cdFx0LmNvbG9yLXBpY2tlci13cmFwcGVyLFxuXHRcdC5jb2xvci1waWNrZXItaW5wdXQtd3JhcHBlciB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cblx0XHQuaW5wdXQtZ3JvdXAgLmlucHV0LWdyb3VwLWFkZG9uOmZpcnN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtIDAgMCAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdC5pbnB1dC1ncm91cCAuY29sb3ItcGlja2VyLWlucHV0IHtcblx0XHRcdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG5cdFx0XHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sYWJlbC1zd2F0Y2gge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogMzBweDtcblx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5idG4tYWRkLXJvdW5kIHtcblx0XHR3aWR0aDogMzRweDtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0bWluLXdpZHRoOiAzNHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRsaW5lLWhlaWdodDogMTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcblxuXHRcdCY6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGRhcmtOYXZ5O1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjA2KTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNkM2Q5ZTY7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBGb3JtIGNvbnRyb2xzXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmNvbnRyb2wtbGFiZWwsXG5cdGxhYmVsLmZpZWxkLWxhYmVsIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdH1cblxuXHQuZm9ybS1jb250cm9sLFxuXHRzZWxlY3QuZm9ybS1jb250cm9sIHtcblx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0fVxuXG5cdFx0JltyZWFkb25seV0sXG5cdFx0JjpkaXNhYmxlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0Y29sb3I6ICM4YTkwYTM7XG5cdFx0fVxuXHR9XG5cblx0dGV4dGFyZWEuZm9ybS1jb250cm9sIHtcblx0XHRtaW4taGVpZ2h0OiAxMjBweDtcblx0XHRyZXNpemU6IHZlcnRpY2FsO1xuXHR9XG5cblx0LmVycm9yLW1lc3NhZ2Uge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0fVxuXG5cdC5maWVsZC1oZWxwIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0bWFyZ2luLXRvcDogNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHR9XG5cblx0LmZpZWxkLWdyaWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTZweDtcblxuXHRcdC5maWVsZCB7XG5cdFx0XHRmbGV4OiAxIDEgMjAwcHg7XG5cdFx0XHRtaW4td2lkdGg6IDE2MHB4O1xuXHRcdH1cblxuXHRcdC5maWVsZC1zbSB7XG5cdFx0XHRmbGV4OiAwIDAgMTQwcHg7XG5cdFx0XHR3aWR0aDogMTQwcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBudW1iZXIgc2V0IGluc2lkZSBpdHMgb3duIHNlbnRlbmNlLCByYXRoZXIgdGhhbiBzdHJhbmRlZCBhdCB0aGUgZmFyIHJpZ2h0ICovXG5cdC5pbmxpbmUtc2VudGVuY2Uge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA3cHg7XG5cdFx0bWFyZ2luLXRvcDogN3B4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogIzU1NTtcblxuXHRcdGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xuXHRcdFx0d2lkdGg6IDYycHg7XG5cdFx0XHRwYWRkaW5nOiA1cHggOHB4O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgTm90aWNlcyAmIGVtcHR5IHN0YXRlc1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1ub3RpY2Uge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMThweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblxuXHRcdCYuaW5mbyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji53YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTY7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAxNzEsIDAsIDAuMyk7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRjb2xvcjogJHllbGxvdy1jdGE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLWVtcHR5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuXHRcdHBhZGRpbmc6IDU0cHggMzJweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMzRweDtcblx0XHRcdGNvbG9yOiAjZDNkOWU2O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0XHR9XG5cblx0XHRoNCB7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdFx0bWFyZ2luOiAwIDAgOHB4O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRcdG1heC13aWR0aDogNTJjaDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBFeHBhbmRhYmxlIGJsb2NrcyAocmVtaW5kZXIgbWVzc2FnZSBjb21wb3NlcnMpXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmV4cGFuZGVyIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdC5leHBhbmRlci1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMThweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHRcdH1cblxuXHRcdC5leHBhbmRlci1pY29uIHtcblx0XHRcdHdpZHRoOiAzNHB4O1xuXHRcdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC5leHBhbmRlci10aXRsZSB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0XHRzdHJvbmcge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0fVxuXG5cdFx0XHRzbWFsbCB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmV4cGFuZGVyLWNoZXZyb24ge1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0LmV4cGFuZGVyLWJvZHkge1xuXHRcdHBhZGRpbmc6IDRweCAxOHB4IDE4cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWYxZjc7XG5cdH1cblxuXHQuZXhwYW5kZXIuaXMtb3BlbiAuZXhwYW5kZXItaGVhZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZiZmNmZjtcblx0fVxuXG5cdC8qIE1lcmdlLWZpZWxkIHRva2VucyAqL1xuXHQubWVyZ2UtZmllbGQtZ3JvdXBzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweCAyOHB4O1xuXHRcdG1hcmdpbjogMTBweCAwIDE0cHg7XG5cdH1cblxuXHQubWVyZ2UtZmllbGQtZ3JvdXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5tZXJnZS1maWVsZHMge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5tZXJnZS1maWVsZC1ncm91cC1sYWJlbCB7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQubWVyZ2UtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW46IDEwcHggMCAxNHB4O1xuXHR9XG5cblx0Lm1lcmdlLWZpZWxkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHRcdHBhZGRpbmc6IDVweCAxMnB4O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQvKiBUaGUgc2hhcmVkIFtkcmFnZ2FibGVdIHJ1bGUgcGFpbnRzIGEgYmxhY2sgYm9yZGVyIGFuZCBhIG1vdmUgY3Vyc29yIG92ZXIgYW55dGhpbmdcblx0XHQgICBkcmFnZ2FibGUgLSB0aGUgY2hpcHMga2VlcCB0aGVpciBvd24gcGlsbCBzdHlsaW5nIGFuZCBhIGdyYWIgY3Vyc29yIGluc3RlYWQuICovXG5cdFx0JltkcmFnZ2FibGVdIHtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRcdGN1cnNvcjogZ3JhYjtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmUge1xuXHRcdFx0Y3Vyc29yOiBncmFiYmluZztcblx0XHR9XG5cblx0XHQubWVyZ2UtZmllbGQtbmFtZSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cblx0XHQvKiBXaGF0IHRoZSBmaWVsZCB0dXJucyBpbnRvLiBSZWd1bGFyIHdlaWdodCBhbmQgdGFidWxhciBmaWd1cmVzIHNvIGl0IHJlYWRzIGFzIGEgdmFsdWVcblx0XHQgICByYXRoZXIgdGhhbiBhcyBtb3JlIGxhYmVsLiAqL1xuXHRcdC5tZXJnZS1maWVsZC1leGFtcGxlIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogMXB4O1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHRcdG9wYWNpdHk6IDAuNztcblx0XHR9XG5cdH1cblxuXHQubWVyZ2UtZmllbGQtbm90ZSB7XG5cdFx0bWF4LXdpZHRoOiAzNDBweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiBEcm9wIHRhcmdldHMuIFRoZSBzaGFyZWQgbHZsIHN0eWxlcyBncmV5IHRoZSB3aG9sZSBlZGl0b3Igb3V0IG1pZC1kcmFnIGFuZCBkYXNoIGEgYmxhY2tcblx0ICAgYm9yZGVyIGFyb3VuZCB3aGljaGV2ZXIgbm9kZSB0aGUgcG9pbnRlciBpcyBvdmVyOyBvdXRsaW5lIHRoZSBjb21wb3NlciBpbnN0ZWFkIHNvIHRoZVxuXHQgICB3b3JkaW5nIHN0YXlzIHJlYWRhYmxlIHdoaWxlIGEgZmllbGQgaXMgYmVpbmcgZHJhZ2dlZCBpbnRvIGl0LiAqL1xuXHQudGV4dC1hcmVhLXdyYXAubHZsLXRhcmdldCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0b3BhY2l0eTogMTtcblx0XHRvdXRsaW5lOiAycHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHRvdXRsaW5lLW9mZnNldDogM3B4O1xuXHR9XG5cblx0LnRleHQtYXJlYS13cmFwLmx2bC1vdmVyLFxuXHQudGV4dC1hcmVhLXdyYXAgLmx2bC1vdmVyIHtcblx0XHRib3JkZXI6IDAgIWltcG9ydGFudDtcblx0fVxuXG5cdC50ZXh0LWFyZWEtd3JhcC5sdmwtb3ZlciB7XG5cdFx0b3V0bGluZTogMnB4IGRhc2hlZCAkbmF2eTtcblx0fVxuXG5cdC8qIEF0dGFjaG1lbnRzICovXG5cdC5hdHRhY2htZW50LXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMHB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cblx0XHQuYXR0YWNobWVudC1pY29uIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHR9XG5cblx0XHQuYXR0YWNobWVudC1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LmF0dGFjaG1lbnQtc2l6ZSB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdH1cblxuXHRcdC5hdHRhY2htZW50LWFjdGlvbnMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGdhcDogMTBweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHR3aWR0aDogMTVweDtcblx0XHRcdFx0aGVpZ2h0OiAxNXB4O1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNjU7XG5cdFx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuXHRcdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmZpbGUtZHJvcCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRwYWRkaW5nOiAxNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZjZmY7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXG5cdFx0aW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIENoYXJhY3RlciBjb3VudGVyICovXG5cdC5zbXMtY291bnRlciB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Ji5vdmVyIHN0cm9uZyB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBVc2FnZSBjaGFydCBjYXJkXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmNoYXJ0LWNhcmQge1xuXHRcdC5jaGFydC10b29sYmFyIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0XHRnYXA6IDE2cHg7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXHRcdH1cblxuXHRcdG52ZDMge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBJbnZvaWNpbmcgZGVmYXVsdHMgKHByYWN0aWNlIGRldGFpbHMpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZ3Mtc2hlbGwgLmJpbGxpbmctZGVmYXVsdHMge1xuXHQuZmllbGQtaGVscCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5zZXR0aW5ncy1ub3RpY2Uge1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHR9XG5cblx0LmJpbGxpbmctZGVmYXVsdHMtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDE0cHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHR9XG5cblx0LmJpbGxpbmctZGVmYXVsdHMtZmllbGQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHR9XG5cblx0LmJpbGxpbmctZGVmYXVsdHMtbGFiZWwge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LmJpbGxpbmctZGVmYXVsdHMtbWluaSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0aGVpZ2h0OiAyOHB4O1xuXHRcdHBhZGRpbmc6IDAgMTBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQuYmlsbGluZy1kZWZhdWx0cy1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmVzcG9uc2l2ZVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG5cdC5zZXR0aW5ncy1zaGVsbCB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuXHRcdC5zZXR0aW5ncy1uYXYge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdG92ZXJmbG93LXg6IGF1dG87XG5cdFx0XHRvdmVyZmxvdy15OiBoaWRkZW47XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLWlkZW50aXR5LFxuXHRcdC5zZXR0aW5ncy1uYXYtZm9vdGVyIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLW5hdi1ncm91cCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0cGFkZGluZzogMTBweDtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXG5cdFx0XHQuc2V0dGluZ3MtbmF2LWdyb3VwLXRpdGxlIHtcblx0XHRcdFx0cGFkZGluZzogMCA2cHggMCAwO1xuXHRcdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5zZXR0aW5ncy1uYXYtaXRlbSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdHBhZGRpbmc6IDE4cHggMTZweDtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtYWN0aW9uLWJhciB7XG5cdFx0XHRwYWRkaW5nOiAxMnB4IDE2cHg7XG5cdFx0fVxuXG5cdFx0LmRldGFpbC1yb3cge1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiA2cHg7XG5cblx0XHRcdC5kZXRhaWwtbGFiZWwge1xuXHRcdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucm93LWl0ZW0ge1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdH1cblxuXHRcdC5jb2wtdHlwZSxcblx0XHQuY29sLWNvbG91cixcblx0XHQuY29sLWR1cmF0aW9uIHtcblx0XHRcdGZsZXg6IDEgMSAxNDBweDtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFByYWN0aWNlIGxlYXZlIC0gYXBwb2ludG1lbnRzIGFscmVhZHkgaW5zaWRlIG5ldyBsZWF2ZVxuLyogVGhlIG1vZGFsIGlzIGFwcGVuZGVkIHRvIHRoZSBib2R5LCBvdXRzaWRlIC5zZXR0aW5ncy1zaGVsbC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wcmFjdGljZS1sZWF2ZS1hZmZlY3RlZC1tb2RhbCB7XG5cdC5hZmZlY3RlZC1sZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTRweDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAycHggMCA0cHg7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICM2YjcyODA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHR9XG5cdH1cblxuXHQuYWZmZWN0ZWQtaWNvbiB7XG5cdFx0ZmxleDogMCAwIDQwcHg7XG5cdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY4ZTY7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblx0fVxuXG5cdC5hZmZlY3RlZC1saXN0IHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0bWF4LWhlaWdodDogMzAwcHg7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0fVxuXG5cdC5hZmZlY3RlZC1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5hZmZlY3RlZC13aGVuIHtcblx0XHRmbGV4OiAwIDAgMTUwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdH1cblxuXHQuYWZmZWN0ZWQtd2hvIHtcblx0XHRmbGV4OiAxO1xuXHRcdGNvbG9yOiAjNGE1NTY4O1xuXHR9XG5cblx0LmFmZmVjdGVkLXR5cGUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdH1cblxuXHQuYWZmZWN0ZWQtc3dhdGNoIHtcblx0XHR3aWR0aDogOXB4O1xuXHRcdGhlaWdodDogOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cbn1cblxuLyogQW55b25lIHdobyBoYXMgYXNrZWQgZm9yIGxlc3MgbW90aW9uIGdldHMgdGhlIGJhbmQgd2l0aG91dCB0aGUgd2lwZS4gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdC5zZXR0aW5ncy1zaGVsbCAuc2NvcGUtYmFkZ2UsXG5cdC5zZXR0aW5ncy1zaGVsbCAubmF2LWdyb3VwLWl0ZW1zIHtcblx0XHRhbmltYXRpb246IG5vbmU7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTdGFmZiBhbmQgcGVybWlzc2lvbnNcbi8qIEEgcHJhY3RpY2UncyBTdGFmZiBhbmQgUm9sZSBwZXJtaXNzaW9ucyBzZWN0aW9ucyBpbiB0aGUgU2V0dGluZ3MgZGlhbG9nLFxuLyogYW5kIHRoZSBDYXRUcmF4IGFkbWluIHNjcmVlbnMsIHJldXNlIHRoZSBTZXR0aW5ncyBkaWFsb2cncyBsYXlvdXQgYW5kXG4vKiBjbGFzc2VzIChfc2V0dGluZ3MuY3NzKS4gT25seSB3aGF0IHRob3NlIHNjcmVlbnMgZG9uJ3QgYWxyZWFkeSBoYXZlIGlzIGhlcmUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRoZSBTZXR0aW5ncyBzaGVsbCBub3JtYWxseSBmaWxscyBhIGRpYWxvZy4gT24gYSBDYXRUcmF4IGFkbWluIHBhZ2UgaXQgbmVlZHMgYVxuICAgaGVpZ2h0IG9mIGl0cyBvd24sIHNvIHRoZSByYWlsIGFuZCB0aGUgcGFuZSBjYW4gZWFjaCBzY3JvbGwuIC52aWV3LXdyYXAgcGFkcyB0aGVcbiAgIHNpZGVzIGFuZCBib3R0b20gYnkgMjVweCBidXQgbm90IHRoZSB0b3AsIHNvIHRoZSB0b3AgbWFyZ2luIGV2ZW5zIGl0IHVwLiAqL1xuLnNldHRpbmdzLXBhZ2Uge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAyMDBweCk7XG5cdG1pbi1oZWlnaHQ6IDU2MHB4O1xuXHRtYXJnaW4tdG9wOiAyNXB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIFRoZSBwZXJtaXNzaW9ucyBhdWRpdCBsb2c6IHRoZSBTZXR0aW5ncyBkaWFsb2cncyBsYXlvdXQsIGZpbGxpbmcgdGhlIHdob2xlIHNjcmVlbiwgc2luY2UgaXRzIHRhYmxlIGFuZFxuICAgcGVvcGxlIG5lZWQgdGhlIHdpZHRoLiAqL1xubWQtZGlhbG9nLnBlcm1pc3Npb24tYXVkaXQtZGlhbG9nIHtcblx0d2lkdGg6IDEwMHZ3O1xuXHRtaW4td2lkdGg6IDEwMHZ3O1xuXHRtYXgtd2lkdGg6IDEwMHZ3O1xuXHRoZWlnaHQ6IDEwMHZoO1xuXHRtYXgtaGVpZ2h0OiAxMDB2aDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcblx0Ym9yZGVyLXJhZGl1czogMDtcblxuXHQvKiBUaGUgY29uc29sZSBpcyB0aGUgZGlhbG9nJ3Mgb25seSBjb250ZW50LCBzbyBpdCB0YWtlcyB0aGUgd2hvbGUgaGVpZ2h0LCBhcyBhIFNldHRpbmdzIHNlY3Rpb24gZG9lcy4gKi9cblx0cGVybWlzc2lvbi1yZWZ1c2Fscy1hZG1pbi1jb25zb2xlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0fVxufVxuXG4vKiBUaGUgU2V0dGluZ3MgZGlhbG9nIGNhcHMgZWFjaCByYWlsIGdyb3VwIGF0IDMyMHB4IHNvIGl0IGNhbiBhbmltYXRlIGZvbGRpbmcuIFRoZXNlXG4gICBsaXN0cyBuZXZlciBmb2xkLCBhbmQgZXZlcnkgcm9sZSBhbmQgc3RhZmYgbWVtYmVyIG11c3Qgc3RheSByZWFjaGFibGUsIHNvIHRoZSBjYXBcbiAgIGlzIGxpZnRlZCBhbmQgdGhlIHJhaWwgc2Nyb2xscyBpbnN0ZWFkLiAqL1xuLnNldHRpbmdzLXBhZ2UgLnNldHRpbmdzLXNoZWxsIC5zZXR0aW5ncy1uYXYtZ3JvdXAgLm5hdi1ncm91cC1pdGVtcyxcbi5wZXJtaXNzaW9uLWF1ZGl0LWRpYWxvZyAuc2V0dGluZ3Mtc2hlbGwgLnNldHRpbmdzLW5hdi1ncm91cCAubmF2LWdyb3VwLWl0ZW1zIHtcblx0bWF4LWhlaWdodDogbm9uZTtcbn1cblxuLnNldHRpbmdzLXNoZWxsIHtcblx0LyogVGhlIHN0YWZmIGxpc3QsIGEgcGVyc29uIGFuZCB0aGUgcm9sZSBzY3JlZW4gZWFjaCBmaWxsIHRoZSBwYW5lIGxpa2UgYSB3aG9sZSBzZWN0aW9uLCBzbyB0aGVcblx0ICAgYm9keSBzY3JvbGxzIGFuZCB0aGUgYWN0aW9uIGJhciBzdGF5cyBhdCB0aGUgYm90dG9tLiAqL1xuXHQuc3RhZmYtc2VjdGlvbiB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0fVxuXG5cdC5zdGFmZi10YWJsZSB7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0dGgge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRib3JkZXItdG9wOiBub25lO1xuXHRcdH1cblxuXHRcdHRkIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0fVxuXG5cdFx0dGJvZHkgdHIge1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHQmOmhvdmVyIHRkIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc3RhZmYtbmFtZSB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblxuXHRcdC5zdGFmZi1vcGVuIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LnN0YWZmLW5vdGUge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiBCYWNrIGZyb20gb25lIHBlcnNvbiB0byB0aGUgd2hvbGUgbGlzdC4gKi9cblx0LnN0YWZmLWJhY2sge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0b3BhY2l0eTogMC43NTtcblx0XHR9XG5cdH1cblxuXHQvKiBPbmUgY2hpcCBwZXIgcm9sZSwgdG8gcGljayB0aGUgcm9sZSB0byBlZGl0LiAqL1xuXHQucm9sZS1waWNrZXIge1xuXHRcdG1hcmdpbjogNHB4IDAgMTRweDtcblxuXHRcdC8qIC5jaGlwLXNlbGVjdCBpcyB3cml0dGVuIGZvciBhIDxsYWJlbD47IGFzIGEgPGJ1dHRvbj4gaXQgbmVlZHMgdGhlIGZvbnQgYmFjayAqL1xuXHRcdGJ1dHRvbi5jaGlwLXNlbGVjdCB7XG5cdFx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHR9XG5cdH1cblxuXHQucGVybWlzc2lvbi1jaGVja2xpc3QtYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cblxuXHQvKiBUaGUgd2hvbGUgdGl0bGUgaXMgdGhlIGZvbGQgYnV0dG9uLCB3aXRoIHRoZSBzYW1lIGNoZXZyb24gYXMgdGhlIFNldHRpbmdzIHJhaWwuICovXG5cdC5wZXJtaXNzaW9uLWdyb3VwLXRvZ2dsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0Jjpob3ZlciBoNCB7XG5cdFx0XHRvcGFjaXR5OiAwLjc1O1xuXHRcdH1cblx0fVxuXG5cdC5wZXJtaXNzaW9uLWdyb3VwLWNoZXZyb24ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcblx0fVxuXG5cdC8qIEZvbGRlZCwgYSBncm91cCBpcyBqdXN0IGl0cyBoZWFkZXIgcm93LiAqL1xuXHQucGVybWlzc2lvbi1ncm91cC5jb2xsYXBzZWQge1xuXHRcdHBhZGRpbmctdG9wOiAxNnB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAxNnB4O1xuXG5cdFx0LmNhcmQtaGVhZGVyLWZsZXgge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQucGVybWlzc2lvbi1ncm91cC1jaGV2cm9uIHtcblx0XHRcdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG5cdFx0fVxuXHR9XG5cblx0LnBlcm1pc3Npb24tZ3JvdXAtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0fVxuXG5cdC5wZXJtaXNzaW9uLWNhcmQtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdH1cblxuXHQucGVybWlzc2lvbi1yb3cge1xuXHRcdG1pbi1oZWlnaHQ6IDQ4cHg7XG5cdFx0cGFkZGluZzogMTBweCAwO1xuXG5cdFx0LmNoaXAtbGlzdCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0fVxuXHR9XG5cblx0LnBlcm1pc3Npb24tY29kZSxcblx0LnBlcm1pc3Npb24tcmVhc29uIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGVybWlzc2lvbi1jb2RlIHtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcblx0fVxuXG5cdC5wZXJtaXNzaW9uLXJlYXNvbiB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0fVxuXG5cdC8qIFRoZSBwcmFjdGljZSBkb2Vzbid0IHBheSBmb3IgaXQgLSB0aGUgc2FtZSBjYXV0aW9uIHRvbmUgYXMgdGhlIHByYWN0aWNlIHNjb3BlIGJhZGdlLiAqL1xuXHQuY2hpcC5jaGlwLXdhcm5pbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3YXJuaW5nLWJnO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGJvcmRlci1jb2xvcjogJHdhcm5pbmctYm9yZGVyO1xuXHR9XG5cblx0LyogRGlmZmVycyBmcm9tIHRoZSBzdGFydGluZyBwb2ludCAtIHNvbGlkLCBzbyBhIGNoYW5nZSBzdGFuZHMgb3V0IGluIGEgbG9uZyBsaXN0LiAqL1xuXHQuY2hpcC5jaGlwLWNoYW5nZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC8qIFdoYXQgc2F2aW5nIGEgcGVyc29uJ3MgdGlja2VkIHJvbGVzIHdvdWxkIGFkZCBvciB0YWtlIGF3YXksIHNob3duIGJlZm9yZSB0aGV5IGFyZSBzYXZlZC4gKi9cblx0LnJvbGUtY2hhbmdlLXByZXZpZXcge1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cdFx0cGFkZGluZzogMTRweCAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cblx0XHQucm9sZS1jaGFuZ2UtdGl0bGUge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC5kZXRhaWwtcm93IHtcblx0XHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdH1cblxuXHRcdC5jaGlwLWxpc3Qge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQuY2hpcCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBzYW1lIHN1bW1hcnkgZm9yIGEgcm9sZSdzIHVuc2F2ZWQgY2hhbmdlcyBzaXRzIG9uIHRoZSBwYWxlIHBhbmUsIHNvIGl0IGlzIGEgd2hpdGUgY2FyZC4gKi9cblx0XHQmLnJvbGUtc2F2ZS1zdW1tYXJ5IHtcblx0XHRcdG1hcmdpbjogMCAwIDIwcHg7XG5cdFx0XHRwYWRkaW5nOiAxOHB4IDI1cHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LyogU2FtZSBncmVlbnMgYXMgdGhlIHNhdmUgY29uZmlybWF0aW9uLiAqL1xuXHQuY2hpcC5jaGlwLWdhaW5lZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiBjb2xvcigkZ3JlZW4gbCgtMTIlKSk7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdH1cblxuXHQuY2hpcC5jaGlwLWxvc3Qge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuXHR9XG5cblx0LyogQSBmaXhlZCBsYXlvdXQga2VlcHMgdGhlIHRhYmxlIGluc2lkZSBpdHMgY2FyZC4gUmVxdWVzdCBwYXRocyBhbmQgcGVybWlzc2lvbiBjb2RlcyBoYXZlIG5vXG5cdCAgIHNwYWNlcywgc28gd2l0aCBhbiBhdXRvbWF0aWMgbGF5b3V0IHRoZXkgc2V0IHRoZSB0YWJsZSdzIHdpZHRoIGFuZCB0aGUgcGFuZSBzY3JvbGxzIHNpZGV3YXlzLiAqL1xuXHQucmVmdXNhbC10YWJsZSB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHRhYmxlLWxheW91dDogZml4ZWQ7XG5cblx0XHR0aCB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGJvcmRlci10b3A6IG5vbmU7XG5cdFx0fVxuXG5cdFx0dGQge1xuXHRcdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXHRcdH1cblxuXHRcdC8qIFJvbGUgbmFtZXMgd3JhcCBiZXR3ZWVuIHdvcmRzLCBuZXZlciBpbnNpZGUgb25lLiAqL1xuXHRcdC5jaGlwIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBub3JtYWw7XG5cdFx0fVxuXG5cdFx0LyogV2hhdCB0aGUgcm93IGNvdW50cywgc2hvd24gYWJvdmUgdGhlIHBlcm1pc3Npb24gd2hlbiBldmVyeSBraW5kIGlzIGxpc3RlZC4gTG9zc2VzIHVzZSB0aGVcblx0XHQgICByb2xlLWNoYW5nZSBwcmV2aWV3J3MgcmVkLCBnYWlucyBpdHMgZ3JlZW4uICovXG5cdFx0LnJlZnVzYWwta2luZCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0d2lkdGg6IG1heC1jb250ZW50O1xuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXG5cdFx0XHQmLmtpbmQtUkVGVVNFRCxcblx0XHRcdCYua2luZC1DSEFOR0VTX1JFRlVTRSxcblx0XHRcdCYua2luZC1QUk9QT1NBTF9SRUZVU0VTIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuXHRcdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRcdH1cblxuXHRcdFx0Ji5raW5kLUNIQU5HRVNfQUxMT1csXG5cdFx0XHQmLmtpbmQtUFJPUE9TQUxfQUxMT1dTIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC0zMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmVmdXNhbC1wZXJtaXNzaW9uIHtcblx0XHRcdHdpZHRoOiAyNSU7XG5cdFx0fVxuXG5cdFx0LnJlZnVzYWwtb3V0Y29tZXMge1xuXHRcdFx0d2lkdGg6IDIyJTtcblx0XHR9XG5cblx0XHQucmVmdXNhbC1yb2xlcyB7XG5cdFx0XHR3aWR0aDogMjAlO1xuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLXByYWN0aWNlIHtcblx0XHRcdHdpZHRoOiAxNCU7XG5cdFx0fVxuXG5cdFx0LnJlZnVzYWwtY291bnQge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblxuXHRcdC8qIFdoYXQgYSByZXF1ZXN0IGdvdCB0b2RheSwgYW5kIHdvdWxkIGdldCB1bmRlciB0aGUgcHJvcG9zYWw6IHJlZnVzZWQgcmVkLCBhbGxvd2VkIGdyZWVuLCBhbmRcblx0XHQgICBhbGxvd2VkIG9ubHkgYmVjYXVzZSB0aGUgY2hlY2sgaXMgbG9nLW9ubHkgaW4gdGhlIHdhcm5pbmcgYW1iZXIuICovXG5cdFx0LnJlZnVzYWwtb3V0Y29tZSB7XG5cdFx0XHQmLm91dGNvbWUtUkVGVVNFRCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQtdHAtMTU7XG5cdFx0XHR9XG5cblx0XHRcdCYub3V0Y29tZS1BTExPV0VEIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC0zMDtcblx0XHRcdH1cblxuXHRcdFx0Ji5vdXRjb21lLUFMTE9XRURfTE9HX09OTFkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0XHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJHdhcm5pbmctYm9yZGVyO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLWFycm93IHtcblx0XHRcdG1hcmdpbjogMCA0cHg7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0LnJlZnVzYWwtcm93IHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Jjpob3ZlciB0ZCxcblx0XHRcdCYuZXhwYW5kZWQgdGQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LXRwLTEwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLWNhcmV0IHtcblx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdC8qIE9uZSByb3cncyBwZW9wbGUsIHdoeSwgYW5kIHdoZXJlIHRvIGZpeCBpdC4gKi9cblx0XHQucmVmdXNhbC1kZXRhaWwgPiB0ZCB7XG5cdFx0XHRwYWRkaW5nOiAxMnB4IDE2cHggMTZweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMTA7XG5cdFx0XHRib3JkZXItdG9wOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC5yZWZ1c2FsLWZpeCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE2cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXG5cdFx0LnJlZnVzYWwtZml4LWxhYmVsIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5yZWZ1c2FsLXVzZXJzIHtcblx0XHRtYXJnaW46IDAgMCA4cHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG5cdFx0dGgge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0dGQge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdH1cblxuXHRcdC5yZWZ1c2FsLXBlcnNvbiB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LnJlZnVzYWwtZW5kcG9pbnRzIGg1LFxuXHQucmVmdXNhbC1pbXBhY3QgaDUge1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdG1hcmdpbjogOHB4IDAgNHB4O1xuXHR9XG5cblx0LmltcGFjdC1tdXRlZCB7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qIFdobyB3b3VsZCBsb3NlIG9yIGdhaW4gYWNjZXNzLCBhYm92ZSB0aGUgdGFibGUuICovXG5cdC5yZWZ1c2FsLWltcGFjdCB7XG5cdFx0LmltcGFjdC1zdGF0cyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiAxMnB4O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHR9XG5cblx0XHQuaW1wYWN0LXN0YXQge1xuXHRcdFx0ZmxleDogMSAxIDE4MHB4O1xuXHRcdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cblx0XHRcdCYubG9zZSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdH1cblxuXHRcdFx0Ji5nYWluIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmNoYW5nZXMge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0XHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmltcGFjdC1udW1iZXIge1xuXHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblxuXHRcdC5pbXBhY3QtbGlzdHMge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRcdGdhcDogMjRweDtcblxuXHRcdFx0PiBkaXYge1xuXHRcdFx0XHRmbGV4OiAxIDEgMjIwcHg7XG5cdFx0XHR9XG5cblx0XHRcdG9sLFxuXHRcdFx0dWwge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDE4cHg7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5yZWZ1c2FsLWZpbHRlcnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblxuXHRcdC5jbGFpbS1pdGVtLWZpbHRlciB7XG5cdFx0XHRmbGV4OiAxIDEgMjQwcHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0c2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1pbi13aWR0aDogMTYwcHg7XG5cdFx0fVxuXHR9XG5cblx0LnJlZnVzYWwtZXhwb3J0IHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0fVxuXG5cdC8qIFRoZSBhdWRpdCBsb2cncyBwYW5lOiB0aGUgc3Bpbm5lciBzaXRzIG92ZXIgaXQgd2hpbGUgbG9hZGluZy4gKi9cblx0LnJlZnVzYWwtcGFuZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0LnJlZnVzYWwtc3Bpbm5lciB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHR0b3A6IDQwJTtcblx0fVxuXG5cdC8qIFRoZSByb2xlLWRlZmF1bHRzIHNjcmVlbiwgb3BlbmVkIGZyb20gdGhlIGF1ZGl0IGxvZyBvbiBvbmUgcGVybWlzc2lvbi4gKi9cblx0LmZvY3VzLXBlcm1pc3Npb24ge1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdH1cblxuXHQuY2xhaW0taXRlbS10b2dnbGUuZGlzYWJsZWQge1xuXHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDYWxlbmRhclxuLyogVGhlIGNhbGVuZGFyIGRpYWxvZyBhbmQgdGhlIGFwcG9pbnRtZW50IG1vZGFsIGFyZSBidWlsdCBvbiB0aGUgc2V0dGluZ3Ncbi8qIHNoZWxsIChfc2V0dGluZ3MuY3NzKSAtIHRoZSBzYW1lIHdoaXRlIHJhaWwsIHBhbGUgYmx1ZSBjYW52YXMsIGNhcmRzLFxuLyogbm90aWNlcyBhbmQgZm9ybSBjb250cm9scyAtIHNvIHRoZXkgcmVhZCBhcyB0aGUgc2FtZSBwcm9kdWN0LiBXaGF0IG9ubHlcbi8qIHRoZSBjYWxlbmRhciBuZWVkcyBpcyBzY29wZWQgdG8gLmNhbGVuZGFyLXNoZWxsIC8gLmFwcG9pbnRtZW50LXNoZWxsLlxuLyogVGhlIGFwcHQtKiBwaWVjZXMgKHN0YXR1cyBwaWxscywgaW52b2ljZSBkb3RzLCBzd2F0Y2hlcykgYXJlIHNoYXJlZCBieVxuLyogdGhlIGdyaWQsIHRoZSB0ZWFtIHZpZXcsIHRoZSBob3ZlciBjYXJkIGFuZCB0aGUgbW9kYWwsIHNvIHNpdCBhdCB0aGUgdG9wLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5Aa2V5ZnJhbWVzIGNhbGVuZGFyLWxvYWRpbmcge1xuXHRmcm9tIHtcblx0XHRsZWZ0OiAtNDAlO1xuXHR9XG5cblx0dG8ge1xuXHRcdGxlZnQ6IDEwMCU7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTaGFyZWQgYXBwb2ludG1lbnQgcGllY2VzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFdoaXRlIHBpbGxzLCBzbyB0aGV5IHJlYWQgb24gYW55IGFwcG9pbnRtZW50IGNvbG91ciBhIHByYWN0aWNlIHBpY2tzLiAqL1xuLmFwcHQtcGlsbCB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRwYWRkaW5nOiAxcHggNnB4O1xuXHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGNvbG9yOiAjNGE1NTY4O1xuXHRmb250LXNpemU6IDlweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRsaW5lLWhlaWdodDogMS41O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLmFwcHQtcGlsbC1hcnJpdmVkIHtcblx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG59XG5cbi5hcHB0LXBpbGwtaW4tcHJvZ3Jlc3Mge1xuXHRjb2xvcjogJHRlYWw7XG59XG5cbi5hcHB0LXBpbGwtZG9uZSB7XG5cdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xufVxuXG4uYXBwdC1waWxsLW1pc3NlZCB7XG5cdGNvbG9yOiAkZGFuZ2VyO1xufVxuXG4uYXBwdC1pbnZvaWNlIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR3aWR0aDogMTZweDtcblx0aGVpZ2h0OiAxNnB4O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0Zm9udC1zaXplOiAxMHB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHRib3gtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbn1cblxuLmFwcHQtaW52b2ljZS1kcmFmdCB7XG5cdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG59XG5cbi5hcHB0LWludm9pY2UtcGVuZGluZyB7XG5cdGNvbG9yOiAkd2FybmluZy10ZXh0O1xufVxuXG4uYXBwdC1pbnZvaWNlLXBhaWQge1xuXHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcbn1cblxuLmFwcHQtc3dhdGNoIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTBweDtcblx0aGVpZ2h0OiAxMHB4O1xuXHRmbGV4LXNocmluazogMDtcblx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXG5cdCYucm91bmQge1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0fVxufVxuXG4vKiBIb3ZlciBjYXJkIC0gYXBwZW5kZWQgdG8gYm9keSBieSBCb290c3RyYXAncyBwb3BvdmVyLCBzbyBub3QgdW5kZXIgZWl0aGVyIHNoZWxsLiAqL1xuLnBvcG92ZXIgLmFwcHQtcG9wb3ZlciB7XG5cdG1pbi13aWR0aDogMjMwcHg7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cblx0LmFwcHQtcG9wb3Zlci1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDNweCAwO1xuXHR9XG5cblx0LmFwcHQtcG9wb3Zlci1sYWJlbCB7XG5cdFx0ZmxleDogMCAwIDY0cHg7XG5cdFx0cGFkZGluZy10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5hcHB0LXBvcG92ZXItbm90ZSB7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdHBhZGRpbmctdG9wOiA2cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Y29sb3I6ICR0ZXh0LWxpZ2h0O1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcblx0fVxuXG5cdC5hcHB0LXBvcG92ZXItaW52b2ljZSB7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBOb3RpY2VzIChib3RoIHNoZWxscylcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYWxlbmRhci1zaGVsbCxcbi5hcHBvaW50bWVudC1zaGVsbCB7XG5cdC5zZXR0aW5ncy1ub3RpY2Uge1xuXHRcdC5ub3RpY2UtdGV4dCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC8qIEEgYm9va2luZyB0aGF0IGlzIHJlZnVzZWQgb3V0cmlnaHQsIHN1Y2ggYXMgb25lIGluc2lkZSBwcmFjdGljZSBsZWF2ZS4gKi9cblx0XHQmLmVycm9yIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0XHRjb2xvcjogIzYxMWExNTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICNmNWMyYzc7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5ub3RpY2UtYWN0aW9uIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0XHRtYXJnaW46IC0zcHggMDtcblx0XHRcdHBhZGRpbmc6IDRweCAxNHB4O1xuXHRcdH1cblxuXHRcdC5wcmFjdGljZS1sZWF2ZS1vdmVycmlkZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0XHRnYXA6IDhweDtcblx0XHRcdG1hcmdpbjogOHB4IDAgMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdGlucHV0IHtcblx0XHRcdFx0bWFyZ2luOiAzcHggMCAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5ub3RpY2UtZGlzbWlzcyB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRwYWRkaW5nOiAwIDJweDtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0b3BhY2l0eTogMC42O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLmNhbGVuZGFyLXNoZWxsLFxuLmFwcG9pbnRtZW50LXNoZWxsIHtcblx0LnNlZ21lbnRlZCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDJweDtcblx0XHRwYWRkaW5nOiAzcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuXHRcdC5zZWdtZW50ZWQtbGFiZWwge1xuXHRcdFx0cGFkZGluZzogMCA2cHggMCA3cHg7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0cGFkZGluZzogNXB4IDExcHg7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cblx0XHRcdCYuYWN0aXZlIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENhbGVuZGFyIGRpYWxvZyBzaGVsbFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNhbGVuZGFyLXNoZWxsIHtcblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIExlZnQgcmFpbFxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5jYWxlbmRhci1yYWlsIHtcblx0XHRmbGV4LWJhc2lzOiAyNjRweDtcblx0XHR3aWR0aDogMjY0cHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDhweDtcblx0fVxuXG5cdC5uYXYtaXRlbS10ZXh0IHtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0LmNhbGVuZGFyLW1vZGUtc3dpdGNoIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNHB4O1xuXHRcdG1hcmdpbjogMTRweCAxMnB4IDJweDtcblx0XHRwYWRkaW5nOiA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0cGFkZGluZzogN3B4IDZweDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogNXB4O1xuXHRcdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblxuXHRcdFx0Ji5hY3RpdmUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xMik7XG5cblx0XHRcdFx0aSB7XG5cdFx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lm1pbmktbW9udGgge1xuXHRcdHBhZGRpbmc6IDE0cHggMTRweCAxMnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0Lm1pbmktbW9udGgtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdH1cblxuXHQubWluaS1tb250aC10aXRsZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0Lm1pbmktbW9udGgtbmF2IHtcblx0XHR3aWR0aDogMjZweDtcblx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubWluaS1tb250aC13ZWVrIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcsIDFmcik7XG5cdH1cblxuXHQubWluaS1tb250aC1kb3cgc3BhbiB7XG5cdFx0cGFkZGluZzogNHB4IDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiBUaGUgZGF5cyBvbiBzY3JlZW4gZm9ybSBvbmUgcGFsZSBiYW5kLCBzbyB0aGUgcmFpbCBzaG93cyB3aGljaCBzbGljZSBvZiB0aGUgbW9udGggeW91IGFyZSBpbi4gKi9cblx0Lm1pbmktbW9udGgtZGF5IHtcblx0XHRoZWlnaHQ6IDI4cHg7XG5cdFx0bWFyZ2luOiAxcHggMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjEycyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmN2ZlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYub3V0LW9mLW1vbnRoIHtcblx0XHRcdGNvbG9yOiAjYzNjOWRhO1xuXHRcdH1cblxuXHRcdCYuaW4tdmlldyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC8qIEEgcHVibGljIGhvbGlkYXkgLSBuYW1lZCBpbiB0aGUgaG92ZXIgKi9cblx0XHQmLmlzLWhvbGlkYXkge1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAtMnB4IDAgJHRlYWw7XG5cdFx0fVxuXG5cdFx0Ji5pcy10b2RheSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LmNhbGVuZGFyLXByYWN0aWNlLWl0ZW0gLmFwcHQtc3dhdGNoIHtcblx0XHRtYXJnaW46IDAgMnB4O1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkd2hpdGU7XG5cdH1cblxuXHQvKiBUaWNrIHRvIGFkZCBhIGNsaW5pY2lhbiBhbG9uZ3NpZGUgdGhlIG90aGVyczsgY2xpY2sgdGhlIG5hbWUgdG8gc2VlIG9ubHkgdGhlbS4gKi9cblx0LmNsaW5pY2lhbi1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMnB4IDEycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHR9XG5cblx0XHQuY2xpbmljaWFuLWNoZWNrIHtcblx0XHRcdHdpZHRoOiAxOHB4O1xuXHRcdFx0aGVpZ2h0OiAxOHB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdH1cblxuXHRcdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5pcy1zaG93biAuY2xpbmljaWFuLWNoZWNrIGkge1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHR9XG5cblx0XHQuY2xpbmljaWFuLW5hbWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdHBhZGRpbmc6IDZweCAwO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmOm5vdCguaXMtc2hvd24pIC5jbGluaWNpYW4tbmFtZSB7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHQmLmlzLW9ubHkgLmNsaW5pY2lhbi1uYW1lIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQuY2xpbmljaWFuLWNvdW50IHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0cGFkZGluZzogMnB4IDdweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0Y29sb3I6ICM3ZDgzOTk7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblx0fVxuXG5cdC8qIFByYWN0aWNlIG5hbWVzIHJ1biBsb25nIChcIkV5ZSBTdXJnZXJ5IEFzc29jaWF0ZXMgLSBSZW11ZXJhXCIpLCBzbyB0aGV5IHdyYXAgcmF0aGVyIHRoYW4gY3V0IG9mZi4gKi9cblx0LnByYWN0aWNlLXJvdyB7XG5cdFx0LmNsaW5pY2lhbi1uYW1lIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM1O1xuXHRcdH1cblxuXHRcdC5hcHB0LXN3YXRjaCB7XG5cdFx0XHRtYXJnaW46IDAgMnB4O1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQubGVnZW5kLWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIE1haW4gcGFuZVxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5jYWxlbmRhci1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDE2cHggMjBweCAxOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdC5jYWxlbmRhci10b29sYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEycHggMTZweDtcblx0fVxuXG5cdC5jYWxlbmRhci10b29sYmFyLW5hdiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQuY2FsZW5kYXItdGl0bGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHR9XG5cblx0LmNhbC1idG4ge1xuXHRcdGhlaWdodDogMzRweDtcblx0XHRwYWRkaW5nOiAwIDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0fVxuXHR9XG5cblx0LmNhbC1pY29uLWJ0biB7XG5cdFx0d2lkdGg6IDM0cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdH1cblxuXHQuY2FsLWJ0bi1ncm91cCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblxuXHRcdC5jYWwtYnRuOmZpcnN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtIDAgMCAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHR9XG5cblx0XHQuY2FsLWJ0bjpsYXN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAtMXB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMCAkYm9yZGVyLXJhZGl1cy1zbSAkYm9yZGVyLXJhZGl1cy1zbSAwO1xuXHRcdH1cblx0fVxuXG5cdC5jYWxlbmRhci10b29sYmFyLXRvb2xzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5jYWxlbmRhci1zZWFyY2gge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHR3aWR0aDogMjMwcHg7XG5cblx0XHQ+IGkge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGhlaWdodDogMzRweDtcblx0XHRcdHBhZGRpbmctbGVmdDogMzFweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDI4cHg7XG5cdFx0fVxuXG5cdFx0LmNhbGVuZGFyLXNlYXJjaC1jbGVhciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRyaWdodDogNnB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHR3aWR0aDogMjJweDtcblx0XHRcdGhlaWdodDogMjJweDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBDb3VudHMgYnkgd2hlcmUgcGF0aWVudHMgYXJlIGluIHRoZWlyIHZpc2l0LiBDbGlja2luZyBvbmUgaGlnaGxpZ2h0cyBqdXN0IHRob3NlLiAqL1xuXHQuY2FsZW5kYXItc3RhdHVzYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5zdGF0dXMtY2hpcHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4O1xuXHR9XG5cblx0LnN0YXR1cy1jaGlwIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogN3B4O1xuXHRcdHBhZGRpbmc6IDVweCAxMXB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQuc3RhdHVzLWRvdCB7XG5cdFx0XHR3aWR0aDogOHB4O1xuXHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICNjYmQ1ZTA7XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRcdHN0cm9uZyB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLm11dGVkIHtcblx0XHRcdG9wYWNpdHk6IDAuNTU7XG5cdFx0fVxuXHR9XG5cblx0LnN0YXR1cy1jaGlwLWJvb2tlZCAuc3RhdHVzLWRvdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5zdGF0dXMtY2hpcC1hcnJpdmVkIC5zdGF0dXMtZG90IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93O1xuXHR9XG5cblx0LnN0YXR1cy1jaGlwLWluLXByb2dyZXNzIC5zdGF0dXMtZG90IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0fVxuXG5cdC5zdGF0dXMtY2hpcC1kb25lIC5zdGF0dXMtZG90IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW47XG5cdH1cblxuXHQuc3RhdHVzLWNoaXAtbWlzc2VkIC5zdGF0dXMtZG90IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQuc3RhdHVzLXRvdGFsIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblx0fVxuXG5cdC50ZWFtLWVtcHR5LXRvZ2dsZSB7XG5cdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cblx0XHRpIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgbm90aWNlcyBqb2luIHRoZSBwYW5lJ3Mgb3duIGdhcCByYXRoZXIgdGhhbiBhZGRpbmcgb25lIHdoZW4gdGhlcmUgYXJlIG5vbmUuICovXG5cdC5jYWxlbmRhci1ub3RpY2VzIHtcblx0XHRkaXNwbGF5OiBjb250ZW50cztcblxuXHRcdC5zZXR0aW5ncy1ub3RpY2Uge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5jYWxlbmRhci1zdGFnZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LnBlcnNvbmFsLXN0YWdlIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdH1cblxuXHQuY2FsZW5kYXItZmMge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0fVxuXG5cdC5jYWxlbmRhci1sb2FkaW5nIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiAzcHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR6LWluZGV4OiA2O1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAtNDAlO1xuXHRcdFx0d2lkdGg6IDQwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0YW5pbWF0aW9uOiBjYWxlbmRhci1sb2FkaW5nIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5cdFx0fVxuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBBcHBvaW50bWVudCBzdGF0dXMsIHNoYXJlZCBieSBGdWxsQ2FsZW5kYXIgZXZlbnRzIGFuZCB0aGUgdGVhbSB2aWV3XG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogU3RhdHVzZXMgb24gdGhlIGxpZ2h0IGNhcmRzOiB0aGUgY29sb3VyIGVkZ2Ugc3RheXMgdGhlIHR5cGUncywgc28gYSBzdGF0dXMgaXMgYSByaW5nLCBhIGZhZGUgb3IgYVxuXHQgICBoYXRjaCByYXRoZXIgdGhhbiBhbm90aGVyIGVkZ2UuIFwiV2FpdGluZ1wiIGlzIHNhaWQgYnkgaXRzIHBpbGwgYWxvbmUuICovXG5cdC5mYyAuZmMtZXZlbnQuYXBwdC5hcHB0LXN0YXR1cy1pbi1wcm9ncmVzcyxcblx0LnRlYW0tZGF5IC50ZWFtLWFwcHQuYXBwdC1zdGF0dXMtaW4tcHJvZ3Jlc3Mge1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkY3lhbi10cC01MCwgMCAycHggNnB4IHJnYmEoMCwgMTg4LCAyMTIsIDAuMjUpO1xuXHR9XG5cblx0LyogRG9uZSBpcyBzdGlsbCB3b3J0aCBzZWVpbmcsIGJ1dCBpdCBpcyBubyBsb25nZXIgd2hhdCB0aGUgZGF5IGlzIGFib3V0LiBNdXRlZCBieSBjb2xvdXIgcmF0aGVyXG5cdCAgIHRoYW4gdHJhbnNwYXJlbmN5LCBzbyBjYXJkcyB0aGF0IG92ZXJsYXAgc3RheSBzb2xpZCBpbnN0ZWFkIG9mIHNob3dpbmcgdGhyb3VnaCBvbmUgYW5vdGhlci4gKi9cblx0LmFwcHQtc3RhdHVzLWRvbmUge1xuXHRcdGZpbHRlcjogc2F0dXJhdGUoMC4zKTtcblxuXHRcdC5mYy10aXRsZSxcblx0XHQuZmMtdGltZSxcblx0XHQuYXBwdC1wYXRpZW50LWxpbmssXG5cdFx0LnRlYW0tYXBwdC10aW1lLFxuXHRcdC50ZWFtLWFwcHQtbWV0YSB7XG5cdFx0XHRjb2xvcjogIzhhOTBhMztcblx0XHR9XG5cdH1cblxuXHQuYXBwdC1zdGF0dXMtbWlzc2VkIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgxMCwgMzcsIDY0LCAwLjA3KSAwIDZweCwgdHJhbnNwYXJlbnQgNnB4IDEycHgpO1xuXG5cdFx0LmZjLXRpdGxlLFxuXHRcdC5hcHB0LXBhdGllbnQtbGluayB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcblx0XHR9XG5cdH1cblxuXHQvKiBBZnRlciB0aGUgc3RhdHVzZXMsIHNvIGEgc2VhcmNoIG9yIHN0YXR1cyBoaWdobGlnaHQgd2lucyBvdmVyIFwiZG9uZVwiLiAqL1xuXHQuYXBwdC1kaW1tZWQge1xuXHRcdG9wYWNpdHk6IDAuMTg7XG5cdFx0ZmlsdGVyOiBncmF5c2NhbGUoMC42KTtcblx0fVxuXG5cdC5hcHB0LXBhdGllbnQtbGluayB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQuYXBwdC1iYWRnZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luLXRvcDogM3B4O1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBGdWxsQ2FsZW5kYXIgdGhlbWVcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuZmMge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblxuXHRcdHRkLFxuXHRcdHRoLFxuXHRcdGhyLFxuXHRcdHRoZWFkLFxuXHRcdHRib2R5LFxuXHRcdC5mYy1yb3csXG5cdFx0LmZjLWRpdmlkZXIsXG5cdFx0LmZjLXBvcG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjZWVmMWY3O1xuXHRcdH1cblxuXHRcdHRoLmZjLWRheS1oZWFkZXIge1xuXHRcdFx0cGFkZGluZzogOHB4IDAgN3B4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdH1cblxuXHRcdC5mYy1jb2wtd2Vla2RheSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXG5cdFx0LmZjLWNvbC1kYXRlIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG1pbi13aWR0aDogMjhweDtcblx0XHRcdGhlaWdodDogMjhweDtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE0cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMjhweDtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHRcdCYuaXMtdG9kYXkge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmMtY29sLW1vbnRoIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAzcHg7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHQuZmMtYXhpcyB7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdHRkLmZjLXRvZGF5IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4wMjUpO1xuXHRcdH1cblxuXHRcdC5mYy10aW1lLWdyaWQgLmZjLXNsYXRzIC5mYy1taW5vciB0ZCB7XG5cdFx0XHRib3JkZXItdG9wLXN0eWxlOiBkb3R0ZWQ7XG5cdFx0XHRib3JkZXItdG9wLWNvbG9yOiAjZjFmM2Y4O1xuXHRcdH1cblxuXHRcdC8qIFRoZSB0ZWFtIHZpZXcncyBcIisgQm9vayA5OjMwIGFtXCIgbWFya2VyLCBvbiB0aGUgZGF5IGFuZCB3ZWVrIGdyaWRzLiBQbGFjZWQgYnkgYXR0YWNoQm9va2luZ0dob3N0XG5cdFx0ICAgaW4gY2FsZW5kYXJDb250cm9sbGVyLmpzOyBpdCBsb29rcyB0aGUgc2FtZSBhcyAudGVhbS1naG9zdC4gKi9cblx0XHQuZmMtYm9vay1naG9zdCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0ei1pbmRleDogMztcblx0XHRcdG1pbi1oZWlnaHQ6IDE4cHg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRwYWRkaW5nOiAwIDhweDtcblx0XHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkbmF2eTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRcdC8qIFNvbGlkLCBzbyB0aGUgdGltZSByZWFkcyBvdmVyIGFuIGFwcG9pbnRtZW50J3MgZWRnZS4gKi9cblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZjLW5vbmJ1c2luZXNzIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmM7XG5cdFx0fVxuXG5cdFx0LmZjLW5vdy1pbmRpY2F0b3ItbGluZSB7XG5cdFx0XHRib3JkZXItdG9wLXdpZHRoOiAycHg7XG5cdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblxuXHRcdFx0JjpiZWZvcmUge1xuXHRcdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IC00cHg7XG5cdFx0XHRcdHRvcDogLTVweDtcblx0XHRcdFx0d2lkdGg6IDhweDtcblx0XHRcdFx0aGVpZ2h0OiA4cHg7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mYy1ub3ctaW5kaWNhdG9yLWFycm93IHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZjLWV2ZW50IHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMTUpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcblx0XHR9XG5cblx0XHQvKiBBcHBvaW50bWVudHMgYXJlIGxpZ2h0IGNhcmRzOiBhIHNvZnQgdGludCBvZiB0aGVpciBjb2xvdXIgKGlubGluZSksIGEgc29saWQgZWRnZSBpbiB0aGUgZnVsbFxuXHRcdCAgIGNvbG91ciAoYm9yZGVyLWxlZnQsIGZyb20gdGhlIGlubGluZSBib3JkZXIgY29sb3VyKSBhbmQgZGFyayB0ZXh0LCBsaWZ0ZWQgb2ZmIHRoZSBncmlkIGJ5IGFcblx0XHQgICBmYWludCBzaGFkb3cgLSBzbyBhIGZ1bGwgZGF5IHJlYWRzIGNhbG1seSwgYW5kIHRoZSBzZXNzaW9ucyB1bmRlciBpdCBzdGF5IHZpc2libGUgYXJvdW5kIGl0LiAqL1xuXHRcdC5mYy1ldmVudC5hcHB0IHtcblx0XHRcdGJvcmRlci13aWR0aDogMCAwIDAgNHB4O1xuXHRcdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDRweCA3cHggN3B4IDRweDtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDEwLCAzNywgNjQsIDAuMDYpLCAwIDFweCAycHggcmdiYSgxMCwgMzcsIDY0LCAwLjA4KTtcblx0XHRcdHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDEwLCAzNywgNjQsIDAuMSksIDAgNHB4IDEycHggcmdiYSgxMCwgMzcsIDY0LCAwLjE2KTtcblx0XHRcdH1cblxuXHRcdFx0LmZjLXRpdGxlIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdH1cblxuXHRcdFx0LmZjLXRpbWUge1xuXHRcdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmMtdGltZS1ncmlkLWV2ZW50IC5mYy1jb250ZW50IHtcblx0XHRcdHBhZGRpbmc6IDNweCA1cHggMnB4IDhweDtcblx0XHR9XG5cblx0XHQuZmMtdGltZS1ncmlkLWV2ZW50LmFwcHQgLmZjLWNvbnRlbnQge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA2cHg7XG5cdFx0fVxuXG5cdFx0LmZjLXRpbWUtZ3JpZC1ldmVudCAuZmMtdGltZSB7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdG9wYWNpdHk6IDAuOTtcblx0XHR9XG5cblx0XHQvKiBUaGUgcGlsbHMgYWxyZWFkeSBzaXQgb24gd2hpdGU7IG9uIGEgcGFsZSBjYXJkIHRoZXkgbmVlZCBhbiBvdXRsaW5lIHRvIHN0YW5kIG9mZiBpdC4gKi9cblx0XHQuZmMtZXZlbnQuYXBwdCAuYXBwdC1waWxsLFxuXHRcdC5mYy1ldmVudC5hcHB0IC5hcHB0LWludm9pY2Uge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xKTtcblx0XHR9XG5cblx0XHQvKiBCYWRnZXMgc2l0IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIHJhdGhlciB0aGFuIG9uIGEgbGluZSBvZiB0aGVpciBvd24sIHdoaWNoIGEgMjAtbWludXRlXG5cdFx0ICAgYXBwb2ludG1lbnQgZG9lcyBub3QgaGF2ZS4gKi9cblx0XHQuZmMtdGltZS1ncmlkLWV2ZW50IC5hcHB0LWJhZGdlcyB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDNweDtcblx0XHRcdHJpZ2h0OiA0cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmbGV4LXdyYXA6IG5vd3JhcDtcblx0XHRcdGdhcDogM3B4O1xuXHRcdH1cblxuXHRcdC5mYy10aW1lLWdyaWQtZXZlbnQuaGFzLWJhZGdlcyAuZmMtY29udGVudCB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA4NnB4O1xuXHRcdH1cblxuXHRcdC8qIEEgd2VlaydzIGNvbHVtbnMgYXJlIHRvbyBuYXJyb3cgZm9yIHRoZSB3b3JkaW5nIC0gdGhlIHN0YXR1cyBiZWNvbWVzIGEgY29sb3VyZWQgZG90LiAqL1xuXHRcdC5mYy1hZ2VuZGFXZWVrLXZpZXcgLmZjLXRpbWUtZ3JpZC1ldmVudCB7XG5cdFx0XHQmLmhhcy1iYWRnZXMgLmZjLWNvbnRlbnQge1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiAzMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQuYXBwdC1waWxsIHtcblx0XHRcdFx0d2lkdGg6IDEwcHg7XG5cdFx0XHRcdGhlaWdodDogMTBweDtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAwO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkd2hpdGU7XG5cdFx0XHR9XG5cblx0XHRcdC5hcHB0LWludm9pY2Uge1xuXHRcdFx0XHR3aWR0aDogMTNweDtcblx0XHRcdFx0aGVpZ2h0OiAxM3B4O1xuXHRcdFx0XHRmb250LXNpemU6IDhweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZmMtdGl0bGUge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQuZmMtZGF5LWdyaWQtZXZlbnQgLmZjLWNvbnRlbnQge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDRweDtcblx0XHRcdHBhZGRpbmc6IDJweCA2cHg7XG5cblx0XHRcdC5hcHB0LWJhZGdlcyB7XG5cdFx0XHRcdG1hcmdpbjogMCAwIDAgYXV0bztcblx0XHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdFx0XHR9XG5cblx0XHRcdC8qIE1vbnRoIGNlbGxzIGFyZSB0b28gbmFycm93IGZvciB0aGUgd29yZGluZzsgdGhlIGludm9pY2UgZG90IHN0YXlzLiAqL1xuXHRcdFx0LmFwcHQtcGlsbCB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LnByYWN0aWNlLWRheSB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHR9XG5cblx0XHQuZmMtaGlnaGxpZ2h0IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0b3BhY2l0eTogMC4xMjtcblx0XHR9XG5cblx0XHQvKiBNb250aCAqL1xuXHRcdC5mYy1kYXktbnVtYmVyIHtcblx0XHRcdHBhZGRpbmc6IDRweCA3cHg7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdH1cblxuXHRcdC5mYy1kYXktdG9wLmZjLXRvZGF5IC5mYy1kYXktbnVtYmVyIHtcblx0XHRcdG1hcmdpbjogM3B4O1xuXHRcdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXG5cdFx0LmZjLWRheS10b3AuZmMtb3RoZXItbW9udGggLmZjLWRheS1udW1iZXIge1xuXHRcdFx0Y29sb3I6ICNjM2M5ZGE7XG5cdFx0fVxuXG5cdFx0LmZjLW1vcmUge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC8qIEFnZW5kYSAobGlzdCkgKi9cblx0XHQuZmMtbGlzdC12aWV3IHtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1oZWFkaW5nIHRkIHtcblx0XHRcdHBhZGRpbmc6IDlweCAxNnB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1oZWFkaW5nLW1haW4ge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC5mYy1saXN0LWhlYWRpbmctYWx0IHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAjNmE3MzkxO1xuXHRcdH1cblxuXHRcdC5mYy1saXN0LWl0ZW0gdGQge1xuXHRcdFx0cGFkZGluZzogMTBweCAxNnB4O1xuXHRcdFx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcblx0XHR9XG5cblx0XHQuZmMtbGlzdC1pdGVtOmhvdmVyIHRkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZjZmY7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXG5cdFx0LmZjLWxpc3QtaXRlbS10aW1lIHtcblx0XHRcdHdpZHRoOiAxNTBweDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LmZjLWxpc3QtaXRlbS1tYXJrZXIgLmZjLWV2ZW50LWRvdCB7XG5cdFx0XHR3aWR0aDogMTJweDtcblx0XHRcdGhlaWdodDogMTJweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDRweDtcblx0XHR9XG5cdH1cblxuXHQvKiBJY29uIGxpbmtzLCBhcyBvbiB0aGUgd2VsY29tZSBwYWdlIChfd2VsY29tZS5jc3MpIC0gb25seSB0aGUgc3BhY2luZyBpbiB0aGUgZGF5IGhlYWRpbmcgZGlmZmVycyAqL1xuXHQuYXBwb2ludG1lbnQtbGlzdC1kb3dubG9hZHMge1xuXHRcdG1hcmdpbi1sZWZ0OiAxNHB4O1xuXG5cdFx0YSB7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjc7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuYXBwdC1saXN0LWNlbGwge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHggMTZweDtcblxuXHRcdC5hcHB0LXBhdGllbnQtbGluayB7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0fVxuXG5cdFx0LmFwcHQtcGlsbCB7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgY3VycmVudENvbG9yO1xuXHRcdH1cblxuXHRcdC5hcHB0LWludm9pY2Uge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4IGN1cnJlbnRDb2xvcjtcblx0XHR9XG5cdH1cblxuXHQuYXBwdC1saXN0LW1ldGEge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNHB4IDE0cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICM2YTczOTE7XG5cdH1cblxuXHQuYXBwdC1tZXRhLWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQuYXBwdC1saXN0LWJhZGdlcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHR9XG5cblx0LyogQW4gYWdlbmRhIHJvdyB0aGF0IGlzIGRpbW1lZCBvciBkb25lIGZhZGVzIGFzIGEgd2hvbGUgcm93LiAqL1xuXHQuZmMtbGlzdC1pdGVtLmFwcHQtZGltbWVkLFxuXHQvKiBUaGUgYWdlbmRhJ3MgZG90cyBhbmQgc3dhdGNoZXMgYXJlIGl0cyB0eXBlIGtleSAtIGEgZG9uZSByb3cgZ3JleXMgaXRzIHRleHQsIG5vdCBpdHMgY29sb3Vycy4gKi9cblx0LmZjLWxpc3QtaXRlbS5hcHB0LXN0YXR1cy1kb25lIHtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGZpbHRlcjogbm9uZTtcblx0fVxuXG5cdC5mYy1saXN0LWl0ZW0uYXBwdC1zdGF0dXMtbWlzc2VkIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTGVhdmUgYW5kIHRpbWUgYXdheVxuLyogT25lIGxvb2sgZXZlcnl3aGVyZSAtIHJlZCBzdHJpcGVzLCBhIHNvbGlkIHJlZCBlZGdlIGFuZCBhIGxhYmVsbGVkIHBpbGwgLVxuLyogc28gdGltZSBhd2F5IGNhbiBuZXZlciBiZSBtaXN0YWtlbiBmb3IgYW4gYXBwb2ludG1lbnQgdHlwZSdzIGNvbG91ci5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiRhd2F5LXN0cmlwZXM6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxNywgODMsIDc5LCAwLjIpIDAgOHB4LCByZ2JhKDIxNywgODMsIDc5LCAwLjA3KSA4cHggMTZweCk7XG5cbi5jYWxlbmRhci1zaGVsbCB7XG5cdC8qIERheSBhbmQgd2VlazogdGhlIGhvdXJzIGF3YXkgKi9cblx0LmZjIC5mYy1iZ2V2ZW50LnVuYXZhaWwtYmxvY2sge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0YmFja2dyb3VuZDogJGF3YXktc3RyaXBlcztcblx0XHRib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC8qIFNlc3Npb25zOiBhIGxpZ2h0IHdhc2ggb2YgdGhlIHR5cGUncyBjb2xvdXIgd2l0aCBhIHNvbGlkIGVkZ2UgKHNldCBpbmxpbmUgZnJvbSB0aGUgdHlwZSksIGFuZFxuXHQgICB0aGUgdHlwZSBuYW1lZCAtIHF1aWV0ZXIgdGhhbiBsZWF2ZSwgYnV0IG5ldmVyIGluIGRvdWJ0IGFib3V0IHdoYXQgdGhlIHRpbWUgaXMgZm9yLiAqL1xuXHQuZmMgLmZjLWJnZXZlbnQuYXZhaWwtYmFuZCB7XG5cdFx0b3BhY2l0eTogMTtcblx0fVxuXG5cdC8qIFRoZSBzZXNzaW9uJ3MgbmFtZSwgcGxhY2VkIGluIGl0cyBmaXJzdCBmcmVlIHN0cmV0Y2ggKGZyZWVMYWJlbE9mZnNldCBpbiBjYWxlbmRhckNvbnRyb2xsZXIpIHNvXG5cdCAgIG5vIGFwcG9pbnRtZW50IGlzIGRyYXduIG92ZXIgaXQuICovXG5cdC5mYyAuYmctbGFiZWwuYmctbGFiZWwtc2Vzc2lvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMTAsIDM3LCA2NCwgMC4xOCk7XG5cdH1cblxuXHQvKiBBIG1vbnRoIGNlbGwgaGFzIG5vIGZyZWUgc3RyZXRjaCB0byBzcGVhayBvZjsgdGhlIHRpbnQgc3RheXMsIGFuZCB0aGUgdHlwZSBpcyBuYW1lZCBlbHNld2hlcmUuICovXG5cdC5mYy1tb250aC12aWV3IC5iZy1sYWJlbC1zZXNzaW9uIHtcblx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IC8qIG92ZXIgdGhlIGlubGluZSBkaXNwbGF5IGpRdWVyeSBsZWF2ZXMgb24gaXQgKi9cblx0fVxuXG5cdC5iZy1zd2F0Y2gge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogOHB4O1xuXHRcdGhlaWdodDogOHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDJweDtcblx0fVxuXG5cdC8qIFVuZGVyIHRoZSBkYXRlOiB0aGUgZGF5J3Mgc2Vzc2lvbnMgYnkgdHlwZSAqL1xuXHQuZmMgLmZjLWNvbC1zZXNzaW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAzcHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHR9XG5cblx0LmZjIC5mYy1jb2wtc2Vzc2lvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZzogMXB4IDdweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdGN1cnNvcjogaGVscDtcblxuXHRcdCYubW9yZSB7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHR9XG5cdH1cblxuXHQuZmMgLmJnLWxhYmVsIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiA0cHg7XG5cdFx0bGVmdDogOHB4O1xuXHRcdHJpZ2h0OiA2cHg7XG5cdFx0ei1pbmRleDogMTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWF4LXdpZHRoOiBtYXgtY29udGVudDtcblx0XHRwYWRkaW5nOiAycHggOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgxNjksIDY4LCA2NiwgMC4yNSk7XG5cdH1cblxuXHQvKiBXaG9sZSBkYXlzOiBhIHNvbGlkIGJhciBpbiB0aGUgYWxsLWRheSByb3cgYW5kIG9uIHRoZSBtb250aCAqL1xuXHQuZmMgLmxlYXZlLWJhbm5lciB7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHdoaXRlLXRwLTE1IDAgNnB4LCB0cmFuc3BhcmVudCA2cHggMTJweCk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblxuXHRcdC5mYy10aXRsZSxcblx0XHQuZmMtY29udGVudCB7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIEFnZW5kYSByb3dzICovXG5cdC5mYyAuZmMtbGlzdC1pdGVtLmxlYXZlLWJhbm5lciB7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblxuXHRcdHRkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJkZWRiO1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdH1cblxuXHRcdC5mYy1ldmVudC1kb3Qge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblxuXHRcdC5mYy1saXN0LWl0ZW0tdGltZSB7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHR9XG5cdH1cblxuXHQubGVhdmUtbGlzdC10aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBQcmFjdGljZSBsZWF2ZVxuXHQvKiBIYXRjaGVkIGdyZXkgcmF0aGVyIHRoYW4gcmVkLCBzbyB0aW1lIHRoZSB3aG9sZSBwcmFjdGljZSBpcyBjbG9zZWQgcmVhZHMgZGlmZmVyZW50bHkgZnJvbSBvbmVcblx0LyogY2xpbmljaWFuJ3MgbGVhdmUuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmZjIC5mYy1iZ2V2ZW50LnByYWN0aWNlLWxlYXZlLWJnIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCBjb2xvcigkcHJhY3RpY2UtbGVhdmUtc2xhdGUgYSgyNCUpKSAwIDdweCwgY29sb3IoJHByYWN0aWNlLWxlYXZlLXNsYXRlIGEoOCUpKSA3cHggMTRweCk7XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAycHggMCBjb2xvcigkcHJhY3RpY2UtbGVhdmUtc2xhdGUgYSg0NSUpKSwgaW5zZXQgMCAtMnB4IDAgY29sb3IoJHByYWN0aWNlLWxlYXZlLXNsYXRlIGEoNDUlKSk7XG5cdH1cblxuXHQuZmMgLmJnLWxhYmVsLnByYWN0aWNlLWxlYXZlLWxhYmVsIHtcblx0XHRjb2xvcjogJHByYWN0aWNlLWxlYXZlLWluaztcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IGNvbG9yKCRwcmFjdGljZS1sZWF2ZS1pbmsgYSgyNSUpKTtcblx0XHRjdXJzb3I6IGhlbHA7XG5cdH1cblxuXHQuZmMgLnByYWN0aWNlLWxlYXZlLWJhbm5lciB7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRwcmFjdGljZS1sZWF2ZS1zbGF0ZTtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHdoaXRlLXRwLTE1IDAgNnB4LCB0cmFuc3BhcmVudCA2cHggMTJweCk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cblx0XHQuZmMtdGl0bGUsXG5cdFx0LmZjLWNvbnRlbnQge1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQuZmMgLmZjLWxpc3QtaXRlbS5wcmFjdGljZS1sZWF2ZS1iYW5uZXIge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cblx0XHR0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMWY3O1xuXHRcdH1cblxuXHRcdC5mYy1ldmVudC1kb3Qge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHByYWN0aWNlLWxlYXZlLXNsYXRlO1xuXHRcdH1cblx0fVxuXG5cdC5wcmFjdGljZS1sZWF2ZS1saXN0LXRpdGxlIHtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICRwcmFjdGljZS1sZWF2ZS1pbms7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgUHVibGljIGhvbGlkYXlzXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmZjIC5ob2xpZGF5LWJhbm5lciB7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR0ZWFsO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXG5cdFx0LmZjLXRpdGxlLFxuXHRcdC5mYy1jb250ZW50IHtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LmZjIC5mYy1saXN0LWl0ZW0uaG9saWRheS1iYW5uZXIge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cblx0XHR0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkdGVhbCB0aW50KDkwJSkpO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIgdGQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJHRlYWwgdGludCg4NSUpKTtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cblx0XHQuZmMtZXZlbnQtZG90IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR0ZWFsO1xuXHRcdH1cblx0fVxuXG5cdC5ob2xpZGF5LWxpc3QtdGl0bGUge1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJHRlYWw7XG5cdH1cblxuXHQuZmMgdGguZmMtZGF5LWhlYWRlci5pcy1ob2xpZGF5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkdGVhbCB0aW50KDkwJSkpO1xuXHR9XG5cblx0LmZjIC5mYy1jb2wtaG9saWRheSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IG1heC1jb250ZW50O1xuXHRcdG1heC13aWR0aDogOTUlO1xuXHRcdG1hcmdpbjogNHB4IGF1dG8gMDtcblx0XHRwYWRkaW5nOiAxcHggOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHRlYWw7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHR9XG5cblx0LnRlYW0tZGF5LWhvbGlkYXkge1xuXHRcdHBhZGRpbmc6IDZweCAxMnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCR0ZWFsIHRpbnQoOTAlKSk7XG5cdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQvKiBUaGUgZGF5IGhlYWRlciBjYXJyaWVzIGl0IHRvbywgc28gaXQgc2hvd3Mgd2l0aCB0aGUgaG91cnMgYXdheSBzY3JvbGxlZCBvdXQgb2YgdmlldyAqL1xuXHQuZmMgdGguZmMtZGF5LWhlYWRlci5pcy1hd2F5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHR9XG5cblx0LmZjIC5mYy1jb2wtYXdheSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0d2lkdGg6IG1heC1jb250ZW50O1xuXHRcdG1heC13aWR0aDogOTUlO1xuXHRcdG1hcmdpbjogNHB4IGF1dG8gMDtcblx0XHRwYWRkaW5nOiAxcHggOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0fVxuXG5cdC8qIEEgYm9va2luZyBpbnNpZGUgaXRzIGNsaW5pY2lhbidzIGxlYXZlIC0gc29tZW9uZSBuZWVkcyB0byBtb3ZlIG9yIGNvdmVyIGl0LiAqL1xuXHQvKiBSYWlzZWQgYWJvdmUgLmZjIC5mYy1ldmVudCBhbmQgdGhlIHN0YXR1cyBzaGFkb3dzLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgcmVwbGFjZSB0aGUgcmluZy4gKi9cblx0LmZjIC5mYy1ldmVudC5hcHB0LWNsYXNoLFxuXHQudGVhbS1kYXkgLnRlYW0tYXBwdC5hcHB0LWNsYXNoIHtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJHJlZC1kYW5nZXItYWx0LCAwIDJweCA2cHggcmdiYSgyMTcsIDgzLCA3OSwgMC4zNSk7XG5cdH1cblxuXHQuYXBwdC1waWxsLWNsYXNoIHtcblx0XHRnYXA6IDNweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHdlZWsgdHVybnMgcGlsbHMgaW50byBkb3RzOyBhIGNsYXNoIHN0YXlzIGEgcmVkIGRvdCB3aXRoIGl0cyBtYXJrLiAqL1xuXHQuZmMgLmZjLWFnZW5kYVdlZWstdmlldyAuZmMtdGltZS1ncmlkLWV2ZW50IC5hcHB0LXBpbGwuYXBwdC1waWxsLWNsYXNoLFxuXHQudGVhbS1kYXkgLnRlYW0tYXBwdC5pcy1zaG9ydCAuYXBwdC1waWxsLmFwcHQtcGlsbC1jbGFzaCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LmZjLWRheS1ncmlkLWV2ZW50IC5hcHB0LXBpbGwtY2xhc2gge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdHBhZGRpbmc6IDAgNXB4O1xuXHRcdGZvbnQtc2l6ZTogMDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0fVxuXHR9XG5cblx0LnN0YXR1cy1jaGlwLWNsYXNoIHtcblx0XHRib3JkZXItY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuNDUpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0Y29sb3I6ICRkYW5nZXI7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cblx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cblx0XHRcdHN0cm9uZyB7XG5cdFx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogUmFpbCAqL1xuXHQuY2xpbmljaWFuLWF3YXkge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDFweCA3cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgyMTcsIDgzLCA3OSwgMC4zNSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHR9XG5cblx0LyogVGVhbSB2aWV3ICovXG5cdC50ZWFtLWRheSB7XG5cdFx0LnRlYW0tYXdheSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0YmFja2dyb3VuZDogJGF3YXktc3RyaXBlcztcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDNweCAwIDAgJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LnRlYW0tYXdheS1sYWJlbCB7XG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdFx0dG9wOiA1NHB4O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTtcblx0XHRcdG1hcmdpbjogNnB4IDAgMCA4cHg7XG5cdFx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDE2OSwgNjgsIDY2LCAwLjI1KTtcblx0XHR9XG5cblx0XHQudGVhbS1zZXNzaW9uIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHRyaWdodDogMDtcblx0XHRcdHotaW5kZXg6IDA7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHR9XG5cblx0XHQvKiBJbiB0aGUgc2Vzc2lvbidzIGZpcnN0IGZyZWUgc3RyZXRjaCAodG9wIHNldCBpbmxpbmUpLCBzbyBhcHBvaW50bWVudHMgbmV2ZXIgY292ZXIgaXQuIFRha2VzIHRoZVxuXHRcdCAgIHBvaW50ZXIgZm9yIGl0cyB0b29sdGlwOyBhIGNsaWNrIG9uIGl0IHN0aWxsIGJvb2tzLCBhcyB0aGUgY29sdW1uIGRvZXMuICovXG5cdFx0LnRlYW0tc2Vzc2lvbi1sYWJlbCB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiA4cHg7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDVweDtcblx0XHRcdG1heC13aWR0aDogY2FsYygxMDAlIC0gMTZweCk7XG5cdFx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMTAsIDM3LCA2NCwgMC4xOCk7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogYXV0bztcblx0XHRcdGN1cnNvcjogaGVscDtcblx0XHR9XG5cblx0XHQudGVhbS1jb2wtaGVhZC5pcy1hd2F5IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0fVxuXG5cdFx0LnRlYW0tY29sLWhlYWQuaXMtYXdheS1hbGwtZGF5IC50ZWFtLWNvbC1uYW1lIHtcblx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdH1cblxuXHRcdC50ZWFtLWNvbC1hd2F5IHtcblx0XHRcdGZsZXgtc2hyaW5rOiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBUZWFtIHZpZXcgLSBvbmUgY29sdW1uIHBlciBjbGluaWNpYW5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbnRlYW0tZGF5LXZpZXcge1xuXHRmbGV4OiAxO1xuXHRtaW4taGVpZ2h0OiAwO1xuXHRkaXNwbGF5OiBmbGV4O1xufVxuXG4vKiBTYW1lIGZvciB0aGUgYXZhaWxhYmlsaXR5IGVkaXRvcjogYXMgYSBwbGFpbiBibG9jayBpdCBncmV3IHRvIGl0cyBmdWxsIGhlaWdodCBhbmQgdGhlIHN0YWdlIGNsaXBwZWRcbiAgIGl0LCBzbyB0aGUgc2lkZSBwYW5lbCAod2Vla2x5IHBhdHRlcm4sIGFwcG9pbnRtZW50IHR5cGVzKSBuZXZlciBzY3JvbGxlZCBhbmQgaXRzIGZvb3Qgd2FzIGN1dCBvZmYuICovXG4uY2FsZW5kYXItc2hlbGwgLnBlcnNvbmFsLXN0YWdlIHBlcnNvbmFsLWNhbGVuZGFyIHtcblx0ZmxleDogMTtcblx0bWluLWhlaWdodDogMDtcblx0ZGlzcGxheTogZmxleDtcbn1cblxuLmNhbGVuZGFyLXNoZWxsIC50ZWFtLWRheSB7XG5cdGZsZXg6IDE7XG5cdG1pbi13aWR0aDogMDtcblx0bWluLWhlaWdodDogMDtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuXHQudGVhbS1kYXktc2Nyb2xsZXIge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRvdmVyZmxvdzogYXV0bztcblx0fVxuXG5cdC50ZWFtLWRheS1ncmlkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0d2lkdGg6IG1heC1jb250ZW50O1xuXHRcdG1pbi13aWR0aDogMTAwJTtcblx0fVxuXG5cdC50ZWFtLWRheS1oZWFkIHtcblx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdHRvcDogMDtcblx0XHR6LWluZGV4OiA1O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQudGVhbS1ndXR0ZXItaGVhZCB7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHRsZWZ0OiAwO1xuXHRcdHotaW5kZXg6IDY7XG5cdFx0ZmxleDogMCAwIDY0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0LnRlYW0tY29sLWhlYWQge1xuXHRcdGZsZXg6IDEgMCAyMTBweDtcblx0XHRtaW4td2lkdGg6IDIxMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiAxMnB4IDEycHggMTBweDtcblx0XHRib3JkZXItbGVmdDogMXB4IHNvbGlkICNlZWYxZjc7XG5cblx0XHQudGVhbS1jb2wtc3dhdGNoIHtcblx0XHRcdHdpZHRoOiAxMHB4O1xuXHRcdFx0aGVpZ2h0OiAxMHB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0fVxuXG5cdFx0LnRlYW0tY29sLW5hbWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC50ZWFtLWNvbC1jb3VudCB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdHBhZGRpbmc6IDJweCA4cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cdH1cblxuXHQudGVhbS1kYXktYm9keSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdH1cblxuXHQudGVhbS1ndXR0ZXIge1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0bGVmdDogMDtcblx0XHR6LWluZGV4OiA0O1xuXHRcdGZsZXg6IDAgMCA2NHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQudGVhbS1ob3VyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IDhweDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDNweCk7XG5cdFx0fVxuXHR9XG5cblx0LyogSG91ciBydWxlcyBldmVyeSAxMjBweCBhbmQgaGFsZi1ob3VyIHJ1bGVzIGJldHdlZW4gLSAycHggYSBtaW51dGUsIGFzIFBYX1BFUl9NSU5VVEUgaW5cblx0ICAgdGVhbURheVZpZXcuY29tcG9uZW50LmpzLiBEcmF3biBhcyBhIGJhY2tncm91bmQgc28gYSBsb25nIGRheSBjb3N0cyBubyBleHRyYSBlbGVtZW50cy4gKi9cblx0LnRlYW0tY29sIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZmxleDogMSAwIDIxMHB4O1xuXHRcdG1pbi13aWR0aDogMjEwcHg7XG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZWVmMWY3O1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNlNmVhZjIgMXB4LCB0cmFuc3BhcmVudCAxcHgpLFxuXHRcdFx0bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2YzZjVmOSAxcHgsIHRyYW5zcGFyZW50IDFweCk7XG5cdFx0YmFja2dyb3VuZC1zaXplOiAxMDAlIDEyMHB4LCAxMDAlIDYwcHg7XG5cdH1cblxuXHQmLmNhbi1ib29rIC50ZWFtLWNvbCB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cblx0LnRlYW0tZ2hvc3Qge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDRweDtcblx0XHRyaWdodDogNHB4O1xuXHRcdGhlaWdodDogMjBweDtcblx0XHQvKiBBYm92ZSB0aGUgYXBwb2ludG1lbnRzICh6LWluZGV4IDIpIGFuZCBzb2xpZCwgc28gdGhlIHRpbWUgcmVhZHMgb3ZlciBhbiBhcHBvaW50bWVudCdzIGVkZ2UuICovXG5cdFx0ei1pbmRleDogMztcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdHBhZGRpbmc6IDAgOHB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkbmF2eTtcblx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0fVxuXG5cdC8qIERyYWcgdG8gbW92ZTogdGhlIGNhcmQgc3RheXMgcHV0LCBmYWRlZCwgd2hpbGUgYSBkYXNoZWQgcHJldmlldyBmb2xsb3dzIHRoZSBwb2ludGVyIGFuZCBzYXlzXG5cdCAgIHRoZSBuZXcgdGltZS4gRHJhd24gYnkgdGVhbURheVZpZXcuY29tcG9uZW50LmpzIChzdGFydERyYWcgLyBtb3ZlRHJhZykuICovXG5cdCYuaXMtZHJhZ2dpbmcge1xuXHRcdGN1cnNvcjogZ3JhYmJpbmc7XG5cdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cblx0XHQudGVhbS1jb2wsXG5cdFx0LnRlYW0tYXBwdCB7XG5cdFx0XHRjdXJzb3I6IGdyYWJiaW5nO1xuXHRcdH1cblx0fVxuXG5cdC50ZWFtLWFwcHQuaXMtZHJhZy1zb3VyY2Uge1xuXHRcdG9wYWNpdHk6IDAuMzU7XG5cdH1cblxuXHQudGVhbS1kcmFnLXByZXZpZXcge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA0cHg7XG5cdFx0cmlnaHQ6IDRweDtcblx0XHR6LWluZGV4OiA0O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDFweDtcblx0XHRwYWRkaW5nOiA0cHggN3B4IDRweCA2cHg7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRuYXZ5O1xuXHRcdGJvcmRlci1sZWZ0OiA0cHggc29saWQgJG5hdnk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4IDdweCA3cHggNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4wOCk7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0LnRlYW0tZHJhZy10aW1lIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblxuXHRcdC50ZWFtLWRyYWctdGl0bGUge1xuXHRcdFx0Y29sb3I6ICMxZjJhNDQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblx0fVxuXG5cdC50ZWFtLWFwcHQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR6LWluZGV4OiAyO1xuXHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdFx0cGFkZGluZzogNHB4IDdweCA0cHggNnB4O1xuXHRcdC8qIFRoZSBzYW1lIGxpZ2h0IGNhcmQgYXMgdGhlIGdyaWQncyAodGludCBhbmQgZWRnZSBjb2xvdXIgaW5saW5lKS4gKi9cblx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlci1yYWRpdXM6IDRweCA3cHggN3B4IDRweDtcblx0XHRjb2xvcjogIzFmMmE0NDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgxMCwgMzcsIDY0LCAwLjA2KSwgMCAxcHggMnB4IHJnYmEoMTAsIDM3LCA2NCwgMC4wOCk7XG5cdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR6LWluZGV4OiAzO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xKSwgMCA0cHggMTJweCByZ2JhKDEwLCAzNywgNjQsIDAuMTYpO1xuXHRcdH1cblxuXHRcdC5hcHB0LXBpbGwsXG5cdFx0LmFwcHQtaW52b2ljZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgxMCwgMzcsIDY0LCAwLjEpO1xuXHRcdH1cblxuXHRcdC50ZWFtLWFwcHQtaGVhZCB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0LnRlYW0tYXBwdC10aW1lIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblxuXHRcdC5hcHB0LXBhdGllbnQtbGluayB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICMxZjJhNDQ7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQudGVhbS1hcHB0LW1ldGEge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGdhcDogOHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogMXB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0fVxuXG5cdFx0LnRlYW0tYXBwdC1wcmFjdGljZSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDRweDtcblxuXHRcdFx0LmFwcHQtc3dhdGNoIHtcblx0XHRcdFx0d2lkdGg6IDdweDtcblx0XHRcdFx0aGVpZ2h0OiA3cHg7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDFweCAkd2hpdGUtdHAtNzA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogQSB0ZW4tbWludXRlIHNsb3QgaGFzIHJvb20gZm9yIG9uZSBsaW5lOiBzdGFydCB0aW1lIGFuZCBuYW1lLCB3aXRoIHRoZSBzdGF0dXMgc2hydW5rIHRvIGFcblx0XHQgICBkb3Qgb24gdGhlIHJpZ2h0LWhhbmQgZW5kIHNvIGl0IG5ldmVyIGNvdmVycyB0aGUgbmFtZS4gKi9cblx0XHQmLmlzLXNob3J0IHtcblx0XHRcdHBhZGRpbmctdG9wOiAycHg7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMzRweDtcblxuXHRcdFx0LnRlYW0tYXBwdC1lbmQge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHQuYXBwdC1iYWRnZXMge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdHJpZ2h0OiA0cHg7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdFx0ZmxleC13cmFwOiBub3dyYXA7XG5cdFx0XHRcdGdhcDogM3B4O1xuXHRcdFx0fVxuXG5cdFx0XHQuYXBwdC1waWxsIHtcblx0XHRcdFx0d2lkdGg6IDEwcHg7XG5cdFx0XHRcdGhlaWdodDogMTBweDtcblx0XHRcdFx0cGFkZGluZzogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAwO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDJweCAkd2hpdGU7XG5cdFx0XHR9XG5cblx0XHRcdC5hcHB0LWludm9pY2Uge1xuXHRcdFx0XHR3aWR0aDogMTJweDtcblx0XHRcdFx0aGVpZ2h0OiAxMnB4O1xuXHRcdFx0XHRmb250LXNpemU6IDhweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQudGVhbS1ub3cge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGhlaWdodDogMDtcblx0XHR6LWluZGV4OiA0O1xuXHRcdGJvcmRlci10b3A6IDJweCBzb2xpZCAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRjb250ZW50OiBcIlwiO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogLTRweDtcblx0XHRcdHRvcDogLTVweDtcblx0XHRcdHdpZHRoOiA4cHg7XG5cdFx0XHRoZWlnaHQ6IDhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQudGVhbS1kYXktZW1wdHkge1xuXHRcdG1hcmdpbjogYXV0bztcblx0XHRwYWRkaW5nOiA1NHB4IDMycHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHRcdFx0Zm9udC1zaXplOiAzNHB4O1xuXHRcdFx0Y29sb3I6ICNkM2Q5ZTY7XG5cdFx0fVxuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAwIDAgOHB4O1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1heC13aWR0aDogNTJjaDtcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNTU7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBcHBvaW50bWVudCBtb2RhbFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmFwcG9pbnRtZW50LW1vZGFsIHtcblx0Lm1vZGFsLWRpYWxvZyB7XG5cdFx0d2lkdGg6IDEwODBweDtcblx0XHRtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSAzMnB4KTtcblx0XHRtYXJnaW46IDR2aCBhdXRvO1xuXHR9XG5cblx0Lm1vZGFsLWNvbnRlbnQge1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctbGc7XG5cdH1cbn1cblxuLyogLnNldHRpbmdzLXNoZWxsIGxheXMgaXRzIHJhaWwgYW5kIHBhbmUgb3V0IGluIGEgcm93OyBoZXJlIGl0IGlzIGhlYWRlciwgYm9keSwgYWN0aW9uIGJhci4gKi9cbi5zZXR0aW5ncy1zaGVsbC5hcHBvaW50bWVudC1zaGVsbCB7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdG1heC1oZWlnaHQ6IDkydmg7XG5cblx0LmFwcG9pbnRtZW50LWhlYWRlciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDE0cHg7XG5cdFx0LyogUm9vbSBvbiB0aGUgcmlnaHQgZm9yIHRoZSBtb2RhbCdzIGNsb3NlIGNyb3NzICguZGlzbWlzcyksIHdoaWNoIHNpdHMgb3ZlciB0aGUgY29ybmVyLiAqL1xuXHRcdHBhZGRpbmc6IDIwcHggNjRweCAxOHB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHQuYXBwdC1waWxsIHtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRcdHBhZGRpbmc6IDNweCAxMHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcblx0XHR9XG5cdH1cblxuXHQuYXBwb2ludG1lbnQtaGVhZGVyLXRleHQge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LyogVGhlIHNhbWUgcGFsZSBuYXZ5IGJhbmQgdGhlIHNldHRpbmdzIHBhbmVzIG9wZW4gd2l0aC4gKi9cblx0XHRoMyB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHRtYXJnaW46IDRweCAwIDEwcHg7XG5cdFx0XHRwYWRkaW5nOiA2cHggMTRweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQuYXBwb2ludG1lbnQtZXllYnJvdyB7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQuYXBwb2ludG1lbnQtd2hlbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHggMThweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogIzRhNTU2ODtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdHBhZGRpbmc6IDIwcHggMjhweCAyNHB4O1xuXHR9XG5cblx0LmFwcG9pbnRtZW50LWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4yZnIpIG1pbm1heCgwLCAxZnIpO1xuXHRcdGFsaWduLWl0ZW1zOiBzdGFydDtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQuYXBwb2ludG1lbnQtc2lkZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMjBweDtcblx0fVxuXG5cdC5zZXR0aW5ncy1jYXJkIHtcblx0XHRwYWRkaW5nOiAyMHB4IDIycHg7XG5cdH1cblxuXHQuYm9va2luZy1jYXJkIC5jYXJkLWJvZHkge1xuXHRcdGdhcDogMTRweDtcblx0fVxuXG5cdC5maWVsZC1ibG9jayB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQuY2hpcC1zZWxlY3Qge1xuXHRcdGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cdH1cblxuXHRkYXRlcGlja2VyIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdC8qIFJlYWQtb25seSBvbmx5IHNvIHRoZSBwaWNrZXIgaXMgdXNlZCByYXRoZXIgdGhhbiB0eXBlZCBvdmVyIC0gaXQgaXMgbm90IGRpc2FibGVkLCBzbyBpdFxuXHRcdCAgIHNob3VsZCBub3QgbG9vayBpdC4gKi9cblx0XHQuZm9ybS1jb250cm9sW3JlYWRvbmx5XSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR9XG5cdH1cblxuXHQvKiBBcHBvaW50bWVudCB0eXBlIHBpY2tlciAtIHVpLXNlbGVjdCAoc2VsZWN0aXplIHRoZW1lKSwgc28gZWFjaCB0eXBlIGNhbiBzaG93IGl0cyBjb2xvdXIgLSBkcmVzc2VkXG5cdCAgIGFzIHRoZSBzZXR0aW5ncyBmb3JtIGZpZWxkcyBhcm91bmQgdGhlbS4gKi9cblx0LnR5cGUtcGlja2VyIHtcblx0XHQuc2VsZWN0aXplLWlucHV0IHtcblx0XHRcdG1pbi1oZWlnaHQ6IDM4cHg7XG5cdFx0XHRwYWRkaW5nOiA4cHggMTJweDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXG5cdFx0XHQmLmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcblx0XHRcdH1cblxuXHRcdFx0PiBpbnB1dCB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuc2VsZWN0aXplLWRyb3Bkb3duIHtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1zbTtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0fVxuXG5cdFx0LnNlbGVjdGl6ZS1kcm9wZG93bi1jb250ZW50IHtcblx0XHRcdG1heC1oZWlnaHQ6IDI0MHB4O1xuXHRcdFx0cGFkZGluZzogNHB4IDA7XG5cdFx0fVxuXG5cdFx0LnVpLXNlbGVjdC1jaG9pY2VzLXJvdyA+IC5vcHRpb24ge1xuXHRcdFx0cGFkZGluZzogN3B4IDEycHg7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHJvdyBpdHNlbGYgaXMgcGlubmVkIHdoaXRlICghaW1wb3J0YW50IGluIF91aS1zZWxlY3QuY3NzKSwgc28gdGhlIGhpZ2hsaWdodCBnb2VzIG9uIGl0cyBvcHRpb24uICovXG5cdFx0LnVpLXNlbGVjdC1jaG9pY2VzLXJvdzpob3ZlciA+IC5vcHRpb24sXG5cdFx0LnVpLXNlbGVjdC1jaG9pY2VzLXJvdy5hY3RpdmUgPiAub3B0aW9uIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cbn1cblxuLyogVGhlIHBhdGllbnQgc2VhcmNoLCBzaGFyZWQgd2l0aCB0aGUgbmV3IHRhc2sgZm9ybSwgd2hpY2ggZmluZHMgaXRzIHBhdGllbnQgdGhlIHNhbWUgd2F5ICovXG4uc2V0dGluZ3Mtc2hlbGwuYXBwb2ludG1lbnQtc2hlbGwsXG4uc2V0dGluZ3Mtc2hlbGwudGFzay1jcmVhdGUge1xuXHQvKiBUaGUgcGF0aWVudCBzZWFyY2ggc3RhbmRzIGluIGZvciB0aGUgdGl0bGUsIHNvIGl0IGlzIHdpZGVyIGFuZCBpdHMgdGV4dCBsYXJnZXIuICovXG5cdC5wYXRpZW50LXBpY2tlci1maWVsZCB7XG5cdFx0ZmxleDogMSAxIDUyMHB4O1xuXHRcdG1heC13aWR0aDogNzAwcHg7XG5cdH1cblxuXHQucGF0aWVudC1waWNrZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiA0MnB4O1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAzNHB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMzRweDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHR9XG5cblx0XHQmLmlzLW9wZW4gLmZvcm0tY29udHJvbCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcblx0XHRcdGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LXBpY2tlci1pY29uIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogMTNweDtcblx0XHR0b3A6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHR9XG5cblx0LnBhdGllbnQtcGlja2VyLWNsZWFyIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0cmlnaHQ6IDhweDtcblx0XHR0b3A6IDUwJTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0d2lkdGg6IDI0cHg7XG5cdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LnBhdGllbnQtcmVzdWx0cyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMTAwJTtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdHotaW5kZXg6IDIwO1xuXHRcdG1heC1oZWlnaHQ6IDI4MHB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA0cHggMDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0Ym9yZGVyLXRvcDogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAwIDAgJGJvcmRlci1yYWRpdXMtc20gJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG5cdH1cblxuXHQucGF0aWVudC1yZXN1bHQge1xuXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHQmLmlzLWFjdGl2ZSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LXJlc3VsdHMtbm90ZSB7XG5cdFx0cGFkZGluZzogOXB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LyogVGhlIHNlYXJjaCBhbmQsIGJlc2lkZSBpdCwgdGhlIHdheSB0byByZWdpc3RlciBzb21lb25lIGl0IGRvZXMgbm90IGZpbmQgKi9cblx0LnBhdGllbnQtcGlja2VyLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblxuXHRcdC5wYXRpZW50LXBpY2tlciB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5wYXRpZW50LWNyZWF0ZS1idG4ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0aGVpZ2h0OiA0MnB4O1xuXHRcdHBhZGRpbmc6IDAgMTVweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC1zdHlsZTogbm9ybWFsO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXHR9XG5cblx0LnBhdGllbnQtb3B0aW9uLFxuXHQucGF0aWVudC1yZXN1bHQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogMTBweDtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQucGF0aWVudC1vcHRpb24tbmFtZSB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQucGF0aWVudC1vcHRpb24tZG9iIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHR9XG5cblx0XHQucGF0aWVudC1vcHRpb24tZWxzZXdoZXJlIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRwYWRkaW5nOiAxcHggOHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0XHRjb2xvcjogIzhhOTBhMztcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdH1cblx0fVxufVxuXG4uc2V0dGluZ3Mtc2hlbGwuYXBwb2ludG1lbnQtc2hlbGwge1xuXHQudHlwZS1vcHRpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDlweDtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQudHlwZS1uYW1lIHtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LnR5cGUtZHVyYXRpb24ge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDEycHg7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHR9XG5cdH1cblxuXHQudHlwZS1zd2F0Y2gge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogMTJweDtcblx0XHRoZWlnaHQ6IDEycHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCByZ2JhKDEwLCAzNywgNjQsIDAuMTIpO1xuXHR9XG5cblx0dGV4dGFyZWEuZm9ybS1jb250cm9sIHtcblx0XHRtaW4taGVpZ2h0OiA5NnB4O1xuXHR9XG5cblx0LmFkZGl0aW9uYWwtbWVzc2FnZSAuY291bnQtcmVtYWluaW5nIHtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC8qIFByb2dyZXNzIHRpY2tzIGFzIGEgdHdvLWNvbHVtbiBzZXQgb2YgY2hpcHMsIGVhY2ggY2FycnlpbmcgdGhlIHRpbWUgaXQgd2FzIHRpY2tlZC4gKi9cblx0LnByb2dyZXNzLXN0ZXBzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5wcm9ncmVzcy1zdGVwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMnB4IDhweDtcblx0XHRwYWRkaW5nOiA3cHggMTBweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblxuXHRcdC5wcm9ncmVzcy1zdGVwLW5hbWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQucHJvZ3Jlc3Mtc3RlcC10aW1lIHtcblx0XHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDIxcHg7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAjNmE3MzkxO1xuXG5cdFx0XHQmOmVtcHR5IHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucHJvZ3Jlc3Mtc3RlcC1taXNzZWQuc2VsZWN0ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDIxNywgODMsIDc5LCAwLjM1KTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdC5wcm9ncmVzcy1kaXZpZGVyIHtcblx0XHRtYXJnaW46IDE0cHggMCA4cHg7XG5cdFx0cGFkZGluZy10b3A6IDEycHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQucmVtaW5kZXItcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDlweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXG5cdFx0aSB7XG5cdFx0XHR3aWR0aDogMTZweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQucmVtaW5kZXItY2hhbm5lbCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXG5cdFx0XHRzbWFsbCB7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucmVtaW5kZXItdGltZSB7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cdH1cblxuXHQvKiBJbnZvaWNlczogZWFjaCBhIHN1bW1hcnkgcm93IHdpdGggaXRzIGJpbGxpbmcgaXRlbXMgYmVuZWF0aCBpdCAqL1xuXHQuaW52b2ljZS1ibG9jayB7XG5cdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0JjpsYXN0LW9mLXR5cGUge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2Utcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHR9XG5cblx0Lmludm9pY2UtaXRlbXMge1xuXHRcdG1hcmdpbjogOHB4IDAgMCAxMnB4O1xuXHRcdHBhZGRpbmctbGVmdDogMTJweDtcblx0XHRib3JkZXItbGVmdDogMnB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdCY6ZW1wdHkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQmLmlzLWNhbmNlbGxlZCB7XG5cdFx0XHRvcGFjaXR5OiAwLjU1O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogOHB4O1xuXHRcdHBhZGRpbmc6IDNweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW0tY29kZSB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0cGFkZGluZzogMCA2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdH1cblxuXHQuaW52b2ljZS1pdGVtLWRlc2Mge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW0tcXR5LFxuXHQuaW52b2ljZS1pdGVtLWRpc2NvdW50IHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW0tYW1vdW50IHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRtaW4td2lkdGg6IDY0cHg7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW0tc3VtbWFyeSB7XG5cdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdHBhZGRpbmctdG9wOiA1cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW1zLW5vdGUge1xuXHRcdHBhZGRpbmc6IDJweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC8qIFhlcm8ncyByZWZlcmVuY2UsIG9uIG9uZSBsaW5lIGFib3ZlIHRoZSBpdGVtczsgdGhlIHdob2xlIG9mIGl0IG9uIGhvdmVyICovXG5cdC5pbnZvaWNlLXJlZmVyZW5jZSB7XG5cdFx0cGFkZGluZzogMnB4IDA7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1zdGF0dXMge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDJweCA5cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5pbnZvaWNlLXN0YXR1cy1kcmFmdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogIzZhNzM5MTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuaW52b2ljZS1zdGF0dXMtYXdhaXRpbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdH1cblxuXHQuaW52b2ljZS1zdGF0dXMtb3ZlcmR1ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxNywgODMsIDc5LCAwLjM1KTtcblx0fVxuXG5cdC5pbnZvaWNlLXN0YXR1cy1wYWlkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTMwO1xuXHR9XG5cblx0Lmludm9pY2Utc3RhdHVzLWNhbmNlbGxlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuaW52b2ljZS1kYXRlcyB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQuaW52b2ljZS10b3RhbCB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cblx0XHQmLmlzLWNhbmNlbGxlZCB7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWNoaXAtb3V0c3RhbmRpbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcblx0fVxuXG5cdC5pbnZvaWNlLWNoaXAtcGFpZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTMwO1xuXHR9XG5cblx0LnJlbWluZGVyLWVtcHR5IHtcblx0XHRwYWRkaW5nOiA0cHggMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQucmVtaW5kZXItYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cdH1cblxuXHQuZGV0YWlsLXJvdyAuZGV0YWlsLWxhYmVsIHtcblx0XHRmbGV4LWJhc2lzOiAxMTBweDtcblx0XHR3aWR0aDogMTEwcHg7XG5cdH1cblxuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciB7XG5cdFx0cGFkZGluZzogMTJweCAyOHB4O1xuXG5cdFx0LmFjdGlvbi1iYXItc3RhcnQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxOHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwYXRpZW50J3MgbmFtZSBhbmQgdGhlIHdheSB0byB0aGVpciBkYXNoYm9hcmQsIHNpZGUgYnkgc2lkZSAqL1xuXHQuYXBwb2ludG1lbnQtdGl0bGUtcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDRweCAwIDEwcHg7XG5cblx0XHRoMyB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBhdGllbnQtbGluay1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZzogNXB4IDEzcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQvKiBEZWxldGU6IGEgZGVsaWJlcmF0ZSwgb3V0bGluZWQgYnV0dG9uIC0gdGhlIHNhbWUgc2hhcGUgYXMgQ2FuY2VsIGFuZCBTYXZlIC0gdGhhdCBhc2tzIGluIHBsYWNlLiAqL1xuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciAuYnRuLmJ0bi1kZWxldGUge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjE3LCA4MywgNzksIDAuNDUpO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogQWNyb3NzIHRoZSB3aG9sZSBiYXIgd2hpbGUgaXQgaXMgYXNrZWQ6IHRoZSBxdWVzdGlvbiAoYW5kIGFueSBjaG9pY2VzKSBvbiB0aGUgbGVmdCwgdGhlIGFuc3dlcnNcblx0ICAgdG9nZXRoZXIgb24gdGhlIHJpZ2h0IC0gc28gaWYgdGhlIGJhciBpcyB0b28gbmFycm93LCB0aGUgcGFpciB3cmFwcyBhcyBvbmUuICovXG5cdC5jb25maXJtLWRlbGV0ZSB7XG5cdFx0ZmxleDogMTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0LmNvbmZpcm0tZGVsZXRlLXRleHQgaSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogRGVsZXRlIHN3YXBzIHRoZSBiYXIncyBidXR0b25zIHdpdGggbmctaWYsIGFuZCBuZ0FuaW1hdGUgaG9sZHMgYSBsZWF2aW5nIGVsZW1lbnQgb24gc2NyZWVuIGZvciBhc1xuXHQgICBsb25nIGFzIGl0cyBDU1MgdHJhbnNpdGlvbiBydW5zICgwLjNzIG9uIC5idG4pIC0gc28gZm9yIGEgbW9tZW50IGJvdGggc2V0cyBzaG93ZWQuIE5vIHRyYW5zaXRpb25cblx0ICAgd2hpbGUgZW50ZXJpbmcgb3IgbGVhdmluZyBtYWtlcyB0aGUgc3dhcCBpbnN0YW50OyAhaW1wb3J0YW50IHRvIGJlYXQgdGhlIGJ1dHRvbnMnIG93biB0cmFuc2l0aW9uLiAqL1xuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciAubmctZW50ZXIsXG5cdC5zZXR0aW5ncy1hY3Rpb24tYmFyIC5uZy1sZWF2ZSB7XG5cdFx0dHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHR9XG5cblx0LmNvbmZpcm0tZGVsZXRlLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHR9XG5cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIgLmJ0bi5idG4tY29uZmlybS1kZWxldGUge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdHBhZGRpbmc6IDRweCAxOHB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3MtYWN0aW9uLWJhciAuY29uZmlybS1kZWxldGUgLmJ0bi5idG4tY2FuY2VsIHtcblx0XHR3aWR0aDogYXV0bztcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEF2YWlsYWJpbGl0eSAocGVyc29uYWxDYWxlbmRhcilcbi8qIEEgc2lkZSBwYW5lbCB0aGF0IHNheXMgd2hhdCB0aGUgYXZhaWxhYmlsaXR5IGFtb3VudHMgdG8gLSB0aGUgd2Vla2x5XG4vKiBwYXR0ZXJuIGFuZCB3aGF0IGlzIGNvbWluZyB1cCAtIGJlc2lkZSBhIEZ1bGxDYWxlbmRhciA0IHdlZWsuIEF2YWlsYWJsZVxuLyogdGltZSBpcyBhIHRpbnQgb2YgaXRzIHR5cGUncyBjb2xvdXI7IGxlYXZlIGlzIHN0cmlwZWQgcmVkLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNhbGVuZGFyLXNoZWxsIC5hdmFpbGFiaWxpdHkge1xuXHRmbGV4OiAxO1xuXHRtaW4taGVpZ2h0OiAwO1xuXHRkaXNwbGF5OiBmbGV4O1xuXG5cdC5hdmFpbGFiaWxpdHktc2lkZSB7XG5cdFx0ZmxleDogMCAwIDI2OHB4O1xuXHRcdHdpZHRoOiAyNjhweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAyMnB4O1xuXHRcdHBhZGRpbmc6IDE4cHggMTRweCAxOHB4IDE4cHg7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VlZjFmNztcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS13aG8tbGFiZWwsXG5cdC5hdmFpbGFiaWxpdHktc2VjdGlvbi10aXRsZSB7XG5cdFx0bWFyZ2luOiAwIDAgNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wN2VtO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS13aG8tbmFtZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjI1O1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS13aG8tcHJhY3RpY2Uge1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQuYXZhaWxhYmlsaXR5LWhpbnQge1xuXHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQuYXZhaWxhYmlsaXR5LXBhbGV0dGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC8qIEFsc28gLmZjLWV2ZW50IC0gdGhlIHBhbGV0dGUncyBEcmFnZ2FibGUga2V5cyBvbiBpdCAtIHNvIEZ1bGxDYWxlbmRhcidzIG93biBldmVudCBsb29rIGlzIHVuZG9uZS4gKi9cblx0LnBhbGV0dGUtaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOXB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA3cHggMTBweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y3Vyc29yOiBncmFiO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCA1MywgMjEwLCAwLjEyKTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRjdXJzb3I6IGdyYWJiaW5nO1xuXHRcdH1cblx0fVxuXG5cdC5wYWxldHRlLXN3YXRjaCB7XG5cdFx0d2lkdGg6IDEwcHg7XG5cdFx0aGVpZ2h0OiAxMHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0fVxuXG5cdC5wYWxldHRlLWxlYXZlIC5wYWxldHRlLXN3YXRjaCB7XG5cdFx0YmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRyZWQtZGFuZ2VyLWFsdCAwIDJweCwgI2Y2YzhjNiAycHggNHB4KTtcblx0fVxuXG5cdC5wYWxldHRlLWdyaXAge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogI2MzYzlkYTtcblx0fVxuXG5cdC5vdmVydmlldy1pdGVtIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTBweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdFx0cGFkZGluZzogN3B4IDhweDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y0ZjdmZTtcblx0XHR9XG5cdH1cblxuXHQub3ZlcnZpZXctZGF5IHtcblx0XHRmbGV4OiAwIDAgMzBweDtcblx0XHRwYWRkaW5nLXRvcDogMXB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQub3ZlcnZpZXctYm9keSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5vdmVydmlldy1uYW1lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQub3ZlcnZpZXctc3dhdGNoIHtcblx0XHR3aWR0aDogOHB4O1xuXHRcdGhlaWdodDogOHB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdG1hcmdpbi1yaWdodDogN3B4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblxuXHRcdCYuaXMtbGVhdmUge1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0YmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRyZWQtZGFuZ2VyLWFsdCAwIDJweCwgI2Y2YzhjNiAycHggNHB4KSAhaW1wb3J0YW50OyAvKiBvdmVyIHRoZSBpbmxpbmUgY29sb3VyLCB3aGljaCBpcyB0aGUgc29saWQga2V5ICovXG5cdFx0fVxuXHR9XG5cblx0Lm92ZXJ2aWV3LW1ldGEge1xuXHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQuYXZhaWxhYmlsaXR5LWVtcHR5IHtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMCA4cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDE2cHggMThweCAxNHB4O1xuXHR9XG5cblx0LmF2YWlsYWJpbGl0eS1rZXkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICM2YTczOTE7XG5cblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdH1cblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICM2YTczOTE7XG5cdFx0fVxuXHR9XG5cblx0LmtleS1zd2F0Y2gge1xuXHRcdHdpZHRoOiAxNHB4O1xuXHRcdGhlaWdodDogMTJweDtcblx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdH1cblxuXHQua2V5LXNsb3Qge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4xNik7XG5cdFx0Ym94LXNoYWRvdzogaW5zZXQgM3B4IDAgMCAkbmF2eTtcblx0fVxuXG5cdC5rZXktbGVhdmUge1xuXHRcdGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxNywgODMsIDc5LCAwLjI1KSAwIDNweCwgI2ZkZWNlYSAzcHggNnB4KTtcblx0XHRib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC5hdmFpbGFiaWxpdHktY2FsZW5kYXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQvKiBGdWxsQ2FsZW5kYXIgNCBldmVudHMgKi9cblx0LmZjIC5hdmFpbC1zbG90LFxuXHQuZmMgLmF2YWlsLWxlYXZlIHtcblx0XHRib3JkZXItd2lkdGg6IDAgMCAwIDNweDtcblx0XHRib3JkZXItc3R5bGU6IHNvbGlkO1xuXHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXG5cdFx0LmZjLWNvbnRlbnQge1xuXHRcdFx0cGFkZGluZzogMnB4IDRweCAxcHggNXB4O1xuXHRcdH1cblxuXHRcdC5mYy10aXRsZSB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblx0fVxuXG5cdC5mYyAuYXZhaWwtbGVhdmUge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxNywgODMsIDc5LCAwLjEpIDAgNnB4LCB0cmFuc3BhcmVudCA2cHggMTJweCk7XG5cdH1cblxuXHQuYXZhaWwtcmVwZWF0LWljb24ge1xuXHRcdG1hcmdpbi1sZWZ0OiA1cHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdG9wYWNpdHk6IDAuNjtcblx0fVxuXG5cdC5mYyAuZmMtbWlycm9yIHtcblx0XHRvcGFjaXR5OiAwLjg1O1xuXHR9XG5cblx0LyogUm9vbSBmb3IgdGhlIGFsbC1kYXkgcm93LCB3aGVyZSB3aG9sZSBkYXlzIG9mIGxlYXZlIHNpdCwgZXZlbiB3aGVuIGl0IGlzIGVtcHR5LiAqL1xuXHQuZmMgLmZjLWRheS1ncmlkIHtcblx0XHRtaW4taGVpZ2h0OiAxLjhyZW07XG5cdH1cbn1cblxuLyogVGhlIGVkaXRvciAqL1xuLmF2YWlsYWJpbGl0eS1tb2RhbCAubW9kYWwtZGlhbG9nIHtcblx0d2lkdGg6IDYyMHB4O1xufVxuXG4uc2V0dGluZ3Mtc2hlbGwuYXBwb2ludG1lbnQtc2hlbGwge1xuXHQuYXZhaWxhYmlsaXR5LWZpZWxkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTRweDtcblx0fVxuXG5cdC5hcHBvaW50bWVudC1oZWFkZXItdGV4dCBoMy5pcy1sZWF2ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdC5raW5kLXN3aXRjaCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0LmtpbmQtb3B0aW9uIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0PiBpIHtcblx0XHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRcdGZvbnQtc2l6ZTogMTdweDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdH1cblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICNjYmQ1ZTA7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblxuXHRcdFx0PiBpLFxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYua2luZC1sZWF2ZS5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuNDUpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZkZWNlYTtcblxuXHRcdFx0PiBpLFxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmZvcm0tY29udHJvbC5uZy1pbnZhbGlkLW1pbnV0ZS1zdGVwIHtcblx0XHRib3JkZXItY29sb3I6ICNlMDc5NmY7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjI0LCAxMjEsIDExMSwgMC4xNSk7XG5cdH1cblxuXHQucmFuZ2UtaW5wdXQge1xuXHRcdG1heC13aWR0aDogMzIwcHg7XG5cdH1cblxuXHQuZmllbGQtb3B0aW9uYWwge1xuXHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDA7XG5cdFx0Y29sb3I6ICNjM2M5ZGE7XG5cdH1cblxuXHQuY29uZmlybS1kZWxldGUgLmNoaXAtc2VsZWN0IHtcblx0XHRwYWRkaW5nOiA1cHggMTFweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFJlc3BvbnNpdmVcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcblx0LmNhbGVuZGFyLXNoZWxsIC5jYWxlbmRhci1zZWFyY2gge1xuXHRcdHdpZHRoOiAxODBweDtcblx0fVxufVxuXG4vKiBCZWxvdyB0aGlzIHRoZSBzZXR0aW5ncyBzaGVsbCB0dXJucyBpdHMgcmFpbCBpbnRvIGEgc3RyaXAgYWxvbmcgdGhlIHRvcCAoc2VlIF9zZXR0aW5ncy5jc3MpLiAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG5cdC5jYWxlbmRhci1zaGVsbCB7XG5cdFx0LyogVGhlIHJhaWwncyBmbGV4LWJhc2lzIGlzIGl0cyB3aWR0aCBiZXNpZGUgdGhlIHBhbmU7IHN0YWNrZWQgYWJvdmUgaXQsIGl0IHdvdWxkIGJlY29tZSBhIGhlaWdodC4gKi9cblx0XHQuY2FsZW5kYXItcmFpbCB7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblxuXHRcdC5taW5pLW1vbnRoLFxuXHRcdC5sZWdlbmQtaXRlbSxcblx0XHQuc2V0dGluZ3MtbmF2LWZvb3RlciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5jYWxlbmRhci1tYWluIHtcblx0XHRcdHBhZGRpbmc6IDEycHg7XG5cdFx0fVxuXG5cdFx0LnN0YXR1cy10b3RhbCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHR9XG5cblx0XHQvKiBDbGljayBvciBkcmFnIG9uIHRoZSBjYWxlbmRhciBzdGlsbCBhZGRzOyB0aGUgb3ZlcnZpZXcgZ2l2ZXMgd2F5IHRvIHRoZSB3ZWVrLiAqL1xuXHRcdC5hdmFpbGFiaWxpdHkgLmF2YWlsYWJpbGl0eS1zaWRlIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmF2YWlsYWJpbGl0eS1rZXkge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQuc2V0dGluZ3Mtc2hlbGwuYXBwb2ludG1lbnQtc2hlbGwge1xuXHRcdC5hcHBvaW50bWVudC1ncmlkIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHRcdH1cblxuXHRcdC5hcHBvaW50bWVudC1oZWFkZXIsXG5cdFx0LnNldHRpbmdzLXBhbmUtYm9keSxcblx0XHQuc2V0dGluZ3MtYWN0aW9uLWJhciB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDE2cHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAxNnB4O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFJvb21zIChvbiBhcHBvaW50bWVudHMsIGluIHRoZSByYWlsLCBhbmQgaW4gdGhlIGJvb2tpbmcgZGlhbG9nKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNhbGVuZGFyLXNoZWxsIHtcblx0LyogVGhlIHJvb20gYW4gYXBwb2ludG1lbnQgaXMgaW4sIG9uIGEgbGluZSB1bmRlciB0aGUgcGF0aWVudCdzIG5hbWUuICovXG5cdC5mYyAuYXBwdC1yb29tIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Y29sb3I6ICM0YTU1Njg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG5cdFx0LmFwcHQtc3dhdGNoIHtcblx0XHRcdHdpZHRoOiA3cHg7XG5cdFx0XHRoZWlnaHQ6IDdweDtcblx0XHR9XG5cdH1cblxuXHQubm90aWNlLWFjdGlvbnMge1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0fVxufVxuXG4vKiBUd28gYXBwb2ludG1lbnRzIGluIG9uZSByb29tIGF0IG9uY2UgLSBhbiBhbWJlciByaW5nLCBzbyBpdCBpcyBub3QgbWlzdGFrZW4gZm9yIHRoZSByZWQgb2YgbGVhdmUuICovXG4uY2FsZW5kYXItc2hlbGwgLmZjIC5mYy1ldmVudC5hcHB0LXJvb20tY2xhc2gsXG4udGVhbS1kYXkgLnRlYW0tYXBwdC5hcHB0LXJvb20tY2xhc2gge1xuXHRib3gtc2hhZG93OiAwIDAgMCAycHggJHllbGxvdy1jdGEsIDAgMnB4IDZweCByZ2JhKDI1NSwgMTcxLCAwLCAwLjM1KTtcbn1cblxuLnRlYW0tZGF5IC50ZWFtLWFwcHQtcm9vbSB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDRweDtcblxuXHQuYXBwdC1zd2F0Y2gge1xuXHRcdHdpZHRoOiA3cHg7XG5cdFx0aGVpZ2h0OiA3cHg7XG5cdH1cbn1cblxuLnNldHRpbmdzLXNoZWxsLmFwcG9pbnRtZW50LXNoZWxsIHtcblx0LyogV2hldGhlciBlYWNoIHJvb20gaXMgZnJlZSBhdCB0aGUgdGltZSBwaWNrZWQsIGF0IHRoZSByaWdodCBvZiBpdHMgcm93IGluIHRoZSBwaWNrZXIuICovXG5cdC5yb29tLXN0YXRlIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRwYWRkaW5nLWxlZnQ6IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQmLnJvb20tZnJlZSB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cblx0XHQmLnJvb20tYnVzeSB7XG5cdFx0XHRjb2xvcjogJGRhbmdlcjtcblx0XHR9XG5cdH1cblxuXHQucm9vbS1waWNrZXIuaXMtYnVzeSAuc2VsZWN0aXplLWlucHV0IHtcblx0XHRib3JkZXItY29sb3I6ICR5ZWxsb3ctY3RhO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDI1NSwgMTcxLCAwLCAwLjE1KTtcblx0fVxuXG5cdC5yb29tLWJ1c3ktbm90aWNlIHtcblx0XHQucm9vbS1zdWdnZXN0aW9ucyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRtYXJnaW46IDEwcHggMCA4cHg7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdH1cblxuXHRcdC5yb29tLWRvdWJsZS1ib29rIHtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0LmNhbGVuZGFyLXNoZWxsIC5jYWxlbmRhci1sb2FkaW5nIHNwYW4ge1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0b3BhY2l0eTogMC40O1xuXHRcdGFuaW1hdGlvbjogbm9uZTtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQYXRpZW50IEZvcm1zIGJ1aWxkZXIgKHN0YWZmLWZhY2luZyBtb2RhbClcbi8qIEV2ZXJ5dGhpbmcgaGVyZSBpcyBzY29wZWQgdG8gYC5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zYCBzbyBpdCBzaXRzXG4vKiBvbiB0b3Agb2YgX3NldHRpbmdzLmNzcyByYXRoZXIgdGhhbiBiZXNpZGUgaXQgLSB0aGUgbGVmdCByYWlsLCBwYW5lIGJvZHksXG4vKiBhY3Rpb24gYmFyLCBjYXJkcywgY2hpcHMgYW5kIGZvcm0gY29udHJvbHMgYWxsIGNvbWUgZnJvbSB0aGVyZS4gVGhpcyBmaWxlXG4vKiBvbmx5IGFkZHMgd2hhdCB0aGUgZm9ybSBidWlsZGVyIG5lZWRzIHRoYXQgdGhlIHNldHRpbmdzIHNjcmVlbnMgZG8gbm90OlxuLyogdGhlIHF1ZXN0aW9uIGNhcmRzLCB0aGUgcHJldmlldyBibG9ja3MgYW5kIHRoZSBhbnN3ZXIgbGlzdC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogRW50ZXIgb25seSAtIHNlZSAucGYtcGFuZSBiZWxvdyBmb3Igd2h5IHRoZSBsZWF2ZSBwaGFzZSBoYXMgdG8gc3RheSBiYXJlLiAqL1xuQGtleWZyYW1lcyBwZi1wYW5lLWluIHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNnB4KTtcblx0fVxuXG5cdHRvIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcblx0fVxufVxuXG4vKiBObyBtZC1kaWFsb2ctYWN0aW9uczogdGhlIHRvb2xiYXIncyBYIGRpc21pc3NlcywgYW5kIHNlbmRpbmcgYmVsb25ncyB3aXRoIHRoZVxuICAgcHJldmlldyBvZiB0aGUgdGhpbmcgYmVpbmcgc2VudCByYXRoZXIgdGhhbiBpbiBhIGZvb3RlciB0aGF0IHNpdHMgdW5kZXIgdGhlXG4gICBidWlsZGVyIGFuZCB0aGUgYW5zd2VycyBsaXN0IHRvby4gKi9cbi5wYXRpZW50LWZvcm1zLWRpYWxvZyB7XG5cdG1pbi13aWR0aDogODIlO1xuXHR3aWR0aDogODIlO1xuXHRoZWlnaHQ6IDg4dmg7XG5cdG1heC1oZWlnaHQ6IDkydmg7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlci10b3Atd2lkdGg6IDA7XG59XG5cbi5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zIHtcblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgTGVmdCByYWlsXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnNldHRpbmdzLW5hdiB7XG5cdFx0ZmxleDogMCAwIDI4OHB4O1xuXHRcdHdpZHRoOiAyODhweDtcblx0fVxuXG5cdC8qIFRlbXBsYXRlIG5hbWVzIHJ1biBsb25nLCBzbyB0aGUgZ3JvdXAgdGl0bGUgZ2V0cyB0aGUgZnVsbCB3aWR0aCBhbmRcblx0ICAgZWxsaXBzZXMgcmF0aGVyIHRoYW4gd3JhcHBpbmcgaW50byB0aGUgY2hldnJvbi4gKi9cblx0LnNldHRpbmdzLW5hdi1ncm91cC10aXRsZSB7XG5cdFx0Lm5hdi1ncm91cC1uYW1lIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjAxZW07XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0Jjpub3QoLmNvbGxhcHNlZCkgLm5hdi1ncm91cC1uYW1lIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgXCJDcmVhdGUgTmV3IFRlbXBsYXRlXCIgZW50cnkgaXMgYW4gYWN0aW9uLCBub3QgYSBzZWN0aW9uLCBzbyBpdCByZWFkc1xuXHQgICBhcyBhIGJ1dHRvbiBhdCB0aGUgdG9wIG9mIHRoZSByYWlsIHJhdGhlciB0aGFuIGFub3RoZXIgbmF2IHJvdy4gKi9cblx0LnNldHRpbmdzLW5hdi1ncm91cC5uYXYtZ3JvdXAtY3JlYXRlIHtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdH1cblxuXHQvKiBOb3RoaW5nIHRvIGRpdmlkZSBmcm9tLiAqL1xuXHQuc2V0dGluZ3MtbmF2LmlzLWVtcHR5IC5uYXYtZ3JvdXAtY3JlYXRlIHtcblx0XHRib3JkZXItYm90dG9tOiBub25lO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQubmF2LWVtcHR5LW5vdGUge1xuXHRcdHBhZGRpbmc6IDRweCAxNnB4IDIwcHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXG5cdFx0aSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRcdGNvbG9yOiAjZDNkOWU2O1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0XHR9XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdH1cblxuXHRcdHNwYW4ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cdFx0fVxuXHR9XG5cblx0Lm5hdi1jcmVhdGUtaXRlbSB7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuYWN0aXZlIHtcblx0XHRcdGJvcmRlci1zdHlsZTogc29saWQ7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFBhbmUgc2NhZmZvbGRpbmdcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiBTY29wZWQgdG8gLm5nLWVudGVyLCBub3QgdGhlIGJhcmUgY2xhc3MuIG5nQW5pbWF0ZSByZWFkcyB3aGF0ZXZlciBhbmltYXRpb25cblx0ICAgaXMgY29tcHV0ZWQgb24gdGhlIGVsZW1lbnQgZHVyaW5nIGVhY2ggcGhhc2UsIHNvIGRlY2xhcmluZyBpdCBvbiAucGYtcGFuZVxuXHQgICBpdHNlbGYgbWFkZSBpdCBhcHBseSB0byBuZy1sZWF2ZSBhcyB3ZWxsIC0gdGhlIG91dGdvaW5nIHBhbmUgd2FzIGhlbGQgaW4gdGhlXG5cdCAgIERPTSBmb3IgdGhlIGZ1bGwgMjIwbXMgYW5kIGJvdGggcGFuZXMgd2VyZSBvbiBzY3JlZW4gdG9nZXRoZXIuIFdpdGggdGhlXG5cdCAgIGxlYXZlIHBoYXNlIGNhcnJ5aW5nIG5vIGFuaW1hdGlvbiBpdCByZXNvbHZlcyBhdCB6ZXJvIGR1cmF0aW9uIGFuZCBnb2VzIGluXG5cdCAgIHRoZSBzYW1lIGZyYW1lOyBkaXNwbGF5Om5vbmUgY292ZXJzIHRoZSBmcmFtZSBuZ0FuaW1hdGUgbmVlZHMgdG8gZmx1c2guICovXG5cdC5wZi1wYW5lLm5nLWVudGVyIHtcblx0XHRhbmltYXRpb246IHBmLXBhbmUtaW4gMjIwbXMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpIGJvdGg7XG5cdH1cblxuXHQucGYtcGFuZS5uZy1sZWF2ZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0XHRhbmltYXRpb246IG5vbmU7XG5cdFx0dHJhbnNpdGlvbjogbm9uZTtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBRdWVzdGlvbiBjYXJkcyAoY3JlYXRlIC8gZWRpdClcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQucGYtcXVlc3Rpb24tbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTZweDtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdH1cblxuXHQucGYtcXVlc3Rpb24tY2FyZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdFx0cGFkZGluZzogMThweCAyMHB4IDIwcHg7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4xOHMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMThzIGVhc2UsIG9wYWNpdHkgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy13aXRoaW4ge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDUzLCAyMTAsIDAuMDgpO1xuXHRcdH1cblxuXHRcdC8qIERyYWctYW5kLWRyb3AgcmVvcmRlcmluZyAoZHJhZ1Jlb3JkZXIgZGlyZWN0aXZlKTogdGhlIGNhcmQgYmVpbmcgbW92ZWQgZmFkZXMsIGFuZCBhIG5hdnlcblx0XHQgICBsaW5lIGluIHRoZSBnYXAgYmV0d2VlbiBjYXJkcyBzaG93cyB3aGVyZSBpdCB3aWxsIGxhbmQuICovXG5cdFx0Ji5pcy1kcmFnZ2luZyB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ7XG5cdFx0fVxuXG5cdFx0Ji5kcm9wLWJlZm9yZTo6YmVmb3JlLFxuXHRcdCYuZHJvcC1hZnRlcjo6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRoZWlnaHQ6IDNweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDJweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuZHJvcC1iZWZvcmU6OmJlZm9yZSB7XG5cdFx0XHR0b3A6IC0xMHB4O1xuXHRcdH1cblxuXHRcdCYuZHJvcC1hZnRlcjo6YWZ0ZXIge1xuXHRcdFx0Ym90dG9tOiAtMTBweDtcblx0XHR9XG5cdH1cblxuXHQuZHJhZy1yZW9yZGVyLWhhbmRsZSB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0cGFkZGluZzogNHB4IDJweDtcblx0XHRjb2xvcjogI2MzYzlkYTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0Y3Vyc29yOiBncmFiO1xuXHRcdHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZSB7XG5cdFx0XHRjdXJzb3I6IGdyYWJiaW5nO1xuXHRcdH1cblx0fVxuXG5cdC5wZi1xdWVzdGlvbi1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAxNHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdH1cblxuXHQucGYtaW5kZXgtYmFkZ2Uge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHdpZHRoOiAyNnB4O1xuXHRcdGhlaWdodDogMjZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQucGYtcXVlc3Rpb24tbGFiZWwge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0LnBmLXF1ZXN0aW9uLXRvb2xzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxuXHQvKiBVcCAvIERvd24gLyBSZW1vdmUgd2VyZSB0aHJlZSBgYnRuLWxpbmtgIHdvcmRzIGluIGEgcm93LCB3aGljaCByZWFkIGFzIGJvZHlcblx0ICAgY29weSBhbmQgcHVzaGVkIHRoZSBjYXJkIGhlYWRlciBvdXQgb2YgbGluZS4gU3F1YXJlIGljb24gYnV0dG9ucyBrZWVwIHRoZVxuXHQgICBoZWFkZXIgb25lIGxpbmUgdGFsbCBhdCBhbnkgcXVlc3Rpb24gY291bnQuICovXG5cdC5wZi1pY29uLWJ0biB7XG5cdFx0d2lkdGg6IDMwcHg7XG5cdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZSwgY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdG9wYWNpdHk6IDAuMzU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblxuXHRcdCYuZGFuZ2VyOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZGVjZWE7XG5cdFx0XHRib3JkZXItY29sb3I6IHJnYmEoMjE3LCA4MywgNzksIDAuMyk7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qIEJveGVkIC5jb250cm9sLWxhYmVsICsgLmZvcm0tY29udHJvbCBmcm9tIF9zZXR0aW5ncy5jc3MgcmF0aGVyIHRoYW5cblx0ICAgbWQtaW5wdXQtY29udGFpbmVyLiBBIE1hdGVyaWFsIGZsb2F0aW5nIGxhYmVsIHNpdHMgYWJvdmUgdGhlIGlucHV0IGluIHRoZVxuXHQgICBjb250YWluZXIncyB0b3AgbWFyZ2luLCBzbyBpdCBjbGlwcGVkIGFnYWluc3QgdGhlIGNhcmQsIGFuZCBhbiB1bmRlcmxpbmUtb25seVxuXHQgICBmaWVsZCBvbiBhIHdoaXRlIGNhcmQgZ2l2ZXMgbm8gc2lnbiB0aGF0IGl0IGlzIHNvbWV3aGVyZSB5b3UgY2FuIHR5cGUuICovXG5cdC5wZi1maWVsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0c2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRoZWlnaHQ6IDM4cHg7XG5cdFx0XHRwYWRkaW5nLXRvcDogMDtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBncmV5ZWQgb3BlcmF0b3IgZmllbGQgaXMgYSByZWFkb3V0LCBub3Qgc29tZXRoaW5nIHRvIGZpbGwgaW4uICovXG5cdFx0LmZvcm0tY29udHJvbDpkaXNhYmxlZCB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogQSB0eXBlIHBpY2tlciB3aXRoIGZpdmUgc2hvcnQgbGFiZWxzIGRvZXMgbm90IG5lZWQgdGhlIGZ1bGwgY2FyZCB3aWR0aC4gKi9cblx0LnBmLXR5cGUtZmllbGQge1xuXHRcdG1heC13aWR0aDogMjgwcHg7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQW5zd2VyIG9wdGlvbnNcblx0LyogT25lIHJvdyBwZXIgb3B0aW9uIHJhdGhlciB0aGFuIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgc28gZWFjaCBvbmUgY2FuIGJlXG5cdC8qIGVkaXRlZCwgYWRkZWQgYW5kIHJlbW92ZWQgb24gaXRzIG93biAtIGFuZCB0aGUgbWFya2VyIHNob3dzIGhvdyB0aGUgcGF0aWVudFxuXHQvKiB3aWxsIHNlZSBpdCwgcmFkaW8gZm9yIHNpbmdsZSBjaG9pY2UsIGJveCBmb3IgbXVsdGlwbGUuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLW9wdGlvbnMtZmllbGQge1xuXHRcdC5jb250cm9sLWxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0XHRnYXA6IDhweDtcblx0XHR9XG5cblx0XHQucGYtb3B0aW9ucy1oaW50IHtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDA7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdFx0Y29sb3I6ICNiNmJjY2Q7XG5cdFx0fVxuXHR9XG5cblx0LnBmLW9wdGlvbi1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogOHB4O1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC5wZi1pY29uLWJ0biB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHR9XG5cdH1cblxuXHQucGYtb3B0aW9uLW1hcmtlciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0d2lkdGg6IDE1cHg7XG5cdFx0aGVpZ2h0OiAxNXB4O1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkICNjM2M5ZGE7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblxuXHRcdCYuaXMtY2hlY2tib3gge1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBBZGQgYWZmb3JkYW5jZXNcblx0LyogQmVzaWRlIG9yIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgdGhleSBleHRlbmQgcmF0aGVyIHRoYW4gaW4gdGhlIGFjdGlvbiBiYXIgLVxuXHQvKiBhZGRpbmcgaXMgcGFydCBvZiB3cml0aW5nIHRoZSBmb3JtLCBub3Qgb25lIG9mIHRoZSB0d28gdGhpbmdzIHlvdSBkbyB0byBpdFxuXHQvKiB3aGVuIHlvdSBoYXZlIGZpbmlzaGVkLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1wYWxldHRlLXRpbGUsXG5cdC5wZi1hZGQtaW5saW5lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkIHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBidWlsZGVyIGlzIHRoZSBjYXJkIGxpc3Qgd2l0aCB0aGUgY29tcG9uZW50IHBhbGV0dGUgdG8gaXRzIHJpZ2h0LiBUaGVcblx0ICAgcGFsZXR0ZSBzdGlja3MgdG8gdGhlIHRvcCBvZiB0aGUgc2Nyb2xsaW5nIHBhbmUgc28gaXQgaXMgaW4gcmVhY2ggYXQgYW55IGxlbmd0aC4gKi9cblx0LnBmLWJ1aWxkZXItbGF5b3V0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMjBweDtcblx0fVxuXG5cdC5wZi1idWlsZGVyLW1haW4ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LyogQm94ZWQgbGlrZSBhIHF1ZXN0aW9uIGNhcmQgc28gaXQgcmVhZHMgYXMgaXRzIG93biBwYW5lbCBiZXNpZGUgdGhlIGxpc3QuICovXG5cdC5wZi1jb21wb25lbnQtcGFsZXR0ZSB7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdFx0ZmxleDogMCAwIDIyMHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdHBhZGRpbmc6IDE0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdH1cblxuXHQucGYtcGFsZXR0ZS10aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQucGYtcGFsZXR0ZS10aWxlIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEycHggMTRweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRcdD4gLmZhIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0d2lkdGg6IDE4cHg7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0c21hbGwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgUmVndWxhcicsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cdH1cblxuXHQucGYtcGFsZXR0ZS10aWxlLXRleHQge1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC8qIEluc2V0IHRvIHRoZSB3aWR0aCBvZiB0aGUgaW5wdXRzIGl0IGV4dGVuZHMsIHNvIGl0IGxpbmVzIHVwIHVuZGVyIHRoZW1cblx0ICAgcmF0aGVyIHRoYW4gdW5kZXIgdGhlIG1hcmtlciBjb2x1bW4uICovXG5cdC5wZi1hZGQtaW5saW5lIHtcblx0XHQvKiBpbmxpbmUtZmxleCwgbm90IHRoZSBzaGFyZWQgZmxleDogYSBibG9jay1sZXZlbCBmbGV4IGJveCB3b3VsZCBzdHJldGNoIHRvXG5cdFx0ICAgdGhlIGNhcmQgd2lkdGggcmVnYXJkbGVzcyBvZiB3aWR0aDphdXRvLiAqL1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1hcmdpbjogMnB4IDAgMCAyNXB4O1xuXHRcdHBhZGRpbmc6IDhweCAxNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdG1kLWNoZWNrYm94LnBmLXJlcXVpcmVkIHtcblx0XHRtYXJnaW46IDJweCAwIDA7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgXCJPdGhlclwiIG9wdGlvblxuXHQvKiBTaXRzIGluIHRoZSBvcHRpb24gbGlzdCBhcyB0aGUgcm93IGl0IHdpbGwgYmVjb21lLCByYXRoZXIgdGhhbiBhcyBhIHNldHRpbmdcblx0Lyogc29tZXdoZXJlIGVsc2UgLSBidXQgdGludGVkIGFuZCBkYXNoZWQgc28gaXQgcmVhZHMgYXMgZ2VuZXJhdGVkIHJhdGhlciB0aGFuXG5cdC8qIGFzIGFub3RoZXIgcm93IHRvIHR5cGUgaW4uXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLW9wdGlvbi1yb3ctb3RoZXIge1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdHBhZGRpbmc6IDEwcHggMTJweCAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjgpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZjZmY7XG5cblx0XHQucGYtb3B0aW9uLW1hcmtlciB7XG5cdFx0XHRtYXJnaW4tdG9wOiA5cHg7XG5cdFx0fVxuXHR9XG5cblx0LnBmLW90aGVyLXJvdy1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdH1cblx0fVxuXG5cdC5wZi1vdGhlci1yb3ctbGFiZWwge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDdweDtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdFx0Y29sb3I6ICNiNmJjY2Q7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHR3byBhZGQgYnV0dG9ucyBzaXQgc2lkZSBieSBzaWRlIHVuZGVyIHRoZSBsaXN0LiAqL1xuXHQucGYtb3B0aW9uLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiAycHggMCAwIDI1cHg7XG5cblx0XHQucGYtYWRkLWlubGluZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEltYWdlIG9wdGlvbiByb3dzXG5cdC8qIE9uZSByb3cgcGVyIGltYWdlIG9wdGlvbiwgbWlycm9yaW5nIHRoZSB0ZXh0IG9wdGlvbiByb3dzIGFib3ZlIGl0IC0gYW4gaW1hZ2Vcblx0LyogcXVlc3Rpb24gaXMgYSBjaG9pY2UgcXVlc3Rpb24gd2hvc2Ugb3B0aW9ucyBoYXBwZW4gdG8gYmUgcGljdHVyZXMuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLWltYWdlLW9wdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmJmY2ZmO1xuXHR9XG5cblx0LnBmLWltYWdlLXRodW1iIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogODRweDtcblx0XHRoZWlnaHQ6IDY0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdGltZyB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG9iamVjdC1maXQ6IGNvdmVyO1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0fVxuXG5cdFx0LnBmLWltYWdlLXRodW1iLWVtcHR5IHtcblx0XHRcdGNvbG9yOiAjYzNjOWRhO1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5wZi1pbWFnZS1vcHRpb24tZmllbGRzIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHRpbnB1dFt0eXBlPVwiZmlsZVwiXSB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG5cblx0LnBmLWltYWdlLXN0YXR1cyB7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cblx0XHQmLndhcm5pbmcge1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIENvbmRpdGlvbmFsIHZpc2liaWxpdHkgYmxvY2tcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQucGYtY29uZGl0aW9uYWwge1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cdFx0cGFkZGluZzogMTRweCAxNnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y3ZmFmZjtcblxuXHRcdG1kLWNoZWNrYm94IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQucGYtY29uZGl0aW9uYWwtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDAgMTZweDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdHBhZGRpbmctdG9wOiAxNHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBkYXNoZWQgcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXG5cdFx0LnBmLWZpZWxkIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHR9XG5cblx0XHQucGYtY29uZC1zb3VyY2Uge1xuXHRcdFx0ZmxleDogMSAxIDMyMHB4O1xuXHRcdFx0bWluLXdpZHRoOiAyNDBweDtcblx0XHR9XG5cblx0XHQucGYtY29uZC1vcGVyYXRvcixcblx0XHQucGYtY29uZC1vcHRpb24ge1xuXHRcdFx0ZmxleDogMCAxIDIyMHB4O1xuXHRcdFx0bWluLXdpZHRoOiAxODBweDtcblx0XHR9XG5cblx0XHQucGYtY29uZC1ub3RlIHtcblx0XHRcdGZsZXg6IDEgMSAyNjBweDtcblx0XHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0XHRwYWRkaW5nLXRvcDogMThweDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQ2hlY2sgYW5zd2Vyc1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5wZi1hbnN3ZXItbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTRweDtcblx0fVxuXG5cdC5wZi1hbnN3ZXItY2FyZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdFx0cGFkZGluZzogMThweCAyMHB4O1xuXHR9XG5cblx0LnBmLWFuc3dlci1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cblx0XHQucGYtYW5zd2VyLXBhdGllbnQge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjMmQzNzQ4O1xuXHRcdH1cblxuXHRcdC5wZi1hbnN3ZXItZG9iIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQucGYtc3VibWl0dGVkLWF0IHtcblx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXG5cdFx0XHQmLm11dGVkIHtcblx0XHRcdFx0Y29sb3I6ICNiNmJjY2Q7XG5cdFx0XHRcdGZvbnQtc3R5bGU6IGl0YWxpYztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucGYtYW5zd2VyLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDE2cHg7XG5cdFx0cGFkZGluZzogMTFweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cblx0XHQucGYtYW5zd2VyLXF1ZXN0aW9uIHtcblx0XHRcdGZsZXg6IDAgMCA0NSU7XG5cdFx0XHRtYXgtd2lkdGg6IDQ1JTtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdH1cblxuXHRcdC5wZi1hbnN3ZXItdmFsdWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0d29yZC1icmVhazogYnJlYWstd29yZDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQW5zd2VyIGNoYXJ0XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnBmLWNoYXJ0LWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDE0cHg7XG5cdH1cblxuXHQucGYtY2hhcnQtY2FyZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XG5cdFx0cGFkZGluZzogMThweCAyMHB4O1xuXHR9XG5cblx0LnBmLWNoYXJ0LWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXG5cdFx0LnBmLWNoYXJ0LXF1ZXN0aW9uIHtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHR9XG5cblx0XHQucGYtY2hhcnQtdG90YWwge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdC5wZi1jaGFydC1iYXJzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0LnBmLWNoYXJ0LWJhci1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cblx0XHQucGYtY2hhcnQtYmFyLWxhYmVsIHtcblx0XHRcdGZsZXg6IDAgMCAyOCU7XG5cdFx0XHRtYXgtd2lkdGg6IDI4JTtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5wZi1jaGFydC1iYXItdHJhY2sge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGhlaWdodDogMTJweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlZWYxZjc7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0fVxuXG5cdFx0LnBmLWNoYXJ0LWJhci1maWxsIHtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdG1pbi13aWR0aDogMnB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0XHRcdHRyYW5zaXRpb246IHdpZHRoIDIyMG1zIGVhc2U7XG5cdFx0fVxuXG5cdFx0LnBmLWNoYXJ0LWJhci1jb3VudCB7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgU2VjdGlvbiBoZWFkZXIgKyBpbmxpbmUgc2VuZCByb3dcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiBXaXRoIHRoZSBkaWFsb2cgZm9vdGVyIGdvbmUgdGhpcyBpcyB0aGUgcGFuZSdzIHByaW1hcnkgYWN0aW9uLCBzbyBpdCBnZXRzIGFcblx0ICAgY2FyZCBvZiBpdHMgb3duIHRoYXQgbmFtZXMgdGhlIHJlY2lwaWVudCAtIHRoZSBjb250ZXh0IHRoZSBmb290ZXIgdXNlZCB0b1xuXHQgICBjYXJyeSAtIHJhdGhlciB0aGFuIGEgYmFyZSBidXR0b24gZmxvYXRpbmcgYWJvdmUgdGhlIHByZXZpZXcuICovXG5cdC5wZi1zZW5kLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE2cHg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdHBhZGRpbmc6IDE2cHggMjBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICR3aGl0ZSAwJSwgI2ZiZmNmZiAxMDAlKTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDUzLCAyMTAsIDAuMTgpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCA1MywgMjEwLCAwLjA2KTtcblxuXHRcdC8qIE5vdGhpbmcgdG8gc2VuZCB0byAtIGRyb3AgdGhlIGJyYW5kIHRpbnQgc28gaXQgcmVhZHMgYXMgdW5hdmFpbGFibGVcblx0XHQgICByYXRoZXIgdGhhbiBhcyB0aGUgdGhpbmcgeW91IGFyZSBtZWFudCB0byBjbGljay4gKi9cblx0XHQmLmlzLWJsb2NrZWQge1xuXHRcdFx0YmFja2dyb3VuZDogJGxpZ2h0R3JleTtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblxuXHRcdFx0LnBmLXNlbmQtaWNvbiB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlY2VmZjU7XG5cdFx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5wZi1zZW5kLWljb24ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHdpZHRoOiA0MnB4O1xuXHRcdGhlaWdodDogNDJweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LnBmLXNlbmQtY29weSB7XG5cdFx0ZmxleDogMSAxIDI0MHB4O1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdH1cblxuXHRcdHNwYW4ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdFx0d29yZC1icmVhazogYnJlYWstd29yZDtcblx0XHR9XG5cdH1cblxuXHQvKiBEZWxpYmVyYXRlbHkgbm90IC5idG4tbmF2eTogdGhhdCBpcyBjYXBwZWQgYXQgMjIwcHggYW5kIHN0cmV0Y2hlcyB0byBmaWxsLFxuXHQgICB3aGljaCByZWFkcyBhcyBhIGZvcm0gYnV0dG9uLiBUaGlzIGlzIGEgc2luZ2xlIGNvbW1pdHRlZCBhY3Rpb24sIHNvIGl0IGh1Z3Ncblx0ICAgaXRzIGxhYmVsIGFuZCBsaWZ0cyBvbiBob3Zlci4gKi9cblx0LnBmLXNlbmQtYnRuIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogOXB4O1xuXHRcdG1pbi13aWR0aDogMTc4cHg7XG5cdFx0cGFkZGluZzogMTJweCAyNHB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkbmF2eSAwJSwgJGRhcmtOYXZ5IDEwMCUpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wMWVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTZzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKSxcblx0XHRcdGJveC1zaGFkb3cgMC4xNnMgZWFzZSxcblx0XHRcdGZpbHRlciAwLjE2cyBlYXNlO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHRmaWx0ZXI6IGJyaWdodG5lc3MoMS4xMik7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDdweCAxOHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHR9XG5cblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdH1cblxuXHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0YmFja2dyb3VuZDogI2QzZDllNjtcblx0XHRcdGNvbG9yOiAjZmJmY2ZmO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0XHRmaWx0ZXI6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogSG9sZHMgaXRzIGxpbmUgd2hldGhlciBvciBub3QgdGhlcmUgaXMgYSBtZXNzYWdlLCBzbyB0aGUgcHJldmlldyBiZWxvdyBkb2VzXG5cdCAgIG5vdCBqdW1wIHVwIGFuZCBkb3duIGFzIGEgc2VuZCByZXNvbHZlcy4gKi9cblx0LnBmLXNlbmQtcmVzdWx0IHtcblx0XHRtaW4taGVpZ2h0OiAzMHB4O1xuXHRcdG1hcmdpbjogLThweCAwIDE2cHg7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBSZW5kZXJlZCBmb3JtIGJsb2NrcyAoc2hhcmVkKVxuLyogVGhlIHN0YWZmIHByZXZpZXcgYW5kIHRoZSBwYWdlIHRoZSBwYXRpZW50IGFjdHVhbGx5IGZpbGxzIGluIGFyZSB0aGUgc2FtZVxuLyogZm9ybSByZW5kZXJlZCB0d2ljZSwgc28gdGhleSBzaGFyZSBvbmUgc2V0IG9mIGJsb2NrcyByYXRoZXIgdGhhbiB0aGUgcGF0aWVudFxuLyogcGFnZSBjYXJyeWluZyBhbiBpbmxpbmUgY29weSB0aGF0IGRyaWZ0cyBvdXQgb2Ygc3RlcC4gQm90aCB3cmFwIHRoZWlyXG4vKiBxdWVzdGlvbnMgaW4gLnBmLWZvcm0tcmVuZGVyLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnBmLWZvcm0tcmVuZGVyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0Z2FwOiAxNHB4O1xuXG5cdC5wZi1wcmV2aWV3LWJsb2NrIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcblx0XHRwYWRkaW5nOiAyMHB4IDIycHg7XG5cdH1cblxuXHQucGYtcHJldmlldy1oZWFkZXIge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LnBmLXByZXZpZXctaW1hZ2Uge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRtYXgtaGVpZ2h0OiA0MjBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0fVxuXG5cdC5wZi1wcmV2aWV3LXF1ZXN0aW9uIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMzU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdG1hcmdpbjogMCAwIDE0cHg7XG5cblx0XHQucGYtcmVxdWlyZWQtc3RhciB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0XHR9XG5cdH1cblxuXHQucGYtYW5zd2VyLWlucHV0IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0cGFkZGluZzogMTBweCAxMnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMThzIGVhc2UsIGJveC1zaGFkb3cgMC4xOHMgZWFzZTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjEpO1xuXHRcdH1cblx0fVxuXG5cdHRleHRhcmVhLnBmLWFuc3dlci1pbnB1dCB7XG5cdFx0cmVzaXplOiB2ZXJ0aWNhbDtcblx0XHRtaW4taGVpZ2h0OiA4NHB4O1xuXHR9XG5cblx0c2VsZWN0LnBmLWFuc3dlci1pbnB1dCB7XG5cdFx0aGVpZ2h0OiA0MnB4O1xuXHRcdHBhZGRpbmc6IDAgMTJweDtcblx0fVxuXG5cdC5wZi1jaG9pY2UtbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogOHB4O1xuXG5cdFx0Ji5pbmxpbmUge1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblxuXHRcdFx0LnBmLWNob2ljZSB7XG5cdFx0XHRcdGZsZXg6IDEgMSAxNjBweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucGYtY2hvaWNlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAxMXB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogcmdiYSgwLCA1MywgMjEwLCAwLjM1KTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmYmZjZmY7XG5cdFx0fVxuXG5cdFx0aW5wdXQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblx0fVxuXG5cdC8qIEFuIGFjdHVhbCBncmlkOiBhdXRvLWZpbGwga2VlcHMgdGhlIHRpbGVzIGluIGV2ZW4gY29sdW1ucyBhdCBhbnkgY29udGFpbmVyXG5cdCAgIHdpZHRoIGluc3RlYWQgb2YgbGVhdmluZyBhIHJhZ2dlZCBsYXN0IHJvdywgYW5kIHRoZXkgc2hhcmUgb25lIHJvdyBoZWlnaHQuICovXG5cdC5wZi1pbWFnZS1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDE5MHB4LCAxZnIpKTtcblx0XHRnYXA6IDE0cHg7XG5cdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cdH1cblxuXHQucGYtaW1hZ2UtdGlsZSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdHBhZGRpbmc6IDhweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZmJmZDtcblxuXHRcdGltZyB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTIwcHg7XG5cdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LyogU3RhbmRzIGluIGZvciB0aGUgcGljdHVyZSB3aGVuIGFuIG9wdGlvbiBoYXMgbm8gc3RvcmVkIGZpbGUsIHNvIHRoZSB0aWxlIGtlZXBzXG5cdCAgIGl0cyBzaGFwZSBhbmQgdGhlIGNhcHRpb24gc3RheXMgcmVhZGFibGUgaW5zdGVhZCBvZiBhIGJyb2tlbi1pbWFnZSBpY29uLiAqL1xuXHQucGYtaW1hZ2UtcGxhY2Vob2xkZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMTIwcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdGNvbG9yOiAjYjZiY2NkO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgdGlsZSBpcyB0aGUgYW5zd2VyLCBzbyB0aGUgd2hvbGUgdGhpbmcgaXMgdGhlIHRhcmdldCAtIGEgcmFkaW8gaW4gdGhlXG5cdCAgIGNhcHRpb24gYWxvbmUgd291bGQgYmUgYSAxNHB4IGhpdCBhcmVhIG9uIGEgcGhvbmUuICovXG5cdC5wZi1pbWFnZS1jaG9pY2Uge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbjogMDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMzUpO1xuXHRcdH1cblxuXHRcdCYuaXMtc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdH1cblxuXHRcdC5wZi1pbWFnZS1jYXB0aW9uIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRcdGdhcDogOHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXG5cdFx0XHRpbnB1dCB7XG5cdFx0XHRcdG1hcmdpbjogMnB4IDAgMDtcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBUZXh0IGNob2ljZXMgZ2V0IHRoZSBzYW1lIHNlbGVjdGVkIHRyZWF0bWVudCwgc28gYSBwaWNrZWQgb3B0aW9uIHJlYWRzIHRoZVxuXHQgICBzYW1lIHdheSB3aGljaGV2ZXIga2luZCBvZiBxdWVzdGlvbiBpdCBpcy4gKi9cblx0LnBmLWNob2ljZS5pcy1zZWxlY3RlZCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHR9XG5cblx0LyogSW5kZW50ZWQgdW5kZXIgdGhlIG9wdGlvbnMgaXQgYmVsb25ncyB0bywgc28gaXQgcmVhZHMgYXMgcGFydCBvZiB0aGUgXCJPdGhlclwiXG5cdCAgIHJvdyByYXRoZXIgdGhhbiBhcyB0aGUgbmV4dCBxdWVzdGlvbi4gKi9cblx0LnBmLW90aGVyLWJveCB7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMCAxOHB4O1xuXHRcdHBhZGRpbmctbGVmdDogMTRweDtcblx0XHRib3JkZXItbGVmdDogMnB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cblx0XHQuY29udHJvbC1sYWJlbCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0fVxuXG5cdFx0LnBmLWFuc3dlci1pbnB1dDpkaXNhYmxlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0Y29sb3I6ICM4YTkwYTM7XG5cdFx0fVxuXHR9XG5cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQYXRpZW50LWZhY2luZyBwYWdlICgvY3VzdG9tRm9ybT90b2tlbj0pXG4vKiBTaXRzIG9uIHRoZSBhcHAncyBvd24gYmFja2Ryb3AgLSBgbWFpbmAgaW4gX25hdi5jc3MgcGFpbnRzIHRoZSBuYXZ5IGdyYWRpZW50XG4vKiBvdmVyIHRoZSBzdXJnZW9uIHBob3RvLCB0aGUgc2FtZSBncm91bmQgdGhlIG9wIG5vdGUgYW5kIGV2ZXJ5IG90aGVyIHBhZ2Vcbi8qIHN0YW5kcyBvbiAtIGFuZCBzdGFja3MgdGhyZWUgdGllcnMgb2YgY29udHJhc3Qgb24gdG9wIG9mIGl0OiBhIHdoaXRlIHBhbmVsXG4vKiBsaWZ0ZWQgb2ZmIHRoZSBwaG90bywgYSBuYXZ5IGJhbm5lciBhY3Jvc3MgaXRzIGhlYWQsIGFuZCB0aGUgcGFsZSBzZXR0aW5nc1xuLyogY2FudmFzIGJlaGluZCB0aGUgd2hpdGUgcXVlc3Rpb24gY2FyZHMuXG4vKlxuLyogVGhlIHF1ZXN0aW9ucyB0aGVtc2VsdmVzIGNvbWUgZnJvbSAucGYtZm9ybS1yZW5kZXIgYWJvdmUsIHNvIHdoYXQgdGhlIHBhdGllbnRcbi8qIHNlZXMgbWF0Y2hlcyB0aGUgcHJldmlldyB0aGUgY2xpbmljaWFuIHNpZ25lZCBvZmYgb24uIE9ubHkgdGhlIHBhZ2UgY2hyb21lXG4vKiBhcm91bmQgdGhlbSBsaXZlcyBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmN1c3RvbS1mb3JtLXBhZ2Uge1xuXHRkaXNwbGF5OiBibG9jaztcblx0cGFkZGluZzogNDBweCAwIDU2cHg7XG5cblx0LyogSXRzIG93biBiYWNrZHJvcCByYXRoZXIgdGhhbiB0aGUgc3VyZ2VvbiBwaG90byBgbWFpbmAgZ2l2ZXMgZXZlcnkgb3RoZXJcblx0ICAgcGFnZS4gVGhhdCBwaG90byBpcyBhaW1lZCBhdCBjbGluaWNpYW5zOyB0aGUgcGVyc29uIGhlcmUgaXMgYSBwYXRpZW50XG5cdCAgIGZpbGxpbmcgaW4gYSBoZWFsdGggcXVlc3Rpb25uYWlyZSwgb2Z0ZW4gb24gYSBwaG9uZSwgYW5kIGEgcGljdHVyZSBvZlxuXHQgICBzdXJnZXJ5IGlzIHRoZSB3cm9uZyB0aGluZyB0byBncmVldCB0aGVtIHdpdGguXG5cblx0ICAgQSBuYXZ5IGJhbmQgYWNyb3NzIHRoZSB0b3Agb25seSwgcGFsZSBiZW5lYXRoLCB3aXRoIHRoZSBwYW5lbCBicmlkZ2luZyB0aGVcblx0ICAgdHdvIC0gcmF0aGVyIHRoYW4gYSBjYXJkIG1hcm9vbmVkIGluIHRoZSBtaWRkbGUgb2YgYSBsYXJnZSBkYXJrIGZpZWxkLiBUaGVcblx0ICAgYmFuZCBpcyBzaXplZCwgbm90IHN0b3BwZWQ6IHRoZSBncmFkaWVudCBsYXllcnMgYXJlIDMwMHB4IHRhbGwgYW5kIHBpbm5lZCB0b1xuXHQgICB0aGUgdG9wLCBhbmQgYmFja2dyb3VuZC1jb2xvciBmaWxscyBldmVyeXRoaW5nIGJlbG93LCBzbyB0aGVyZSBpcyBubyBjb2xvdXJcblx0ICAgaW50ZXJwb2xhdGlvbiBhdCB0aGUgc2VhbSB0byBmcmluZ2UuXG5cblx0ICAgVGhlIGdyYWluIGlzIHdoYXQgc3RvcHMgdGhlIGJhbmQgYmFuZGluZy4gRm91ciBsYXJnZSBsb3ctY29udHJhc3QgZ3JhZGllbnRzXG5cdCAgIG9uIGFuIDgtYml0IGRpc3BsYXkgcmluZyB2aXNpYmx5OyBhIGZyYWN0YWwtbm9pc2UgdGlsZSBhdCBsb3cgb3BhY2l0eSBicmVha3Ncblx0ICAgdGhlIHJhbXAgdXAuIEl0IGlzIGFuIGlubGluZSBTVkcsIHNvIG5vIHJlcXVlc3QgYW5kIG5vdGhpbmcgdG8gaG9zdC4gKi9cblx0LyogQSBzaGFkZSBkZWVwZXIgdGhhbiAuY3VzdG9tLWZvcm0tYm9keSdzICNmNGY3ZmU6IHdpdGggYm90aCB0aGUgc2FtZSwgdGhlXG5cdCAgIHBhbmVsIGRpc3NvbHZlZCBpbnRvIHRoZSBwYWdlIGV2ZXJ5d2hlcmUgYmVsb3cgdGhlIGJhbmQuIEdyb3VuZCwgcGFuZWwgYm9keSxcblx0ICAgY2FyZCBub3cgc3RlcCBsaWdodCBpbiB0aHJlZSBzdGFnZXMuICovXG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdGJhY2tncm91bmQtaW1hZ2U6XG5cdFx0dXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxODAnIGhlaWdodD0nMTgwJyUzRSUzQ2ZpbHRlciBpZD0nbiclM0UlM0NmZVR1cmJ1bGVuY2UgdHlwZT0nZnJhY3RhbE5vaXNlJyBiYXNlRnJlcXVlbmN5PScwLjg1JyBudW1PY3RhdmVzPSc0JyBzdGl0Y2hUaWxlcz0nc3RpdGNoJy8lM0UlM0NmZUNvbG9yTWF0cml4IHR5cGU9J3NhdHVyYXRlJyB2YWx1ZXM9JzAnLyUzRSUzQy9maWx0ZXIlM0UlM0NyZWN0IHdpZHRoPScxODAnIGhlaWdodD0nMTgwJyBmaWx0ZXI9J3VybCglMjNuKScgb3BhY2l0eT0nMC4wNTUnLyUzRSUzQy9zdmclM0VcIiksXG5cdFx0cmFkaWFsLWdyYWRpZW50KDgyMHB4IDM4MHB4IGF0IDgyJSAtNDAlLCByZ2JhKDAsIDE4OCwgMjEyLCAwLjIyKSwgdHJhbnNwYXJlbnQgNjIlKSxcblx0XHRsaW5lYXItZ3JhZGllbnQoMTU4ZGVnLCAjMGEyNTQwIDAlLCAjMTQzNDZiIDYyJSwgIzBmMmI1MiAxMDAlKTtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdCwgbm8tcmVwZWF0LCBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0LCB0b3AgY2VudGVyLCB0b3AgY2VudGVyO1xuXHRiYWNrZ3JvdW5kLXNpemU6IDE4MHB4IDE4MHB4LCAxMDAlIDMwMHB4LCAxMDAlIDMwMHB4O1xuXG5cdC5jdXN0b20tZm9ybS1wYW5lbCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiA3ODBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMteGw7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRib3gtc2hhZG93OiAwIDEwcHggMzRweCByZ2JhKDEwLCAzNywgNjQsIDAuMTYpO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEJhbm5lclxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qIFRoZSBwYW5lbCBjbGlwcyB3aXRoIG92ZXJmbG93OmhpZGRlbiwgYnV0IGEgY2xpcHBlZCBzcXVhcmUtY29ybmVyZWQgY2hpbGRcblx0ICAgc3RpbGwgbGVhdmVzIHRoZSBwYXJlbnQncyB3aGl0ZSBzaG93aW5nIGFzIGEgaGFpcmxpbmUgYWxvbmcgdGhlIGNvcm5lciBhcmNzLlxuXHQgICBHaXZpbmcgdGhlIGJhbm5lciBpdHMgb3duIG1hdGNoaW5nIHJhZGlpIG1lYW5zIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV2ZWFsLiAqL1xuXHQuY3VzdG9tLWZvcm0tYmFubmVyIHtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bCAkYm9yZGVyLXJhZGl1cy14bCAwIDA7XG5cdFx0cGFkZGluZzogMzBweCAzMnB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJG5hdnkgMCUsICRkYXJrTmF2eSAxMDAlKTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdGgxIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZS10cC03NTtcblx0XHRcdG1hcmdpbjogOHB4IDAgMDtcblx0XHR9XG5cblx0XHQmLmNvbXBhY3Qge1xuXHRcdFx0cGFkZGluZzogMjZweCAzMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIEJvdGggbG9nbyBmaWxlcyBhcmUgbmVhci13aGl0ZSBhcnR3b3JrLCBzbyB0aGV5IG9ubHkgcmVhZCBvbiB0aGUgbmF2eSBiYW5kIC1cblx0ICAgbmV2ZXIgbW92ZSB0aGVtIG9udG8gdGhlIHdoaXRlIHBhbmVsIGJlbG93LiAqL1xuXHQuY3VzdG9tLWZvcm0tbG9nbyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1hcmdpbjogMCBhdXRvIDE4cHg7XG5cdH1cblxuXHQvKiBXcml0dGVuIG91dCByYXRoZXIgdGhhbiBuZXN0ZWQgYXMgYC5jb21wYWN0ICZgOiBwb3N0Y3NzLW5lc3RlZCByZXNvbHZlcyAmIHRvXG5cdCAgIHRoZSB3aG9sZSBhY2N1bXVsYXRlZCBwYXJlbnQsIHdoaWNoIHdvdWxkIGhhdmUgcHV0IC5jb21wYWN0IG91dHNpZGUgdGhlIHBhZ2UuICovXG5cdC5jdXN0b20tZm9ybS1iYW5uZXIuY29tcGFjdCAuY3VzdG9tLWZvcm0tbG9nbyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBCb2R5XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmN1c3RvbS1mb3JtLWJvZHkge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0cGFkZGluZzogMjZweCAyOHB4IDI4cHg7XG5cdH1cblxuXHQuY3VzdG9tLWZvcm0tbG9hZGluZyB7XG5cdFx0bWluLWhlaWdodDogMzB2aDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdH1cblxuXHQvKiBTdWJtaXR0ZWQgLyBiYWQtdG9rZW4gc3RhdGVzIHNoYXJlIG9uZSBjZW50cmVkIGNhcmQuICovXG5cdC5jdXN0b20tZm9ybS1zdGF0ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblx0XHRwYWRkaW5nOiA0OHB4IDMycHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0aDIge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjY7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRcdG1heC13aWR0aDogNDRjaDtcblx0XHR9XG5cdH1cblxuXHQuY3VzdG9tLWZvcm0tc3RhdGUtaWNvbiB7XG5cdFx0d2lkdGg6IDYwcHg7XG5cdFx0aGVpZ2h0OiA2MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvIDE4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdGNvbG9yOiBjb2xvcigkZ3JlZW4gbCgtMTIlKSk7XG5cblx0XHQmLndhcm5pbmcge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlNjtcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC5jdXN0b20tZm9ybS1oaW50IHtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHRtYXJnaW46IC04cHggMCAxMnB4O1xuXHR9XG5cblx0LyogRGF5IC8gTW9udGggLyBZZWFyIHJhdGhlciB0aGFuIG9uZSBuYXRpdmUgZGF0ZSBpbnB1dCAtIHNlZSB0aGUgY29udHJvbGxlci4gKi9cblx0LmN1c3RvbS1mb3JtLWRvYi1maWVsZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblxuXHRcdC5wZi1hbnN3ZXItaW5wdXQge1xuXHRcdFx0ZmxleDogMSAxIDExMHB4O1xuXHRcdFx0bWluLXdpZHRoOiA5NnB4O1xuXHRcdH1cblxuXHRcdC8qIFRoZSB5ZWFyIGxpc3QgaXMgdGhlIGxvbmcgb25lLCBzbyBnaXZlIGl0IHRoZSBleHRyYSByb29tLiAqL1xuXHRcdC5wZi1hbnN3ZXItaW5wdXQ6bGFzdC1jaGlsZCB7XG5cdFx0XHRmbGV4OiAxIDEgMTMwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmN1c3RvbS1mb3JtLWZpbGUtbmFtZSB7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogIzg3OGJhMDtcblx0XHR3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFBhZ2UgZm9vdGVyXG5cdC8qIFNhbWUgbGluZSB0aGUgbWFya2V0aW5nIHBhZ2VzIGNhcnJ5LCBzbyBhIHBhdGllbnQgYXJyaXZpbmcgY29sZCBmcm9tIGFuXG5cdC8qIGVtYWlsIGxpbmsgY2FuIHNlZSB3aG9zZSBmb3JtIHRoaXMgaXMgYW5kIGZpbmQgdGhlIHByaXZhY3kgcG9saWN5LiBTaXRzIG9uXG5cdC8qIHRoZSBwYWxlIGdyb3VuZCBiZWxvdyB0aGUgcGFuZWwsIHNvIGl0IG5lZWRzIGEgZGFya2VyIGluayB0aGFuIHRoZSB3aGl0ZVxuXHQvKiB0aGUgbWFya2V0aW5nIGZvb3RlcnMgdXNlIC0gIzU0NTk2YiBjbGVhcnMgQUEgb24gI2U3ZjBmZiBhdCA2LjA3OjEuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LmN1c3RvbS1mb3JtLXBhZ2UtZm9vdGVyIHtcblx0XHRtYXgtd2lkdGg6IDc4MHB4O1xuXHRcdG1hcmdpbjogMjJweCBhdXRvIDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0LmNvcHlyaWdodCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS42O1xuXHRcdFx0Y29sb3I6ICM1NDU5NmI7XG5cblx0XHRcdGEge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHRcdFx0XHQmOmhvdmVyLFxuXHRcdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBTdWJtaXRcblx0LyogQSB3aGl0ZSBiYW5kIGNsb3NpbmcgdGhlIHBhbmVsLCBzbyB0aGUgb25lIGFjdGlvbiBpcyBub3QgZmxvYXRpbmcgb24gdGhlXG5cdC8qIHNhbWUgcGFsZSBncm91bmQgYXMgdGhlIHF1ZXN0aW9ucy5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuY3VzdG9tLWZvcm0tZm9vdGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0cGFkZGluZzogMjRweCAyOHB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuY3VzdG9tLWZvcm0tc3VibWl0LWJ0biB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWluLXdpZHRoOiAyMjBweDtcblx0XHRwYWRkaW5nOiAxNXB4IDM0cHg7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICRuYXZ5IDAlLCAkZGFya05hdnkgMTAwJSk7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRib3gtc2hhZG93OiAwIDRweCAxNHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTZzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKSxcblx0XHRcdGJveC1zaGFkb3cgMC4xNnMgZWFzZSxcblx0XHRcdGZpbHRlciAwLjE2cyBlYXNlO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDE1cHg7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHRmaWx0ZXI6IGJyaWdodG5lc3MoMS4xMik7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDhweCAyMHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4zKTtcblx0XHR9XG5cblx0XHQmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCA1MywgMjEwLCAwLjI1KTtcblx0XHR9XG5cblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdH1cblxuXHRcdCY6ZGlzYWJsZWQge1xuXHRcdFx0YmFja2dyb3VuZDogI2QzZDllNjtcblx0XHRcdGNvbG9yOiAjZmJmY2ZmO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0XHRmaWx0ZXI6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBibG9jayBhIHNlbnRlbmNlIGNhbiBicmVhdGhlIGluLCBub3QgYSBib2xkIHBpbGwuIFNtYWxsIGJvbGQgcmVkIG9uIHBpbmsgaXNcblx0ICAgdGhlIGhhcmRlc3QgY29tYmluYXRpb24gdG8gcmVhZCBvZiBhbnl0aGluZyBvbiB0aGlzIHBhZ2UsIGFuZCB0aGUgcGVyc29uXG5cdCAgIHJlYWRpbmcgaXQgaGFzIGp1c3QgYmVlbiBzdG9wcGVkIGZyb20gZmluaXNoaW5nIGEgZm9ybSAtIHNvOiByZWd1bGFyIHdlaWdodCxcblx0ICAgYSBsaXR0bGUgbGFyZ2VyLCBsZWZ0LWFsaWduZWQgc28gYSB3cmFwcGVkIHNlY29uZCBsaW5lIHN0YXJ0cyB3aGVyZSB0aGUgZXllXG5cdCAgIHJldHVybnMsIGFuZCBhbiBhY2NlbnQgZWRnZSBpbnN0ZWFkIG9mIHNob3V0aW5nIGluIGNvbG91ci5cblxuXHQgICBCb3RoIGlua3MgYXJlIGRhcmtlbmVkIGZvciBjb250cmFzdC4gVGhlIG9yaWdpbmFscyBtZWFzdXJlZCAzLjQ2OjEgKGVycm9yKVxuXHQgICBhbmQgMy40NDoxIChzdWNjZXNzKSwgdW5kZXIgdGhlIDQuNToxIEFBIG5lZWRzIGF0IHRoaXMgc2l6ZTsgJGRhbmdlciBhbmQgYVxuXHQgICBkZWVwZXIgZ3JlZW4gdGFrZSB0aGVtIHRvIDUuMTE6MSBhbmQgNS4wOToxLiAqL1xuXHQuY3VzdG9tLWZvcm0tbWVzc2FnZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiA0NjBweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogMTJweCAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGZvbnQtc2l6ZTogMTMuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRpIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdH1cblxuXHRcdCYuc3VjY2VzcyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTIwJSkpO1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTMwO1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCBjb2xvcigkZ3JlZW4gbCgtMjAlKSk7XG5cdFx0fVxuXG5cdFx0Ji5lcnJvciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VhO1xuXHRcdFx0Y29sb3I6ICRkYW5nZXI7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE2OSwgNjgsIDY2LCAwLjI1KTtcblx0XHRcdGJvcmRlci1sZWZ0OiAzcHggc29saWQgJGRhbmdlcjtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG5cdC5jdXN0b20tZm9ybS1wYWdlIHtcblx0XHRwYWRkaW5nOiAxNnB4IDAgMzJweDtcblxuXHRcdGJhY2tncm91bmQtc2l6ZTogMTgwcHggMTgwcHgsIDEwMCUgMjEwcHgsIDEwMCUgMjEwcHg7XG5cblx0XHQuY3VzdG9tLWZvcm0tcGFuZWwge1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0fVxuXG5cdFx0LmN1c3RvbS1mb3JtLWJhbm5lciB7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZyAkYm9yZGVyLXJhZGl1cy1sZyAwIDA7XG5cdFx0XHRwYWRkaW5nOiAyNHB4IDIwcHggMjJweDtcblxuXHRcdFx0aDEge1xuXHRcdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmN1c3RvbS1mb3JtLWJvZHkge1xuXHRcdFx0cGFkZGluZzogMThweCAxNnB4IDIwcHg7XG5cdFx0fVxuXG5cdFx0LmN1c3RvbS1mb3JtLWZvb3RlciB7XG5cdFx0XHRwYWRkaW5nOiAxOHB4IDE2cHggMjBweDtcblx0XHR9XG5cblx0XHQuY3VzdG9tLWZvcm0tc3VibWl0LWJ0biB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdH1cbn1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0LmN1c3RvbS1mb3JtLXBhZ2UgLmN1c3RvbS1mb3JtLXN1Ym1pdC1idG4ge1xuXHRcdHRyYW5zaXRpb246IG5vbmU7XG5cblx0XHQmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpLFxuXHRcdCY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpIHtcblx0XHRcdHRyYW5zZm9ybTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBSZXNwb25zaXZlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcblx0LnBhdGllbnQtZm9ybXMtZGlhbG9nIHtcblx0XHRtaW4td2lkdGg6IDk2JTtcblx0XHR3aWR0aDogOTYlO1xuXHR9XG5cblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMge1xuXHRcdC5zZXR0aW5ncy1uYXYge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtbmF2LWdyb3VwLm5hdi1ncm91cC1jcmVhdGUge1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHJhaWwgaXMgYSBob3Jpem9udGFsIHN0cmlwIG9uIG5hcnJvdyBzY3JlZW5zOyB0aGUgbm90ZSB3b3VsZCBicmVhayB0aGUgcm93LiAqL1xuXHRcdC5uYXYtZW1wdHktbm90ZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5zZXR0aW5ncy1wYW5lLWJvZHkge1xuXHRcdFx0cGFkZGluZzogMThweCAxNnB4O1xuXHRcdH1cblxuXHRcdC5wZi1hbnN3ZXItcm93IHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRnYXA6IDRweDtcblxuXHRcdFx0LnBmLWFuc3dlci1xdWVzdGlvbiB7XG5cdFx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogTm8gcm9vbSBiZXNpZGUgdGhlIGxpc3Q6IHRoZSBwYWxldHRlIGJlY29tZXMgYSByb3cgb2YgdGlsZXMgdW5kZXIgaXQuICovXG5cdFx0LnBmLWJ1aWxkZXItbGF5b3V0IHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblx0XHR9XG5cblx0XHQucGYtY29tcG9uZW50LXBhbGV0dGUge1xuXHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblxuXHRcdFx0LnBmLXBhbGV0dGUtdGl0bGUge1xuXHRcdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdFx0fVxuXG5cdFx0XHQucGYtcGFsZXR0ZS10aWxlIHtcblx0XHRcdFx0ZmxleDogMSAxIDE2MHB4O1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyogQW55b25lIHdobyBoYXMgYXNrZWQgZm9yIGxlc3MgbW90aW9uIGdldHMgdGhlIHN3YXAgd2l0aG91dCB0aGUgbGlmdC4gKi9cbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdC5zZXR0aW5ncy1zaGVsbC5wYXRpZW50LWZvcm1zIC5wZi1wYW5lLm5nLWVudGVyIHtcblx0XHRhbmltYXRpb246IG5vbmU7XG5cdH1cblxuXHQuc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3JtcyAucGYtcXVlc3Rpb24tY2FyZCxcblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMgLnBmLWljb24tYnRuLFxuXHQuc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3JtcyAucGYtcGFsZXR0ZS10aWxlLFxuXHQuc2V0dGluZ3Mtc2hlbGwucGF0aWVudC1mb3JtcyAucGYtYWRkLWlubGluZSxcblx0LnBmLWZvcm0tcmVuZGVyIC5wZi1jaG9pY2UsXG5cdC5wZi1mb3JtLXJlbmRlciAucGYtYW5zd2VyLWlucHV0IHtcblx0XHR0cmFuc2l0aW9uOiBub25lO1xuXHR9XG5cblx0LnNldHRpbmdzLXNoZWxsLnBhdGllbnQtZm9ybXMgLnBmLXNlbmQtYnRuIHtcblx0XHR0cmFuc2l0aW9uOiBub25lO1xuXG5cdFx0Jjpob3Zlcjpub3QoOmRpc2FibGVkKSxcblx0XHQmOmFjdGl2ZTpub3QoOmRpc2FibGVkKSB7XG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0fVxuXHR9XG59XG5cbi8qIG1kLXRvb2x0aXAgcmVuZGVycyBhdCB0aGUgZG9jdW1lbnQgYm9keSwgb3V0c2lkZSAuc2V0dGluZ3Mtc2hlbGwsIHNvIHRoaXMgcnVsZVxuICAgY2Fubm90IGJlIG5lc3RlZCB1bmRlciBpdC4gKi9cbi5tZC10b29sdGlwLnBmLWV4cG9ydC10b29sdGlwIHtcblx0Y29sb3I6ICRuYXZ5O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdG1heC13aWR0aDogMTJyZW07XG5cblx0LyogTWF0ZXJpYWwgY2FwcyAubWQtdG9vbHRpcCBhdCBvbmUgY2xpcHBlZCBsaW5lOyBsZXQgaXQgZ3JvdyB0byBmaXQgd3JhcHBlZCB0ZXh0LiAqL1xuXHRoZWlnaHQ6IGF1dG87XG5cdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXHR0ZXh0LW92ZXJmbG93OiBjbGlwO1xuXHRsaW5lLWhlaWdodDogMS40O1xufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGZWF0dXJlIHRpcHMgKHRpcCBvZiB0aGUgZGF5KVxuLyogU2FtZSBjYXJkIGxhbmd1YWdlIGFzIF9wYXltZW50cy5jc3MgLyBfc2V0dGluZ3MuY3NzIHNvIHRoZSB0aXAgcmVhZHNcbi8qIGFzIHBhcnQgb2YgdGhlIHByb2R1Y3QgcmF0aGVyIHRoYW4gYW4gYWR2ZXJ0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGlwLWNhcmQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkbmF2eTtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblx0cGFkZGluZzogMTZweCAxOHB4O1xuXHRtYXgtd2lkdGg6IDQ2MHB4O1xuXHRtYXJnaW4tdG9wOiA4cHg7XG5cblx0LnRpcC1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0fVxuXG5cdC50aXAtZXllYnJvdyB7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA3ZW07XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdGkge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC50aXAtcGFnZXIge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdH1cblxuXHQudGlwLWFycm93LFxuXHQudGlwLWNsb3NlIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRwYWRkaW5nOiAycHggNXB4O1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0fVxuXHR9XG5cblx0LnRpcC1jbG9zZSB7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdG1hcmdpbi1sZWZ0OiAycHg7XG5cdH1cblxuXHQudGlwLWJvZHkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxM3B4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0LnRpcC1pY29uIHtcblx0XHR3aWR0aDogMzhweDtcblx0XHRoZWlnaHQ6IDM4cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2U3ZjBmZjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0fVxuXG5cdC50aXAtdGV4dCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0aDUge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdG1hcmdpbjogMCAwIDVweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQudGlwLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDUxcHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHQudGlwLWNhcmQge1xuXHRcdG1heC13aWR0aDogMTAwJTtcblxuXHRcdC50aXAtYWN0aW9ucyB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0fVxuXHR9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEVDTElQU0UgSW4tUGF0aWVudCBDbGFpbSAodHlyb01lZGlwYXNzV2lkZ2V0KVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogQSBmb3J3YXJkcy1vbmx5IHRocmVlIHN0ZXAgZmxvdyAtIHZlcmlmeSwgY2hlY2sgZWxpZ2liaWxpdHksIGxvZGdlIC1cbi8qIGluc2lkZSB0aGUgY2xhaW0gbW9kYWwuIFJlYWRzIHRvcCB0byBib3R0b20sIGVhY2ggc3RlcCBlbmRpbmcgaW4gb25lXG4vKiBhY3Rpb24gYmFyLiBMZWF2aW5nIHRoZSBmbG93IGlzIHRoZSBjbGFpbSBtb2RhbCdzIG93biBCYWNrIGxpbmsuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLWZsb3cge1xuICAgIHBhZGRpbmc6IDEuNXJlbSAxLjc1cmVtIDEuNzVyZW07XG59XG5cbi5lY2xpcHNlLWZsb3dfX3RpdGxlIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5lY2xpcHNlLWZsb3dfX2xlYWQge1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBtYXgtd2lkdGg6IDYwcmVtO1xuICAgIG1hcmdpbjogMCAwIDEuMjVyZW07XG59XG5cbi8qIFNlcGFyYXRlcyB0aGUgc2VjdGlvbnMgb2YgYSBsb25nIGZvcm0gdGhlIHdheSB0aGUgY2xpbmljYWwgbm90ZXMgZG8gLSB0aGVcbiAgIGxlZnQtcGFja2VkIHJvd3MgYWxvbmUgZG8gbm90IG1ha2UgdGhlIGJyZWFrcyBvYnZpb3VzLiAkZ3JleS1ib3JkZXItbGlnaHRcbiAgIHJhdGhlciB0aGFuIHRoZSBub3RlcycgI2RkZCwgdG8gbWF0Y2ggdGhlIGFjdGlvbiBiYXIncyB0b3AgYm9yZGVyIGJlbG93LiAqL1xuLmVjbGlwc2UtZGl2aWRlciB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgbWFyZ2luOiAyLjVlbSAwIDEuNWVtO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFN0ZXBwZXJcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjbGlwc2Utc3RlcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBtYXJnaW46IDEuMjVyZW0gMCAxLjVyZW07XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbn1cblxuLmVjbGlwc2Utc3RlcHBlcl9fc3RlcCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC42cmVtO1xuICAgIG1pbi13aWR0aDogMDtcbiAgICBmbGV4OiAwIDEgYXV0bztcbn1cblxuLyogRHJhd24gYnkgdGhlIHN0ZXAgaXQgbGVhZHMgaW50bywgc28gaXQgY2FuIG5ldmVyIGRhbmdsZSBvZmYgdGhlIGxhc3Qgb25lLiAqL1xuLmVjbGlwc2Utc3RlcHBlcl9fc3RlcCArIC5lY2xpcHNlLXN0ZXBwZXJfX3N0ZXAge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgZmxleDogMSAxIDEuNXJlbTtcbiAgICAgICAgbWluLXdpZHRoOiAxLjVyZW07XG4gICAgICAgIGhlaWdodDogMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcbiAgICB9XG59XG5cbi5lY2xpcHNlLXN0ZXBwZXJfX21hcmtlciB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgd2lkdGg6IDI2cHg7XG4gICAgaGVpZ2h0OiAyNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xufVxuXG4uZWNsaXBzZS1zdGVwcGVyX19sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMjVzIGVhc2U7XG59XG5cbi5lY2xpcHNlLXN0ZXBwZXJfX3N0ZXAtLWFjdGl2ZSB7XG4gICAgLmVjbGlwc2Utc3RlcHBlcl9fbWFya2VyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkbmF2eTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxuICAgIC5lY2xpcHNlLXN0ZXBwZXJfX2xhYmVsIHtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgIH1cbn1cblxuLmVjbGlwc2Utc3RlcHBlcl9fc3RlcC0tZG9uZSB7XG4gICAgLmVjbGlwc2Utc3RlcHBlcl9fbWFya2VyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JlZW47XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmVlbjtcbiAgICAgICAgY29sb3I6ICR3aGl0ZTtcbiAgICB9XG4gICAgLmVjbGlwc2Utc3RlcHBlcl9fbGFiZWwge1xuICAgICAgICBjb2xvcjogJHRleHRHcmV5O1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGb3JtIHJvd3MgYW5kIGZpZWxkc1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogTm90IGdyaWQgcm93cy4gSW4gYSBkaWFsb2cgODAlIG9mIHRoZSB3aW5kb3cgd2lkZSwgdGhlIDEyIGNvbHVtbiBncmlkXG4vKiBkZWFscyBldmVyeSBmaWVsZCBhbiBlcXVhbCBzaGFyZSwgc28gYW4gOCBjaGFyYWN0ZXIgcHJvdmlkZXIgbnVtYmVyXG4vKiBnZXRzIHRoZSBzYW1lIDcwMHB4IGJveCBhcyBhIGZyZWUgdGV4dCBkZXNjcmlwdGlvbi4gSGVyZSBlYWNoIGZpZWxkIGlzXG4vKiBhcyB3aWRlIGFzIHRoZSB2YWx1ZSBpdCBob2xkcyBhbmQgdGhlIHJvdyBwYWNrcyBsZWZ0LCBsZWF2aW5nIHRoZVxuLyogc2xhY2sgYXMgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIHJhdGhlciB0aGFuIGluc2lkZSBldmVyeSBmaWVsZC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjbGlwc2UtZm9ybXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgY29sdW1uLWdhcDogMS41cmVtO1xuXG4gICAgLyogU2l6ZWQgYnkgdGhlaXIgY29udGVudHMsIG5ldmVyIHN0cmV0Y2hlZC4gLmZvcm0tZ3JvdXAncyBvd24gYm90dG9tXG4gICAgICAgbWFyZ2luIHNwYWNlcyB0aGUgd3JhcHBlZCBsaW5lcy4gKi9cbiAgICA+IC5mb3JtLWdyb3VwIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvKiBPciBhIHNlbnRlbmNlIG9mIGhlbHAgdW5kZXIgYSBuYXJyb3cgZmllbGQgc2V0cyB0aGUgd2hvbGUgZ3JvdXAncyB3aWR0aC4gKi9cbiAgICAuaGVscC1ibG9jayB7XG4gICAgICAgIG1heC13aWR0aDogMjByZW07XG4gICAgfVxufVxuXG4vKiBBbGlnbnMgYW4gdW5sYWJlbGxlZCBjb250cm9sIC0gdGhlIHJlbW92ZSBidXR0b24gLSB3aXRoIHRoZSBpbnB1dHMsIG5vdFxuICAgdGhlaXIgbGFiZWxzLiAqL1xuLmVjbGlwc2UtZm9ybXJvd19fc3BhY2VyLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8qIEEgbGFiZWwgdGhhdCB3cmFwcyBwdXRzIGl0cyBmaWVsZCBhIGxpbmUgbG93ZXIgdGhhbiB0aGUgb25lcyBiZXNpZGUgaXQsIHNvXG4gICB0aGUgcm93J3MgaW5wdXRzIG5vIGxvbmdlciBzaXQgb24gb25lIGxpbmUuIFRoZSBsYWJlbHMgaGVyZSBhcmUgc2hvcnQgYW5kIHRoZVxuICAgY29sdW1ucyBhcmUgd2lkZSwgc28gaG9sZGluZyB0aGVtIHRvIG9uZSBsaW5lIGNvc3RzIG5vdGhpbmcgYW5kIGtlZXBzIHRoZVxuICAgaW5wdXRzIGxldmVsLiAqL1xuLmVjbGlwc2UtZm9ybXJvdyAuY29udHJvbC1sYWJlbCxcbi5lY2xpcHNlLWZpZWxkZ3JpZCAuY29udHJvbC1sYWJlbCB7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBGaWVsZCBoaW50c1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogV2hhdCB1c2VkIHRvIGJlIGEgbGluZSBvZiBoZWxwIHVuZGVyIHRoZSBmaWVsZC4gSGVsZCBpbiBhIHRvb2x0aXAgb25cbi8qIHRoZSBsYWJlbCBpbnN0ZWFkOiBtb3N0IG9mIHRoZXNlIGhpbnRzIG9ubHkgYXBwbHkgdG8gc29tZSBjbGFpbXMsIGFuZFxuLyogdW5kZXIgdGhlIGZpZWxkIGVhY2ggb25lIGFwcGVhcmluZyBhbmQgZGlzYXBwZWFyaW5nIG1vdmVkIGV2ZXJ5dGhpbmdcbi8qIGJlbG93IGl0IGFzIHRoZSBmb3JtIHdhcyBmaWxsZWQgaW4uIE9uIHRoZSBsYWJlbCB0aGV5IGNoYW5nZSBub3RoaW5nXG4vKiBidXQgdGhlIGxhYmVsLlxuLypcbi8qIEVycm9ycyBhcmUgbm90IGhpbnRzIGFuZCBzdGF5IHdoZXJlIHRoZXkgYXJlIC0gYSBtZXNzYWdlIHNheWluZyB0aGVcbi8qIGNsYWltIHdpbGwgYmUgcmVqZWN0ZWQgaGFzIHRvIGJlIHJlYWQsIG5vdCBmb3VuZCBieSBob3ZlcmluZy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogVGhlIGdseXBoIGlzIGEgY2hpbGQgcmF0aGVyIHRoYW4gdGhpcyBlbGVtZW50IGl0c2VsZiwgc28gdGhhdCB0aGlzIGVsZW1lbnQgaXMgdGhlXG4gICB3aG9sZSBhZmZvcmRhbmNlLiBtZC10b29sdGlwIGhhbmdzIG9mZiBpdHMgaW1tZWRpYXRlIERPTSBwYXJlbnQgZm9yIGJvdGggdGhlIGhvdmVyXG4gICB0YXJnZXQgYW5kIHRoZSBhcmlhLWxhYmVsIGl0IG1heSBzZXQsIHNvIHRoYXQgcGFyZW50IHdhbnRzIHRvIGJlIHRoZSBoaW50IGFzIGFcbiAgIHdob2xlLCBub3QgdGhlIGdseXBoIGluc2lkZSBpdC5cblxuICAgKEFuIGVhcmxpZXIgbm90ZSBoZXJlIHNhaWQgdGhlIHRvb2x0aXAgd291bGQgaW5oZXJpdCB0aGUgZ2x5cGhpY29uIGZvbnQgYW5kIGNvbWVcbiAgIG91dCBhcyBnbHlwaHMuIEl0IHdvdWxkIG5vdCAtIG1kLXRvb2x0aXAgZGV0YWNoZXMgaXRzZWxmIGF0IGxpbmsgdGltZSBhbmQgcmVuZGVyc1xuICAgdW5kZXIgPGJvZHk+LiBUaGUgc3RydWN0dXJlIGlzIHJpZ2h0OyB0aGF0IHdhcyB0aGUgd3JvbmcgcmVhc29uIGZvciBpdC4pICovXG4uZWNsaXBzZS1oaW50IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IDAuM3JlbTtcbiAgICBjb2xvcjogJHRleHQtbXV0ZWQ7XG4gICAgY3Vyc29yOiBoZWxwO1xuXG4gICAgLmdseXBoaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgLyogLmdseXBoaWNvbiBudWRnZXMgaXRzZWxmIGRvd24gYSBwaXhlbCB0byBzaXQgaW4gYSBsaW5lIG9mIHRleHQ7IGJlc2lkZSBhXG4gICAgICAgICAgIGxhYmVsIGl0IHJlYWRzIGFzIHNpdHRpbmcgbG93LiAqL1xuICAgICAgICB0b3A6IDA7XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkbmF2eTtcbiAgICB9XG59XG5cbi8qIEFuZ3VsYXIgTWF0ZXJpYWwncyBvd24gdG9vbHRpcCBpcyBhIG5vd3JhcCBjaGlwOiBhIHNlbnRlbmNlIGNvbWVzIG91dCBhcyBvbmVcbiAgIGxpbmUgZm91ciB0aW1lcyB0aGUgd2lkdGggb2YgdGhlIGZpZWxkIGl0IGV4cGxhaW5zLiBEcmVzc2VkIGxpa2UgdGhlIFNOT01FRFxuICAgY29uY2VwdCB0b29sdGlwIGluc3RlYWQgLSBhIHNtYWxsIGxpZ2h0IGNhcmQgdGhhdCB3cmFwcyAtIGFuZCBoZWxkIHRvIGEgd2lkdGhcbiAgIGEgc2VudGVuY2UgcmVhZHMgd2VsbCBhdC5cblxuICAgU3BlY2lmaWNpdHkgb3ZlciB0aGUgdGhlbWUncyBvd24gLm1kLXRvb2x0aXAgcnVsZSwgd2hpY2ggaXMgaW5qZWN0ZWQgaW50byB0aGVcbiAgIGhlYWQgYXQgYm9vdHN0cmFwIGFuZCBzbyB3aW5zIGEgdGllIGFnYWluc3QgdGhpcyBmaWxlLiAqL1xuYm9keSAubWQtdG9vbHRpcC5lY2xpcHNlLXRvb2x0aXAge1xuICAgIG1heC13aWR0aDogMTZyZW07XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBjb2xvcjogJHRleHRHcmV5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIFRoZSBjYXJkIGlzIG9wYXF1ZSwgd2hlcmUgdGhlIGNoaXAgaXQgcmVwbGFjZXMgaXMgcmVhZCB0aHJvdWdoLiAqL1xuYm9keSAubWQtdG9vbHRpcC5lY2xpcHNlLXRvb2x0aXAubWQtc2hvdyB7XG4gICAgb3BhY2l0eTogMTtcbn1cblxuLyogQ2F0VHJheCdzIG93biBhY3Rpb24gaWNvbnMsIGF0IHRoZSAxNnB4IGV2ZXJ5IG90aGVyIGRlbGV0ZSBpbiB0aGUgYXBwIHVzZXMuIENlbnRyZWQgaW4gdGhlIGJ1dHRvbiBmcmFtZVxuICAgcmF0aGVyIHRoYW4gc2l0dGluZyBvbiB0aGUgdGV4dCBiYXNlbGluZSwgd2hpY2ggaXMgd2hlcmUgYW4gaW5saW5lIGltZyBsYW5kcyBieSBkZWZhdWx0LiAqL1xuLmVjbGlwc2UtaWNvbiB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qIFRoZSByb3cncyBpY29uIGFjdGlvbnMgLSB0aGUgb3B0aW9ucyBjaGV2cm9uIGFuZCB0aGUgYmluLiBVbmZyYW1lZDogYSAuYnRuLWRlZmF1bHQgYm94IGFyb3VuZCBhIDE2cHggZ2x5cGhcbiAgIGNhcnJpZXMgbW9yZSB3ZWlnaHQgdGhhbiB0aGUgaW5wdXRzIGl0IHNpdHMgYmVzaWRlLCBhbmQgdGhlcmUgYXJlIHR3byBvZiB0aGVtIG9uIGV2ZXJ5IGl0ZW0gcm93LiBUaGUgaWNvbiBpc1xuICAgdGhlIGFmZm9yZGFuY2UsIHRoZSB3YXkgaXQgaXMgZXZlcnl3aGVyZSBlbHNlIHRoZXNlIGljb25zIGFwcGVhciBpbiB0aGUgYXBwLlxuXG4gICBTaXplZCB0byBrZWVwIHRoZSBjbGljayB0YXJnZXQgaG9uZXN0LCBhbmQgdG8gc3RheSBsZXZlbCB3aXRoIHRoZSBpbnB1dHMgb24gdGhlIHJvdy4gKi9cbi5lY2xpcHNlLWljb25idG4ge1xuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIHBhZGRpbmc6IDZweCA4cHg7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuXG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgb3V0bGluZTogMDtcbiAgICAgICAgY29sb3I6ICRuYXZ5O1xuICAgIH1cbn1cblxuLmVjbGlwc2UtZmllbGQge1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLyogMy02IGRpZ2l0czogTUJTIGl0ZW0gbnVtYmVycywgYW5kIHRoZSBzaG9ydGVyIHdob2xlIG51bWJlcnMgYmVzaWRlIHRoZW0uICovXG4uZWNsaXBzZS1maWVsZC0tbnVtYmVyIHtcbiAgICB3aWR0aDogOXJlbTtcbn1cblxuLyogRXhhY3RseSA4IGNoYXJhY3RlcnM6IE1lZGljYXJlIHByb3ZpZGVyIG51bWJlcnMgYW5kIGZhY2lsaXR5IElEcy4gKi9cbi5lY2xpcHNlLWZpZWxkLS1jb2RlIHtcbiAgICB3aWR0aDogMTFyZW07XG59XG5cbi5lY2xpcHNlLWZpZWxkLS1tb25leSB7XG4gICAgd2lkdGg6IDEwcmVtO1xufVxuXG4vKiBEYXRlIGlucHV0cyBjYXJyeSBwaWNrZXIgZnVybml0dXJlLCBzbyB0aGV5IG5lZWQgbW9yZSB0aGFuIHRlbiBjaGFyYWN0ZXJzLiAqL1xuLmVjbGlwc2UtZmllbGQtLWRhdGUge1xuICAgIHdpZHRoOiAxM3JlbTtcbn1cblxuLyogQSBkYXRlIG9mIGJpcnRoLCB0eXBlZCBhcyBkYXkgLyBtb250aCAvIHllYXIgaW5zdGVhZCBvZiBwaWNrZWQgb2ZmIGEgY2FsZW5kYXIuIFRoZSBvbmUgZGF0ZSBvbiB0aGlzIGZvcm0gdGhhdFxuICAgaXMgZGVjYWRlcyBvbGQsIGFuZCBhIHBpY2tlciBvcGVucyBvbiB0aGlzIG1vbnRoIC0gc28gaXQgaXMgdGhyZWUgYm94ZXMsIGluIHRoZSBvcmRlciB0aGV5IGFyZSBzcG9rZW4sIHdoaWNoXG4gICBpcyBhbHNvIHRoZSBvbmx5IHdheSB0byBtYWtlIHRoZSBmaWVsZCByZWFkIGRkL21tL3l5eXkgKGEgbmF0aXZlIGRhdGUgaW5wdXQgcmVuZGVycyBpbiB0aGUgYnJvd3NlcidzIGxvY2FsZSkuXG4gICBTaXplZCB0byAuZWNsaXBzZS1maWVsZC0tZGF0ZSBzbyBpdCBsaW5lcyB1cCB3aXRoIHRoZSByZWFsIGRhdGVzIGluIHRoZSBzYW1lIGdyaWQuICovXG4uZWNsaXBzZS1kb2Ige1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAwLjM1cmVtO1xuICAgIHdpZHRoOiAxM3JlbTtcblxuICAgIC5mb3JtLWNvbnRyb2wge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjM1cmVtO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjM1cmVtO1xuICAgIH1cblxuICAgIC8qIERheSBhbmQgbW9udGggdGFrZSB0d28gZGlnaXRzLCB0aGUgeWVhciBmb3VyLCBzbyB0aGUgeWVhciBnZXRzIHRoZSByb29tLiAqL1xuICAgIC5mb3JtLWNvbnRyb2w6bnRoLWNoaWxkKDEpLFxuICAgIC5mb3JtLWNvbnRyb2w6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgZmxleDogMSAxIDA7XG4gICAgfVxuXG4gICAgLmZvcm0tY29udHJvbDpudGgtY2hpbGQoMykge1xuICAgICAgICBmbGV4OiAxLjYgMSAwO1xuICAgIH1cbn1cblxuLyogVXAgdG8gMjAgY2hhcmFjdGVycywgd2hlcmUgdGhlIHBsYWNlaG9sZGVyIGlzIGxvbmdlciB0aGFuIHRoZSB2YWx1ZS4gKi9cbi5lY2xpcHNlLWZpZWxkLS1yZWYge1xuICAgIHdpZHRoOiAxOHJlbTtcbn1cblxuLyogRnJlZSB0ZXh0OiB0aGUgY2xhaW0gaXRlbSBkZXNjcmlwdGlvbi4gKi9cbi5lY2xpcHNlLWZpZWxkLS10ZXh0IHtcbiAgICB3aWR0aDogMjZyZW07XG59XG5cbi8qIFNUVUIgY29kZSBwbHVzIGEgZmV3IHdvcmRzLiBFQ0xJUFNFIGNhcHMgaXQgYXQgNTAgY2hhcmFjdGVycywgYnV0IHNpemVkIHRvXG4gICB3aGF0IGlzIG5vcm1hbGx5IHR5cGVkIHJhdGhlciB0aGFuIHRvIHRoZSBtYXhpbXVtLiAqL1xuLmVjbGlwc2UtZmllbGQtLXN0dWIge1xuICAgIHdpZHRoOiAxM3JlbTtcbn1cblxuLyogVGhlIGNsYWltIGl0ZW0gcGlja2VyLCB3aGljaCBzaG93cyBcIjQyNzAyIC0gQ2F0YXJhY3QgZXh0cmFjdGlvbiAuLi5cIi4gKi9cbi5lY2xpcHNlLWZpZWxkLS1pdGVtIHtcbiAgICB3aWR0aDogMjRyZW07XG59XG5cbi8qIFNpemVkIGJ5IHRoZSBsb25nZXN0IG9wdGlvbiBhbmQgaXRzIGFycm93LCBub3QgYnkgdGhlIGNvZGUgaGVsZC4gKi9cbi5lY2xpcHNlLWZpZWxkLS1jaG9pY2Utc20ge1xuICAgIHdpZHRoOiAxMXJlbTtcbn1cblxuLmVjbGlwc2UtZmllbGQtLWNob2ljZSB7XG4gICAgd2lkdGg6IDE1cmVtO1xufVxuXG4uZWNsaXBzZS1maWVsZC0tY2hvaWNlLXdpZGUge1xuICAgIHdpZHRoOiAxOXJlbTtcbn1cblxuLyogVGhlIHByZXNlbnRpbmcgaWxsbmVzcyBwaWNrZXIsIHdob3NlIG9wdGlvbnMgcnVuIFwiMzIyIC0gQm9uZSBNYXJyb3cgdHJhbnNmdXNpb25cbiAgIG9yIHRyYW5zcGxhbnQgKGF1dG9sb2dvdXMgYW5kIGFsbG9nZW5laWMgaW5jbCBoYXJ2ZXN0aW5nLCBjcnlvcHJlc2VydmF0aW9uKVwiLlxuICAgTWVkaWNhcmUgd3JpdGVzIHRoZSBkZXNjcmlwdGlvbnMsIHNvIHRoZWlyIGxlbmd0aCBpcyBub3Qgb3VycyB0byB0cmltOiBzaXplZCB0b1xuICAgaXRzIGxvbmdlc3Qgb3B0aW9uIGxpa2UgdGhlIHBvbGljeSBwaWNrZXIgYmVsb3csIHdpdGggLmVjbGlwc2UtZmllbGQnc1xuICAgbWF4LXdpZHRoIGtlZXBpbmcgaXQgaW5zaWRlIHRoZSBmb3JtLiAqL1xuLmVjbGlwc2UtZmllbGQtLWlsbG5lc3Mge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMzByZW07XG59XG5cbi8qIFRoZSBoZWFsdGggZnVuZCBwb2xpY3kgcGlja2VyLCB3aG9zZSBvcHRpb25zIHJ1biBcIkJ1cGEgLSAjODg4MTIzNDUgLSBPdmVyc2Vhc1xuICAgVmlzaXRvciBIZWFsdGggQ292ZXIgKE9WSEMpIC0gTEFQU0VEXCIuIEV2ZXJ5IHBhcnQgb2YgdGhhdCBlYXJucyBpdHMgcGxhY2UgLVxuICAgdHdvIHBvbGljaWVzIGF0IHRoZSBzYW1lIGZ1bmQgYXJlIHRvbGQgYXBhcnQgYnkgdGhlIGNvdmVyIHR5cGUsIGFuZCB0aGUgc3RhdHVzXG4gICBpcyBhIHJlYXNvbiBub3QgdG8gY2xhaW0gb24gb25lIC0gc28gdGhlIG9wdGlvbiBoYXMgdG8gYmUgcmVhZGFibGUgaW4gZnVsbC5cbiAgIEhvdyB3aWRlIHRoYXQgaXMgZGVwZW5kcyBvbiB0aGUgcGF0aWVudCdzIHBvbGljaWVzIHJhdGhlciB0aGFuIG9uIGFueXRoaW5nXG4gICB0aGlzIGZpbGUga25vd3MsIHNvIHRoZSBmaWVsZCBpcyBzaXplZCB0byBpdHMgbG9uZ2VzdCBvcHRpb24gaW5zdGVhZCBvZiB0byBhXG4gICBudW1iZXIgcGlja2VkIGhlcmU7IHRoZSBmbG9vciBrZWVwcyBhIHNob3J0LW5hbWVkIHBvbGljeSBmcm9tIGNvbGxhcHNpbmcgdG8gYVxuICAgc3R1YiwgYW5kIC5lY2xpcHNlLWZpZWxkJ3MgbWF4LXdpZHRoIHN0b3BzIGEgbG9uZyBvbmUgb3ZlcnJ1bm5pbmcgdGhlIGZvcm0uICovXG4uZWNsaXBzZS1maWVsZC0tcG9saWN5IHtcbiAgICB3aWR0aDogYXV0bztcbiAgICBtaW4td2lkdGg6IDMwcmVtO1xufVxuXG4vKiBUaGUgZXBpc29kZSBpbmRpY2F0b3JzLCByZWFkIGFjcm9zcyByYXRoZXIgdGhhbiBkb3duLiBCb290c3RyYXAncyBvd25cbiAgIGFkamFjZW50LWNoZWNrYm94IHNwYWNpbmcgZmlnaHRzIHRoZSBnYXAgYW5kIHVuZXZlbnMgdGhlIHdyYXBwZWQgcm93cy5cblxuICAgU2l0cyBpbnNpZGUgYSAuZWNsaXBzZS1mb3Jtcm93IGFsb25nc2lkZSB0aGUgZXBpc29kZSdzIGZpZWxkcywgc28gdGhlIGdhcCBpc1xuICAgdGhlIHRpZ2h0ZXIgb2YgdGhlIHR3bzogMS43NXJlbSBiZXR3ZWVuIGxhYmVsbGVkIGZpZWxkcyByZWFkcyBhcyBzZXBhcmF0aW9uLFxuICAgYmV0d2VlbiBmaXZlIGNoZWNrYm94ZXMgb24gb25lIGxpbmUgaXQgcmVhZHMgYXMgZHJpZnQuICovXG4uZWNsaXBzZS1jaGVja3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAwLjRyZW0gMXJlbTtcbiAgICAvKiBBbGlnbnMgdGhlIGZpcnN0IHJvdyBvZiBib3hlcyB3aXRoIHRoZSBpbnB1dHMgYmVzaWRlIHRoZW0gcmF0aGVyIHRoYW5cbiAgICAgICBmbG9hdGluZyB0aGVtIGFnYWluc3QgdGhlIGxhYmVscy4gKi9cbiAgICBwYWRkaW5nLXRvcDogMC4zNXJlbTtcblxuICAgIC5jaGVja2JveC1pbmxpbmUgKyAuY2hlY2tib3gtaW5saW5lIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEZpZWxkIGdyaWRcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIEZvciB0aGUgZGVuc2VyIHBhcnRzIG9mIHRoZSBmb3JtLCB3aGVyZSBtb3N0IGZpZWxkcyBjYXJyeSBhIHNlbnRlbmNlXG4vKiBvZiBoZWxwIHdpZGVyIHRoYW4gdGhlIGZpZWxkIGl0IGV4cGxhaW5zLiBQYWNrZWQgbGVmdCB0aGUgd2F5XG4vKiAuZWNsaXBzZS1mb3Jtcm93IHBhY2tzLCBlYWNoIGdyb3VwIGlzIGFzIHdpZGUgYXMgaXRzIG93biBzZW50ZW5jZSwgc29cbi8qIG5vIHR3byBsaW5lcyBzdGFydCB0aGVpciBmaWVsZHMgYXQgdGhlIHNhbWUgb2Zmc2V0IGFuZCB0aGUgZ2Fwc1xuLyogYmV0d2VlbiB0aGVtIGFsbCBkaWZmZXIuIE9uZSBjb2x1bW4gZ3JpZCBpbnN0ZWFkOiB0aGUgY29sdW1ucyBhcmUgdGhlXG4vKiBzYW1lIG9uIGV2ZXJ5IHJvdyBvZiBhIHNlY3Rpb24sIHNvIGZpZWxkcyBsaW5lIHVwIGRvd24gdGhlIGZvcm0gYXNcbi8qIHdlbGwgYXMgYWNyb3NzIGl0LCB3aXRoIGVhY2ggZmllbGQncyBoZWxwIHRleHQgdW5kZXIgaXQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLWZpZWxkZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICAvKiBBIHNldCBjb2x1bW4gcmF0aGVyIHRoYW4gYSBzaGFyZSBvZiB0aGUgcm93OiBzdHJldGNoaW5nIGZvdXIgZmllbGRzIGFjcm9zc1xuICAgICAgIGEgZGlhbG9nIDgwJSBvZiB0aGUgd2luZG93IHdpZGUgcHV0cyBhIGhhbmQncyB3aWR0aCBiZXR3ZWVuIGEgZHJvcC1kb3duIGFuZFxuICAgICAgIHRoZSBvbmUgdGhhdCBxdWFsaWZpZXMgaXQuIFRoZSBzbGFjayBnb2VzIHRvIHRoZSBlbmQgb2YgdGhlIHJvdyBpbnN0ZWFkLiAqL1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgMTZyZW0pO1xuICAgIGNvbHVtbi1nYXA6IDJyZW07XG4gICAgYWxpZ24taXRlbXM6IHN0YXJ0O1xuXG4gICAgLyogVGhlIGNvbHVtbiBpcyB0aGUgd2lkdGggaGVyZSwgc28gYSBmaWVsZCBrZXB0IGF0IGl0cyBvd24gd291bGQgb25seVxuICAgICAgIGxlYXZlIGEgcmFnZ2VkIGVkZ2UgaW5zaWRlIGl0cyBjZWxsLiAqL1xuICAgIC5lY2xpcHNlLWZpZWxkIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgPiAuZm9ybS1ncm91cCB7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgLyogU2xhY2sgYXQgdGhlIGVuZCBvZiB0aGUgY29sdW1uLCBzbyBhIGxhYmVsIGxvbmdlciB0aGFuIGl0cyBmaWVsZCAtXG4gICAgICAgICAgIFwiU2VydmljaW5nIFByb3ZpZGVyIElEIChvcHRpb25hbClcIiAtIGhhcyBzb21ld2hlcmUgdG8gZ28gaW5zdGVhZCBvZlxuICAgICAgICAgICBydW5uaW5nIGF0IHRoZSBjb2x1bW4gYmVzaWRlIGl0LiAqL1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtO1xuICAgIH1cblxuICAgIC8qIEEgc2VsZWN0IHNpemVzIGl0c2VsZiBmcm9tIGl0cyBvcHRpb25zIHVubGVzcyBpdCBpcyB0b2xkIG5vdCB0bywgd2hpY2hcbiAgICAgICBsZWF2ZXMgYSBkcm9wLWRvd24gb2Ygc2hvcnQgY29kZXMgbmFycm93ZXIgdGhhbiB0aGUgdGV4dCBpbnB1dCBiZXNpZGUgaXQuXG4gICAgICAgQm90aCBmaWxsIHRoZSBjb2x1bW4uIFN0YXRlZCBhZ2FpbnN0IHRoZSBlbGVtZW50IGFzIHdlbGwgYXMgdGhlIGNsYXNzLFxuICAgICAgIHRvIGJlYXQgdGhlIC5lY2xpcHNlLWZpZWxkLS1jaG9pY2Ugd2lkdGhzIHdoYXRldmVyIHRoZSBzb3VyY2Ugb3JkZXIuICovXG4gICAgc2VsZWN0LmZvcm0tY29udHJvbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAvKiAuZm9ybS1jb250cm9sJ3MgaGVpZ2h0LCB3aGljaCBhIHNlbGVjdCBvdGhlcndpc2UgdGFrZXMgZnJvbSBpdHMgZm9udC4gKi9cbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgIH1cbn1cblxuLyogQSBsaW5lIG9mIGl0cyBvd246IGNoZWNrYm94ZXMgdGhhdCByZWFkIGFjcm9zcywgYW5kIHRoZSBkZWNsYXJhdGlvbnNcbiAgIHdob3NlIGxhYmVsIGlzIGEgc2VudGVuY2UuICovXG4uZWNsaXBzZS1maWVsZGdyaWRfX3dpZGUge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gLTE7XG59XG5cbi8qIFR3byBjb2x1bW5zLCBmb3IgdGhlIHR3byBwaWNrZXJzIHdob3NlIG9wdGlvbnMgYXJlIGEgc2VudGVuY2Ugc29tZW9uZSBlbHNlXG4gICB3cm90ZSAtIHRoZSBwYXRpZW50J3MgcmVmZXJyYWxzLCBhbmQgTWVkaWNhcmUncyBwcmVzZW50aW5nIGlsbG5lc3MgY29kZXMuXG4gICBFdmVyeSBvdGhlciBmaWVsZCBpcyBvbmUgY29sdW1uLCBzbyB0aGUgZHJvcC1kb3ducyBhbmQgdGhlIHRleHQgaW5wdXRzIG9uIGFcbiAgIHJvdyBhcmUgdGhlIHNhbWUgd2lkdGguICovXG4uZWNsaXBzZS1maWVsZGdyaWRfX3NwYW4yIHtcbiAgICBncmlkLWNvbHVtbjogc3BhbiAyO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBhbmVsc1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogT25lIGNhcmQgcGVyIHRoaW5nIGJlaW5nIHJlYWQ6IHRoZSBhc3Nlc3NtZW50LCB0aGUgaXRlbSBiZW5lZml0cyxcbi8qIHdoYXQgaXMgYWJvdXQgdG8gYmUgbG9kZ2VkLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1wYW5lbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIHBhZGRpbmc6IDEuMjVyZW0gMS41cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG59XG5cbi5lY2xpcHNlLXBhbmVsLS1xdWlldCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcbn1cblxuLmVjbGlwc2UtcGFuZWxfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMC42cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuODVyZW07XG59XG5cbi5lY2xpcHNlLXBhbmVsX190aXRsZSB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbn1cblxuLmVjbGlwc2UtcGFuZWxfX25vdGUge1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qIFRoZSB0cmFuc2FjdGlvbiByZWZlcmVuY2UsIHdoaWNoIHByYWN0aWNlcyByZWFkIG91dCBhbmQgcXVvdGUgYmFjay4gKi9cbi5lY2xpcHNlLXJlZiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtZmFtaWx5OiBcIlNvdXJjZSBDb2RlIFByb1wiLCBcIlNGTW9uby1SZWd1bGFyXCIsIENvbnNvbGFzLCBtb25vc3BhY2U7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgcGFkZGluZzogMnB4IDhweDtcbiAgICBjb2xvcjogJHRleHRHcmV5O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE1vbmV5IHN1bW1hcnkgdGlsZXNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFRoZSBmb3VyIG51bWJlcnMgdGhlIHByYWN0aWNlIGFjdHMgb24sIHB1bGxlZCBvdXQgb2YgdGhlIHBlci1pdGVtXG4vKiB0YWJsZSBzbyB0aGUgZ2FwIGlzIG5vdCBidXJpZWQgaW4gYSByb3cgb2YgY3VycmVuY3kuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLXN1bW1hcnkge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCg4LjVyZW0sIDFmcikpO1xuICAgIGdhcDogMC43NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xufVxuXG4uZWNsaXBzZS1zdW1tYXJ5X190aWxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgcGFkZGluZzogMC43cmVtIDAuOXJlbTtcbn1cblxuLmVjbGlwc2Utc3VtbWFyeV9fbGFiZWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgIG1hcmdpbi1ib3R0b206IDAuM3JlbTtcbn1cblxuLmVjbGlwc2Utc3VtbWFyeV9fdmFsdWUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIGNvbG9yOiAkdGV4dEdyZXk7XG59XG5cbi5lY2xpcHNlLXN1bW1hcnlfX3RpbGUtLWdhcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0xMDtcbiAgICBib3JkZXItY29sb3I6ICR5ZWxsb3ctdHAtMzA7XG5cbiAgICAuZWNsaXBzZS1zdW1tYXJ5X192YWx1ZSB7XG4gICAgICAgIGNvbG9yOiAkZGFuZ2VyO1xuICAgIH1cbn1cblxuLmVjbGlwc2Utc3VtbWFyeV9fdGlsZS0tY2xlYXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0wODtcbiAgICBib3JkZXItY29sb3I6ICRncmVlbi10cC0zMDtcblxuICAgIC5lY2xpcHNlLXN1bW1hcnlfX3ZhbHVlIHtcbiAgICAgICAgY29sb3I6ICRncmVlbjtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2FsbG91dHMgLSBjb25maXJtLCBsb2RnZWQsIGZhaWxlZFxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZWNsaXBzZS1jYWxsb3V0IHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgYm9yZGVyLWxlZnQtd2lkdGg6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuXG4gICAgcCB7XG4gICAgICAgIG1hcmdpbjogMCAwIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgICBsaW5lLWhlaWdodDogMS42O1xuXG4gICAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZWNsaXBzZS1jYWxsb3V0X190aXRsZSB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG1hcmdpbjogMCAwIDAuNXJlbTtcbn1cblxuLyogSXRlbWlzZWQgZGV0YWlsIHVuZGVyIGEgY2FsbG91dCAtIHdoaWNoIGl0ZW1zIHdlcmUgcmVwcmljZWQsIGFuZCBmcm9tIHdoYXQgdG8gd2hhdC4gU2l6ZWQgdG8gdGhlIGNhbGxvdXQnc1xuICAgb3duIHBhcmFncmFwaHMgcmF0aGVyIHRoYW4gdGhlIGdsb2JhbCBsaXN0IHN0eWxlcywgd2hpY2ggYXJlIHNldCBmb3IgYm9keSBjb3B5LiAqL1xuLmVjbGlwc2UtY2FsbG91dF9fbGlzdCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmctbGVmdDogMS4yNXJlbTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcblxuICAgIGxpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcblxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4vKiBBbiBhY3Rpb24gb2ZmZXJlZCBieSBhIGNhbGxvdXQgaXRzZWxmIHJhdGhlciB0aGFuIGJ5IHRoZSBzdGVwJ3MgYWN0aW9uIGJhciAtIHRoZSBvbmUgY2FzZSBiZWluZyB0aGUgcGF0aWVudFxuICAgcGF5bWVudCBhIGxvZGdlZCBjbGFpbSBsZWF2ZXMgdG8gY29sbGVjdCwgd2hpY2ggYmVsb25ncyBiZXNpZGUgdGhlIHNlbnRlbmNlIHRoYXQgc2F5cyBzby4gKi9cbi5lY2xpcHNlLWNhbGxvdXRfX2FjdGlvbiB7XG4gICAgbWFyZ2luLXRvcDogMC44NXJlbTtcbn1cblxuXG4uZWNsaXBzZS1jYWxsb3V0LS1zdWNjZXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMDg7XG4gICAgYm9yZGVyLWNvbG9yOiAkZ3JlZW47XG59XG5cbi8qIEEgY2FsbG91dCBzaXR0aW5nIGluc2lkZSBhbiAuZWNsaXBzZS1wYW5lbCByYXRoZXIgdGhhbiBvbiBpdHMgb3duIGJlbG93IG9uZS4gSXRzIHRleHQgaXMgaW5zZXQgYnkgaXRzIG93blxuICAgNHB4IGFjY2VudCBib3JkZXIgYW5kIDEuMjVyZW0gcGFkZGluZywgd2hpY2ggaXMgZXhhY3RseSB0aGUgMS41cmVtIHRoZSBwYW5lbCBwYWRzIGl0cyBjb250ZW50IGJ5IC0gc28gcHVsbGVkXG4gICBvdXQgYnkgdGhhdCBtdWNoLCB0aGUgY2FsbG91dCBzcGFucyB0aGUgcGFuZWwgZWRnZSB0byBlZGdlIGFuZCB0aGUgd29yZHMgaW5zaWRlIGl0IHN0YXJ0IG9uIHRoZSBzYW1lIGxlZnRcbiAgIGVkZ2UgYXMgdGhlIHBhbmVsJ3MgaGVhZGluZyBhbmQgcHJvc2UuIFdpdGhvdXQgaXQgYSBwYW5lbCByZWFkcyBhcyB0aHJlZSBzdGFnZ2VyZWQgbGVmdCBtYXJnaW5zOiB0aGUgdGl0bGUsXG4gICB0aGUgZmFjdHMgdGFibGUsIGFuZCB0aGUgY2FsbG91dC4gKi9cbi5lY2xpcHNlLWNhbGxvdXQtLWZsdXNoIHtcbiAgICBtYXJnaW4tbGVmdDogLTEuNXJlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07XG59XG5cbi5lY2xpcHNlLWNhbGxvdXQtLWRhbmdlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMTcsIDgzLCA3OSwgMC4wOCk7XG4gICAgYm9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG4gICAgY29sb3I6ICRkYW5nZXI7XG59XG5cbi5lY2xpcHNlLWNhbGxvdXQtLXdhaXRpbmcge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMTA7XG4gICAgYm9yZGVyLWNvbG9yOiAkeWVsbG93O1xuICAgIGNvbG9yOiAkd2FybmluZy10ZXh0O1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQWN0aW9uIGJhcnNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIEV2ZXJ5IHN0ZXAgZW5kcyBpbiBvbmUuIFRoZSBnbG9iYWwgLmJ0bi1uYXZ5IC8gLmJ0bi1jYW5jZWwgYXJlIGZ1bGxcbi8qIHdpZHRoIHNsYWJzIGNhcHBlZCBhdCAyMjBweCwgd2hpY2ggcmVhZCBhcyBhIGZvcm0gZmllbGQgd2hlbiB0d28gc2l0XG4vKiBzaWRlIGJ5IHNpZGUsIHNvIGluIGhlcmUgdGhleSBzaXplIHRvIHRoZWlyIGxhYmVsIGluc3RlYWQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5lY2xpcHNlLWFjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDAuNzVyZW07XG4gICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgIHBhZGRpbmctdG9wOiAxLjI1cmVtO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cbiAgICAuYnRuIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICAgICAgbWluLXdpZHRoOiA4cmVtO1xuICAgICAgICBwYWRkaW5nOiA3cHggMjJweDtcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgIH1cbn1cblxuLyogUHVzaGVzIHRoZSBzZWNvbmRhcnkgYWN0aW9uIGF3YXkgZnJvbSB0aGUgcHJpbWFyeSwgc28gdGhlIGJ1dHRvbiB0aGF0IHNlbmRzXG4gICBhIGNsYWltIHRvIE1lZGljYXJlIGlzIG5ldmVyIHRoZSBvbmUgdW5kZXIgYSBzdHJheSBjbGljay4gT25jZSB0aGUgcHJpbWFyeSBpc1xuICAgZ29uZSB0aGUgcGFpciBjb2xsYXBzZXMgYmFjayB0byBvbmUgcmlnaHQtYWxpZ25lZCBidXR0b24uICovXG4uZWNsaXBzZS1hY3Rpb25zX19zcGFjZXIge1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcblxuICAgICY6b25seS1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB9XG59XG5cbi5lY2xpcHNlLWFjdGlvbnMtLWlubGluZSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgICBib3JkZXItdG9wOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFRhYmxlcyBpbnNpZGUgdGhlIGZsb3dcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmVjbGlwc2UtdGFibGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuXG4gICAgPiB0aGVhZCA+IHRyID4gdGgge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6ICR0ZXh0LW11dGVkO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cblxuICAgID4gdGJvZHkgPiB0ciA+IHRkIHtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG5cbiAgICAvKiBUaGUgdG90YWxzIHJvdyByZWFkcyBhcyBhIHN1bW1hcnkgb2YgdGhlIHJvd3MgYWJvdmUgaXQsIG5vdCBhbm90aGVyIGl0ZW0uICovXG4gICAgPiB0Ym9keSA+IHRyLmVjbGlwc2UtdGFibGVfX3RvdGFsID4gdGQge1xuICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG4gICAgfVxufVxuXG4vKiBMYWJlbCAvIHZhbHVlIHBhaXJzIC0gdGhlIGFzc2Vzc21lbnQgZGV0YWlsIHJvd3MuICovXG4uZWNsaXBzZS10YWJsZS0tZmFjdHMge1xuICAgID4gdGJvZHkgPiB0ciA+IHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDM0JTtcbiAgICAgICAgY29sb3I6ICR0ZXh0R3JleTtcbiAgICB9XG4gICAgPiB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGQge1xuICAgICAgICBib3JkZXItdG9wOiAwO1xuICAgIH1cbn1cblxuLyogU2hvcnQgbGFiZWxzIC0gU3RhdHVzLCBCZW5lZml0LCBDbGFpbSBJRCAtIHdoZXJlIHRoZSBlbGlnaWJpbGl0eSBhc3Nlc3NtZW50J3MgcnVuIHRvIFwiUG9zc2libGUgcHJlLWV4aXN0aW5nXG4gICBhaWxtZW50XCIuIFRoZSAzNCUgY29sdW1uIGFib3ZlIGlzIHNpemVkIGZvciB0aG9zZSwgYW5kIG92ZXIgYSBzaG9ydCBvbmUgaXQgbGVhdmVzIGEgaGFuZCdzIHdpZHRoIG9mIGdhcFxuICAgYmV0d2VlbiB0aGUgbGFiZWwgYW5kIHRoZSB2YWx1ZSBpdCBiZWxvbmdzIHRvLiBUaGlzIHNpemVzIHRoZSBjb2x1bW4gdG8gaXRzIG93biBsb25nZXN0IGxhYmVsIGluc3RlYWQ6XG4gICB3aWR0aCAxJSB3aXRoIG5vd3JhcCBpcyB0aGUgc2hyaW5rLXRvLWZpdCB0cmljaywgc2luY2UgYW4gYXV0by1sYXlvdXQgdGFibGUgY2Fubm90IGdvIG5hcnJvd2VyIHRoYW4gdGhlXG4gICBjb250ZW50IGl0IGhvbGRzLlxuXG4gICBUaGUgbGVmdCBwYWRkaW5nIGdvZXMgd2l0aCBpdC4gQm9vdHN0cmFwIHBhZHMgZXZlcnkgY2VsbCA4cHgsIGFuZCBvdmVyIGEgdGFibGUgc2l0dGluZyBkaXJlY3RseSB1bmRlciBhXG4gICBwYW5lbCBoZWFkaW5nIHRoYXQgcmVhZHMgYXMgdGhlIHRhYmxlIGJlaW5nIGluZGVudGVkIGZyb20gdGhlIGhlYWRpbmcgYnkgYW4gYW1vdW50IG5vdGhpbmcgY2hvc2UuICovXG4uZWNsaXBzZS10YWJsZS0tZmFjdHMtbmFycm93IHtcbiAgICA+IHRib2R5ID4gdHIgPiB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAxJTtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07XG4gICAgfVxufVxuXG4uZWNsaXBzZS1udW1lcmljIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVW5wYWlkIHBhdGllbnQgY2xhaW0gY29uZmlybWF0aW9uXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBUaGUgZGlhbG9nIGFza2VkIGJlZm9yZSBhIHBhdGllbnQgKFBDKSBjbGFpbSBsb2RnZXMgd2l0aCBpdHMgYWNjb3VudFxuLyogdW5zZXR0bGVkLiBUd28gcGF0aHdheXMgc2l0IHNpZGUgYnkgc2lkZSBpbiBpdCwgc28gdGhleSBhcmUgYmxvY2tlZFxuLyogb3V0IHJhdGhlciB0aGFuIHJ1biB0b2dldGhlciBhcyBwcm9zZSAtIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbVxuLyogaXMgdGhlIHdob2xlIHBvaW50IG9mIHRoZSBkaWFsb2cuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi51bnBhaWQtY2xhaW0tbW9kYWxfX2xlYWQge1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG1hcmdpbjogMCAwIDFyZW07XG59XG5cbi51bnBhaWQtY2xhaW0tbW9kYWxfX3BhdGgge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcbiAgICBib3JkZXItbGVmdC13aWR0aDogNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBmb250LXNpemU6IDEzcHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgICAgIGNvbG9yOiAkdGV4dEdyZXk7XG4gICAgfVxufVxuXG4udW5wYWlkLWNsYWltLW1vZGFsX19wYXRoLXRpdGxlIHtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgbWFyZ2luOiAwIDAgMC4zNXJlbTtcbn1cblxuLyogVGhlIHBhdGh3YXkgYmVpbmcgdGFrZW4gYnkgcHJlc3NpbmcgdGhyb3VnaCwgd2hpY2ggaXMgdGhlIG9uZSB3b3J0aCByZWFkaW5nIHR3aWNlLiAqL1xuLnVucGFpZC1jbGFpbS1tb2RhbF9fcGF0aC0td2FybiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0xMDtcbiAgICBib3JkZXItY29sb3I6ICR5ZWxsb3c7XG5cbiAgICBwIHtcbiAgICAgICAgY29sb3I6ICR3YXJuaW5nLXRleHQ7XG4gICAgfVxufVxuXG4udW5wYWlkLWNsYWltLW1vZGFsX19mb290bm90ZSB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgbWFyZ2luOiAwLjc1cmVtIDAgMDtcbn1cblxuLyogVGhlIHR3byBhbnN3ZXJzIHNpdCB0b2dldGhlciByYXRoZXIgdGhhbiBzdGFja2VkOiB0aGV5IGFyZSBhbHRlcm5hdGl2ZXMsIG5vdCBhbiBhY3Rpb24gYW5kIGFuIGVzY2FwZS4gKi9cbi51bnBhaWQtY2xhaW0tbW9kYWxfX2FjdGlvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAwLjc1cmVtO1xuXG4gICAgLmJ0biB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTGVkZ2VyIGFjY291bnRzICh0cmFuc2FjdGlvbiBzZXR1cClcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFRoZSBiYW5rIGFuZCByZXZlbnVlIGFjY291bnRzIGV2ZXJ5IGNsYWltIGJvb2tzIGFnYWluc3QsIGNob3NlblxuLyogYmVmb3JlIHRoZSBjaGFubmVsLiBUaGUgcGFpciBpcyBjZW50cmVkIG9uIHRoZSBzY3JlZW47IGVhY2ggbGFiZWxcbi8qIHNpdHMgY2VudHJlZCBvdmVyIGl0cyBvd24gZnVsbC13aWR0aCBzZWxlY3QgcmF0aGVyIHRoYW4gb3ZlciB0aGVcbi8qIHNlbGVjdCdzIHRleHQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5mdW5kZXItYWNjb3VudHMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRnYXA6IDJyZW07XG5cdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLmZ1bmRlci1hY2NvdW50c19fZmllbGQge1xuXHRmbGV4OiAwIDEgMjByZW07XG5cdC8qIFNwYWNpbmcgYmV0d2VlbiB0aGUgcGFpciBpcyB0aGUgY29udGFpbmVyJ3MgZ2FwOyBkcm9wIC5mb3JtLWdyb3VwJ3Mgb3duLiAqL1xuXHRtYXJnaW46IDA7XG59XG5cbi5mdW5kZXItYWNjb3VudHNfX2xhYmVsIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdC8qIENlbnRyZWQgb3ZlciB0aGUgd2hvbGUgZmllbGQsIHdoaWNoIHRoZSBzZWxlY3QgZmlsbHMsIHNvIHRoZSBsYWJlbCBzaXRzXG5cdCAgIG92ZXIgdGhlIG1pZGRsZSBvZiB0aGUgZHJvcGRvd24uICovXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0bWFyZ2luOiAwIDAgMC41cmVtO1xufVxuXG4vKiBGdWxsIHdpZHRoIHNvIHRoZSBjZW50cmVkIGxhYmVsIGFib3ZlIHNwYW5zIHRoZSBzYW1lIGJveC4gU3RhdGVkIGFnYWluc3QgdGhlXG4gICBlbGVtZW50IGFuZCBjbGFzcyB0b2dldGhlciB0byBiZWF0IHRoZSAub3BlcmF0aW9uLWZvcm0gc2VsZWN0IHJ1bGUgd2hhdGV2ZXJcbiAgIHRoZSBzb3VyY2Ugb3JkZXIsIHRoZSB3YXkgdGhlIGZpZWxkIGdyaWQgZG9lcy4gKi9cbi5mdW5kZXItYWNjb3VudHNfX2ZpZWxkIHNlbGVjdC5mb3JtLWNvbnRyb2wge1xuXHR3aWR0aDogMTAwJTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEZ1bmRlciBjaG9pY2UgKHRyYW5zYWN0aW9uIHNldHVwKVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogT25lIGNhcmQgcGVyIGNsYWltaW5nIGNoYW5uZWwsIHNheWluZyB3aGF0IGl0IGNsYWltcyBhbmQgd2hhdCB0aGVcbi8qIHBhdGllbnQncyByZWNvcmQgaG9sZHMgZm9yIGl0LCB3aXRoIHRoZSBsaWtlbHkgb25lIG1hcmtlZC4gQnVpbHQgb25cbi8qIHRoZSBwYW5lbCBsb29rIHVzZWQgdGhyb3VnaCB0aGUgcmVzdCBvZiB0aGlzIGZsb3c7IHRoZSBhY3Rpb24gaW5cbi8qIGVhY2ggY2FyZCBpcyB0aGUgc2FtZSBidXR0b24gaXQgaGFzIGFsd2F5cyBiZWVuLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uZnVuZGVyLWNob2ljZSB7XG4gICAgbWF4LXdpZHRoOiA1MnJlbTtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmZ1bmRlci1jaG9pY2VfX2hlYWQge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5mdW5kZXItY2hvaWNlX19oZWFkaW5nIHtcbiAgICBtYXJnaW46IDAgMCAwLjRyZW07XG59XG5cbi5mdW5kZXItY2hvaWNlX19sZWRlIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6IDM4cmVtO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4uZnVuZGVyLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxNHJlbSwgMWZyKSk7XG4gICAgZ2FwOiAxcmVtO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5mdW5kZXItY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBnYXA6IDAuM3JlbTtcbiAgICBwYWRkaW5nOiAxLjE1cmVtIDEuMjVyZW0gMS4yNXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xufVxuXG4vKiBUaGUgY2FyZCB0aGUgcmVjb3JkIHBvaW50cyB0by4gQSBuYXZ5IGVkZ2UgYW5kIGEgZmxhZyBvbiBhbiBvdGhlcndpc2UgaWRlbnRpY2FsIGNhcmQ6IGl0IGlzIHRoZSBsaWtlbHlcbiAgIGNob2ljZSwgbm90IHRoZSBvbmx5IG9uZSwgYW5kIHRoZSBvdGhlciB0d28gaGF2ZSB0byBzdGF5IGFzIGVhc3kgdG8gcGljay4gKi9cbi5mdW5kZXItY2FyZC0tc3VnZ2VzdGVkIHtcbiAgICBib3JkZXItY29sb3I6ICRuYXZ5O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG59XG5cbi5mdW5kZXItY2FyZF9fZmxhZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTAuNnJlbTtcbiAgICBsZWZ0OiAxLjE1cmVtO1xuICAgIHBhZGRpbmc6IDAuMTVyZW0gMC41NXJlbTtcbiAgICBmb250LXNpemU6IDlweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcbiAgICBjb2xvcjogJHdoaXRlO1xufVxuXG4uZnVuZGVyLWNhcmRfX25hbWUge1xuICAgIGZvbnQtc2l6ZTogMTdweDtcbiAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgIGNvbG9yOiAkbmF2eTtcbn1cblxuLyogSW4tcGF0aWVudCBvciBvdXQtcGF0aWVudCAtIHRoZSBvbmUgZmFjdCB0aGF0IGRlY2lkZXMgd2hpY2ggY2FyZCBpcyByaWdodCwgc28gaXQgcmVhZHMgYmVmb3JlIHRoZSBibHVyYi5cbiAgIFNldCBsaWtlIHRoZSBzdW1tYXJ5IHRpbGUgbGFiZWxzIHJhdGhlciB0aGFuIGFzIGEgY29sb3VyIG9mIGl0cyBvd24uICovXG4uZnVuZGVyLWNhcmRfX3Njb3BlIHtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbn1cblxuLmZ1bmRlci1jYXJkX19ibHVyYiB7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU1O1xuICAgIGNvbG9yOiAkdGV4dC1tdXRlZDtcbiAgICBtYXJnaW4tdG9wOiAwLjE1cmVtO1xufVxuXG4vKiBXaGF0IHRoZSBwYXRpZW50IHJlY29yZCBob2xkcyBmb3IgdGhpcyBjaGFubmVsLCB1bmRlciBhIHJ1bGU6IGl0IGlzIGFib3V0IHRoaXMgcGF0aWVudCByYXRoZXIgdGhhbiBhYm91dFxuICAgdGhlIGNoYW5uZWwsIGFuZCByZWFkcyBhcyB0aGUgbGFzdCB0aGluZyBjaGVja2VkIGJlZm9yZSB0aGUgYnV0dG9uIGJlbG93IGl0LiBQdXNoZWQgdG8gdGhlIGZvb3Qgb2YgdGhlXG4gICBjYXJkIHNvIHRoZSBydWxlcyBhbmQgdGhlIGJ1dHRvbnMgbGluZSB1cCBhY3Jvc3MgdGhlIHJvdyB3aGF0ZXZlciBsZW5ndGggdGhlIGJsdXJicyBydW4gdG8uXG5cbiAgIEEgbGlzdCByYXRoZXIgdGhhbiBvbmUgbGluZSwgYmVjYXVzZSB0aGUgRUNMSVBTRSBjYXJkIGhhcyB0d28gdGhpbmdzIHRvIHJlcG9ydDogYW4gaW4tcGF0aWVudCBjbGFpbSBuZWVkc1xuICAgYSBoZWFsdGggZnVuZCBwb2xpY3kgYW5kIGEgTWVkaWNhcmUgZW50aXRsZW1lbnQgYm90aC4gSGVsZCB0byB0aGUgaGVpZ2h0IG9mIHR3byByb3dzIG9uIGV2ZXJ5IGNhcmQgc28gdGhlXG4gICBydWxlIHN0YXlzIGxldmVsIGFjcm9zcyB0aGUgcm93IHdoaWxlIG9ubHkgb25lIG9mIHRoZSB0aHJlZSBjYXJyaWVzIGEgc2Vjb25kIGxpbmUuICovXG4uZnVuZGVyLWNhcmRfX3JlY29yZHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuM3JlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAzLjNlbTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIHBhZGRpbmctdG9wOiAwLjg1cmVtO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbi5mdW5kZXItY2FyZF9fcmVjb3JkIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBnYXA6IDAuNHJlbTtcbn1cblxuLmZ1bmRlci1jYXJkX19tYXJrIHtcbiAgICBmb250LXNpemU6IDEycHg7XG59XG5cbi5mdW5kZXItY2FyZF9fcmVjb3JkLS1oZWxkIHtcbiAgICBjb2xvcjogJGdyZWVuO1xufVxuXG4uZnVuZGVyLWNhcmRfX3JlY29yZC0tbWlzc2luZyB7XG4gICAgY29sb3I6ICR0ZXh0LW11dGVkO1xufVxuXG4vKiBidG4tbmF2eSBzZXRzIGl0cyBvd24gbWV0cmljcyBhbmQgYnRuLXByaW1hcnkga2VlcHMgQm9vdHN0cmFwJ3MsIHNvIHRoZSB0aHJlZSBjb21lIG91dCBkaWZmZXJlbnQgaGVpZ2h0c1xuICAgYW5kIGtub2NrIHRoZSBydWxlcyBhYm92ZSB0aGVtIG91dCBvZiBsaW5lIHdpdGggZWFjaCBvdGhlci4gTWF0Y2hlZCBoZXJlIHRvIGJ0bi1uYXZ5LCB3aGljaCB0d28gb2YgdGhlXG4gICB0aHJlZSBhbHJlYWR5IGFyZSwgYW5kIHN0cmV0Y2hlZCB0byB0aGUgY2FyZCBzbyB0aGUgYWN0aW9uIHJlYWRzIGFzIGJlbG9uZ2luZyB0byBpdC4gQ29sb3VycyBhcmUgbGVmdCB0b1xuICAgdGhlIGJ1dHRvbiBjbGFzc2VzIHRoZW1zZWx2ZXMuICovXG4uZnVuZGVyLWNhcmRfX2FjdGlvbiB7XG4gICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICBtYXJnaW4tdG9wOiAwLjlyZW07XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIHBhZGRpbmc6IDRweCAxOHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLmZ1bmRlci1jaG9pY2VfX2Zvb3Qge1xuICAgIG1hcmdpbjogMS4yNXJlbSAwIDA7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUGF0aWVudCBjb3ZlciBjaGVjayAocGF0aWVudENvdmVyVmFsaWRhdGUsIHBhdGllbnRDb3ZlclJlc3VsdClcbi8qIFRoZSBWYWxpZGF0ZSBidXR0b25zIG9uIHRoZSBwYXRpZW50IGZvcm0ncyBNZWRpY2FyZSwgRFZBIGFuZCBmdW5kXG4vKiBzZWN0aW9ucywgYW5kIHRoZSBhbnN3ZXIgdW5kZXIgZWFjaC4gVGhlIGFuc3dlcnMgcmV1c2UgdGhlIEVDTElQU0Vcbi8qIGNhbGxvdXRzLCBzbyBhIHZlcmlmaWVkIGNhcmQgcmVhZHMgdGhlIHNhbWUgaGVyZSBhcyBvbiBhIGNsYWltLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBTaXRzIGxlZnQgb2YgdGhlIHNlY3Rpb24ncyBDbGVhciAob3IgcmVtb3ZlKSBidXR0b24uICovXG4ucGF0aWVudC1jb3Zlci12YWxpZGF0ZSB7XG5cdG1hcmdpbi1yaWdodDogNnB4O1xufVxuXG4ucGF0aWVudC1jb3Zlci1yZXN1bHQge1xuXHQuZWNsaXBzZS1jYWxsb3V0IHtcblx0XHRtYXJnaW46IDFyZW0gMCAwO1xuXHR9XG59XG5cbi8qIEluc2lkZSBhIHBvbGljeSdzIHBhbmVsIHRoZSBhbnN3ZXIgc2l0cyBiZXR3ZWVuIHRoZSBoZWFkaW5nIGFuZCB0aGUgYm9keSwgc28gaXQgc2hvd3Mgd2hldGhlciBvciBub3QgdGhlXG4gICBwb2xpY3kgaXMgb3BlbiAtIGluc2V0IHRvIHRoZSBwYW5lbCdzIG93biBwYWRkaW5nLiAqL1xuLnBhdGllbnQtY292ZXItcmVzdWx0LS1pbi1wYW5lbCAucGF0aWVudC1jb3Zlci1yZXN1bHQge1xuXHRwYWRkaW5nOiAwIDE1cHggMTVweDtcbn1cblxuLnBhdGllbnQtY292ZXItcmVzdWx0X19zdGFsZSB7XG5cdGNvbG9yOiAkd2FybmluZy10ZXh0O1xufVxuXG4ucGF0aWVudC1jb3Zlci1yZXN1bHRfX2RpZmZlcmVuY2VzIHtcblx0bWFyZ2luOiAwLjc1cmVtIDAgMDtcblx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cblx0dGgsXG5cdHRkIHtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHR9XG59XG4iLCIvKiBUaGUgc2Nyb2xsaW5nIFBERiB2aWV3ZXIgKDxwZGYtc2Nyb2xsLXZpZXdlcj4pIHVzZWQgYnkgdGhlIGRvY3VtZW50IHByZXZpZXcgYW5kIHByb2Nlc3NpbmdcbiAgIHJlcG9ydCBtb2RhbHMuIFRoZSBwYWdlIGNvbHVtbiBzY3JvbGxzIGluc2lkZSB0aGUgbW9kYWwgYm9keSByYXRoZXIgdGhhbiBncm93aW5nIGl0LCBzbyB0aGVcbiAgIHRvb2xiYXIgYW5kIHRoZSBtb2RhbCdzIG93biBidXR0b25zIHN0YXkgcHV0IHdoaWxlIGEgZG9jdW1lbnQgaXMgcmVhZC4gKi9cblxuLnBkZi1zY3JvbGwtdmlld2VyIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0bWF4LXdpZHRoOiAxMDAlO1xufVxuXG4ucGRmLXNjcm9sbC12aWV3ZXItdG9vbGJhciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogMC41cmVtO1xuXHRwYWRkaW5nLWJvdHRvbTogMC43NXJlbTtcblxuXHQuYnRuIHtcblx0XHR3aWR0aDogNWVtO1xuXHR9XG5cblx0LmNvbnRyb2wtbGFiZWwge1xuXHRcdHBhZGRpbmctbGVmdDogMC41cmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cbn1cblxuLnBkZi1zY3JvbGwtdmlld2VyLXNjcm9sbCB7XG5cdC8qIFBhZ2VzIGFyZSBwb3NpdGlvbmVkIGFnYWluc3QgdGhpcyBib3gsIGFuZCBvZmZzZXRUb3AgaXMgcmVhZCBvZmYgdGhlbSB0byB3b3JrIG91dCB3aGF0IGlzIGluXG5cdCAgIHZpZXcgLSBzbyBpdCBoYXMgdG8gYmUgdGhlIG9mZnNldCBwYXJlbnQsIG5vdCBqdXN0IHRoZSB0aGluZyB0aGF0IHNjcm9sbHMuICovXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0b3ZlcmZsb3c6IGF1dG87XG5cdG1heC1oZWlnaHQ6IDYwdmg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xufVxuXG4vKiBJbnNpZGUgYSB2aWV3ZXIgbW9kYWwgdGhlIGRvY3VtZW50IHRha2VzIHRoZSB3aG9sZSB3aW5kb3cgYmFyIHRoZSBtb2RhbCdzIG93biBjaHJvbWUuIEEgZG9jdW1lbnQgaXNcbiAgIHJlYWQgYSBwYWdlIGF0IGEgdGltZSwgYW5kIGEgc2hvcnQgcGFuZWwgaXMgYSBwYWdlIHJlYWQgYSB0aGlyZCBhdCBhIHRpbWUuIFRoZSBzdWJ0cmFjdGVkIGhlaWdodHNcbiAgIGFyZSB0aGF0IGNocm9tZTogdGhlIGRpYWxvZydzIHRvcCBtYXJnaW4sIHRoZSB0aXRsZSBiYXIsIHRoaXMgYm9keSdzIHBhZGRpbmcgYW5kIHRoZSB0b29sYmFyIC0gYW5kLFxuICAgb24gdGhlIHJlcG9ydCwgdGhlIHJvdyBpdHMgRG93bmxvYWQgYW5kIENsb3NlIGJ1dHRvbnMgc2l0IGluLiAqL1xuLnBkZi12aWV3ZXItbW9kYWwtYm9keSB7XG5cdHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcblxuXHQucGRmLXNjcm9sbC12aWV3ZXItc2Nyb2xsIHtcblx0XHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAxOTBweCk7XG5cdFx0bWF4LWhlaWdodDogbm9uZTtcblx0fVxuXG5cdCYuaGFzLWZvb3RlciAucGRmLXNjcm9sbC12aWV3ZXItc2Nyb2xsIHtcblx0XHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAyNjVweCk7XG5cdH1cbn1cblxuLnBkZi1zY3JvbGwtdmlld2VyLXBhZ2VzIHtcblx0cGFkZGluZzogMC43NXJlbSAwO1xufVxuXG4vKiBDZW50cmVkIGJ5IGF1dG8gbWFyZ2lucyBvbiBhIGJveCBzaHJpbmstd3JhcHBlZCB0byB0aGUgcGFnZSwgbm90IGJ5IGZsZXguIEF0IHJlYWwgc2l6ZSBvbiBhIG5hcnJvd1xuICAgd2luZG93IGEgcGFnZSBpcyB3aWRlciB0aGFuIHRoZSBwYW5lbCwgYW5kIGl0IGhhcyB0byBvdmVyZmxvdyB0byB0aGUgcmlnaHQgd2hlcmUgdGhlIGhvcml6b250YWxcbiAgIHNjcm9sbGJhciBjYW4gcmVhY2ggaXQgLSBmbGV4IGNlbnRyaW5nIHdvdWxkIHB1c2ggaXRzIGxlZnQgZWRnZSBvdXQgb2YgcmVhY2ggaW5zdGVhZC4gKi9cbi5wZGYtc2Nyb2xsLXZpZXdlci1wYWdlIHtcblx0ZGlzcGxheTogdGFibGU7XG5cdG1hcmdpbjogMCBhdXRvIDAuNzVyZW07XG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG5cdGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuXG5cdCY6bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxuXG5cdGNhbnZhcyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cbn1cblxuLnBkZi1zY3JvbGwtdmlld2VyLW1lc3NhZ2Uge1xuXHRwYWRkaW5nOiAzcmVtIDA7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVHlybyB0ZXJtaW5hbCBwYXRpZW50IHBheW1lbnQgKHR5cm9UZXJtaW5hbFBheW1lbnQpXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBTcGFjaW5nIGZvciB0aGUgdGVybWluYWwgcGFuZWwsIGFuZCB0aGUgYWNjb3VudC1zZXR0bGVtZW50IGJsb2NrIHRoZVxuLyogRUNMSVBTRSBsb2RnZW1lbnQgc3RlcCB3cmFwcyBpdCBpbi4gVGhlIHBhbmVscyB0aGVtc2VsdmVzIHJldXNlIHRoZVxuLyogRUNMSVBTRSBjYWxsb3V0cyBpbiBfZWNsaXBzZS1jbGFpbS5jc3MsIGFuZCB0aGUgY2xhaW0gbW9kYWwncyBQQVlcbi8qIHZpZXcgdXNlcyB0aGF0IG1vZGFsJ3Mgb3duIGhlYWRpbmdzLCB0YWJsZXMgYW5kIGZvb3RlciBidXR0b25zLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4udGVybWluYWwtcGF5bWVudCB7XG5cdG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi8qIFRoZSBjbGFpbSBtb2RhbCdzIHBheW1lbnQgZm9vdGVyLiAuYnRuLW5hdnkgYW5kIC5idG4tY2FuY2VsIGFyZSBzaXplZCBmb3IgdGhlIG9uZS13b3JkIGFjdGlvbnMgdGhlIHJlc3Qgb2ZcbiAgIHRoZSBhcHAgcHV0cyBpbiBhIGZvb3RlciAtIHdpZHRoIDEwMCUgY2FwcGVkIGF0IDIyMHB4IC0gYW5kIHRoZXNlIGxhYmVscyBydW4gcGFzdCB0aGF0IGFuZCB3cmFwIG1pZC13b3JkLlxuICAgU2l6ZWQgdG8gdGhlaXIgY29udGVudCBpbnN0ZWFkLCB0aGUgd2F5IHRoZSBFQ0xJUFNFIGFjdGlvbiBiYXIgZG9lcyBpdCAoc2VlIC5lY2xpcHNlLWFjdGlvbnMgaW5cbiAgIF9lY2xpcHNlLWNsYWltLmNzcyksIGFuZCBzY29wZWQgdG8gdGhpcyBmb290ZXIgYmVjYXVzZSAubXktbW9kYWwtZm9vdGVyIGlzIHNoYXJlZCBieSA4MC1vZGQgdGVtcGxhdGVzLiAqL1xuLmNsYWltLXBheW1lbnQtYWN0aW9ucyB7XG5cblx0LmJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1pbi13aWR0aDogOHJlbTtcblx0XHRwYWRkaW5nOiA3cHggMjJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC8qIFRoZXNlIGJ1dHRvbnMgY29tZSBhbmQgZ28gb24gbmctaWYgYXMgdGhlIHBheW1lbnQgbW9kZSBjaGFuZ2VzLCBhbmQgbmdBbmltYXRlIHdpbGwgbm90IHRvdWNoIHRoZSBET01cblx0ICAgdW50aWwgYW55IHRyYW5zaXRpb24gb24gdGhlIGVsZW1lbnQgaGFzIGZpbmlzaGVkIC0gc28gdGhlIDAuM3MgYHRyYW5zaXRpb246IGFsbGAgdGhlIGJ1dHRvbiBzdHlsZXMgY2Fycnlcblx0ICAgZm9yIHRoZWlyIGhvdmVyIG1hZGUgZXZlcnkgc3dpdGNoIGJldHdlZW4gdGhlIG9wdGlvbnMgYW5kIHRoZSBmb3JtIHNpdCBzdGlsbCBmb3IgMzAwbXMgZmlyc3QuIFplcm9lZFxuXHQgICBvbmx5IHdoaWxlIG5nQW5pbWF0ZSBpcyBydW5uaW5nLCB3aGljaCBpdCBzaWduYWxzIHdpdGggLm5nLWFuaW1hdGUsIHNvIHRoZSBob3ZlciBrZWVwcyBpdHMgdHJhbnNpdGlvbi5cblx0ICAgQmVhdHMgLmJ0bi1uYXZ5IG9uIHNwZWNpZmljaXR5LCBzbyBubyAhaW1wb3J0YW50IGlzIG5lZWRlZC4gKi9cblx0LmJ0bi5uZy1hbmltYXRlIHtcblx0XHR0cmFuc2l0aW9uOiBub25lO1xuXHR9XG59XG5cblxuLyogVGhlIHBhdGllbnQgY2xhaW0ncyBhY2NvdW50LCBzZXR0bGVkIG9uIHRoZSBFQ0xJUFNFIGxvZGdlbWVudCBzdGVwIGJlZm9yZSB0aGUgY2xhaW0gZ29lcy4gU2l0cyBpbnNpZGUgYW5cbiAgIC5lY2xpcHNlLWNhbGxvdXQsIHNvIG9ubHkgd2hhdCB0aGUgY2FsbG91dCBkb2VzIG5vdCBhbHJlYWR5IGdpdmUgaXQgbGl2ZXMgaGVyZS4gKi9cbi5hY2NvdW50LXNldHRsZW1lbnQge1xuXG5cdC5wYXltZW50LW1vZGUtc3dpdGNoIHtcblx0XHRtYXJnaW4tdG9wOiAxcmVtO1xuXHR9XG5cblx0LnJvdyB7XG5cdFx0bWFyZ2luLXRvcDogMC41cmVtO1xuXHR9XG5cblx0LyogU2FtZSByZWFzb24gYXMgLmNsYWltLXBheW1lbnQtYWN0aW9ucyBhYm92ZTogXCJSYWlzZSBBY2NvdW50IGZvciBQYXltZW50XCIgcnVucyBwYXN0IHRoZSAyMjBweCB0aGUgYnV0dG9uXG5cdCAgIHN0eWxlcyBjYXAgYXQsIGFuZCB3cmFwcyBtaWQtd29yZC4gKi9cblx0LmJ0biB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1pbi13aWR0aDogOHJlbTtcblx0XHRwYWRkaW5nOiA3cHggMjJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC8qIEFuZCB0aGUgc2FtZSBuZ0FuaW1hdGUgZGVsYXk6IHRoZSBidXR0b25zIGhlcmUgdG9nZ2xlIG9uIG5nLWlmIGFzIHRoZSBhY2NvdW50IGlzIHJhaXNlZCBhbmQgcGFpZC4gKi9cblx0LmJ0bi5uZy1hbmltYXRlIHtcblx0XHR0cmFuc2l0aW9uOiBub25lO1xuXHR9XG59XG5cbi8qIEFjY291bnQgLyBwYWlkIC8gb3dpbmcsIHJlYWQgbGVmdCB0byByaWdodC4gU3BhY2VkIHJhdGhlciB0aGFuIHRhYnVsYXRlZDogdGhyZWUgZmlndXJlcyBkbyBub3QgbmVlZCBhIHRhYmxlLFxuICAgYW5kIHRoZSBjYWxsb3V0J3MgcHJvc2UgcmVhZHMgYmV0dGVyIHdpdGggdGhlbSBvbiBvbmUgbGluZS4gKi9cbi5hY2NvdW50LXNldHRsZW1lbnRfX2ZpZ3VyZXMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogMS41cmVtO1xuXHRmb250LXNpemU6IDEzcHg7XG5cdG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbn1cblxuLyogU2l0cyB3aXRoIHRoZSBmaWd1cmVzIGl0IHJlLXJlYWRzIHJhdGhlciB0aGFuIGF0IHRoZSBlbmQgb2YgdGhlIHJvdywgYW5kIHRha2VzIG5vIG1vcmUgcm9vbSB0aGFuIHRoZSBpY29uXG4gICBuZWVkcyAtIHRoZSBudW1iZXJzIGFyZSB0aGUgY29udGVudCBoZXJlLCB0aGlzIGlzIHRoZSB0aGluZyB0aGF0IHVwZGF0ZXMgdGhlbS4gKi9cbi5hY2NvdW50LXNldHRsZW1lbnRfX3JlZnJlc2gge1xuXHRtaW4td2lkdGg6IDA7XG5cdHBhZGRpbmc6IDJweCA2cHg7XG5cdG1hcmdpbi1sZWZ0OiAtMC43NXJlbTtcbn1cblxuLyogU2F5cyB3aGljaCBvZiB0aGUgdHdvIHBheW1lbnQgcm91dGVzIHRoZSBzZXR0bGVtZW50IHN0ZXAgaXMgb24sIGFuZCBvZmZlcnMgdGhlIG90aGVyLiBBIGxpbmUgb2YgcHJvc2UgcmF0aGVyXG4gICB0aGFuIGEgcGFpciBvZiB0YWJzOiB0aGUgdHdvIGFyZSBub3QgZXF1YWwgY2hvaWNlcyB0byB3ZWlnaCB1cCAtIG9uZSBpcyBob3cgdGhlIGFjY291bnQgaXMgbm9ybWFsbHkgc2V0dGxlZFxuICAgYW5kIHRoZSBvdGhlciBpcyB0aGUgZXhjZXB0aW9uIC0gYW5kIGEgc2VudGVuY2UgY2FuIHNheSBzbyB3aGVyZSBhIHRhYiBjYW5ub3QuICovXG4ucGF5bWVudC1tb2RlLXN3aXRjaCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcblx0bWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLnBheW1lbnQtbW9kZS1zd2l0Y2gtbGFiZWwge1xuXHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRmb250LXNpemU6IDEzcHg7XG5cdGxpbmUtaGVpZ2h0OiAxLjY7XG5cblx0LyogVGhlIGFsdGVybmF0aXZlIHJvdXRlLiBVbmRlcmxpbmVkIHJhdGhlciB0aGFuIGJ1dHRvbi1zaGFwZWQsIHNvIGl0IGRvZXMgbm90IGNvbXBldGUgd2l0aCB0aGUgYWN0aW9uIHRoYXRcblx0ICAgYWN0dWFsbHkgdGFrZXMgdGhlIHBheW1lbnQuICovXG5cdGEge1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHRtYXJnaW4tbGVmdDogMC4zNXJlbTtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBDbGFpbWFibGUgaXRlbXMgKHByb2dyZXNzIG5vdGUgLyBvcGVyYXRpb24gbm90ZSAvIGNsYWltIG1vZGFsKVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogTGFpZCBvdXQgYXMgdGhlIHRyYW5zY3JpcHRpb24gcHJvY2Vzc29yJ3MgQUkgQXNzaXN0IGJhciBpczogb25lXG4vKiBibHVlLWJveCBob2xkaW5nIGEgdG9vbGJhciByb3cgb2YgY29udHJvbHMsIHdpdGggdGhlIHNldHRpbmdzIHBhbmVsXG4vKiBkcm9wcGluZyBkb3duIGluc2lkZSB0aGUgc2FtZSBib3ggYmVoaW5kIHRoZSBnZWFyLlxuLypcbi8qIEFuIGl0ZW0gY29kZSBhbmQgYSBjb21tZW50IGFyZSB0d28gd2F5cyB0byByZWNvcmQgdGhlIHNhbWUgcGllY2Ugb2Zcbi8qIHdvcmssIGFuZCBlaXRoZXIgb24gaXRzIG93biBpcyBlbm91Z2guIFRoZSBydWxlIGJldHdlZW4gdGhlIHR3byByb3dzXG4vKiBzYXlzIHRoYXQgd2hlcmUgYSBwYXJhZ3JhcGggb2YgaW5zdHJ1Y3Rpb25zIHVzZWQgdG87IHRoZSBjbGluaWNpYW5cbi8qIHJlYWRzIHRoZSBmb3JtLCBub3QgYSBwcmVhbWJsZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNsYWltYWJsZS1pdGVtcyB7XG5cblx0LyogT25lIHJvdyBvZiBjb250cm9scywgYXMgdGhlIEFJIEFzc2lzdCBiYXIgaXMuICovXG5cdC5jbGFpbWFibGUtaXRlbXNfX3Rvb2xiYXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQuY2xhaW1hYmxlLWl0ZW1zX19sYWJlbCB7XG5cdFx0Y29sb3I6ICR0ZXh0LWxpZ2h0O1xuXHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBTaXplZCB0byB0aGUgd2lkZXN0IGZlZSB0aGUgcHJhY3RpY2Ugd2lsbCBiaWxsIHJhdGhlciB0aGFuIHNoYXJpbmcgdGhlIHJvdydzXG5cdCAgIHN0cmV0Y2ggLSBhIHByaWNlIGlzIGEgc2hvcnQgZmllbGQgYW5kIHJlYWRzIHdyb25nIHdoZW4gaXQgaXMgbm90LiAqL1xuXHQuY2xhaW1hYmxlLWl0ZW1zX19mZWUge1xuXHRcdHdpZHRoOiA5ZW07XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdH1cblxuXHQvKiBUaGUgdmVydGljYWwgbGluZSBhZnRlciB0aGUgc2VjdGlvbidzIG5hbWUsIGFzIHRoZSBBSSBBc3Npc3QgYmFyIGRyYXdzIGl0LiBTY29wZWQsIGFzXG5cdCAgIHRoZSBBSSBBc3Npc3QgYmFyIGNhcnJpZXMgaXRzIG93biBjb3B5IGlubGluZS4gKi9cblx0LnRvb2xiYXItZGl2aWRlciB7XG5cdFx0d2lkdGg6IDFweDtcblx0XHRhbGlnbi1zZWxmOiBzdHJldGNoO1xuXHRcdG1pbi1oZWlnaHQ6IDIuMjVlbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdG9vbGJhckRpdmlkZXI7XG5cdH1cblxuXHQudWktc2VsZWN0LWNvbnRhaW5lciB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG59XG5cbi8qIEJldHdlZW4gdGhlIHRvb2xiYXIgcm93cywgYW5kIHRoZSBzYW1lIGxpbmUgYXMgdGhlIEFJIEFzc2lzdCBiYXIncyBvd24gZGl2aWRlci4gKi9cbi5jbGFpbWFibGUtaXRlbS1vciB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogMC43NXJlbTtcblx0bWFyZ2luOiAxcmVtIDA7XG5cdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0Zm9udC1zaXplOiAxM3B4O1xufVxuXG4uY2xhaW1hYmxlLWl0ZW0tb3I6OmJlZm9yZSxcbi5jbGFpbWFibGUtaXRlbS1vcjo6YWZ0ZXIge1xuXHRjb250ZW50OiBcIlwiO1xuXHRmbGV4OiAxO1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgJHRvb2xiYXJEaXZpZGVyO1xufVxuXG4vKiBUaGUgaG91c2UgcGx1cyBidXR0b24gLSBzcXVhcmUsIG5hdnksIGJlc2lkZSB0aGUgcm93IGl0IGFkZHMuICovXG4uYnRuLWFkZC1jbGFpbWFibGUtaXRlbSB7XG5cdGhlaWdodDogMzRweDtcblx0d2lkdGg6IDM0cHg7XG5cdG1hcmdpbjogMDtcblx0cGFkZGluZzogMDtcblx0ZmxleC1zaHJpbms6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVW5jb2RlZCByb3dzXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKiBBIGNvbW1lbnQgbm9ib2R5IGhhcyBjb2RlZCB5ZXQgc3RhbmRzIGluIHRoZSBJdGVtIGNvbHVtbiB3aGVyZSBhIGNvZGVcbi8qIHdvdWxkIGJlLiBNYXJrZWQgcmF0aGVyIHRoYW4gbGVmdCBibGFuaywgc28gaXQgcmVhZHMgYXMgd29yayB3YWl0aW5nXG4vKiBvbiBhbiBhZG1pbmlzdHJhdG9yIGFuZCBub3QgYXMgYSByb3cgdGhhdCBmYWlsZWQgdG8gbG9hZC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmNsYWltYWJsZS1pdGVtLXVuY29kZWQge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdHBhZGRpbmc6IDAuMXJlbSAwLjVyZW07XG5cdGJvcmRlcjogMXB4IHNvbGlkICR3YXJuaW5nLWJvcmRlcjtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdGJhY2tncm91bmQ6ICR3YXJuaW5nLWJnO1xuXHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4vKiBJbiB0aGUgY2xhaW0gbW9kYWwgdGhlIG1hcmtlciBpcyB0aGUgd2F5IGluIHRvIGNvZGluZyB0aGUgcm93LCBzbyBpdCBoYXMgdG9cbiAgIHJlYWQgYXMgc29tZXRoaW5nIHRvIHByZXNzIHJhdGhlciB0aGFuIGFzIGEgbGFiZWwuICovXG5hLmNsYWltYWJsZS1pdGVtLXVuY29kZWQge1xuXHRjdXJzb3I6IHBvaW50ZXI7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuXHQmOmhvdmVyLFxuXHQmOmZvY3VzIHtcblx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHR9XG59XG5cbi8qIFRoZSBwaWNrZXIgYW4gYWRtaW5pc3RyYXRvciBjb2RlcyBhbiB1bmNvZGVkIHJvdyB3aXRoLCBzaXplZCB0byBzaXQgaW5zaWRlXG4gICBhIHRhYmxlIGNlbGwgcmF0aGVyIHRoYW4gZmlsbCB0aGUgcm93IHRoZSB3YXkgdGhlIGNsYWltIGZvcm0ncyBkb2VzLiAqL1xuLmNsYWltYWJsZS1pdGVtLWNvZGVyIHtcblx0bWluLXdpZHRoOiAxNnJlbTtcblxuXHQudWktc2VsZWN0LWNvbnRhaW5lciB7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgVGhlIHByYWN0aWNlJ3Mgb3duIGl0ZW0gY29kZXNcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8qIFRoZSBnZWFyJ3MgcGFuZWwsIGxhaWQgb3V0IGFzIHRoZSBwcm9tcHQgbWFuYWdlciBpczogaXQgZHJvcHMgZG93blxuLyogaW5zaWRlIHRoZSBzYW1lIGJveCBiZWhpbmQgYSBydWxlLCB3aXRoIHRoZSBsaXN0IG9mIHdoYXQgdGhlIHByYWN0aWNlXG4vKiBob2xkcyBvbiB0aGUgbGVmdCBhbmQgdGhlIGZvcm0gdGhhdCBhZGRzIG9yIGVkaXRzIG9uZSBvbiB0aGUgcmlnaHQuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jbGFpbWFibGUtaXRlbXNfX3NldHRpbmdzIHtcblx0bWFyZ2luLXRvcDogMTVweDtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICR0b29sYmFyRGl2aWRlcjtcblx0cGFkZGluZy10b3A6IDE1cHg7XG5cblx0aDUge1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0fVxufVxuXG4uY2xhaW1hYmxlLWl0ZW1zX19zZXR0aW5ncy1ib2R5IHtcblx0ZGlzcGxheTogZmxleDtcblx0Z2FwOiAxNXB4O1xuXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbn1cblxuLmNsYWltYWJsZS1pdGVtc19fbGlzdCB7XG5cdGZsZXg6IDE7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0YmFja2dyb3VuZDogJHdoaXRlO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmNsYWltYWJsZS1pdGVtc19fbGlzdC1zY3JvbGwge1xuXHRtYXgtaGVpZ2h0OiAyMjBweDtcblx0b3ZlcmZsb3cteTogYXV0bztcbn1cblxuLmNsYWltYWJsZS1pdGVtc19fbGlzdC1yb3cge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGdhcDogMTBweDtcblx0cGFkZGluZzogOHB4IDEwcHg7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2xpc3QtbmFtZSB7XG5cdGZvbnQtc2l6ZTogMC45ZW07XG5cdHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG5cblx0c3Ryb25nIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0fVxufVxuXG4uY2xhaW1hYmxlLWl0ZW1zX19saXN0LWFjdGlvbnMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDZweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmNsYWltYWJsZS1pdGVtc19fbGlzdC1lbXB0eSB7XG5cdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRwYWRkaW5nOiAxMHB4O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGZvbnQtc2l6ZTogMC45ZW07XG59XG5cbi5jbGFpbWFibGUtaXRlbXNfX2VkaXRvciB7XG5cdGZsZXg6IDI7XG5cdGJhY2tncm91bmQ6ICRsaWdodEdyZXk7XG5cdHBhZGRpbmc6IDEycHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cblx0LnJvdyB7XG5cdFx0bWFyZ2luLWxlZnQ6IDA7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHR9XG5cblx0LmZvcm0tZ3JvdXA6bGFzdC1jaGlsZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0fVxufVxuXG4uY2xhaW1hYmxlLWl0ZW1zX19lZGl0b3ItYWN0aW9ucyB7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdGdhcDogOHB4O1xuXHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRwYWRkaW5nLXRvcDogMTJweDtcbn1cbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ2xhaW1zIGxpc3QgcGF5bWVudCBzdGF0ZSAoY2xhaW0tbW9kYWwudG1wbC5odG1sKVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLyogV2hlcmUgdGhlIG1vbmV5IG9uIGVhY2ggY2xhaW0gaGFzIGdvdCB0bywgZnJvbSB0aGUgcGF0aWVudCdzIHNpZGUgLVxuLyogc2VlIHBheW1lbnRTdGF0ZSgpIGluIGNsYWltTW9kYWxDb250cm9sbGVyLiBUaGUgc3VtbWFyeSBsaW5lIHNpdHNcbi8qIGFib3ZlIHRoZSB0YWJsZTsgdGhlIHBpbGwgc2l0cyB1bmRlciB0aGUgUGF0aWVudCBEdWUgYW1vdW50LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uY2xhaW1zLW91dHN0YW5kaW5nIHtcblx0bWFyZ2luLWJvdHRvbTogMXJlbTtcblx0cGFkZGluZzogMC43NXJlbSAxcmVtO1xuXHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cblx0LyogTW9uZXkgb3dlZCBiYWNrIHRvIHRoZSBwYXRpZW50IHJhdGhlciB0aGFuIGJ5IHRoZW0sIHNvIG5vdCB0aGVcblx0ICAgd2FybmluZyBjb2xvdXJzIG9mIHRoZSBsaW5lIGFib3ZlLiAqL1xuXHQmLmNsYWltcy1vdXRzdGFuZGluZy0tb3ZlcnBhaWQge1xuXHRcdGJvcmRlci1jb2xvcjogJGN5YW4tdHAtNDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tdHAtMDU7XG5cdFx0Y29sb3I6ICRjeWFuLWRhcmtlcjtcblx0fVxufVxuXG4uY2xhaW0tcGF5bWVudC1waWxsIHtcblx0LyogT24gaXRzIG93biBsaW5lIHVuZGVyIHRoZSBhbW91bnQsIHNpemVkIHRvIGl0cyBsYWJlbC4gKi9cblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiBtYXgtY29udGVudDtcblx0bWFyZ2luLXRvcDogMC4yNXJlbTtcblx0cGFkZGluZzogMnB4IDEwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdGZvbnQtc2l6ZTogMTFweDtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0bGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRjdXJzb3I6IGhlbHA7XG5cblx0Ji5jbGFpbS1wYXltZW50LXBpbGwtLXBhaWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0yMDtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxuXG5cdCYuY2xhaW0tcGF5bWVudC1waWxsLS11bnBhaWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblx0fVxuXG5cdCYuY2xhaW0tcGF5bWVudC1waWxsLS1jaGVxdWUge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3ctdHAtMzA7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQmLmNsYWltLXBheW1lbnQtcGlsbC0tZnVuZGVyIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFnZUJhY2tHcm91bmQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0Ji5jbGFpbS1wYXltZW50LXBpbGwtLW92ZXJwYWlkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbi10cC0yMDtcblx0XHRjb2xvcjogJGN5YW4tZGFya2VyO1xuXHR9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIExldHRlciBzaWduLW9mZiAoYmVuZWF0aCB0aGUgbGV0dGVyIHRleHQsIGFuZCBpbiBTZXR0aW5ncyAtPiBQcm9maWxlKVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uc2lnbi1vZmYtc2VjdGlvbiB7XG5cdG1hcmdpbi10b3A6IDE2cHg7XG5cdHBhZGRpbmc6IDEycHggMTZweDtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0YmFja2dyb3VuZDogJGdyZXktbW9kYWwtaGVhZGVyO1xuXG5cdC5zaWduLW9mZi1oZWFkZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDhweDtcblxuXHRcdC8qIENlbnRyZSB0aGUgYm94IG9uIHRoZSBsYWJlbDsgdGhlIGFwcC13aWRlIC5jaGVjay1zcGFuIG51ZGdlIGFuZCBCb290c3RyYXAncyBpbnB1dCBtYXJnaW5cblx0XHQgICBvdGhlcndpc2UgbGVhdmUgdGhlbSBvdXQgb2YgbGluZS4gKi9cblx0XHQuY2hlY2stbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cblx0XHRcdGlucHV0W3R5cGU9XCJjaGVja2JveFwiXSB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblxuXHRcdFx0LmNoZWNrLXNwYW4ge1xuXHRcdFx0XHR0b3A6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHNldHRpbmdzIHBhbmUncyBpbmxpbmUgYWN0aW9uLCB3aGljaCBpcyBzY29wZWQgdG8gdGhlIHNldHRpbmdzIHNoZWxsLiAqL1xuXHQubGluay1hY3Rpb24ge1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGNvbG9yOiAkZ3JleS1kaXNhYmxlZDtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLnNpZ24tb2ZmLWFjdGlvbnMge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRmbGV4LXdyYXA6IHdyYXA7XG5cdGdhcDogMTZweDtcbn1cblxuLnNpZ24tb2ZmLXNldHRpbmdzIC5zaWduLW9mZi1hY3Rpb25zIHtcblx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRtYXJnaW4tdG9wOiAxMnB4O1xuXG5cdC5saW5rLWFjdGlvbiB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbi5zaWduLW9mZi1zdGF0dXMge1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdGZvbnQtc2l6ZTogMTJweDtcblxuXHQuZmEtY2hlY2sge1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdH1cbn1cblxuLnNpZ24tb2ZmLWVycm9yIHtcblx0Y29sb3I6ICRkYW5nZXI7XG5cdGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLnNpZ24tb2ZmLWhpbnQge1xuXHRtYXJnaW46IDhweCAwO1xuXHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uc2lnbi1vZmYtZWRpdG9yIHtcblx0Lm5vdGUtZWRpdG9yIHtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGU7XG5cdH1cblxuXHQvKiBHb3JkaXRhLCBhcyBvbiB0aGUgbGV0dGVyIHNjcmVlbiwgd2hlcmUgaXQgY29tZXMgZnJvbSB0aGUgZm9ybSBhcm91bmQgdGhlIGVkaXRvci4gU2V0dGluZ3MgaGFzXG5cdCAgIG5vdGhpbmcgdGhhdCBzZXRzIGl0LCBzbyB0aGUgc2lnbi1vZmYgZmVsbCBiYWNrIHRvIHRoZSBwYWdlIGZvbnQgdGhlcmUuICovXG5cdC5ub3RlLWVkaXRhYmxlIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgUmVndWxhcicsIHNhbnMtc2VyaWY7XG5cdH1cblxuXHQvKiBUaGUgc2F2ZSBpY29uIHNpdHMgYXQgdGhlIGZhciBlbmQgb2YgdGhlIHRvb2xiYXIsIGF3YXkgZnJvbSB0aGUgZm9ybWF0dGluZyBidXR0b25zLiAqL1xuXHQubm90ZS10b29sYmFyIC5ub3RlLXNhdmUge1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0fVxuXG5cdC8qIFJlYWQtb25seTogdGhlIHNpZ24tb2ZmIGFzIGl0IHdpbGwgc2l0IGJlbmVhdGggdGhlIGxldHRlci4gQmxhY2sgdGV4dCBhbmQgdGhlIGVkaXRvcidzXG5cdCAgIHBhcmFncmFwaCBzcGFjaW5nLCBzbyBpdCByZWFkcyB0aGUgc2FtZSBhcyB0aGUgZWRpdGFibGUgc2lnbi1vZmYgYW5kIHRoZSBQREYuICovXG5cdC5zaWduLW9mZi1wcmV2aWV3IHtcblx0XHRtaW4taGVpZ2h0OiA2MHB4O1xuXHRcdHBhZGRpbmc6IDhweCAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRjb2xvcjogJGJsYWNrO1xuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBOb3RpZmljYXRpb25zXG4vKiBUaGUgZmxvYXRpbmcgYmFubmVyLCB0aGUgdXJnZW5jeSBjb2xvdXJzIHNoYXJlZCB3aXRoIHRoZSBub3RpZmljYXRpb25cbi8qIG1vZGFsLCBhbmQgdGhlIGFkbWluIGNvbnNvbGUuIFRoZSBjb25zb2xlIGlzIGJ1aWx0IG9uIHRoZSBzZXR0aW5nc1xuLyogbW9kYWwncyBzaGVsbCAoLnNldHRpbmdzLXNoZWxsIGluIF9zZXR0aW5ncy5jc3MsIC5zZXR0aW5ncy1jYXJkLFxuLyogLnNldHRpbmctcm93IGFuZCAudG9nZ2xlLXN3aXRjaCBpbiBfcGF5bWVudHMuY3NzKTsgb25seSB3aGF0IHRob3NlXG4vKiBkbyBub3QgYWxyZWFkeSBjb3ZlciBsaXZlcyBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFVyZ2VuY3kgdG9uZXNcbi8qIEVhY2ggdG9uZSBzZXRzIHRoZSBzYW1lIHRocmVlIGN1c3RvbSBwcm9wZXJ0aWVzIHNvIGV2ZXJ5IHBpZWNlIGJlbG93XG4vKiAoYmFubmVyLCBtb2RhbCBsYWJlbCwgcGlsbHMsIHByZXZpZXcpIGlzIGNvbG91cmVkIGZyb20gb25lIHBsYWNlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLm5vdGljZS10b25lLVNUQU5EQVJEIHtcblx0LS1ub3RpY2UtZmc6ICRub3RpY2Utc3RhbmRhcmQ7XG5cdC0tbm90aWNlLWFjY2VudDogJG5vdGljZS1zdGFuZGFyZDtcblx0LS1ub3RpY2UtYmc6ICRub3RpY2Utc3RhbmRhcmQtYmc7XG59XG5cbi5ub3RpY2UtdG9uZS1ISUdIIHtcblx0LS1ub3RpY2UtZmc6ICRub3RpY2UtaGlnaDtcblx0LS1ub3RpY2UtYWNjZW50OiAkbm90aWNlLWhpZ2gtYWNjZW50O1xuXHQtLW5vdGljZS1iZzogJG5vdGljZS1oaWdoLWJnO1xufVxuXG4ubm90aWNlLXRvbmUtVVJHRU5UIHtcblx0LS1ub3RpY2UtZmc6ICRub3RpY2UtdXJnZW50O1xuXHQtLW5vdGljZS1hY2NlbnQ6ICRub3RpY2UtdXJnZW50O1xuXHQtLW5vdGljZS1iZzogJG5vdGljZS11cmdlbnQtYmc7XG59XG5cbi5ub3RpY2UtdG9uZS1FUlJPUiB7XG5cdC0tbm90aWNlLWZnOiAkbm90aWNlLWVycm9yO1xuXHQtLW5vdGljZS1hY2NlbnQ6ICRub3RpY2UtZXJyb3I7XG5cdC0tbm90aWNlLWJnOiAkbm90aWNlLWVycm9yLWJnO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEZsb2F0aW5nIGJhbm5lclxuLyogRml4ZWQgYW5kIG91dCBvZiBmbG93LCBzbyBpdCBmbG9hdHMgb3ZlciB0aGUgcGFnZSBpbnN0ZWFkIG9mIHB1c2hpbmdcbi8qIGl0IGRvd24uIFRoZSBob3N0IGlnbm9yZXMgcG9pbnRlciBldmVudHMgc28gb25seSB0aGUgY2FyZCBpdHNlbGZcbi8qIGJsb2NrcyBjbGlja3Mgb24gd2hhdGV2ZXIgc2l0cyBiZW5lYXRoIGl0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQGtleWZyYW1lcyBub3RpY2UtYmFubmVyLWluIHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEycHgpO1xuXHR9XG5cblx0dG8ge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgbm90aWNlLWJhbm5lci1jb3VudGRvd24ge1xuXHRmcm9tIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgxKTtcblx0fVxuXG5cdHRvIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlWCgwKTtcblx0fVxufVxuXG4ubm90aWNlLWJhbm5lci1ob3N0IHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDE2cHg7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHR6LWluZGV4OiAxMDAwMDtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdHBhZGRpbmc6IDAgMTZweDtcblx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5ub3RpY2UtYmFubmVyIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0Z2FwOiAxMnB4O1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiA3MjBweDtcblx0cGFkZGluZzogMTRweCA0NHB4IDE0cHggMTZweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWJnKTtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLW5vdGljZS1hY2NlbnQpO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0Ym94LXNoYWRvdzogJHNoYWRvdy1tZDtcblx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdHRleHQtYWxpZ246IGxlZnQ7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXHRhbmltYXRpb246IG5vdGljZS1iYW5uZXItaW4gMC4yNXMgZWFzZS1vdXQ7XG5cblx0Lm5vdGljZS1iYW5uZXItaWNvbiB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAyMHB4O1xuXHRcdGNvbG9yOiB2YXIoLS1ub3RpY2UtZmcpO1xuXHR9XG5cblx0Lm5vdGljZS1iYW5uZXItYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAyMHB4O1xuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0Lm5vdGljZS1iYW5uZXItdGl0bGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0fVxuXG5cdC5ub3RpY2UtYmFubmVyLWNsb3NlIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAxMHB4O1xuXHRcdHJpZ2h0OiAxMHB4O1xuXHRcdHdpZHRoOiAyOHB4O1xuXHRcdGhlaWdodDogMjhweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2stdHAtMTA7XG5cdFx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRcdG91dGxpbmU6IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogU2hyaW5rcyBvdmVyIHRoZSBiYW5uZXIncyBsaWZldGltZSBzbyB1c2VycyBjYW4gc2VlIGl0IHdpbGwgZ28gYXdheSBvbiBpdHMgb3duLiAqL1xuXHQubm90aWNlLWJhbm5lci1jb3VudGRvd24ge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiAwO1xuXHRcdHJpZ2h0OiAwO1xuXHRcdGJvdHRvbTogMDtcblx0XHRoZWlnaHQ6IDNweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ub3RpY2UtYWNjZW50KTtcblx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0dHJhbnNmb3JtLW9yaWdpbjogbGVmdDtcblx0XHRhbmltYXRpb24tbmFtZTogbm90aWNlLWJhbm5lci1jb3VudGRvd247XG5cdFx0YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyO1xuXHRcdGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgTm90aWZpY2F0aW9uIG1vZGFsIHVyZ2VuY3kgbGFiZWxcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5ub3RpY2UtbW9kYWwtbGFiZWwge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA2cHg7XG5cdG1hcmdpbjogMCAwIDRweDtcblx0cGFkZGluZzogNHB4IDEycHg7XG5cdGJvcmRlci1yYWRpdXM6IDk5OXB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ub3RpY2UtYmcpO1xuXHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0Zm9udC1zaXplOiAxMnB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQWRtaW4gY29uc29sZVxuLyogU2NvcGVkIHVuZGVyIC5zZXR0aW5ncy1zaGVsbC5ub3RpZmljYXRpb24tY29uc29sZSBzbyB0aGVzZSBzaXQgb24gdG9wXG4vKiBvZiB0aGUgc2V0dGluZ3Mgc3R5bGVzIHdpdGhvdXQgY2hhbmdpbmcgdGhlbSBhbnl3aGVyZSBlbHNlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsLm5vdGlmaWNhdGlvbi1jb25zb2xlIHtcblx0LyogVGhlIHNldHRpbmdzIG1vZGFsIGdldHMgaXRzIGhlaWdodCBmcm9tIHRoZSBkaWFsb2c7IG9uIGEgcGFnZSBpdCBuZWVkcyBpdHMgb3duLiAqL1xuXHRoZWlnaHQ6IGNhbGMoMTAwdmggLSAyMjBweCk7XG5cdG1pbi1oZWlnaHQ6IDYyMHB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cblx0LnNldHRpbmdzLWF2YXRhciBpIHtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHQvKiAuc2V0dGluZ3MtcGFuZSBoYW5kcyBpdHMgaGVpZ2h0IHRvIG9uZSBjaGlsZDsgdGhpcyBvbmUgc3BsaXRzIGl0IGludG8gdGhlIHRhYiBiYXIgYW5kIHRoZSB2aWV3LiAqL1xuXHQubmMtcGFuZSxcblx0Lm5jLXZpZXcge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQvKiAhIFN0YXR1cyB0YWJzIC0gdGhlIHJhaWwncyAuc2V0dGluZ3MtbmF2LWl0ZW0sIGxhaWQgb3V0IGluIGEgcm93IGFsb25nIHRoZSB0b3Agb2YgdGhlIHBhbmUgKi9cblx0Lm5jLXRhYmJhciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiAxMnB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0b3ZlcmZsb3cteDogYXV0bztcblxuXHRcdC5zZXR0aW5ncy1uYXYtaXRlbSB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdC8qIENvdW50IG9uIGVhY2ggcmFpbCBpdGVtLCBzdHlsZWQgbGlrZSB0aGUgcmFpbCdzIC5uYXYtZ3JvdXAtdGFnICovXG5cdC5zZXR0aW5ncy1uYXYtaXRlbSAubmMtbmF2LWNvdW50IHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRtaW4td2lkdGg6IDIycHg7XG5cdFx0cGFkZGluZzogMXB4IDdweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtaXRlbS5hY3RpdmUgLm5jLW5hdi1jb3VudCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTIwO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQubmMtYmFjayB7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0fVxuXG5cdC5jYXJkLWhlYWRlci1mbGV4IHtcblx0XHRnYXA6IDE2cHg7XG5cdH1cblxuXHQubmMtc2VhcmNoIHtcblx0XHR3aWR0aDogMjQwcHg7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogMzJweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qICEgTm90aWZpY2F0aW9uIHJvd3MgLSAuc2V0dGluZy1yb3csIHJlY29sb3VyZWQgYnkgdGhlIHJvdydzIHVyZ2VuY3kgdG9uZSAqL1xuXHQubmMtaXRlbSB7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE1cHg7XG5cblx0XHQuc2V0dGluZy1pY29uIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWJnKTtcblx0XHRcdGNvbG9yOiB2YXIoLS1ub3RpY2UtZmcpO1xuXHRcdH1cblxuXHRcdC5zZXR0aW5nLWNvbnRlbnQge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC5jaGlwLWxpc3Qge1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRtYXJnaW46IDhweCAwIDZweDtcblx0XHR9XG5cblx0XHQmLmlzLW11dGVkIC5zZXR0aW5nLWljb24sXG5cdFx0Ji5pcy1tdXRlZCAuc2V0dGluZy1jb250ZW50IHtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblx0XHR9XG5cdH1cblxuXHQubmMtaXRlbS10aXRsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHR9XG5cblx0Lm5jLWl0ZW0tbWVzc2FnZSB7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAjODc4YmEwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdHAge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFZpZXdlciBjb3VudCwgc2V0IGFwYXJ0IGZyb20gdGhlIHJvdyBsaWtlIHRoZSBudW1iZXJzIGluIC5kZXRhaWwtdmFsdWUgKi9cblx0Lm5jLXNlZW4ge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHdpZHRoOiA5MnB4O1xuXHRcdHBhZGRpbmc6IDAgMTJweDtcblx0XHRib3JkZXItbGVmdDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRmb250LXNpemU6IDIwcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4yO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdHNwYW4ge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXHR9XG5cblx0Lm5jLWl0ZW0tYWN0aW9ucyB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHQudG9nZ2xlLXN3aXRjaCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogU3RhdHVzIGNoaXBzIC0gc3VjY2VzcyBncmVlbiwgdGhlIGJyYW5kIG5hdnksIGFuZCB0aGUgc2V0dGluZ3MgY2F1dGlvbiBhbWJlciAqL1xuXHQuY2hpcC5uYy1zdGF0dXMge1xuXHRcdCYuc3RhdHVzLWxpdmUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTEwO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMzA7XG5cdFx0XHRjb2xvcjogY29sb3IoJGdyZWVuIGwoLTEyJSkpO1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLXNjaGVkdWxlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLXBhdXNlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOGU2O1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMTcxLCAwLCAwLjMpO1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXG5cdFx0Ji5zdGF0dXMtZW5kZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0fVxuXHR9XG5cblx0LyogVXJnZW5jeSBjaGlwcyB0YWtlIHRoZWlyIGNvbG91ciBmcm9tIHRoZSB1cmdlbmN5IHRvbmUgKi9cblx0LmNoaXAubmMtdG9uZS1jaGlwIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ub3RpY2UtYmcpO1xuXHRcdGJvcmRlci1jb2xvcjogdmFyKC0tbm90aWNlLWFjY2VudCk7XG5cdFx0Y29sb3I6IHZhcigtLW5vdGljZS1mZyk7XG5cdH1cblxuXHQuY2hpcC1zZWxlY3QubmMtdG9uZS1jaGlwIHtcblx0XHRpIHtcblx0XHRcdGNvbG9yOiB2YXIoLS1ub3RpY2UtZmcpO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbm90aWNlLWJnKTtcblx0XHRcdGJvcmRlci1jb2xvcjogdmFyKC0tbm90aWNlLWFjY2VudCk7XG5cdFx0XHRjb2xvcjogdmFyKC0tbm90aWNlLWZnKTtcblx0XHR9XG5cdH1cblxuXHQvKiAuY2hpcC1zZWxlY3QgaXMgd3JpdHRlbiBmb3IgYSA8bGFiZWw+OyBhcyBhIDxidXR0b24+IGl0IG5lZWRzIHRoZSBmb250IGJhY2sgKi9cblx0YnV0dG9uLmNoaXAtc2VsZWN0IHtcblx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0fVxuXG5cdC5uYy1tb3JlIHtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQubmMtY2hhci1jb3VudCB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC5uYy1wcmVzZXRzIHtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0cGFkZGluZzogNHB4IDExcHg7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogISBDb21wb3NlOiB0aGUgZm9ybSBzY3JvbGxzIG9uIHRoZSBsZWZ0OyB0aGUgcHJldmlldyBoYXMgaXRzIG93biBjb2x1bW4gc28gaXRcblx0ICAgc3RheXMgaW4gdmlldyBmb3IgdGhlIHdob2xlIGZvcm0uICovXG5cdC5uYy12aWV3Lm5jLWNvbXBvc2Uge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdH1cblxuXHQubmMtY29tcG9zZS1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdH1cblxuXHQubmMtcHJldmlldy1wYW5lIHtcblx0XHRmbGV4OiAwIDAgMzYwcHg7XG5cdFx0d2lkdGg6IDM2MHB4O1xuXHRcdHBhZGRpbmc6IDI0cHggMjRweCAyNHB4IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0fVxuXG5cdC5zZXR0aW5ncy1ub3RpY2Uge1xuXHRcdG1hcmdpbjogMjBweCAwIDA7XG5cdH1cblxuXHQubmMtcHJldmlldyB7XG5cdFx0LyogVGhlIHJlYWwgYmFubmVyIGlzIGZpeGVkIHRvIHRoZSB2aWV3cG9ydDsgaGVyZSBpdCBzaXRzIGluIHRoZSBjYXJkLiAqL1xuXHRcdC5ub3RpY2UtYmFubmVyIHtcblx0XHRcdGFuaW1hdGlvbjogbm9uZTtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctc207XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHRcdH1cblxuXHRcdC8qIEhvc3RzIHRoZSByZWFsIG1vZGFsIHRlbXBsYXRlIGluIGZsb3c6IGNhbmNlbHMgQm9vdHN0cmFwJ3MgZnVsbC1zY3JlZW4gLm1vZGFsIGFuZCB0aGVcblx0XHQgICBjZW50cmluZyBvbiAubW9kYWwtY2VudGVyLCBhbmQgbGVhdmVzIHRoZSBtb2RhbCdzIG93biBsb29rIHVudG91Y2hlZC4gKi9cblx0XHQubmMtcHJldmlldy1tb2RhbC1mcmFtZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0XHRcdC5tb2RhbCB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0dG9wOiBhdXRvO1xuXHRcdFx0XHRyaWdodDogYXV0bztcblx0XHRcdFx0Ym90dG9tOiBhdXRvO1xuXHRcdFx0XHRsZWZ0OiBhdXRvO1xuXHRcdFx0XHR6LWluZGV4OiBhdXRvO1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdFx0XHR9XG5cblx0XHRcdC5tb2RhbC1kaWFsb2csXG5cdFx0XHQubW9kYWwtZGlhbG9nLm1vZGFsLWNlbnRlciB7XG5cdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0dG9wOiBhdXRvO1xuXHRcdFx0XHRsZWZ0OiBhdXRvO1xuXHRcdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR9XG5cblx0XHRcdC5tb2RhbC1jb250ZW50IHtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LW1kO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5kZXRhaWwtcm93IHtcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHRwYWRkaW5nOiA5cHggMDtcblxuXHRcdFx0LmRldGFpbC1sYWJlbCB7XG5cdFx0XHRcdGZsZXgtYmFzaXM6IDkwcHg7XG5cdFx0XHRcdHdpZHRoOiA5MHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQuZGV0YWlsLXZhbHVlIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuXHRcdGhlaWdodDogYXV0bztcblxuXHRcdC5uYy1pdGVtIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHR9XG5cblx0XHQubmMtaXRlbS1hY3Rpb25zIHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cdFx0fVxuXG5cdFx0Lm5jLXNlZW4ge1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0fVxuXG5cdFx0Lm5jLXRhYmJhciB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4IDE2cHg7XG5cdFx0fVxuXG5cdFx0Lm5jLXZpZXcubmMtY29tcG9zZSB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHR9XG5cblx0XHQubmMtY29tcG9zZS1tYWluIHtcblx0XHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdH1cblxuXHRcdC5uYy1wcmV2aWV3LXBhbmUge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdHBhZGRpbmc6IDAgMTZweCAxNnB4O1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdFx0fVxuXHR9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIExlbnMgZGlzcGVuc2luZ1xuLyogVGhlIGpvYiBkaWFsb2cgc2l0cyBpbnNpZGUgLnNldHRpbmdzLXNoZWxsIHNvIGl0IGluaGVyaXRzIHRoZSBzZXR0aW5nc1xuLyogbW9kYWwncyBjYXJkcywgY2hpcHMsIG5vdGljZXMgYW5kIGFjdGlvbiBiYXIgKF9zZXR0aW5ncy5jc3MsXG4vKiBfcGF5bWVudHMuY3NzKS4gT25seSB3aGF0IGlzIG5ldyBpcyBkZWZpbmVkIGhlcmUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiRsZW5zLWNhbnZhczogI2Y0ZjdmZTtcbiRsZW5zLW11dGVkOiAjODc4YmEwO1xuJGxlbnMtZmFpbnQ6ICNhM2FhYzA7XG4kbGVucy1ydWxlOiAjZWVmMWY3O1xuLyogQ29udGFjdCBsZW5zIGpvYnMgYXJlIHRhZ2dlZCB0ZWFsIHNvIHRoZXkgcmVhZCBhcGFydCBmcm9tIGdsYXNzZXMgYXQgYSBnbGFuY2UgKi9cbiRsZW5zLXRlYWwtcGFsZTogI2UzZjRmMTtcblxuLyogLS0tIFNoYXJlZCBhcnQgLS0tICovXG5sZW5zLWZyYW1lLWFydCxcbmxlbnMtZGVzaWduLWFydCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubGVucy1mcmFtZS1hcnQge1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogYXV0bztcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cblx0cGF0aCB7XG5cdFx0dHJhbnNpdGlvbjogZmlsbCAwLjI1cyBlYXNlLCBzdHJva2UgMC4yNXMgZWFzZSwgZmlsbC1vcGFjaXR5IDAuMjVzIGVhc2U7XG5cdH1cbn1cblxuLmxlbnMtZGVzaWduLWFydCB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR3aWR0aDogNzRweDtcblx0aGVpZ2h0OiA3NHB4O1xuXHRmbGV4LXNocmluazogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBEYXNoYm9hcmQgbW9kdWxlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1tb2R1bGUge1xuXHQubGVucy1tb2R1bGUtY291bnQge1xuXHRcdG1hcmdpbi1yaWdodDogMS4yZW07XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRwYWRkaW5nOiAzcHggMTBweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHR9XG5cblx0LmxlbnMtam9iLWxpc3Qge1xuXHRcdHBhZGRpbmc6IDZweCAwLjhlbSAxMnB4O1xuXHRcdG1heC1oZWlnaHQ6IDMyZW07XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0fVxuXG5cdC5sZW5zLWVtcHR5IHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cGFkZGluZzogMjRweCAwIDE2cHg7XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDI2cHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0XHR9XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9iIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDEycHggMTJweDtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1sZWZ0OiA0cHggc29saWQgJG5hdnk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2UsIHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDZweCAxOHB4IHJnYmEoMCwgNTMsIDIxMCwgMC4xKTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcblx0XHR9XG5cblx0XHQmLnN0YXR1cy1xdW90ZSB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXG5cdFx0Ji5zdGF0dXMtaW52b2ljZWQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICR5ZWxsb3c7XG5cdFx0fVxuXG5cdFx0Ji5zdGF0dXMtb3JkZXJlZCxcblx0XHQmLnN0YXR1cy1pbi1wcm9kdWN0aW9uIHtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkY3lhbjtcblx0XHR9XG5cblx0XHQmLnN0YXR1cy1yZWNlaXZlZCB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHRcdCYuc3RhdHVzLWNvbGxlY3RlZCB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdG9wYWNpdHk6IDAuODtcblx0XHR9XG5cblx0XHQvKiBJbnZvaWNlZCwgaXNzdWVkIG9yIHdpdGhkcmF3bjogbG9ja2VkLCBzbyB0aGUgcm93IGRvZXNuJ3Qgb3BlbiAtIG9ubHkgaXRzIGFjdGlvbnMgZG8gKi9cblx0XHQmLmxlbnMtam9iLWxvY2tlZCB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9iLXRodW1iIHtcblx0XHRmbGV4OiAwIDAgOTZweDtcblx0XHRwYWRkaW5nOiAxMHB4IDZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdH1cblxuXHQvKiBUaGUgaW1hZ2Ugd2l0aCB3aGF0IHRoZSByb3cgaXMgYW5kIHdoZXJlIGl0J3MgdXAgdG8gYmVuZWF0aCBpdCwgbGVhdmluZyB0aGUgdGV4dCB0aGUgd2lkdGggKGJvdGggdGlsZXMpICovXG5cdC5sZW5zLWpvYi1zaWRlIHtcblx0XHRmbGV4OiAwIDAgOTZweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5sZW5zLWpvYi10aHVtYiB7XG5cdFx0XHRmbGV4OiBub25lO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0LyogQSBsb25nIG9uZSAoXCJNdWx0aWZvY2FsIGdsYXNzZXNcIiwgXCJSZWFkeSB0byBjb2xsZWN0XCIpIHRha2VzIHR3byBsaW5lcywgbm90IG1vcmUgb2YgdGhlIHJvdyAqL1xuXHRcdC5sZW5zLXR5cGUtdGFnLFxuXHRcdC5sZW5zLXN0YXR1cy1waWxsLFxuXHRcdC5sZW5zLXJ4LXBpbGwge1xuXHRcdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjI1O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHR9XG5cblx0XHQvKiBKdXN0IGVub3VnaCBmb3IgXCJTcGVjdGFjbGUgUnhcIiBhbmQgXCJDb250YWN0cyBSeFwiIG9uIG9uZSBsaW5lICovXG5cdFx0LmxlbnMtdHlwZS10YWcge1xuXHRcdFx0cGFkZGluZzogMnB4IDZweDtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtam9iLW1haW4ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmxlbnMtam9iLXRvcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5sZW5zLWpvYi1udW1iZXIge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHR9XG5cblx0LmxlbnMtam9iLXRvdGFsIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdH1cblxuXHQvKiBXcmFwcywgc28gYSBsb25nIGZyYW1lIG9yIGxlbnMgbmFtZSBpcyByZWFkIGluIGZ1bGwgKi9cblx0LmxlbnMtam9iLWRlc2Mge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0fVxuXG5cdC5sZW5zLWpvYi1tZXRhIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDRweCAxNHB4O1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDNweDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2ItYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRnYXA6IDZweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0fVxuXG5cdC5sZW5zLWFjdGlvbi1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRwYWRkaW5nOiA2cHggMTFweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCAkd2FybmluZy1ib3JkZXI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy10cC0zMDtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cdFx0fVxuXG5cdFx0Ji5wcmltYXJ5IHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgNTMsIDIxMCwgMC4yNSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYi1yZW1vdmUge1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogUHJvZ3Jlc3MgdHJhY2s6IG9uZSBzZWdtZW50IHBlciBzdGFnZSBhZnRlciB0aGUgcXVvdGUgKi9cblx0LmxlbnMtdHJhY2sge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luLXRvcDogOXB4O1xuXHR9XG5cblx0LmxlbnMtdHJhY2stc3RlcCB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHQubGVucy10cmFjay1iYXIge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRoZWlnaHQ6IDVweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLXJ1bGU7XG5cdFx0fVxuXG5cdFx0LmxlbnMtdHJhY2stbGFiZWwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0XHRmb250LXNpemU6IDkuNXB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cblx0XHQmLmRvbmUgLmxlbnMtdHJhY2stYmFyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuY3VycmVudCB7XG5cdFx0XHQubGVucy10cmFjay1iYXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICRuYXZ5IDAlLCAkY3lhbiAxMDAlKTtcblx0XHRcdFx0YW5pbWF0aW9uOiBsZW5zLXB1bHNlIDEuNnMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5cdFx0XHR9XG5cblx0XHRcdC5sZW5zLXRyYWNrLWxhYmVsIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbkBrZXlmcmFtZXMgbGVucy1wdWxzZSB7XG5cdDAlLFxuXHQxMDAlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG5cblx0NTAlIHtcblx0XHRvcGFjaXR5OiAwLjU1O1xuXHR9XG59XG5cbi8qIFN0YXR1cyBwaWxsIC0gdXNlZCBvbiB0aGUgZGFzaGJvYXJkIGFuZCBpbiB0aGUgZGlhbG9nICovXG4ubGVucy1zdGF0dXMtcGlsbCB7XG5cdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRnYXA6IDVweDtcblx0Zm9udC1zaXplOiAxMC41cHg7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0cGFkZGluZzogM3B4IDlweDtcblx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0Y29sb3I6ICRuYXZ5O1xuXG5cdCYuc3RhdHVzLXF1b3RlIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdCYuc3RhdHVzLWludm9pY2VkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWhpZ2gtYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQmLnN0YXR1cy1vcmRlcmVkLFxuXHQmLnN0YXR1cy1pbi1wcm9kdWN0aW9uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbi10cC0xMDtcblx0XHRjb2xvcjogJGN5YW4tZGFya2VyO1xuXHR9XG5cblx0Ji5zdGF0dXMtcmVjZWl2ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxuXG5cdCYuc3RhdHVzLWNvbGxlY3RlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBQcmFjdGljZSBqb2IgbGlzdCAobmF2IGJhcilcbi8qIFRoZSBjb250ZW50IGNhcnJpZXMgLmxlbnMtbW9kdWxlIHRvbywgZm9yIHRoZSBkYXNoYm9hcmQncyBidXR0b25zLFxuLyogdGh1bWJuYWlscyBhbmQgZW1wdHkgc3RhdGUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1qb2JzLWRpYWxvZyB7XG5cdC5sZW5zLWpvYnMtdG9vbGJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiAxMnB4IDEuNWVtIDZweDtcblx0fVxuXG5cdC5sZW5zLWpvYnMtc3RhZ2VzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5sZW5zLXN0YWdlLWNoaXAge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRwYWRkaW5nOiA1cHggMTJweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdGIge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0b3BhY2l0eTogMC40NTtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYub3ZlcmR1ZSB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXG5cdFx0XHRiIHtcblx0XHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdH1cblxuXHRcdFx0Ji5zZWxlY3RlZCxcblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHJlZC1kYW5nZXItYWx0LXRwLTE1O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYnMtc2VhcmNoIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDI4MHB4O1xuXG5cdFx0aSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAxMXB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0fVxuXG5cdFx0aW5wdXQge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAzMnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZGlhbG9nIGlzIGEgZml4ZWQgaGVpZ2h0OyB0aGUgam9iIGxpc3QgZmlsbHMgd2hhdCBpcyBsZWZ0IGFuZCBzY3JvbGxzIG9uIGl0cyBvd24gKi9cblx0LmxlbnMtam9icy1ib2R5IHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LmxlbnMtam9icy1zY3JvbGwge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0bWFyZ2luOiA2cHggMS41ZW0gMDtcblxuXHRcdC5sZW5zLWVtcHR5IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2JzLXRhYmxlIHtcblx0XHRtYXJnaW46IDAgMCAxLjVlbTtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblxuXHRcdHRoIHtcblx0XHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdFx0LmZhIHtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDNweDtcblx0XHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRkIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHR9XG5cblx0XHR0Ym9keSB0ciB7XG5cdFx0XHRib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdFx0fVxuXG5cdFx0XHQmLnN0YXR1cy1yZWNlaXZlZCB7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkZ3JlZW47XG5cdFx0XHR9XG5cblx0XHRcdCYuc3RhdHVzLW9yZGVyZWQsXG5cdFx0XHQmLnN0YXR1cy1pbi1wcm9kdWN0aW9uIHtcblx0XHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRjeWFuO1xuXHRcdFx0fVxuXG5cdFx0XHQmLnN0YXR1cy1pbnZvaWNlZCB7XG5cdFx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkeWVsbG93O1xuXHRcdFx0fVxuXG5cdFx0XHQmLnN0YXR1cy1jb2xsZWN0ZWQge1xuXHRcdFx0XHRvcGFjaXR5OiAwLjg1O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYnMtc3ViIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtam9icy1wYXRpZW50IHtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXG5cdC5sZW5zLWN1cnJlbnQtdGFnIHtcblx0XHRtYXJnaW4tbGVmdDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogOS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubGVucy1jdXJyZW50LXRhZyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy1qb2JzLWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LmxlbnMtam9iLXRodW1iIHtcblx0XHRcdGZsZXg6IDAgMCA2NHB4O1xuXHRcdFx0cGFkZGluZzogNnB4IDRweDtcblx0XHR9XG5cblx0XHQubGVucy1qb2ItZGVzYyB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1qb2JzLWRhdGUge1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQmLm92ZXJkdWUge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblxuXHRcdFx0LmxlbnMtam9icy1zdWIge1xuXHRcdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWpvYnMtYWN0aW9ucyB7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEpvYiBkaWFsb2dcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyB7XG5cdC5sZW5zLXNoZWxsIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHQvKiBUaGUgam9iIHRpY2tldCBnZXRzIGEgbGl0dGxlIG1vcmUgcm9vbSB0aGFuIHRoZSBzZXR0aW5ncyByYWlsICovXG5cdFx0LnNldHRpbmdzLW5hdi5sZW5zLXRpY2tldCB7XG5cdFx0XHRmbGV4OiAwIDAgMzAwcHg7XG5cdFx0XHR3aWR0aDogMzAwcHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcGFuZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0fVxuXG5cdC5sZW5zLWZpZWxkc2V0IHtcblx0XHRib3JkZXI6IDA7XG5cdFx0cGFkZGluZzogMDtcblx0XHRtYXJnaW46IDA7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmxlbnMtc3RlcC12aWV3IHtcblx0XHRhbmltYXRpb246IGxlbnMtZmFkZS1pbiAwLjI4cyBlYXNlIGJvdGg7XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogVGlja2V0IChsZWZ0IHJhaWwpXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy10aWNrZXQtcHJldmlldyB7XG5cdFx0bWFyZ2luOiAxNnB4IDE4cHggNnB4O1xuXHRcdHBhZGRpbmc6IDE4cHggMTZweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCAkbGVucy1jYW52YXMgMCUsICRuYXZ5LXBhbGUgMTAwJSk7XG5cdFx0bWluLWhlaWdodDogMTA0cHg7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG5cdFx0bGVucy1mcmFtZS1hcnQge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGlja2V0LXBsYWNlaG9sZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RlcHMge1xuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0fVxuXG5cdC5sZW5zLXN0ZXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDExcHg7XG5cdFx0cGFkZGluZzogMTBweCAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDNweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0fVxuXG5cdFx0LmxlbnMtc3RlcC1tYXJrZXIge1xuXHRcdFx0d2lkdGg6IDI2cHg7XG5cdFx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXHRcdH1cblxuXHRcdC5sZW5zLXN0ZXAtdGV4dCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC5sZW5zLXN0ZXAtbGFiZWwge1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdH1cblxuXHRcdC5sZW5zLXN0ZXAtc3VtbWFyeSB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdH1cblxuXHRcdC5sZW5zLXN0ZXAtcHJpY2Uge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQmLmRvbmUge1xuXHRcdFx0LmxlbnMtc3RlcC1tYXJrZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRncmVlbjtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0fVxuXG5cdFx0XHQubGVucy1zdGVwLXN1bW1hcnkge1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5hY3RpdmUge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblxuXHRcdFx0LmxlbnMtc3RlcC1tYXJrZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICR3aGl0ZTtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cblx0XHRcdC5sZW5zLXN0ZXAtbGFiZWwsXG5cdFx0XHQubGVucy1zdGVwLXByaWNlIHtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblxuXHRcdFx0LmxlbnMtc3RlcC1zdW1tYXJ5IHtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZS10cC03NTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy10aWNrZXQtdG90YWwge1xuXHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdFx0cGFkZGluZzogMTZweCAyMHB4IDIwcHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cblx0XHQuZm9vdGVyLWxhYmVsIHtcblx0XHRcdGZvbnQtc2l6ZTogOXB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcHJvZ3Jlc3Mge1xuXHRcdGhlaWdodDogNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDNweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1ydWxlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblxuXHRcdC5sZW5zLXByb2dyZXNzLWJhciB7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAzcHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICRuYXZ5IDAlLCAkY3lhbiAxMDAlKTtcblx0XHRcdHRyYW5zaXRpb246IHdpZHRoIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjIsIDEsIDAuMzYsIDEpO1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBGcmFtZSB0cmFjZSBjYXJkIChmcmFtZSBzdGVwIGFuZCBsYWIgb3JkZXIpXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy10cmFjZXItY2FyZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblxuXHRcdGg0IC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQ+IC5sZW5zLWxhYmVsOm5vdCgubGVucy10cmFjZS1oZWFkaW5nKSB7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxuXG5cdC8qIFwiRWRpdCBleHRyYXMgJiBwcmljZXNcIiwgYmVzaWRlIHRoZSBleHRyYXMgc3RlcCdzIGRlc2NyaXB0aW9uICovXG5cdC5sZW5zLWVkaXQtZXh0cmFzIHtcblx0XHRtYXJnaW4tbGVmdDogOHB4O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQvKiBUaGUgcGF0aWVudCdzIG93biBmcmFtZTogZGVzY3JpcHRpb24sIGNvbG91ciwgc2hhcGUgYW5kIGZpdHRpbmcgY2hhcmdlICovXG5cdC5sZW5zLW93bi1mcmFtZS1maWVsZHMge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMmZyKSByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXG5cdFx0XHRzcGFuIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtb3duLWZyYW1lLWhlbHAge1xuXHRcdG1hcmdpbjogMCAwIDE2cHg7XG5cdH1cblxuXHQvKiBBIG1hZGUtdG8tb3JkZXIgY29udGFjdCBsZW5zOiBpdHMgbmFtZSBhbmQgbGFiIGdldCB0aGUgcm9vbSAqL1xuXHQuY2wtbWFkZS1maWVsZHMge1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAyZnIpKSByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuXHR9XG5cblx0LmNsLW1hZGUtdGlsZSAuY2wtdGlsZS1hcnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAzMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdH1cblxuXHQuY2wtbGFiLW5vdGVzIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0LyogU2VuZCBvcmRlciwgaW4gdGhlIGpvYidzIG9yZGVyIGNhcmQgb25jZSBpdCBpcyBpbnZvaWNlZCAqL1xuXHQubGVucy1vcmRlci1zZW5kIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4IDEycHg7XG5cdFx0bWFyZ2luOiA0cHggMCAxMnB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LmZpZWxkLWhlbHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW9yZGVyLWhpbnQge1xuXHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdH1cblxuXHQvKiBUaGUgZmlyc3QgbGFiZWwgaW4gYSBjYXJkIHNpdHMgdW5kZXIgaXRzIGhlYWRlciAtIG5vdCB1bmRlciB0aGUgb2xkIGdsb2JhbCAubGVucy1sYWJlbCBtYXJnaW4gKi9cblx0LnNldHRpbmdzLWNhcmQgPiAuY2FyZC1oZWFkZXItZmxleCArIC5sZW5zLWxhYmVsIHtcblx0XHRtYXJnaW4tdG9wOiAwO1xuXHR9XG5cblx0LmxlbnMtb3duLWZyYW1lLXRpbGUgLmxlbnMtdGlsZS1hcnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAzNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdH1cblxuXHQvKiBUaGUgY2hvc2VuIGZyYW1lJ3MgZXllLCBicmlkZ2UgYW5kIHRlbXBsZSBzaXplcyAqL1xuXHQubGVucy1mcmFtZS1zaXplIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxMjBweCkpO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW46IDZweCAwIDRweDtcblxuXHRcdGxhYmVsIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cblx0XHRcdHNwYW4ge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmFjZS1oZWFkaW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLXRvcDogMThweDtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0fVxuXG5cdC5sZW5zLXRyYWNlLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMTBweCAxNnB4O1xuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdH1cblxuXHRcdGIge1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmFjZXItaGludCB7XG5cdFx0bWFyZ2luOiAwIDAgMTJweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LyogQm94IG1lYXN1cmVtZW50cyB0eXBlZCBmcm9tIHRoZSB0cmFjZXIncyByZWFkb3V0ICovXG5cdC5sZW5zLXRyYWNlLWZvcm0gLmZpZWxkLWdyaWQge1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIG1pbm1heCgwLCAxZnIpKTtcblx0fVxuXG5cdC5sZW5zLXRyYWNlci1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdH1cblxuXHQubGVucy10cmFjZXItcmVtb3ZlIHtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFwiSW1wb3J0IGEgbmV3IGZpbGVcIjogYSBsYWJlbCBzbyB0aGUgaGlkZGVuIGZpbGUgaW5wdXQgb3BlbnMgb24gY2xpY2ssIHNpemVkIGxpa2UgaXRzIG5laWdoYm91cnMgKi9cblx0LmxlbnMtdHJhY2UtaW1wb3J0IHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LXdlaWdodDogaW5oZXJpdDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cblx0XHRpbnB1dFt0eXBlPVwiZmlsZVwiXSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIE5vIHRyYWNlIHlldDogZHJvcCB0aGUgdHJhY2VyJ3MgZmlsZSBoZXJlLCBvciBjbGljayB0byBjaG9vc2UgaXQgKi9cblx0LmxlbnMtdHJhY2UtZHJvcCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiBub25lO1xuXHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdFx0cGFkZGluZzogMThweCAxNnB4O1xuXHRcdGJvcmRlcjogMS41cHggZGFzaGVkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmLm92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0fVxuXG5cdFx0aW5wdXRbdHlwZT1cImZpbGVcIl0ge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmFjZS1kcm9wLWljb24ge1xuXHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQubGVucy10cmFjZS1kcm9wLXRpdGxlIHtcblx0XHRmb250LXNpemU6IDEzLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQubGVucy10cmFjZS1kcm9wLWhpbnQge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cblx0XHR1IHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy10cmFjZS1lcnJvciB7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LyogVGhlIGltcG9ydGVkIG91dGxpbmUsIGJvdGggbGVuc2VzIHRvIHNjYWxlICovXG5cdC5sZW5zLXRyYWNlLXByZXZpZXcge1xuXHRcdG1hcmdpbjogMTJweCAwIDRweDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHggNnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRsZW5zLXJ1bGU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0YmFja2dyb3VuZDogJGxlbnMtY2FudmFzO1xuXG5cdFx0c3ZnIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRtYXgtd2lkdGg6IDQyMHB4O1xuXHRcdFx0aGVpZ2h0OiAxMjBweDtcblx0XHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdH1cblxuXHRcdGZpZ2NhcHRpb24ge1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJhY2Utc2hhcGUge1xuXHRcdGZpbGw6ICR3aGl0ZTtcblx0XHRzdHJva2U6ICRuYXZ5O1xuXHRcdHN0cm9rZS13aWR0aDogMC4zNTtcblx0XHRzdHJva2UtbGluZWpvaW46IHJvdW5kO1xuXHR9XG5cblx0LmxlbnMtdHJhY2UtZGF0dW0ge1xuXHRcdHN0cm9rZTogJGxlbnMtZmFpbnQ7XG5cdFx0c3Ryb2tlLXdpZHRoOiAwLjI7XG5cdFx0c3Ryb2tlLWRhc2hhcnJheTogMSAxO1xuXHR9XG5cblx0LmxlbnMtdHJhY2Utc2lkZSB7XG5cdFx0Zm9udC1zaXplOiA0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHR0ZXh0LWFuY2hvcjogbWlkZGxlO1xuXHRcdGZpbGw6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtbXV0ZWQtdmFsdWUge1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLXRvdGFsLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0Ji5tdXRlZCB7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdG90YWwtdmFsdWUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDI0cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFNoYXJlZCBiaXRzXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy1sYWJlbCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdG1hcmdpbi1ib3R0b206IDZweDtcblx0fVxuXG5cdC5sZW5zLXRvb2xiYXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cblxuXHQubGVucy1zZWFyY2gge1xuXHRcdGZsZXg6IDAgMSAzMDBweDtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQubGVucy1jaGlwLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHg7XG5cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0cGFkZGluZzogNnB4IDEzcHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc2hhcGUtcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAxOHB4O1xuXHR9XG5cblx0LmxlbnMtc3VnZ2VzdC1zdGFyIHtcblx0XHRjb2xvcjogJHllbGxvdztcblx0XHRmb250LXNpemU6IDEwcHg7XG5cdH1cblxuXHQubGVucy1ub3RpY2Uge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblxuXHRcdD4gc3BhbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblxuXHRcdCYuc3VjY2VzcyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMDg7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC0zMDtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW1pbmktYnRuIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogNHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LmxlbnMtcmlnaHQge1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdH1cblxuXHQuc2V0dGluZ3MtY2FyZCArIC5zZXR0aW5ncy1jYXJkLFxuXHQuc2V0dGluZ3MtY2FyZCArIC5sZW5zLXRyYWNlLXNlY3Rpb24ge1xuXHRcdG1hcmdpbi10b3A6IDE2cHg7XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogVGlsZXMgKGZyYW1lcyAmIGxlbnNlcylcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5sZW5zLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjIwcHgsIDFmcikpO1xuXHRcdGdhcDogMTZweDtcblxuXHRcdCYubGVucy1ncmlkLXdpZGUge1xuXHRcdFx0bWFyZ2luLXRvcDogMThweDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMzMHB4LCAxZnIpKTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1sb2FkLW1vcmUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0bWFyZ2luLXRvcDogMThweDtcblx0fVxuXG5cdC5sZW5zLXRpbGUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDI0cHggcmdiYSgwLCA1MywgMjEwLCAwLjEyKTtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDEwcHggMjRweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTgpO1xuXG5cdFx0XHQubGVucy10aWxlLWNoZWNrIHtcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubGVucy10aWxlLWNoZWNrIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMTBweDtcblx0XHRcdHJpZ2h0OiAxMHB4O1xuXHRcdFx0ei1pbmRleDogMjtcblx0XHRcdHdpZHRoOiAyNHB4O1xuXHRcdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC40KTtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4ycyBjdWJpYy1iZXppZXIoMC4yMiwgMSwgMC4zNiwgMSk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGlsZS1hcnQge1xuXHRcdHBhZGRpbmc6IDIycHggMThweCAxNnB4O1xuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNjBkZWcsICRsZW5zLWNhbnZhcyAwJSwgJG5hdnktcGFsZSAxMDAlKTtcblx0fVxuXG5cdC5sZW5zLXRpbGUtYm9keSB7XG5cdFx0cGFkZGluZzogMTJweCAxNnB4IDZweDtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLXRpbGUtYnJhbmQge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA4ZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0fVxuXG5cdC5sZW5zLXRpbGUtbmFtZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjM7XG5cdH1cblxuXHQubGVucy10aWxlLW1ldGEge1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHR9XG5cblx0LmxlbnMtdGlsZS1mb290IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdHBhZGRpbmc6IDEwcHggMTZweCAxMnB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0fVxuXG5cdC5sZW5zLXN0b2NrIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cblx0XHQmLmxvdyB7XG5cdFx0XHRjb2xvcjogJG5vdGljZS11cmdlbnQ7XG5cdFx0fVxuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDNweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1wcmljZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRzbWFsbCB7XG5cdFx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1zd2F0Y2hlcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IDlweDtcblx0fVxuXG5cdC5sZW5zLXN3YXRjaCB7XG5cdFx0d2lkdGg6IDE4cHg7XG5cdFx0aGVpZ2h0OiAxOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkd2hpdGU7XG5cdFx0Ym94LXNoYWRvdzogMCAwIDAgMXB4ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjE1cyBlYXNlLCB0cmFuc2Zvcm0gMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxLjEyKTtcblx0XHR9XG5cblx0XHQmLmFjdGl2ZSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAycHggJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3dhdGNoLW5hbWUge1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0fVxuXG5cdC8qIExlbnMgdGlsZXMgYXJlIGEgcm93OiBkaWFncmFtIHRoZW4gdGV4dCAqL1xuXHQubGVucy1vcHRpb24tdGlsZSB7XG5cdFx0LmxlbnMtb3B0aW9uLXJvdyB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0XHRnYXA6IDRweDtcblx0XHRcdHBhZGRpbmc6IDI4cHggMTZweCAwOyAvKiByb29tIGZvciB0aGUgUmVjb21tZW5kZWQgcmliYm9uICovXG5cblx0XHRcdC5sZW5zLXRpbGUtYm9keSB7XG5cdFx0XHRcdHBhZGRpbmc6IDAgMCAwIDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5yZWNvbW1lbmRlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICR5ZWxsb3ctdHAtNTA7XG5cdFx0fVxuXG5cdFx0Ji5yZWNvbW1lbmRlZC5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJpYmJvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogMDtcblx0XHRsZWZ0OiAxNnB4O1xuXHRcdGZvbnQtc2l6ZTogOS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRwYWRkaW5nOiAzcHggOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDAgMCA2cHggNnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5sZW5zLWZlYXR1cmVzIHtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0Z2FwOiA1cHg7XG5cblx0XHQuY2hpcCB7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRwYWRkaW5nOiAzcHggOHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBQcmVzY3JpcHRpb25cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5sZW5zLXVzZS1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0LmxlbnMtdXNlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRwYWRkaW5nOiAxNHB4IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRib3JkZXI6IDEuNXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRjb2xvcjogIzRhNTU2ODtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMjBweDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogI2NiZDVlMDtcblx0XHR9XG5cblx0XHQmLnNlbGVjdGVkIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYubG9ja2VkIHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cblx0XHQvKiBBIHVzZSB0aGlzIHByZXNjcmlwdGlvbiBoYXMgbm8gcG93ZXIgZm9yICovXG5cdFx0Ji5ibG9ja2VkIHtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0fVxuXHR9XG5cblx0LyogV2hhdCBjaG9vc2luZyB0aGUgdXNlIGRvZXMgdG8gdGhlIHBvd2VycyAqL1xuXHQubGVucy11c2UtZWZmZWN0IHtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LmxlbnMtcG93ZXJzIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHR9XG5cblx0LmxlbnMtcG93ZXJzLXNhbWUsXG5cdC5sZW5zLXBvd2Vycy1ydWxlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHR9XG5cblx0LmxlbnMtcG93ZXJzLXNhbWUgLmZhIHtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxuXG5cdC5sZW5zLXBvd2Vycy1ydWxlIC5mYSB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LmxlbnMtcG93ZXJzLXRhYmxlIHtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0LmxlbnMtcG93ZXJzLWhlYWQsXG5cdFx0LmxlbnMtcG93ZXJzLXJvdyB7XG5cdFx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxNTBweCByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDZweCAxMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0fVxuXG5cdFx0LmxlbnMtcG93ZXJzLWhlYWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0XHR9XG5cblx0XHQubGVucy1wb3dlcnMtcm93IHtcblx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0XHQmLm1hZGUge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmxlbnMtcG93ZXJzLWxhYmVsIHNtYWxsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR9XG5cblx0XHQvKiBUaGUgdmFsdWVzIHRoZSB1c2UgY2hhbmdlZCAqL1xuXHRcdC5jaGFuZ2VkIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAkY3lhbjtcblx0XHRcdHRleHQtdW5kZXJsaW5lLW9mZnNldDogM3B4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwcmVzY3JpYmVkIHVzZSwgbWFya2VkIGFtb25nIHRoZSBjaG9pY2VzICovXG5cdC5sZW5zLXVzZS1yZWMge1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQubGVucy11c2UtY2FyZCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5sZW5zLXJ4LXRhYmxlIHtcblx0XHQubGVucy1yeC1oZWFkLFxuXHRcdC5sZW5zLXJ4LXJvdyB7XG5cdFx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IHJlcGVhdCg4LCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0XHRnYXA6IDhweDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHByZXNjcmlwdGlvbiBzdGVwIHNob3dzIHRoZSBSeCByZWFkLW9ubHksIHdpdGhvdXQgdGhlIFBEIGFuZCBoZWlnaHQgY29sdW1ucyAqL1xuXHRcdCYubGVucy1yeC1yZWFkb25seSAubGVucy1yeC1oZWFkLFxuXHRcdCYubGVucy1yeC1yZWFkb25seSAubGVucy1yeC1yb3cge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IHJlcGVhdCg2LCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0fVxuXG5cdFx0LyogVGhlIG1lYXN1cmVtZW50cyBzdGVwOiBqdXN0IHRoZSBQRCBhbmQgZml0dGluZyBoZWlnaHQsIG1lYXN1cmVkIGluIHRoZSBmcmFtZSAqL1xuXHRcdCYubGVucy1tZWFzdXJlLXRhYmxlIC5sZW5zLXJ4LWhlYWQsXG5cdFx0Ji5sZW5zLW1lYXN1cmUtdGFibGUgLmxlbnMtcngtcm93IHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoMiwgbWlubWF4KDAsIDE2MHB4KSk7XG5cdFx0fVxuXG5cdFx0LmxlbnMtcngtaGVhZCBzcGFuIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblxuXHRcdC5sZW5zLXJ4LXJvdyB7XG5cdFx0XHRwYWRkaW5nOiA4cHggMDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0XHRwYWRkaW5nOiA2cHggNHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdH1cblxuXHRcdFx0Lmhhcy1lcnJvciB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5leWUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4yO1xuXG5cdFx0XHRzbWFsbCB7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LWhpbnQge1xuXHRcdG1hcmdpbjogMTBweCAwIDA7XG5cdFx0Y29sb3I6ICRub3RpY2UtdXJnZW50O1xuXHR9XG5cblx0LmxlbnMtcngtc3VtbWFyeSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweCAyMHB4O1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdGIge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LWV4dHJhIHtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuXHRcdGdhcDogMTRweDtcblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBFeHRyYXNcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5sZW5zLWV4dHJhcy1sYXlvdXQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAyMHB4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHR9XG5cblx0LmxlbnMtZXh0cmFzLW9wdGlvbnMge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmxlbnMtZXh0cmFzLXByZXZpZXcge1xuXHRcdGZsZXg6IDAgMCAzMDBweDtcblx0XHRwb3NpdGlvbjogc3RpY2t5O1xuXHRcdHRvcDogMDtcblx0fVxuXG5cdC5sZW5zLXByZXZpZXctc3RhZ2Uge1xuXHRcdG1hcmdpbjogLTI1cHggLTI1cHggMTZweDtcblx0XHRwYWRkaW5nOiAzNHB4IDI2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCAjZmRmZGZmIDAlLCAkbmF2eS1wYWxlIDYwJSwgI2NmZTBmZiAxMDAlKTtcblx0fVxuXG5cdC5sZW5zLXByZXZpZXctdGl0bGUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXHR9XG5cblx0LmxlbnMtcHJldmlldy1saW5lcyB7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRwYWRkaW5nLXRvcDogMTBweDtcblx0fVxuXG5cdC5sZW5zLXByZXZpZXctbGluZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0cGFkZGluZzogM3B4IDA7XG5cblx0XHQmLnRvdGFsIHtcblx0XHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1vcHRpb24tZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyMTBweCwgMWZyKSk7XG5cdFx0Z2FwOiAxMHB4O1xuXG5cdFx0Ji50aHJlZSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW9wdGlvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTFweDtcblx0XHRwYWRkaW5nOiAxMXB4IDEzcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Ym9yZGVyOiAxLjVweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXHRcdHVzZXItc2VsZWN0OiBub25lO1xuXG5cdFx0PiBpIHtcblx0XHRcdHdpZHRoOiAzMHB4O1xuXHRcdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdH1cblxuXHRcdD4gZGl2IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zO1xuXG5cdFx0XHRzbWFsbCB7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubGVucy1vcHRpb24tcHJpY2Uge1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjY2JkNWUwO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cblx0XHRcdD4gaSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuaW5jbHVkZWQge1xuXHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXG5cdFx0XHQubGVucy1vcHRpb24tcHJpY2Uge1xuXHRcdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy10aW50LXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiAxMHB4O1xuXHR9XG5cblx0LmxlbnMtdGludCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cdFx0d2lkdGg6IDg0cHg7XG5cdFx0cGFkZGluZzogMTBweCA0cHggOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJvcmRlcjogMS41cHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cdH1cblxuXHQubGVucy10aW50LWRvdCB7XG5cdFx0d2lkdGg6IDM4cHg7XG5cdFx0aGVpZ2h0OiAzOHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRib3gtc2hhZG93OiBpbnNldCAwIC02cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTgpLCAwIDJweCA2cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcblxuXHRcdCYuY2xlYXIge1xuXHRcdFx0YmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg0NWRlZywgJHdoaXRlLCAkd2hpdGUgNHB4LCAkbGVucy1ydWxlIDRweCwgJGxlbnMtcnVsZSA4cHgpO1xuXHRcdFx0Ym94LXNoYWRvdzogaW5zZXQgMCAwIDAgMXB4ICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQmLm1pcnJvcjpub3QoLmNsZWFyKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDU1JSk7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdGludC1uYW1lIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRsaW5lLWhlaWdodDogMS4yO1xuXHR9XG5cblx0LmxlbnMtdGludC1wcmljZSB7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtZGVuc2l0eSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi10b3A6IDE0cHg7XG5cblx0XHQubGVucy1sYWJlbCB7XG5cdFx0XHRtYXJnaW46IDAgNnB4IDAgMDtcblx0XHR9XG5cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0cGFkZGluZzogNXB4IDEycHg7XG5cdFx0fVxuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIE9yZGVyICYgYmlsbGluZ1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LmxlbnMtbWlzc2luZy1saW5rIHtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0Y29sb3I6IGluaGVyaXQ7XG5cdH1cblxuXHQubGVucy1iaWxsaW5nLWxheW91dCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDIwcHg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdH1cblxuXHQubGVucy1iaWxsaW5nLW1haW4ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmxlbnMtYmlsbGluZy1zaWRlIHtcblx0XHRmbGV4OiAwIDAgMzQwcHg7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdH1cblxuXHQvKiBPbiBzbWFsbGVyIHNjcmVlbnMgdGhlIGludm9pY2UgY2FyZCBzdG9wcyBiZWluZyBhIHNpZGUgY29sdW1uIGFuZCB0aGUgd2hvbGUgc3RlcCBzdGFja3MgKi9cblx0QG1lZGlhIChtYXgtd2lkdGg6IDExMDBweCkge1xuXHRcdC5sZW5zLWJpbGxpbmctbGF5b3V0IHtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0fVxuXG5cdFx0LmxlbnMtYmlsbGluZy1zaWRlIHtcblx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBsYWIgb3JkZXIgcmV2aWV3ZWQgYXQgYSBnbGFuY2U6IG9uZSBmYWN0IHBlciBjZWxsLCB3cmFwcGluZyB0byB0aGUgd2lkdGggdGhlcmUgaXMgKi9cblx0LmxlbnMtb3JkZXItZmFjdHMge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgxNTBweCwgMWZyKSk7XG5cdFx0Z2FwOiAxMHB4IDE4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0fVxuXG5cdC5sZW5zLW9yZGVyLWZhY3Qge1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdD4gc3BhbiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdH1cblxuXHRcdD4gYiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtb3JkZXItbWVhc3VyZXMge1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cdH1cblxuXHQvKiBJdGVtcyBhZGRlZCBieSBoYW5kIHRvIHRoZSBpbnZvaWNlIChhbiBleWUgZXhhbWluYXRpb24sIHNheSkgKi9cblx0LmxlbnMtY3VzdG9tLWl0ZW1zIHtcblx0XHRwYWRkaW5nOiA4cHggMCAycHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkbGVucy1ydWxlO1xuXHR9XG5cblx0LmxlbnMtY3VzdG9tLWl0ZW0tcmVtb3ZlIHtcblx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtY3VzdG9tLWFkZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW46IDhweCAwO1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0fVxuXG5cdFx0aW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XG5cdFx0XHRmbGV4OiAwIDAgOTBweDtcblx0XHR9XG5cblx0XHQubGVucy1taW5pLWJ0biB7XG5cdFx0XHRmbGV4OiAwIDAgYXV0bztcblx0XHR9XG5cblx0XHQvKiBUaGUgYmlsbGluZyBpdGVtIHNlYXJjaCByZXN1bHRzICh1aWItdHlwZWFoZWFkKSAqL1xuXHRcdC5kcm9wZG93bi1tZW51IHtcblx0XHRcdG1heC1oZWlnaHQ6IDI0MHB4O1xuXHRcdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgb25lLXN0ZXAgdW5kbyBiZXNpZGUgYSBqb2IncyBuZXh0LXN0YXR1cyBidXR0b24gKi9cblx0LmxlbnMtdW5kby1idG4ge1xuXHRcdGZsZXg6IDAgMCBhdXRvO1xuXHR9XG5cblx0LmxlbnMtYmlsbC1yb3cge1xuXHRcdHBhZGRpbmctdG9wOiA5cHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDlweDtcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0LmNvbC1mZWUge1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1iaWxsLWtpbmQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRtaW4td2lkdGg6IDQ2cHg7XG5cdFx0bWFyZ2luLXJpZ2h0OiA4cHg7XG5cdFx0Zm9udC1zaXplOiA5LjVweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0fVxuXG5cdC5sZW5zLWRpc2NvdW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHQ+IHNwYW46Zmlyc3QtY2hpbGQge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdFx0fVxuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHR3aWR0aDogMTEwcHg7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDRweCAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWJpbGwtdG90YWxzIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdHdpZHRoOiAzMDBweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cblx0XHQ+IGRpdiB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0cGFkZGluZzogM3B4IDE0cHg7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHQmLm11dGVkIHtcblx0XHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdCYuZ3JhbmQge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0XHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubGVucy1wYXktc3BsaXQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cblx0XHRcdC5sZW5zLWxhYmVsIHtcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHRiIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtaW52b2ljZS1jYXJkIHtcblx0XHQmLnNlbnQge1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgMnB4ICRncmVlbi10cC00MCwgMCA4cHggMjRweCAkZ3JlZW4tdHAtMjA7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBsaXR0bGUgcGFwZXIgaW52b2ljZSAqL1xuXHQubGVucy1pbnZvaWNlLWRvYyB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHBhZGRpbmc6IDE4cHggMThweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym94LXNoYWRvdzogMCA2cHggMThweCByZ2JhKDEwLCAzNywgNjQsIDAuMDgpO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0aGVpZ2h0OiA0cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA4cHggOHB4IDAgMDtcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgJG5hdnkgMCUsICRjeWFuIDEwMCUpO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWludm9pY2UtdG9wIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHR9XG5cblx0LmxlbnMtaW52b2ljZS1wcmFjdGljZSB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cblxuXHQubGVucy1pbnZvaWNlLXN1YiB7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDhlbTtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cdH1cblxuXHQubGVucy1pbnZvaWNlLW51bWJlciB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHRzbWFsbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWludm9pY2UtdG8ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogOHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiA4cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWludm9pY2UtbGluZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDNweCAwO1xuXG5cdFx0c3BhbjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdCYudG90YWwge1xuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDhweDtcblx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdCYuZHVlIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1jaGFubmVsLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR9XG5cdH1cblxuXHQubGVucy1zZW50LWZsYXNoIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LmxlbnMtc2VuZC1idG4ge1xuXHRcdG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OyAvKiB0aGUgYWN0aW9uIGJhciBjYXBzIC5idG4gYXQgMjAwcHg7IHRoaXMgbGFiZWwgaXMgbG9uZ2VyICovXG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogTGVhdmUgcHJvbXB0XG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQubGVucy1jb25maXJtLW92ZXJsYXkge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRpbnNldDogMDtcblx0XHR6LWluZGV4OiAxMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktdHAtMjA7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDJweCk7XG5cdFx0YW5pbWF0aW9uOiBsZW5zLWZhZGUtaW4gMC4ycyBlYXNlIGJvdGg7XG5cdH1cblxuXHQubGVucy1jb25maXJtIHtcblx0XHR3aWR0aDogNDIwcHg7XG5cdFx0bWF4LXdpZHRoOiA5MCU7XG5cblx0XHRoNCB7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWNvbmZpcm0tYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cbn1cblxuQGtleWZyYW1lcyBsZW5zLWZhZGUtaW4ge1xuXHRmcm9tIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSg2cHgpO1xuXHR9XG5cblx0dG8ge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNmb3JtOiBub25lO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQ29udGFjdCBsZW5zIHBhdGh3YXlcbi8qIENvbnRhY3QgbGVucyBqb2JzIHNoYXJlIHRoZSBnbGFzc2VzIGpvYiBkaWFsb2csIHRpbGUgYW5kIGpvYiBsaXN0XG4vKiBzdHlsaW5nLiBPbmx5IHRoZSBwaWVjZXMgY29udGFjdHMgYWRkIGFyZSBkZWZpbmVkIGhlcmUuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5sZW5zLWNvbnRhY3QtYXJ0IHtcblx0ZGlzcGxheTogYmxvY2s7XG59XG5cbi5sZW5zLWNvbnRhY3QtYXJ0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xuXG5cdC5sZW5zLWNvbnRhY3QtZXllIHtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGZpbGw6ICRuYXZ5O1xuXHRcdGZpbGwtb3BhY2l0eTogMC4zNTtcblx0fVxufVxuXG4vKiBHbGFzc2VzIC8gQ29udGFjdHMgdGFnIGJlc2lkZSB0aGUgam9iIG51bWJlciAqL1xuLmxlbnMtdHlwZS10YWcge1xuXHRmb250LXNpemU6IDEwcHg7XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0cGFkZGluZzogMnB4IDhweDtcblx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0Y29sb3I6ICRuYXZ5O1xuXG5cdCYuY29udGFjdHMge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLXRlYWwtcGFsZTtcblx0XHRjb2xvcjogJHRlYWw7XG5cdH1cbn1cblxuLmxlbnMtbW9kdWxlIHtcblx0LyogTmV3IGpvYjogZ2xhc3NlcyBvciBjb250YWN0cyAqL1xuXHQubGVucy1uZXctcGlja2VyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDEwcHggMS4yZW0gNHB4O1xuXHRcdGFuaW1hdGlvbjogbGVucy1mYWRlLWluIDAuMnMgZWFzZTtcblx0fVxuXG5cdC5sZW5zLW5ldy1vcHRpb24ge1xuXHRcdGZsZXg6IDE7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRib3JkZXI6IDEuNXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2U7XG5cblx0XHQ+IGkge1xuXHRcdFx0d2lkdGg6IDM2cHg7XG5cdFx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdH1cblxuXHRcdCY6bGFzdC1vZi10eXBlID4gaSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy10ZWFsLXBhbGU7XG5cdFx0XHRjb2xvcjogJHRlYWw7XG5cdFx0fVxuXG5cdFx0YiB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0c21hbGwge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1yZW9yZGVyLWR1ZSB7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblxuXHRcdGkge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cbn1cblxuLmxlbnMtam9icy1kaWFsb2cge1xuXHQubGVucy1qb2JzLW51bWJlciAubGVucy10eXBlLXRhZyB7XG5cdFx0bWFyZ2luLWxlZnQ6IDZweDtcblx0fVxuXG5cdC8qIEFsbCAvIEdsYXNzZXMgLyBDb250YWN0cyAtIGEgc2VnbWVudGVkIGNvbnRyb2wgYWhlYWQgb2YgdGhlIHN0YWdlIGNoaXBzICovXG5cdC5sZW5zLWpvYnMtdHlwZXMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0bWFyZ2luLXJpZ2h0OiA2cHg7XG5cdH1cblxuXHQubGVucy10eXBlLWNoaXAge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRwYWRkaW5nOiA1cHggMTJweDtcblx0XHRib3JkZXI6IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHQmICsgLmxlbnMtdHlwZS1jaGlwIHtcblx0XHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdGIge1xuXHRcdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdH1cblxuXHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0XHRiIHtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLmxlbnMtY29udGFjdHMtZGlhbG9nIHtcblx0LmxlbnMtdGlja2V0LXByZXZpZXcgbGVucy1jb250YWN0LWFydCB7XG5cdFx0d2lkdGg6IDgwJTtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0fVxuXG5cdC5jbC10aWxlLWFydCB7XG5cdFx0d2lkdGg6IDk2cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0cGFkZGluZzogOHB4IDRweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdH1cblxuXHQvKiBUaGUgQ0wgUnggaGFzIHNpeCBjb2x1bW5zIHdoZXJlIHRoZSBnbGFzc2VzIFJ4IGhhcyBlaWdodCAqL1xuXHQuY2wtcngtY2FyZCAubGVucy1yeC10YWJsZSB7XG5cdFx0LmxlbnMtcngtaGVhZCxcblx0XHQubGVucy1yeC1yb3cge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IHJlcGVhdCg2LCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0fVxuXG5cdFx0c2VsZWN0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR0ZXh0LWFsaWduLWxhc3Q6IGNlbnRlcjtcblx0XHR9XG5cblx0XHRpbnB1dFtyZWFkb25seV0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHRcdH1cblx0fVxuXG5cdC5jbC12ZXJ0ZXgtbm90ZSB7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQuY2wtdHJpYWwtY2FyZC50cmlhbGxlZCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC8qIEJveGVzIHBlciBleWUgKi9cblx0LmNsLWJveGVzIHtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXHR9XG5cblx0LmNsLWJveC1yb3cge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxNzBweCBhdXRvIDFmciBhdXRvO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdC5leWUge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4yNTtcblxuXHRcdFx0c21hbGwge1xuXHRcdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuY2wtc3RlcHBlciB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IDMwcHg7XG5cdFx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdH1cblx0fVxuXG5cdC5jbC1zdGVwcGVyLXZhbHVlIHtcblx0XHRtaW4td2lkdGg6IDM0cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5jbC1ib3gtZGVzYyB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5jbC1ib3gtcHJpY2Uge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LmxlbnMtb3B0aW9uLmRpc2FibGVkIHtcblx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdH1cblxuXHQubGVucy1iaWxsLXJvdy5jbC1zYXZpbmcgLmNvbC1mZWUge1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgSm9iIG5vdGVzXG4vKiBUaGUgcG9wb3ZlciBpcyBtb3ZlZCB0byA8Ym9keT4gKHNlZSBsZW5zSm9iTm90ZXMuY29tcG9uZW50LmpzKSwgc29cbi8qIHRoZXNlIHJ1bGVzIGFyZSB0b3AgbGV2ZWwgcmF0aGVyIHRoYW4gbmVzdGVkIGluIHRoZSBtb2R1bGUgb3IgZGlhbG9nLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xubGVucy1qb2Itbm90ZXMge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5sZW5zLWpvYnMtYWN0aW9ucyBsZW5zLWpvYi1ub3RlcyB7XG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdG1hcmdpbi1yaWdodDogNnB4O1xufVxuXG4ubGVucy1ub3Rlcy1idG4ge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA1cHg7XG5cdGZvbnQtc2l6ZTogMTFweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0cGFkZGluZzogNHB4IDEwcHg7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdGJvcmRlcjogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHQmLmhhcy1ub3RlcyB7XG5cdFx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0XHRib3JkZXItY29sb3I6ICR3YXJuaW5nLWJvcmRlcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWhpZ2gtYmc7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQmOmhvdmVyLFxuXHQmLm9wZW4ge1xuXHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG59XG5cbi5sZW5zLW5vdGVzLXBvcCB7XG5cdHBvc2l0aW9uOiBmaXhlZDtcblx0LyogQWJvdmUgbWQtZGlhbG9nIGFuZCBpdHMgYmFja2Ryb3AgKi9cblx0ei1pbmRleDogMTEwMDtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0bWF4LWhlaWdodDogMzgwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0Ym94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgxMCwgMzcsIDY0LCAwLjE2KTtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0YW5pbWF0aW9uOiBsZW5zLWZhZGUtaW4gMC4xNXMgZWFzZTtcblxuXHQmLnBpbm5lZCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLW5vdGVzLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0cGFkZGluZzogMTBweCAxNHB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLW5vdGVzLWNsb3NlIHtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1ub3Rlcy1saXN0IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRwYWRkaW5nOiA0cHggMTRweDtcblx0fVxuXG5cdC5sZW5zLW5vdGVzLWVtcHR5IHtcblx0XHRwYWRkaW5nOiAxMnB4IDA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLW5vdGUge1xuXHRcdHBhZGRpbmc6IDlweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtbm90ZS1tZXRhIHtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cblx0XHRiIHtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtbm90ZS10ZXh0IHtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDEuNDU7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG5cdFx0d29yZC13cmFwOiBicmVhay13b3JkO1xuXHR9XG5cblx0LyogU2l0cyBiZXR3ZWVuIHRoZSBoZWFkZXIgYW5kIHRoZSBuZXdlc3Qgbm90ZSAqL1xuXHQubGVucy1ub3Rlcy1hZGQge1xuXHRcdHBhZGRpbmc6IDEwcHggMTRweCAxMnB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblxuXHRcdHRleHRhcmVhIHtcblx0XHRcdHJlc2l6ZTogdmVydGljYWw7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1ub3Rlcy1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHBhZGRpbmc6IDRweCAxMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLW5vdGVzLWhpbnQge1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMztcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEhhcmQgKG1hZGUtdG8tb3JkZXIpIGNvbnRhY3QgbGVuc2VzXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy10eXBlLXRhZy5jdXN0b20ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdGNvbG9yOiAkd2hpdGU7XG59XG5cbi5sZW5zLWNvbnRhY3RzLWRpYWxvZyB7XG5cdC5jbC1tYWRlLWNoaXAge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0LyogVHJpYWwgQkMsIHBvd2VyLCBESUEsIG92ZXItcmVmcmFjdGlvbiBzcGhlcmUsIGN5bCBhbmQgYXhpcywgb3JkZXIgcG93ZXIsIFVzZSAqL1xuXHQuY2wtdHJpYWwtcngtY2FyZCAubGVucy1yeC10YWJsZSB7XG5cdFx0LmxlbnMtcngtaGVhZCxcblx0XHQubGVucy1yeC1yb3cge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IHJlcGVhdCg3LCBtaW5tYXgoMCwgMWZyKSkgNjRweDtcblx0XHR9XG5cdH1cblxuXHQuY2wtb3JkZXItcG93ZXIge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5jbC1jdXN0b20tY2FyZCAubGVucy1yeC10YWJsZSBzZWxlY3QuZm9ybS1jb250cm9sIHtcblx0XHRwYWRkaW5nOiA2cHggMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qIExhYiBjb3N0IGFuZCBtYXJnaW4gdW5kZXIgdGhlIGJpbGxpbmcgdG90YWxzIC0gbmV2ZXIgb24gdGhlIGludm9pY2UgKi9cblx0LmNsLW1hcmdpbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweCAxOHB4O1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cblx0XHRzcGFuOmZpcnN0LWNoaWxkIHtcblx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHR9XG5cblx0XHRiIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEZsb2F0aW5nIGFjdGlvbiBiYXIgKGpvYiBhbmQgcHJlc2NyaXB0aW9uIGRpYWxvZ3MpXG4vKiBCYWNrLCB0aGUgc3RlcCBkb3RzIGFuZCB0aGUgbmV4dCBhY3Rpb24gZmxvYXQgb3ZlciB0aGUgYm90dG9tIG9mIHRoZVxuLyogc3RlcCwgc28gdGhlIGZvcm0gcnVucyB1bmRlcm5lYXRoIGl0IHJhdGhlciB0aGFuIGVuZGluZyBhdCBhIGJhci5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyB7XG5cdC5sZW5zLXBhbmUge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdC8qIFJvb20gZm9yIHRoZSBiYXIgdW5kZXIgdGhlIGxhc3QgY2FyZCwgYW5kIGEgZmFkZSBzbyBjb250ZW50IHNsaWRlcyB1bmRlciBpdCAqL1xuXHRcdC5zZXR0aW5ncy1wYW5lLWJvZHkge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDExMnB4O1xuXHRcdH1cblxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0cmlnaHQ6IDA7XG5cdFx0XHRib3R0b206IDA7XG5cdFx0XHRoZWlnaHQ6IDk2cHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB0cmFuc3BhcmVudCwgJGxlbnMtY2FudmFzIDcwJSk7XG5cdFx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcblx0XHRcdHotaW5kZXg6IDQ7XG5cdFx0fVxuXHR9XG5cblx0LnNldHRpbmdzLWFjdGlvbi1iYXIubGVucy1mbG9hdC1iYXIge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRsZWZ0OiA1MCU7XG5cdFx0Ym90dG9tOiAxOHB4O1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcblx0XHR6LWluZGV4OiA1O1xuXHRcdHdpZHRoOiBtaW4oODIwcHgsIGNhbGMoMTAwJSAtIDQ4cHgpKTtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTBweCAxMHB4IDEwcHggMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMThweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUtdHAtOTA7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuXHRcdGJveC1zaGFkb3c6IDAgMTJweCAzMnB4IHJnYmEoMTAsIDM3LCA2NCwgMC4xNiksIDAgMnB4IDZweCByZ2JhKDEwLCAzNywgNjQsIDAuMDYpO1xuXG5cdFx0LyogbmdBbmltYXRlIHdhaXRzIG91dCBhbiBlbGVtZW50J3MgQ1NTIHRyYW5zaXRpb24gYmVmb3JlIGl0IGFkZHMgb3IgcmVtb3ZlcyBpdCwgc28gdGhlXG5cdFx0ICAgYnV0dG9ucycgaG92ZXIgdHJhbnNpdGlvbnMgaGVsZCBhIGxlYXZpbmcgYnV0dG9uIGJlc2lkZSB0aGUgb25lIHJlcGxhY2luZyBpdCBhbmQgaGVsZFxuXHRcdCAgIHRoZSBuZXcgb25lIGJhY2suIEJ1dHRvbnMgaGVyZSBhcHBlYXIgYW5kIGdvIGluc3RhbnRseS4gKi9cblx0XHQubmctZW50ZXIsXG5cdFx0Lm5nLWxlYXZlLFxuXHRcdC5uZy1hbmltYXRlIHtcblx0XHRcdHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdGhlaWdodDogNDBweDtcblx0XHRcdHBhZGRpbmc6IDAgMThweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDEycHg7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UsIGNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdFx0b3BhY2l0eTogMC40NTtcblx0XHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdFx0dHJhbnNmb3JtOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5idG4tbmF2eSB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yOCk7XG5cblx0XHRcdC5mYS1hcnJvdy1yaWdodCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDIycHggcmdiYSgwLCA1MywgMjEwLCAwLjM0KTtcblxuXHRcdFx0XHQuZmEtYXJyb3ctcmlnaHQge1xuXHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWCgzcHgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmJ0bi1jYW5jZWwge1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMTJweDtcblx0XHR9XG5cblx0XHQvKiBCYWNrIGlzIHRoZSBxdWlldCB3YXkgb3V0IC0gbm8gYm94IHVudGlsIGl0IGlzIHBvaW50ZWQgYXQgKi9cblx0XHQubGVucy1iYWNrLWJ0biB7XG5cdFx0XHRwYWRkaW5nOiAwIDE0cHggMCAxMHB4O1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblxuXHRcdFx0LmZhIHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmxlbnMtYWN0aW9uLW1pZCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDEycHg7XG5cdFx0XHRwYWRkaW5nOiAwIDZweDtcblx0XHR9XG5cblx0XHQuYWN0aW9uLWhpbnQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHR9XG5cdH1cblxuXHQvKiBXaGVyZSB5b3UgYXJlOiB0aGUgY3VycmVudCBzdGVwIGEgcGlsbCwgZmluaXNoZWQgb25lcyBmaWxsZWQgKi9cblx0LmxlbnMtc3RlcC1kb3RzIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXG5cdFx0aSB7XG5cdFx0XHR3aWR0aDogN3B4O1xuXHRcdFx0aGVpZ2h0OiA3cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA3cHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0dHJhbnNpdGlvbjogd2lkdGggMC4ycyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTtcblxuXHRcdFx0Ji5kb25lIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0XHR9XG5cblx0XHRcdCYub24ge1xuXHRcdFx0XHR3aWR0aDogMjBweDtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUHJhY3RpY2Ugc2V0dGluZ3M6IGRpc3BlbnNpbmcgZXh0cmFzXG4vKiBPbmUgcm93IHBlciBraW5kIG9mIGV4dHJhLCBlYWNoIGl0ZW0gYSBzbWFsbCBjYXJkIC0gdGljaywgbmFtZSwgcHJpY2UuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2V0dGluZ3Mtc2hlbGwgLmxlbnMtZXh0cmFzLXNldHRpbmdzIHtcblx0Lmx4LWZpZWxkc2V0IHtcblx0XHRib3JkZXI6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0Lmx4LXJvdyB7XG5cdFx0cGFkZGluZzogMTRweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmx4LXJvdy1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMTRweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdFx0YiB7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC1zaXplOiAxMy41cHg7XG5cdFx0fVxuXG5cdFx0c21hbGwge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC5seC1jb3VudCB7XG5cdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0Lmx4LWl0ZW1zIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDIxMHB4LCAxZnIpKTtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQubHgtaXRlbSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogNnB4O1xuXHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjE1cyBlYXNlO1xuXG5cdFx0Ji5vZmYge1xuXHRcdFx0b3BhY2l0eTogMC41NTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHR9XG5cblx0XHQmLm5ldyB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdFx0cGFkZGluZzogNHB4IDhweDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdH1cblxuXHRcdC8qIFRoZSBjb21wYWN0IHBhZGRpbmcgYWJvdmUgd291bGQgcHV0IHRoZSBwcmljZSB1bmRlciBpdHMgJCAtIGtlZXAgdGhlIHNpZ24ncyByb29tICovXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHQuZmVlLXByZWZpeCB7XG5cdFx0XHRcdGxlZnQ6IDlweDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHR9XG5cblx0XHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDIxcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Lmx4LWl0ZW0tdG9wLFxuXHQubHgtaXRlbS1ib3R0b20ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0fVxuXG5cdC5seC1pdGVtLWJvdHRvbSB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHR3aWR0aDogOTZweDtcblx0XHR9XG5cdH1cblxuXHQubHgtbmFtZSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0Ji5oYXMtZXJyb3Ige1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0Lmx4LWhpbnQge1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5seC1pY29uIHtcblx0XHR3aWR0aDogMTRweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LyogQSBzd2F0Y2gsIG5vdCB0aGUgYnJvd3NlcidzIGZ1bGwgY29sb3VyIGJ1dHRvbiAqL1xuXHQubHgtY29sb3VyIHtcblx0XHRmbGV4OiAwIDAgMjJweDtcblx0XHR3aWR0aDogMjJweDtcblx0XHRoZWlnaHQ6IDIycHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cblx0XHQmOjotd2Via2l0LWNvbG9yLXN3YXRjaC13cmFwcGVyIHtcblx0XHRcdHBhZGRpbmc6IDA7XG5cdFx0fVxuXG5cdFx0Jjo6LXdlYmtpdC1jb2xvci1zd2F0Y2gge1xuXHRcdFx0Ym9yZGVyOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5seC1kaXNjYXJkIHtcblx0XHRjb2xvcjogJGxlbnMtZmFpbnQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0fVxuXHR9XG5cblx0Lmx4LWZyZWUge1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5seC10b2dnbGUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHg7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdH1cblxuXHQubHgtc2VsZWN0IHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRmbGV4OiAxO1xuXHR9XG5cblx0Lmx4LWFkZCB7XG5cdFx0bWluLWhlaWdodDogNjRweDtcblx0XHRib3JkZXI6IDFweCBkYXNoZWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblx0fVxuXG5cdC5seC1maWVsZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTJweCAyNHB4O1xuXHR9XG5cblx0Lmx4LWlubGluZS1maWVsZCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHR3aWR0aDogOTZweDtcblx0XHR9XG5cdH1cblxuXHQvKiBBICUgc2l0cyBhZnRlciB0aGUgbnVtYmVyLCB3aGVyZSBhICQgc2l0cyBiZWZvcmUgaXQgKi9cblx0LmZlZS1pbnB1dC5seC1zdWZmaXgge1xuXHRcdC5mZWUtcHJlZml4IHtcblx0XHRcdGxlZnQ6IGF1dG87XG5cdFx0XHRyaWdodDogMTFweDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHBhZGRpbmctbGVmdDogOHB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjRweDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBYZXJvIGludm9pY2luZyAoam9iIGRpYWxvZ3MnIGludm9pY2UgY2FyZClcbi8qIFdoZXJlIHRoZSBpbnZvaWNlIGdvZXMgaW4gWGVybzogbG9nZ2VkIGluLCBhbmQgdGhlIHBhdGllbnQncyBjb250YWN0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtZGlhbG9nIHtcblx0LmxlbnMteGVybyB7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblx0XHRwYWRkaW5nOiAxMnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cblx0XHQmLnN0ZXAtcmVhZHkge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMteGVyby1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LmxlbnMteGVyby1vcmcge1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQvKiBcIkNob29zZSBhbm90aGVyXCIsIGJlc2lkZSB0aGUgY29udGFjdCB3b3JrZWQgb3V0IGZvciB0aGUgdXNlcjsgXCJJbnZvaWNlIHdpdGhvdXQgWGVyb1wiICovXG5cdC5sZW5zLXhlcm8tY2hhbmdlIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLXhlcm8tcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHQ+IC5mYSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0PiBzcGFuOm5vdCgubGVucy14ZXJvLWFjdGlvbnMpIHtcblx0XHRcdGZsZXg6IDEgMSAxNjBweDtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQmLndhcm5pbmcgPiAuZmEge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cblx0XHQmLnJlYWR5ID4gLmZhIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXhlcm8tYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdH1cblxuXHQubGVucy14ZXJvLXNlYXJjaCB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cblx0XHQuZmEtc3Bpbm5lciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRyaWdodDogMTBweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXhlcm8tcmVzdWx0cyB7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdG1heC1oZWlnaHQ6IDE2OHB4O1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5sZW5zLXhlcm8tcmVzdWx0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogOHB4O1xuXHRcdHBhZGRpbmc6IDZweCAxMHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXG5cdFx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItdG9wOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXhlcm8tcmVzdWx0LW5hbWUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRtaW4td2lkdGg6IDA7XG5cblx0XHRiIHtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMteGVyby10YWtlbiB7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC5sZW5zLXhlcm8tZW1wdHkge1xuXHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxuXG5cdC5sZW5zLXhlcm8tY3JlYXRlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXHR9XG5cblx0LyogUmFpc2luZyBhIGpvYiBrZXB0IGluIENhdFRyYXg6IHRoZSBiYW5rIGFjY291bnQgZm9yIGl0cyBwYXltZW50cywgYW5kIHRoZSBidXR0b24gKi9cblx0LmxlbnMteGVyby1yYWlzZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cblx0XHQubGVucy1wYXltZW50LWFjY291bnQge1xuXHRcdFx0ZmxleDogMSAxIDIyMHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdC5sZW5zLXhlcm8tZXJyb3Ige1xuXHRcdFx0ZmxleC1iYXNpczogMTAwJTtcblx0XHR9XG5cdH1cblxuXHQubGVucy14ZXJvLWVycm9yIHtcblx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFRha2luZyBwYXltZW50IChqb2IgZGlhbG9ncycgaW52b2ljZSBjYXJkLCBhbmQgdGhlIHN0YXR1cyBkaWFsb2cpXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2csXG4ubGVucy1zdGF0dXMtZGlhbG9nIHtcblx0LmxlbnMtcGF5bWVudCB7XG5cdFx0bWFyZ2luLXRvcDogMTZweDtcblx0XHRwYWRkaW5nLXRvcDogMTRweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHR9XG5cblx0LmxlbnMtcGF5bWVudC1hbW91bnQsXG5cdC5sZW5zLXBheW1lbnQtbWV0aG9kcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmc6IDRweCAxMHB4O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtYW1vdW50IC5mZWUtaW5wdXQge1xuXHRcdHdpZHRoOiAxMjBweDtcblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtYWNjb3VudCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luOiAwIDAgMTBweDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHR9XG5cblx0LmxlbnMtcGF5bWVudC1mb290IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXBheW1lbnQtcHJvYmxlbSB7XG5cdFx0ZmxleDogMTtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LmxlbnMtcGFpZC1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogOHB4O1xuXHRcdHBhZGRpbmc6IDRweCAwO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXG5cdFx0c21hbGwge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0Ji5mdWxsIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC8qIFdoYXQgc3RvcHMgdGhlIGludm9pY2UsIG9uIHRoZSBhY3Rpb24gYmFyOiB0aGUgb25lIHRoaW5nIHRvIGRvLCBhbmQgYSBsaW5rIHRvIGl0ICovXG5cdC5sZW5zLWJsb2NrZXIge1xuXHRcdGZvbnQtc3R5bGU6IG5vcm1hbDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuXHRcdH1cblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBMZW5zIHN0ZXA6IHRoZSBSeCBhbmQgaXRzIEFERCwgYW5kIGxlbnNlcyBpdCBjYW4ndCBiZSBtYWRlIGluXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1kaWFsb2cge1xuXHQubGVucy1yeC1zdHJpcCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0fVxuXG5cdC5jaGlwLXNlbGVjdC51bnN1aXRhYmxlIHtcblx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG5cdH1cblxuXHQubGVucy1vcHRpb24tdGlsZS51bnN1aXRhYmxlIHtcblx0XHRvcGFjaXR5OiAwLjU7XG5cdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0fVxuXG5cdC5sZW5zLWZpdC1ub3RlIHtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHQmLmJhZCB7XG5cdFx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE9yZGVyICYgYmlsbGluZzogaXRlbXMsIGRpc2NvdW50IGFuZCB0aGUgb3JkZXIgbm90ZXNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyB7XG5cdC5sZW5zLWl0ZW1zIC5sZW5zLWRpc2NvdW50IHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXG5cdFx0PiBzcGFuOmZpcnN0LWNoaWxkIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogNnB4O1xuXHRcdFx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdFx0fVxuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHR3aWR0aDogOTZweDtcblx0XHR9XG5cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0cGFkZGluZzogM3B4IDlweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1vcmRlci1wZGYge1xuXHRcdG1hcmdpbjogMCAwIDEwcHg7XG5cdH1cbn1cblxuLyogQm94ZXMgb24gaGFuZCBmb3IgYSBjb250YWN0IGxlbnMgZnJvbSBpbnZlbnRvcnksIGJ5IHRoZSBib3hlcyB0byBzdXBwbHkgKi9cbi5sZW5zLWRpYWxvZyAuY2wtc3RvY2stbm90ZSB7XG5cdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXG5cdCYuc2hvcnQge1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTZW5kIG9yZGVyIGRpYWxvZ1xuLyogVGhlIHN0YXR1cyBzdGVwIGZyb20gcmVhZHkgdG8gb3JkZXIgdG8gb3JkZXIgc2VudCwgb3BlbmVkIGZyb20gdGhlXG4vKiBkYXNoYm9hcmQgdGlsZSBhbmQgdGhlIHByYWN0aWNlIGpvYiBsaXN0LlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtc3RhdHVzLWRpYWxvZyB7XG5cdHdpZHRoOiA1MjBweDtcblx0bWF4LXdpZHRoOiA5MnZ3O1xuXG5cdGZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQubGVucy1zdGF0dXMtYm9keSB7XG5cdFx0cGFkZGluZzogMThweCAyOHB4IDA7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdH1cblxuXHQubGVucy1zdGF0dXMtam9iIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDEycHggMTZweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtY2FudmFzO1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWljb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR3aWR0aDogNDJweDtcblx0XHRoZWlnaHQ6IDQycHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMThweDtcblxuXHRcdCYuY29udGFjdHMge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxlbnMtdGVhbC1wYWxlO1xuXHRcdFx0Y29sb3I6ICR0ZWFsO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXN0YXR1cy1qb2ItdGV4dCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWpvYi10b3Age1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHRiIHtcblx0XHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWpvYi1kZXNjIHtcblx0XHRtYXJnaW4tdG9wOiAzcHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHQubGVucy1zdGF0dXMtbW92ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW46IDE0cHggMCAxMnB4O1xuXG5cdFx0LmxlbnMtc3RhdHVzLXBpbGwge1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRwYWRkaW5nOiA1cHggMTJweDtcblx0XHR9XG5cdH1cblxuXHQubGVucy1zdGF0dXMtYXJyb3cge1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdH1cblxuXHQubGVucy1zdGF0dXMtZmFjdHMge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWZhY3Qge1xuXHRcdHBhZGRpbmc6IDhweCAxNHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cblx0XHRzcGFuIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblxuXHRcdGIge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLWxhYmVsIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdHNtYWxsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cdH1cblxuXHQuZm9ybS1jb250cm9sIHtcblx0XHRoZWlnaHQ6IDM4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcblxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQubGVucy1zdGF0dXMtbm90ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW46IDEycHggMCA0cHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIFNvbWV0aGluZyB1bnBhaWQ6IGEgcmVtaW5kZXIsIHdpdGggdGhlIHBheW1lbnQgZm9ybSB1bmRlciBpdCAqL1xuXHQubGVucy1zdGF0dXMtcGF5bWVudCB7XG5cdFx0bWFyZ2luLXRvcDogMTRweDtcblxuXHRcdC5sZW5zLXBheW1lbnQge1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHR9XG5cblx0XHQvKiBUaGUgc2V0dGluZ3MgZGlhbG9ncycgY2hpcHMgYW5kIG1vbmV5IGZpZWxkLCB3aGljaCB0aGlzIGRpYWxvZyBzaXRzIG91dHNpZGUgKi9cblx0XHQuY2hpcC1zZWxlY3Qge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0dXNlci1zZWxlY3Q6IG5vbmU7XG5cblx0XHRcdCYuc2VsZWN0ZWQge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdFx0LmZlZS1wcmVmaXgge1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IDEwcHg7XG5cdFx0XHRcdHRvcDogNTAlO1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDIycHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtc3RhdHVzLXJlbWluZGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAxMHB4IDE0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdH1cblxuXHRcdCYucGFpZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQubGVucy1zdGF0dXMtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGdhcDogMTBweDtcblx0XHRwYWRkaW5nOiAxNHB4IDI4cHggMjBweDtcblxuXHRcdC8qIC5idG4tbmF2eSBhbmQgLmJ0bi1jYW5jZWwgZmlsbCB0aGVpciBjb250YWluZXIgZm9yIGZvcm0gZm9vdGVyczsgaGVyZSB0aGV5IHNpemUgdG8gdGhlaXIgbGFiZWwgKi9cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWluLXdpZHRoOiAxMTBweDtcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIExlbnMgcHJlc2NyaWJpbmdcbi8qIFRoZSBwcmVzY3JpcHRpb25zIHRpbGUgYW5kIGRpYWxvZ3MgcmV1c2UgdGhlIGxlbnMgZGlzcGVuc2luZyBtb2R1bGVcbi8qIGFuZCBkaWFsb2cgc3R5bGVzIChfbGVucy1kaXNwZW5zaW5nLmNzcywgaW1wb3J0ZWQgZmlyc3QsIHdoaWNoIGFsc29cbi8qIGRlZmluZXMgdGhlICRsZW5zLSogdG9rZW5zIHVzZWQgaGVyZSkuIE9ubHkgd2hhdCBpcyBuZXcgaXMgZGVmaW5lZC5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tIFN0YXR1cyBwaWxsOiBjdXJyZW50IC8gc3VwZXJzZWRlZCAvIGV4cGlyZWQgLyB3aXRoZHJhd24gLyBkcmFmdCAtLS0gKi9cbi5sZW5zLXJ4LXBpbGwge1xuXHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0Z2FwOiA1cHg7XG5cdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdHBhZGRpbmc6IDNweCA5cHg7XG5cdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdGNvbG9yOiAkbmF2eTtcblxuXHQmLnJ4LWN1cnJlbnQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0fVxuXG5cdCYucngtc3VwZXJzZWRlZCxcblx0Ji5yeC1kcmFmdCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQmLnJ4LWV4cGlyZWQsXG5cdCYucngtd2l0aGRyYXduIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQvKiBBIGNvbnRhY3QgbGVucyBkcmFmdCB3aG9zZSB0cmlhbCBwYWlyIGlzIG91dCBrZWVwcyB0aGUgZGVmYXVsdCBuYXZ5ICovXG59XG5cbi8qIC0tLSBBIHByZXNjcmlwdGlvbidzIHBvd2VycyBhcyBhIHNtYWxsIHRhYmxlLCBvbmUgcm93IHBlciBleWUgKGxlbnNSeFRhYmxlKSAtLS0gKi9cbmxlbnMtcngtdGFibGUge1xuXHRkaXNwbGF5OiBibG9jaztcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHRvdmVyZmxvdy14OiBhdXRvO1xufVxuXG4ubGVucy1yeC1taW5pIHtcblx0bWFyZ2luOiA2cHggMCAycHg7XG5cdGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG5cdGZvbnQtc2l6ZTogMTJweDtcblx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHR0aCxcblx0dGQge1xuXHRcdHBhZGRpbmc6IDNweCAwIDNweCAxNnB4O1xuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdH1cblxuXHR0aGVhZCB0aCB7XG5cdFx0cGFkZGluZy1ib3R0b206IDRweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdH1cblxuXHQvKiBUaGUgZXllLCBkb3duIHRoZSBsZWZ0ICovXG5cdHRoOmZpcnN0LWNoaWxkIHtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHR9XG5cblx0LmxlbnMtcngtbWluaS10YWcge1xuXHRcdG1hcmdpbi1sZWZ0OiA2cHg7XG5cdFx0cGFkZGluZzogMXB4IDZweDtcblx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHR9XG5cblx0LmxlbnMtcngtbWluaS1ub25lIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0fVxufVxuXG4ubGVucy1yeC1taW5pLW5vdGUsXG4ubGVucy1yeC1taW5pLWVtcHR5IHtcblx0Zm9udC1zaXplOiAxMXB4O1xuXHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG59XG5cbi5sZW5zLXJ4LW1pbmktZW1wdHkge1xuXHRtYXJnaW4tdG9wOiA0cHg7XG59XG5cbi8qIC0tLSBXaXRoZHJhd2luZyBhbiBpc3N1ZWQgcHJlc2NyaXB0aW9uLCBmcm9tIHRoZSB0aWxlICh0aGUgZGlhbG9nIGlzIGp1c3QgdGhlIGNhcmQpIC0tLSAqL1xuLmxlbnMtcngtd2l0aGRyYXctZGlhbG9nIHtcblx0LyogV2lkZSBlbm91Z2ggZm9yIGEgZnVsbCBzcGVjdGFjbGUgUnggLSBhZGRzLCBwcmlzbXMgYW5kIFBEcyAqL1xuXHQubGVucy1jb25maXJtIHtcblx0XHR3aWR0aDogNTQwcHg7XG5cdFx0bWF4LXdpZHRoOiA5MnZ3O1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdH1cblxuXHQubGVucy1yeC13aXRoZHJhdy13aGF0IHtcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBEYXNoYm9hcmQgbW9kdWxlXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4ubGVucy1yeC1tb2R1bGUge1xuXHQubGVucy1qb2Ige1xuXHRcdCYucngtY3VycmVudCB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHRcdCYucngtZHJhZnQge1xuXHRcdFx0Ym9yZGVyLWxlZnQtY29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdFx0Ym9yZGVyLWxlZnQtc3R5bGU6IGRhc2hlZDtcblx0XHR9XG5cblx0XHQmLnJ4LXRyaWFsIHtcblx0XHRcdGJvcmRlci1sZWZ0LWNvbG9yOiAkbmF2eTtcblx0XHRcdGJvcmRlci1sZWZ0LXN0eWxlOiBkYXNoZWQ7XG5cdFx0fVxuXG5cdFx0Ji5yeC1zdXBlcnNlZGVkLFxuXHRcdCYucngtZXhwaXJlZCB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdG9wYWNpdHk6IDAuODtcblx0XHR9XG5cblx0XHQmLnJ4LXdpdGhkcmF3biB7XG5cdFx0XHRib3JkZXItbGVmdC1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdFx0b3BhY2l0eTogMC44O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LXdpdGhkcmF3bi1ub3RlIHtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LmxlbnMtam9iLXRodW1iIGxlbnMtZGVzaWduLWFydCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0fVxuXG5cdC5sZW5zLWpvYi10aHVtYiAubGVucy1kZXNpZ24tYXJ0IHtcblx0XHR3aWR0aDogNTZweDtcblx0XHRoZWlnaHQ6IDU2cHg7XG5cdH1cblxuXHQubGVucy1qb2ItYWN0aW9ucyB7XG5cdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUHJlc2NyaXB0aW9uIGRpYWxvZ3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLXJ4LWRpYWxvZyB7XG5cdC5sZW5zLXJ4LXByZXZpZXcgbGVucy1kZXNpZ24tYXJ0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR9XG5cblx0LyogQSBkYXRlIHNpdHMgd2hlcmUgdGhlIGRpc3BlbnNpbmcgZGlhbG9ncyBzaG93IGEgcHJpY2UgKi9cblx0LmxlbnMtcngtdmFsaWQge1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0fVxuXG5cdC8qIFRoZSBzcGVjdGFjbGUgUng6IGl0cyBwb3dlcnMgYW5kIEFERHMsIHRoZW4gaXRzIHByaXNtcyBhbmQgdGhlIG1vbm9jdWxhciBQRHMgKi9cblx0LmxlbnMtcngtc2NyaXB0LWNhcmQgLmxlbnMtcngtcG93ZXJzLFxuXHQubGVucy1yeC1zY3JpcHQtY2FyZCAubGVucy1yeC1wcmlzbXMge1xuXHRcdC5sZW5zLXJ4LWhlYWQsXG5cdFx0LmxlbnMtcngtcm93IHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzBweCByZXBlYXQoNSwgbWlubWF4KDAsIDFmcikpO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LWJwZCB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAyMDBweCk7XG5cdH1cblxuXHQvKiBBbiBleWUncyBiYWxhbmNlIGxlbnMsIG9yIG5vIGNvbnRhY3QgbGVuczogYSB0b2dnbGUgdW5kZXIgaXRzIG5hbWUsIGFuZCBpdHMgcm93IGdyZXllZCAqL1xuXHQubGVucy1leWUtdG9nZ2xlIHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRwYWRkaW5nOiAxcHggN3B4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHR9XG5cblx0XHQmLm9uIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcngtcm93LmxlbnMtZXllLW9mZiAuZm9ybS1jb250cm9sIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy1jYW52YXM7XG5cdH1cblxuXHQvKiBBIGJhbGFuY2UgZXllIGlzIGZsYWdnZWQsIG5vdCBkaXNhYmxlZDogaXRzIHZhbHVlcyBzdGF5IGFuZCBjYW4gc3RpbGwgYmUgY2hhbmdlZCAqL1xuXHQubGVucy1yeC1yb3cubGVucy1leWUtYmFsYW5jZSAuZm9ybS1jb250cm9sIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHR9XG5cblx0LyogVGhlIGljb24tb25seSBjb3B5LXJpZ2h0LXRvLWxlZnQgYnV0dG9uIGluIHRoZSBSeCBjYXJkIGhlYWRlcnMsIGtlcHQgc21hbGwgc28gdGhlIGhlYWRlciBzdGF5cyBmbGF0ICovXG5cdC5tZC1idXR0b24ubWQtZmFiLmxlbnMtY29weS1leWUtYnRuIHtcblx0XHRtYXJnaW46IC02cHggMDtcblx0XHR3aWR0aDogMzRweDtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0bWluLWhlaWdodDogMzRweDtcblx0XHRsaW5lLWhlaWdodDogMzRweDtcblx0fVxuXG5cdC8qIFRoZSBjb21tZW50IHdyaXR0ZW4gd2l0aCB0aGUgcmVmcmFjdGlvbiwgaW5zaWRlIHRoZSByZWZyYWN0aW9uIG5vdGljZSAqL1xuXHQubGVucy1yeC1yZWZyYWN0aW9uLWNvbW1lbnQge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIENsaWNrYWJsZSByZWNvbW1lbmRhdGlvbnMsIGdyb3VwZWQgc28gdGhlIGxvbmcgbGlzdCBzdGF5cyBzY2FubmFibGUgKi9cblx0LmxlbnMtcmVjLWdyb3VwIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXG5cdFx0LmxlbnMtY2hpcC1yb3cge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJlYy1ncm91cC1sYWJlbCB7XG5cdFx0ZmxleDogMCAwIDEyNXB4O1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG5cdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHR9XG5cblx0LyogV2hhdCBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHByZXNjcmlwdGlvbiwgYW5kIHdoYXQgdG8gbG9vayBhdCBiZWZvcmUgaXNzdWluZyAqL1xuXHQubGVucy1yeC1jaGFuZ2VzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDRweCAxOHB4O1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdC5sZW5zLXJ4LWNoYW5nZXMtbGFiZWwge1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LXdhcm5pbmdzIHtcblx0XHRtYXJnaW46IDEycHggMCAwO1xuXHR9XG5cblx0LyogVGhlIHByZXNjcmliZXIgaXMgd2hvZXZlciBpc3N1ZXMgaXQ6IHNob3duLCBub3QgdHlwZWQgKi9cblx0LmxlbnMtcngtcHJlc2NyaWJlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdHBhZGRpbmc6IDdweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXG5cdFx0c21hbGwge1xuXHRcdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogQW4gaW52ZW50b3J5IGxlbnMncyBleWUgaXMgb25lIG9mIGl0cyBib3hlczogb25lIGRyb3Bkb3duIGFjcm9zcyB0aGUgcm93ICovXG5cdC5sZW5zLXJ4LXJvdyAuY2wtYm94LXNlbGVjdCB7XG5cdFx0Z3JpZC1jb2x1bW46IDIgLyAtMTtcblx0fVxuXG5cdC5jbC1uby1ib3gge1xuXHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdH1cblxuXHQvKiBBIHRyaWFsIHJldmlldzogb25lIGNhcmQgcGVyIGV5ZSAtIG92ZXItcmVmcmFjdGlvbiBhbmQgVkEsIHRoZW4gdGhlIGZpdCBhcyBjaGlwcyAqL1xuXHQubGVucy10cmlhbC1leWUge1xuXHRcdC5jYXJkLWhlYWRlci1mbGV4IGg0IHNtYWxsIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJpYWwtbWVhc3VyZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTZweDtcblxuXHRcdGxhYmVsIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Z2FwOiA0cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXG5cdFx0LmxlbnMtbGFiZWwge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRyaWFsLW9yIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNnB4O1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogOTBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZml0IGFzIHJvd3Mgb2YgY2hpcHMsIGVhY2ggd2l0aCBpdHMgbmFtZSAtIGNoaXBzIHRoZWlyIG93biBoZWlnaHQsIG5vdCB0aGUgcm93J3MgKi9cblx0LmxlbnMtdHJpYWwtZml0IHtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXG5cdFx0LmxlbnMtY2hpcC1yb3cge1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHR9XG5cblx0XHQubGVucy1sYWJlbCB7XG5cdFx0XHRtaW4td2lkdGg6IDg0cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtdHJpYWwtcm90YXRpb24ge1xuXHRcdHdpZHRoOiA3MHB4O1xuXHRcdGhlaWdodDogMzBweDtcblx0fVxuXG5cdC8qIEVhcmxpZXIgdHJpYWxzLCBuZXdlc3QgZmlyc3QgKi9cblx0LmxlbnMtdHJpYWwtZWFybGllciB7XG5cdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRib3JkZXItYm90dG9tOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXRyaWFsLWVhcmxpZXItaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDRweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LyogQSBsZW5zIHRpbGUgd2l0aCB0aGUgYm94IHRoZSBwYXRpZW50J3MgcmVmcmFjdGlvbiBjb252ZXJ0cyB0byAqL1xuXHQuY2wtcngtbWF0Y2gge1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHR9XG5cblx0LyogRWFjaCBjb250YWN0IGxlbnMncyBkZXRhaWxzLCBhbmQgdGhlIGxlZnQgZXllJ3Mgb3duIGxlbnMgKi9cblx0LmNsLWxlbnMtc2xvdCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdC5jbC1sZW5zLXNsb3QtbmFtZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA4cHg7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdC5jbC1zdG9jay10eXBlIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDhweDtcblx0XHR9XG5cdH1cblxuXHQuY2wtbGVmdC1sZW5zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdG1hcmdpbi10b3A6IDEycHg7XG5cblx0XHQubGVucy1sYWJlbCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0bWF4LXdpZHRoOiAzNjBweDtcblx0XHR9XG5cdH1cblxuXHQvKiBOb3RlcyBrZWVwIHRoZSB3cml0ZXIncyBsaW5lIGJyZWFrcyAqL1xuXHQubGVucy1ub3Rlcy12YWx1ZSB7XG5cdFx0d2hpdGUtc3BhY2U6IHByZS1saW5lO1xuXHR9XG5cblx0LmxlbnMtbm90ZXMtaGVscCB7XG5cdFx0bWFyZ2luOiA4cHggMCAwO1xuXHR9XG5cblx0LmxlbnMtcngtc3ViaGVhZCB7XG5cdFx0bWFyZ2luOiAxOHB4IDAgNnB4O1xuXHRcdHBhZGRpbmctdG9wOiAxNHB4O1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkbGVucy1ydWxlO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cbn1cblxuLyogQSBtYWRlLXRvLW9yZGVyIGxlbnMncyBzcGVjaWZpY2F0aW9uIGhhcyBhIG5pbnRoIGNvbHVtbjogYSBiYWNrIHRvcmljJ3Mgc3RlZXAgYmFzZSBjdXJ2ZSAqL1xuLmxlbnMtZGlhbG9nIC5jbC1jdXN0b20tY2FyZCAubGVucy1yeC10YWJsZSB7XG5cdC5sZW5zLXJ4LWhlYWQsXG5cdC5sZW5zLXJ4LXJvdyB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA3MHB4IHJlcGVhdCg5LCBtaW5tYXgoMCwgMWZyKSk7XG5cdH1cbn1cblxuLyogRmllbGQgbGFiZWxzIHNpdCBvbiB0aGVpciBmaWVsZHMgLSBub3QgdW5kZXIgdGhlIG9sZCBnbG9iYWwgLmxlbnMtbGFiZWwgbWFyZ2luIChfZXhhbS5jc3MpICovXG4ubGVucy1kaWFsb2cgLmxlbnMtcngtZXh0cmEgLmxlbnMtbGFiZWwge1xuXHRtYXJnaW4tdG9wOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIENob29zaW5nIGEgcHJlc2NyaXB0aW9uIGluIHRoZSBkaXNwZW5zaW5nIGRpYWxvZ3Ncbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyB7XG5cdC5sZW5zLXJ4LXBpY2stbGlzdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTBweDtcblx0fVxuXG5cdC5sZW5zLXJ4LXBpY2sge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDEycHggNDRweCAxMnB4IDEycHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym94LXNoYWRvdzogMCA2cHggMThweCByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0fVxuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym94LXNoYWRvdzogMCA2cHggMThweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTQpO1xuXG5cdFx0XHQubGVucy10aWxlLWNoZWNrIHtcblx0XHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQubGVucy10aWxlLWNoZWNrIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0cmlnaHQ6IDEycHg7XG5cdFx0XHRtYXJnaW4tdG9wOiAtMTJweDtcblx0XHRcdHdpZHRoOiAyNHB4O1xuXHRcdFx0aGVpZ2h0OiAyNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMC42KTtcblx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZSwgb3BhY2l0eSAwLjE1cyBlYXNlO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLXJ4LXBpY2stYXJ0IHtcblx0XHRmbGV4OiAwIDAgYXV0bztcblxuXHRcdC5sZW5zLWRlc2lnbi1hcnQge1xuXHRcdFx0d2lkdGg6IDU2cHg7XG5cdFx0XHRoZWlnaHQ6IDU2cHg7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtcngtcGljay1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLXJ4LXBpY2stdG9wIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0fVxuXG5cdC5sZW5zLXJ4LXBpY2stcG93ZXJzIHtcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdH1cblxuXHQubGVucy1yeC1waWNrLW1ldGEge1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRjb2xvcjogJGxlbnMtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cblx0XHRpIHtcblx0XHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcHJlc2NyaWJlZCBjb2x1bW5zIGFyZSBmaXhlZDsgb25seSBQRCBhbmQgaGVpZ2h0cyBhcmUgZW50ZXJlZCAqL1xuXHQvKiBBIFBEIG9yIGZpdHRpbmcgaGVpZ2h0IG5vdCBtZWFzdXJlZCBpbiB0aGUgZnJhbWUgeWV0ICovXG5cdC5sZW5zLXJ4LW1lYXN1cmUgLmZvcm0tY29udHJvbC5sZW5zLW1lYXN1cmUtbWlzc2luZyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtaGlnaC1iZztcblx0fVxuXG5cdC5sZW5zLW1lYXN1cmUtbm90aWNlIHtcblx0XHRtYXJnaW46IDEycHggMCAwO1xuXHR9XG5cblx0LmxlbnMtcngtbWVhc3VyZSBpbnB1dFtyZWFkb25seV0ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsZW5zLWNhbnZhcztcblx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBBIGNvbnRhY3QgbGVucyBmcm9tIGludmVudG9yeTogaXRzIHR5cGUgYW5kIHJlcGxhY2VtZW50LCBzZXQgaGVyZVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmxlbnMtZGlhbG9nIC5jbC1zdG9jay10eXBlIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC13cmFwOiB3cmFwO1xuXHRnYXA6IDhweCAyNHB4O1xuXHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG5cdC5sZW5zLWNoaXAtcm93IHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdG1hcmdpbjogMDtcblx0fVxuXG5cdC5sZW5zLWxhYmVsIHtcblx0XHRtYXJnaW46IDAgNHB4IDAgMDtcblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFByZXNjcmlwdGlvbiBoaXN0b3J5XG4vKiBFYXJsaWVyIHByZXNjcmlwdGlvbnMgYW5kIHdoYXQgdGhlIHBhdGllbnQgd2VhcnMgbm93LCBiZXNpZGUgdGhlIFJ4XG4vKiBiZWluZyB3cml0dGVuIGluIHRoZSBwcmVzY3JpcHRpb24gZGlhbG9ncy5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5sZW5zLWRpYWxvZyAubGVucy1yeC1oaXN0b3J5IHtcblx0LyogQXBhcnQgZnJvbSB0aGUgUnggY2FyZCB1bmRlciBpdCAqL1xuXHRtYXJnaW4tYm90dG9tOiAxOHB4O1xuXG5cdC8qIFRoZSBvdGhlciBraW5kLCBpbiBvbmUgbGluZSAqL1xuXHQubGVucy1oaXN0b3J5LW90aGVyIHtcblx0XHRtYXJnaW46IDAgMCAxMHB4O1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkbGVucy1tdXRlZDtcblxuXHRcdGkge1xuXHRcdFx0Y29sb3I6ICRsZW5zLWZhaW50O1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktbG9hZGluZyB7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHR9XG5cblx0LmxlbnMtaGlzdG9yeS1zZWN0aW9uICsgLmxlbnMtaGlzdG9yeS1zZWN0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHR9XG5cblx0LmxlbnMtaGlzdG9yeS1sYWJlbCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAkbGVucy1mYWludDtcblx0fVxuXG5cdC5sZW5zLWhpc3Rvcnktcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGxlbnMtcnVsZTtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LmxlbnMtbWluaS1idG4ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktaWNvbiB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiAzNHB4O1xuXHRcdGhlaWdodDogMzRweDtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXG5cdFx0Ji5jb250YWN0cyB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGVucy10ZWFsLXBhbGU7XG5cdFx0XHRjb2xvcjogJHRlYWw7XG5cdFx0fVxuXHR9XG5cblx0LmxlbnMtaGlzdG9yeS1tYWluIHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktdG9wIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LmxlbnMtaGlzdG9yeS1wb3dlcnMge1xuXHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5sZW5zLWhpc3RvcnktbWV0YSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA0cHggMTJweDtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Y29sb3I6ICRsZW5zLW11dGVkO1xuXHR9XG5cblx0LmxlbnMtaGlzdG9yeS1tb3JlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBJbnZlbnRvcnkgKHByb3RvdHlwZSBtb2RhbClcbi8qIFNjb3BlZCB0byBgLnNldHRpbmdzLXNoZWxsLmludmVudG9yeWAgc28gaXQgc2l0cyBvbiB0b3Agb2Zcbi8qIF9zZXR0aW5ncy5jc3MgLSB0aGUgcmFpbCwgcGFuZSwgY2FyZHMsIGNoaXBzLCBub3RpY2VzIGFuZCBmb3JtXG4vKiBjb250cm9scyBhbGwgY29tZSBmcm9tIHRoZXJlLiBUaGlzIGZpbGUgb25seSBhZGRzIHRoZSBzdG9jayxcbi8qIHJlb3JkZXIgdGFibGVzIGFuZCB0aGUgc2lkZSBwYW5lbC5cbi8qIFBhdGllbnQgaW52b2ljaW5nICguc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nKSB1c2VzIHRoZSB0YWJsZXMsXG4vKiBzdGF0dXMgcGlsbHMsIG5vdGljZXMgYW5kIGNvbmZpcm1zIHRvbywgc28gaXQgaXMgbGlzdGVkIGFsb25nc2lkZTtcbi8qIHdoYXQgb25seSBpdCBuZWVkcyBpcyBpbiBfaW52b2ljaW5nLmNzcy4gVGhlIHRhc2sgbGlzdCBhbmQgc3VyZ2VyeVxuLyogd2FpdGxpc3QgKC5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdCkgdXNlIHRoZSBzaWRlIHBhbmVsIGFzIHdlbGw7XG4vKiB0aGVpcnMgaXMgX3dvcmtsaXN0cy5jc3MuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5pbnZlbnRvcnktZGlhbG9nIHtcblx0bWluLXdpZHRoOiA3OCU7XG5cdHdpZHRoOiA3OCU7XG5cdGhlaWdodDogODh2aDtcblx0bWF4LWhlaWdodDogOTJ2aDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcblxuXHQuaW52LXByYWN0aWNlLW5hbWUge1xuXHRcdG1hcmdpbi1sZWZ0OiAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRvcGFjaXR5OiAwLjg7XG5cdH1cblxuXHQuaW52LXByb3RvdHlwZS1iYWRnZSB7XG5cdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkeWVsbG93LWN0YTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdH1cbn1cblxuLnNldHRpbmdzLXNoZWxsLmludmVudG9yeSxcbi5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcsXG4uc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qge1xuXG5cdC8qIFJlb3JkZXIgY291bnQgaW4gdGhlIHJhaWwgLSBhIHBpbGwsIHdoaXRlIG9uIHRoZSBhY3RpdmUgcm93ICovXG5cdC5zZXR0aW5ncy1uYXYtaXRlbSB7XG5cdFx0Lmludi1jb3VudCB7XG5cdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRcdG1pbi13aWR0aDogMjBweDtcblx0XHRcdHBhZGRpbmc6IDFweCA3cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAxMHB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy1jdGE7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdH1cblxuXHRcdCYuYWN0aXZlIC5pbnYtY291bnQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIFN1Y2Nlc3MgZ3JlZW4gYW5kIGVycm9yIHJlZCwgc28gdGhlIHJlc3VsdCBvZiBhbiBhY3Rpb24gcmVhZHMgYXBhcnQgZnJvbSB0aGUgaW5mbyBub3RpY2VzICovXG5cdC5zZXR0aW5ncy1ub3RpY2UuaW52LWZsYXNoIHtcblx0XHQmLnN1Y2Nlc3Mge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDEyJSkpO1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBjb2xvcigkZ3JlZW4gYWxwaGEoMzUlKSk7XG5cdFx0fVxuXG5cdFx0Ji5lcnJvciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdFx0Y29sb3I6ICRub3RpY2UtZXJyb3I7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCBjb2xvcigkZGFuZ2VyIGFscGhhKDI1JSkpO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtdG9vbGJhciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0ZmxleDogMSAxIDIyMHB4O1xuXHRcdFx0bWF4LXdpZHRoOiAzNDBweDtcblx0XHR9XG5cblx0XHQuaW52LWNhdGVnb3J5LXNlbGVjdCxcblx0XHQuaW52LXN0YXR1cy1zZWxlY3Qge1xuXHRcdFx0ZmxleDogMCAwIDE1MHB4O1xuXHRcdH1cblxuXHRcdC5pbnYtc2VhcmNoLWlucHV0IHtcblx0XHRcdG1heC13aWR0aDogNDIwcHg7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1zZWFyY2gtaGludCB7XG5cdFx0bWFyZ2luOiAtOHB4IDAgMTRweDtcblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cdH1cblxuXHQvKiBBIGJhcmNvZGUgbm90aGluZyBob2xkcyB5ZXQ6IHNhaWQgcGxhaW5seSwgd2l0aCB0aGUgd2F5IHRvIGFkZCBpdCAqL1xuXHQuaW52LWJhcmNvZGUtbWlzcyB7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogOHB4IDEwcHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXJnaW46IDAgMCAwIGF1dG87XG5cdFx0XHRwYWRkaW5nOiAzcHggMTJweDtcblx0XHR9XG5cdH1cblxuXHQuaW52LW11dGVkIHtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0bWFyZ2luOiA2cHggMDtcblx0fVxuXG5cdC8qIFNpemVkIGxpa2UgdGhlIHRhYmxlIGl0IHN0YW5kcyBpbiBmb3IsIHNvIHRoZSBwYW5lIGRvZXMgbm90IGp1bXAgd2hlbiB0aGUgcm93cyBhcnJpdmUgKi9cblx0Lmludi1sb2FkaW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDIyMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0LmZhIHtcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBTYXlzIHRoZSBsaXN0IGlzIGNvbXBsZXRlLCBzbyBhbiBpbmZpbml0ZSBzY3JvbGwgZG9lcyBub3QgbGVhdmUgdGhlIHJlYWRlciB3YWl0aW5nIGZvciBtb3JlICovXG5cdC5pbnYtbGlzdC1lbmQge1xuXHRcdG1hcmdpbjogNHB4IDAgMTRweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuaW52LWxvYWQtbW9yZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW46IDZweCAwIDE0cHg7XG5cdH1cblxuXHQuaW52LWVycm9yLXRleHQge1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHR9XG5cblx0LyogSURzIGFyZSBzaG93biBzbyBhIHRlc3RlciBjYW4gZW50ZXIgYSBtb3ZlIGJ5IGhhbmQgYW5kIG1hdGNoIHJvd3MgYWdhaW5zdCBEeW5hbW9EQiAqL1xuXHQuaW52LWlkLFxuXHQuaW52LW1vbm8ge1xuXHRcdGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIG1vbm9zcGFjZTtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgVGFibGVzIChTdG9jaywgUmVvcmRlcilcblx0LyogVGV4dCBsZWZ0LCBudW1iZXJzIHJpZ2h0IGluIHRhYnVsYXIgZmlndXJlcywgc28gY29sdW1ucyBvZiBxdWFudGl0aWVzXG5cdC8qIGxpbmUgdXAgYW5kIGNvbXBhcmUgYXQgYSBnbGFuY2UuIFJvd3MgYXJlIHNlcGFyYXRlZCBieSBydWxlcyByYXRoZXJcblx0LyogdGhhbiBzdHJpcGVzLCB3aGljaCB3b3VsZCBmaWdodCB0aGUgb3BlbiBkZXRhaWwgYW5kIGVkaXRvciByb3dzLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnYtdGFibGUtYmFyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXG5cdFx0Lmludi1maWx0ZXIge1xuXHRcdFx0ZmxleDogMCAxIDI2MHB4O1xuXHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0fVxuXHR9XG5cblx0LyogU2Nyb2xscyBzaWRld2F5cyByYXRoZXIgdGhhbiBzcXVhc2hpbmcgY29sdW1ucyB3aGVuIHRoZSBkaWFsb2cgaXMgbmFycm93ICovXG5cdC5pbnYtdGFibGUtd3JhcCB7XG5cdFx0b3ZlcmZsb3cteDogYXV0bztcblx0XHRtYXJnaW4tYm90dG9tOiAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQvKiBDaGlsZCBjb21iaW5hdG9ycyB0aHJvdWdob3V0OiBhbiBvcGVuIFN0b2NrIHJvdyBob2xkcyBhIHRhYmxlIG9mIGl0cyBvd24sIHdoaWNoIG11c3Qgbm90XG5cdCAgIHBpY2sgdXAgdGhlIG91dGVyIHRhYmxlJ3MgcnVsZXMgKi9cblx0Lmludi10YWJsZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LyogUm93IGhlYWRlcnMgcmVhZCBhcyB0aGUgcm93J3MgbmFtZSwgbm90IGFzIGFub3RoZXIgY29sdW1uIGhlYWRpbmcgKi9cblx0XHQ+IHRib2R5ID4gdHIgPiB0aCB7XG5cdFx0XHRtaW4td2lkdGg6IDEyMHB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyICsgdHIgPiB0ZCxcblx0XHQ+IHRib2R5ID4gdHIgKyB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgKyB0Ym9keSA+IHRyOmZpcnN0LWNoaWxkID4gdGQsXG5cdFx0PiB0Ym9keSArIHRib2R5ID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCB7XG5cdFx0XHRib3JkZXItdG9wOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IC5pbnYtbnVtLFxuXHRcdD4gdGJvZHkgPiB0ciA+IC5pbnYtbnVtIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0Lmludi1jb2wtdG9nZ2xlIHtcblx0XHRcdHdpZHRoOiAzNnB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMDtcblx0XHR9XG5cblx0XHQuaW52LWNvbC1hY3Rpb25zIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQuaW52LWNlbGwtcHJpbWFyeSB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cblx0XHQuaW52LWNlbGwtc2Vjb25kYXJ5IHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdC5pbnYtbW9ubyB7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdH1cblxuXHRcdC5pbnYtdW5rbm93biB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRjdXJzb3I6IGhlbHA7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keS5pcy1hcmNoaXZlZCB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRcdD4gdHIgPiB0aCB7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBBIHZhcmlhdGlvbiByb3cgb3BlbnMgdGhlIHNpZGUgcGFuZWwsIHNvIHRoZSB3aG9sZSByb3cgaXMgYSB0YXJnZXQgKi9cblx0XHQ+IHRib2R5ID4gdHIuaW52LXZhcmlhdGlvbi1yb3cge1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdFx0XHQmOmhvdmVyID4gdGQsXG5cdFx0XHQmOmhvdmVyID4gdGgge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0XHR9XG5cblx0XHRcdCYuaXMtc2VsZWN0ZWQgPiB0ZCxcblx0XHRcdCYuaXMtc2VsZWN0ZWQgPiB0aCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHR9XG5cblx0XHRcdCYuaXMtc2VsZWN0ZWQgPiA6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRib3gtc2hhZG93OiBpbnNldCAzcHggMCAwICRuYXZ5O1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBBcmNoaXZlZCBvbiBpdHMgb3duOiBzdGlsbCBsaXN0ZWQgd2l0aCBpdHMgaXRlbSwgYnV0IG91dCBvZiB1c2UgKi9cblx0XHRcdCYuaXMtYXJjaGl2ZWQgPiB0ZCxcblx0XHRcdCYuaXMtYXJjaGl2ZWQgLmludi1yb3ctbGluayB7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW52LWNvbC1vcGVuIHtcblx0XHRcdHdpZHRoOiAyOHB4O1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHZhcmlhdGlvbidzIG5hbWU6IHRoZSBrZXlib2FyZCByb3V0ZSBpbnRvIHRoZSBzaWRlIHBhbmVsICovXG5cdC5pbnYtcm93LWxpbmsge1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRmb250OiBpbmhlcml0O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQvKiBPbiBhIG5hcnJvdyBzY3JlZW4gdGhlIGxvd2VzdC1wcmlvcml0eSBjb2x1bW5zIGdvIGJlZm9yZSB0aGUgdGFibGUgaGFzIHRvIHNjcm9sbC4gQ2F0ZWdvcnlcblx0ICAgaXMgaW4gdGhlIHRvb2xiYXIgYW5kIHRoZSBiYXJjb2RlIGluIGEgdmFyaWF0aW9uJ3Mgc2V0dGluZ3MsIHNvIG5vdGhpbmcgaXMgbG9zdC4gKi9cblx0QG1lZGlhIChtYXgtd2lkdGg6IDE1MDBweCkge1xuXHRcdC5pbnYtdGFibGUgLmludi1jb2wtb3B0aW9uYWwge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgaXRlbSByb3cgb3BlbnMgaXRzIGRldGFpbCwgc28gdGhlIHdob2xlIHJvdyBpcyBhIHRhcmdldCAqL1xuXHQuaW52LXN0b2NrLXRhYmxlIHtcblx0XHQuaW52LWl0ZW0tcm93IHtcblx0XHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdFx0Jjpob3ZlciB0ZCxcblx0XHRcdCY6aG92ZXIgdGgge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGJvZHkuaXMtb3BlbiAuaW52LWl0ZW0tcm93IHRkLFxuXHRcdHRib2R5LmlzLW9wZW4gLmludi1pdGVtLXJvdyB0aCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0fVxuXHR9XG5cblx0Lmludi10b2dnbGUge1xuXHRcdHdpZHRoOiAyNnB4O1xuXHRcdGhlaWdodDogMjZweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBBIGxhYmVsbGVkIGljb24gYnV0dG9uIChwYW5lbCBjbG9zZSwgc3RlcHBlciksIG91dGxpbmVkIGxpa2UgLmJ0bi1jYW5jZWwgKi9cblx0Lmludi1pY29uLWJ0biB7XG5cdFx0d2lkdGg6IDI4cHg7XG5cdFx0aGVpZ2h0OiAyOHB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGNhbmNlbEJvcmRlcjtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBBYmJyZXZpYXRlZCBoZWFkaW5ncyBrZWVwIHRoZWlyIGZ1bGwgbmFtZSBvbiBob3Zlciwgd2l0aG91dCB0aGUgYnJvd3NlcidzIGRvdHRlZCB1bmRlcmxpbmUgKi9cblx0Lmludi10YWJsZSBhYmJyW3RpdGxlXSB7XG5cdFx0Ym9yZGVyLWJvdHRvbTogbm9uZTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0Y3Vyc29yOiBoZWxwO1xuXHR9XG5cblx0LyogLmJ0bi1uYXZ5IGFuZCAuYnRuLWNhbmNlbCBmaWxsIHRoZWlyIGNvbnRhaW5lciBmb3IgZm9ybSBmb290ZXJzOyBoZXJlIHRoZXkgc2l6ZSB0byB0aGVpciBsYWJlbCAqL1xuXHQuaW52LWRldGFpbC1mb290ZXIsXG5cdC5pbnYtY29uZmlybSB7XG5cdFx0LmJ0biB7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDNweCAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFN0YXR1czogYW4gaWNvbiBhbmQgYSB3b3JkIGFzIHdlbGwgYXMgYSBjb2xvdXIsIHNvIGl0IHJlYWRzIHdpdGhvdXQgY29sb3VyIHZpc2lvbiAqL1xuXHQuaW52LXN0YXR1cyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweDtcblx0XHRwYWRkaW5nOiAycHggOXB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdCYuaXMtb2sge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDEyJSkpO1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXG5cdFx0Ji5pcy1sb3cge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vdXQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblxuXHRcdCYuaXMtYXJjaGl2ZWQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQvKiBBIGNvbnRhY3QgbGVucyBib3ggb3JkZXJlZCBpbiBmb3IgdGhlIHBhdGllbnQ6IGV4cGVjdGVkLCBzbyBuZXV0cmFsICovXG5cdFx0Ji5pcy1vcmRlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtc2hvcnRmYWxsIHtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQmFja29yZGVyc1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qIFBlbmRpbmcgLT4gT3JkZXJlZCAtPiBBcnJpdmVkLCBhcyBvbmUgc2VnbWVudGVkIGNvbnRyb2w7IHRoZSBzdGVwcyBiZWZvcmUgdGhlIGN1cnJlbnQgb25lIGFyZSBkb25lICovXG5cdC5pbnYtYmFja29yZGVycyB7XG5cdFx0Lmludi1iYWNrb3JkZXItc3RhdHVzIHtcblx0XHRcdG1pbi13aWR0aDogMjUwcHg7XG5cdFx0fVxuXG5cdFx0Lmludi1jbG9zZS1yb3cgPiB0ZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1iby1zdGVwcyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5pbnYtYm8tc3RlcCB7XG5cdFx0cGFkZGluZzogNHB4IDEwcHg7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJvcmRlci1sZWZ0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IDA7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Ji5pcy1jdXJyZW50IHtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IHByb2dyZXNzO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtc3RhdHVzLmlzLW9yZGVyZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRwYWxlQmx1ZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQuaW52LWJvLWNvbmZpcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHRzcGFuIHtcblx0XHRcdGZsZXg6IDEgMSAyNDBweDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdGZsZXg6IDEgMSAyMjBweDtcblx0XHRcdGhlaWdodDogMzBweDtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtYm8taGludCB7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgSXRlbSBkZXRhaWwgKGFuIG9wZW4gU3RvY2sgcm93KVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnYtZGV0YWlsLXJvdyA+IHRkIHtcblx0XHRwYWRkaW5nOiA0cHggMTJweCAxNHB4IDE2cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHR9XG5cblx0Lmludi1kZXRhaWwge1xuXHRcdC5pbnYtbXV0ZWQsXG5cdFx0Lmludi1lcnJvci10ZXh0IHtcblx0XHRcdG1hcmdpbjogOHB4IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogQWxzbyBhbiAuaW52LXRhYmxlLCBzbyB0aGVzZSBtYXRjaCBpdHMgc2VsZWN0b3JzIHRvIHdpbiBieSBvcmRlciAqL1xuXHQuaW52LXN1YnRhYmxlIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG5cdFx0PiB0aGVhZCA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0cGFkZGluZzogOHB4IDEwcHg7XG5cdFx0fVxuXG5cdFx0PiB0aGVhZCA+IHRyID4gdGgge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgY29udGFjdCBsZW5zOiB3aGF0IGl0IGlzLCBvdmVyIGl0cyBib3ggcHJlc2NyaXB0aW9ucyAqL1xuXHQuaW52LWxlbnMtZGVzY3JpcHRpb24ge1xuXHRcdG1hcmdpbjogMCAwIDhweDtcblx0fVxuXG5cdC8qIENvbnRhY3QgbGVucyBib3hlcyBhcyByb3dzIG9mIHNtYWxsIGlucHV0cyAtIGEgbmV3IGxlbnMncywgb3Igb25lcyBiZWluZyBhZGRlZCB0byBhIGxlbnMgLSBzaXplZFxuXHQgICB0byB0aGUgY2FyZCwgdGhlIGJhcmNvZGUgdGFraW5nIHdoYXQncyBsZWZ0ICovXG5cdC5pbnYtYm94LXRhYmxlIHtcblx0XHR3aWR0aDogMTAwJTtcblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmc6IDRweCA0cHg7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdGhlaWdodDogMzJweDtcblx0XHRcdHBhZGRpbmc6IDRweCA2cHg7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQ6bnRoLWNoaWxkKC1uICsgOCkge1xuXHRcdFx0d2lkdGg6IDklO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtYWRkLWJveGVzIHtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggZGFzaGVkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblxuXHRcdGg1IHtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Lmludi1lZGl0b3ItYWN0aW9ucyB7XG5cdFx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1kZXRhaWwtZm9vdGVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXG5cdFx0Lmludi1zcGFjZXIge1xuXHRcdFx0ZmxleDogMTtcblx0XHR9XG5cblx0XHQuaW52LW11dGVkIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cdH1cblxuXHQuaW52LWRldGFpbC1tZXRhIHtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQvKiBUaGUgYXJjaGl2ZSBjb25maXJtYXRpb24gcmVwbGFjZXMgdGhlIGJ1dHRvbiBpbiBwbGFjZSwgc28gaXQgaXMgcmVhZCBpbiBjb250ZXh0ICovXG5cdC5pbnYtY29uZmlybSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0cGFkZGluZzogNnB4IDEwcHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGRhbmdlciBhbHBoYSgyNSUpKTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBTaWRlIHBhbmVsIChvbmUgdmFyaWF0aW9uJ3Mgc3RvY2sgYW5kIGRldGFpbHMpXG5cdC8qIEEgY29sdW1uIGJlc2lkZSB0aGUgcGFuZSdzIGNvbnRlbnQsIG5ldmVyIG92ZXIgaXQ6IHRoZSBwYW5lIGxheXMgaXRzXG5cdC8qIGNoaWxkcmVuIG91dCBpbiBhIHJvdyBoZXJlLCBzbyBvcGVuaW5nIHRoZSBwYW5lbCBuYXJyb3dzIHRoZSB0YWJsZVxuXHQvKiByYXRoZXIgdGhhbiBoaWRpbmcgcGFydCBvZiBpdC4gRWFjaCBzY3JvbGxzIG9uIGl0cyBvd24uXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LnNldHRpbmdzLXBhbmUge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XG5cblx0XHQ+IC5zZXR0aW5ncy1wYW5lLWlubmVyIHtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cdH1cblxuXHQvKiBXaGF0IGlzIGxlZnQgb2YgdGhlIHRhYmxlIGRyb3BzIGl0cyBzZWNvbmRhcnkgY29sdW1uczsgdGhlIG9wZW4gbGluZSdzIGFyZSBpbiB0aGUgcGFuZWwgKi9cblx0LnNldHRpbmdzLXBhbmUuaGFzLXBhbmVsIC5pbnYtdGFibGUgLmludi1jb2wtb3B0aW9uYWwsXG5cdC5zZXR0aW5ncy1wYW5lLmhhcy1wYW5lbCAuaW52LXRhYmxlIC5pbnYtY29sLXNlY29uZGFyeSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC5zZXR0aW5ncy1wYW5lID4gLmludi1wYW5lbCB7XG5cdFx0ZmxleDogMCAwIGNsYW1wKDMwMHB4LCAzNiUsIDQwMHB4KTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuaW52LXBhbmVsLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMTJweDtcblx0XHRwYWRkaW5nOiAxOHB4IDIwcHggMTRweDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1wYW5lbC1leWVicm93IHtcblx0XHRtYXJnaW46IDAgMCAycHg7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDNlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR9XG5cblx0Lmludi1wYW5lbC1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0cGFkZGluZzogMTZweCAyMHB4IDI0cHg7XG5cblx0XHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDE0cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGZpZ3VyZXMgdGhlIGZvcm1zIGJlbG93IGNoYW5nZSwgcmVhZCBhdCBhIGdsYW5jZSAqL1xuXHQuaW52LXBhbmVsLXN1bW1hcnkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAyMnB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAxMnB4IDE0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktbW9kYWwtaGVhZGVyO1xuXG5cdFx0ZHQge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wM2VtO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHR9XG5cblx0XHRkZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1wYW5lbC1xdHkge1xuXHRcdGZvbnQtc2l6ZTogMjRweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMTtcblx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdH1cblxuXHQuaW52LXBhbmVsLXF0eS1zbSB7XG5cdFx0Zm9udC1zaXplOiAxOHB4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdH1cblxuXHQuaW52LXBhbmVsLXNlY3Rpb24ge1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cdFx0cGFkZGluZy10b3A6IDE2cHg7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdGg1IHtcblx0XHRcdG1hcmdpbjogMCAwIDRweDtcblx0XHRcdGZvbnQtc2l6ZTogMTMuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHR9XG5cblx0XHQuY29udHJvbC1sYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbjogMTJweCAwIDRweDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdH1cblx0fVxuXG5cdC5pbnYtb3B0aW9uYWwge1xuXHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdH1cblxuXHQuaW52LXN0ZXBwZXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDZweDtcblxuXHRcdC5pbnYtaWNvbi1idG4ge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmbGV4OiAwIDAgOTBweDtcblx0XHRcdHdpZHRoOiA5MHB4O1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cblx0XHQvKiBUaGUg4oiSIC8gKyBidXR0b25zIGJlc2lkZSBpdCBkbyB0aGUgc3RlcHBpbmcsIHNvIHRoZSBicm93c2VyJ3Mgb3duIHNwaW5uZXIgYXJyb3dzIGFyZSBoaWRkZW4uXG5cdFx0ICAgT25seSBvbiB0aGUgbnVtYmVyIGJveCAtIHRoZSB1bml0cyBzZWxlY3QgYmVzaWRlIGl0IGtlZXBzIGl0cyBkcm9wZG93biBhcnJvdy4gKi9cblx0XHRpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcblx0XHRcdC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuXHRcdFx0YXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuXG5cdFx0XHQmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuXHRcdFx0Jjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG5cdFx0XHRcdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wuaW52LXN0ZXBwZXItdW5pdCB7XG5cdFx0XHRmbGV4OiAxIDEgYXV0bztcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR9XG5cdH1cblxuXHQuaW52LXBhbmVsLWhpbnQge1xuXHRcdG1hcmdpbjogNnB4IDAgMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogQSBzZWNvbmRhcnkgYWN0aW9uIHRoYXQgZmlsbHMgYSBmb3JtIGluLCByYXRoZXIgdGhhbiBzdWJtaXR0aW5nIGFueXRoaW5nICovXG5cdC5pbnYtbGluay1idG4ge1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXG5cdC5pbnYtcGFuZWwtZmllbGRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTJweDtcblxuXHRcdD4gZGl2IHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0fVxuXHR9XG5cblx0Lmludi1tb25vLWlucHV0IHtcblx0XHRmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBtb25vc3BhY2U7XG5cdH1cblxuXHQvKiBFYWNoIGZvcm0ncyBzYXZlLCBjZW50cmVkIHVuZGVyIGl0cyBmaWVsZHMsIHdpdGggYW55dGhpbmcgaXQgbmVlZHMgdG8gc2F5IGJlbmVhdGggaXQgKi9cblx0Lmludi1wYW5lbC1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0XHRtYXJnaW4tdG9wOiAxOHB4O1xuXG5cdFx0Lmludi1tdXRlZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHBhbmVsJ3MgcHJpbWFyeSBhY3Rpb246IGEgc29saWQsIHNxdWFyZXIgYnV0dG9uIHJhdGhlciB0aGFuIHRoZSBwaWxsIHVzZWQgaW4gZm9ybSBmb290ZXJzICovXG5cdC5pbnYtcGFuZWwtc2F2ZSB7XG5cdFx0bWluLXdpZHRoOiAyMDBweDtcblx0XHRtYXJnaW46IDA7XG5cdFx0cGFkZGluZzogOXB4IDI4cHg7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggNnB4IGNvbG9yKCRuYXZ5IGFscGhhKDI1JSkpO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRkYXJrTmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0fVxuXHR9XG5cblx0LyogTmV3IGl0ZW0gZm9ybSBhY3Rpb25zICovXG5cdC5pbnYtZWRpdG9yLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXG5cdFx0LmFjdGlvbi1oaW50IHtcblx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHRcdH1cblxuXHRcdC5pbnYtc3BhY2VyIHtcblx0XHRcdGZsZXg6IDE7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDIyMHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIE5ldyBpdGVtIGZvcm06IG9uZSBjYXJkIHBlciB2YXJpYXRpb24gKi9cblx0Lmludi1pdGVtLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHR9XG5cblx0Lmludi1uZXctdmFyaWF0aW9uIHtcblx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHR9XG59XG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIFBhdGllbnQgaW52b2ljaW5nIChOWilcbi8qIEJ1aWx0IG9uIHRoZSBzZXR0aW5ncyBzaGVsbCAoX3NldHRpbmdzLmNzcykgbGlrZSB0aGUgY2FsZW5kYXIsIGFuZFxuLyogbGFpZCBvdXQgbGlrZSBhIG1haWwgY2xpZW50OiB0aGUgaW52b2ljZXMgYXMgYSBzbWFsbCB0YWJsZSBvbiB0aGVcbi8qIGxlZnQsIHRoZSBvbmUgb3BlbiBkcmF3biBhcyBhIHByaW50ZWQgaW52b2ljZSBvbiB0aGUgcmlnaHQsIHdpdGggYVxuLyogY29tcGFjdCBwYXltZW50IGNhcmQgYmVzaWRlIGl0IChhcyB0aGUgaW52ZW50b3J5J3Mgc3RvY2sgYWRqdXN0bWVudCkuXG4vKiBUaGUgZWRpdG9yJ3MgbGluZSB0YWJsZSwgc3RhdHVzIHBpbGxzLCBub3RpY2VzIGFuZCBjb25maXJtcyBjb21lXG4vKiBmcm9tIF9pbnZlbnRvcnkuY3NzLCB3aGljaCBsaXN0cyB0aGlzIHNoZWxsIGFsb25nc2lkZSBpdHMgb3duLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBPbmx5IGEgYGZyb21gLCBzbyBpdCBmYWRlcyB0byB3aGF0ZXZlciBiYWNrZ3JvdW5kIHRoZSBlbGVtZW50IGhhcyAtIGEgc2VsZWN0ZWQgcm93J3MgaW5jbHVkZWQgKi9cbkBrZXlmcmFtZXMgaW52b2ljaW5nLWZyZXNoIHtcblx0ZnJvbSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDI2JSkpO1xuXHR9XG59XG5cbkBrZXlmcmFtZXMgaW52b2ljaW5nLXBvcCB7XG5cdDAlLFxuXHQxMDAlIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHR9XG5cblx0NDAlIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMTQpO1xuXHR9XG59XG5cbi5pbnZvaWNpbmctZGlhbG9nIHtcblx0bWluLXdpZHRoOiA4OCU7XG5cdHdpZHRoOiA4OCU7XG5cdGhlaWdodDogOTB2aDtcblx0bWF4LWhlaWdodDogOTR2aDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcblxufVxuXG4uc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nIHtcblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgU2hhcmVkIGNvbnRyb2xzIChhcyB0aGUgY2FsZW5kYXIncyB0b29sYmFyKVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5jYWwtYnRuIHtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0cGFkZGluZzogMCAxM3B4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0LmZhIHtcblx0XHRcdG1hcmdpbi1yaWdodDogNXB4O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjE1KTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRvcGFjaXR5OiAwLjQ1O1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHR9XG5cblx0XHQuZmEtY2hldnJvbi1sZWZ0IHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHR9XG5cdH1cblxuXHQuY2FsLWljb24tYnRuIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHR3aWR0aDogMzRweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1zZWFyY2gge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdD4gaSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRsZWZ0OiAxMXB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiAzNHB4O1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAzMXB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMjhweDtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLXNlYXJjaC1jbGVhciB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRyaWdodDogNnB4O1xuXHRcdFx0dG9wOiA1MCU7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdFx0XHR3aWR0aDogMjJweDtcblx0XHRcdGhlaWdodDogMjJweDtcblx0XHRcdGJvcmRlcjogbm9uZTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiAuYnRuLWNhbmNlbCBhbmQgLmJ0bi1uYXZ5IGZpbGwgdGhlaXIgY29udGFpbmVyIGZvciBmb3JtIGZvb3RlcnM7IHRoZXNlIHNpemUgdG8gdGhlaXIgbGFiZWwgKi9cblx0Lmludm9pY2luZy1taW5pLWJ0biB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA0cHggMTJweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQuc2V0dGluZ3Mtbm90aWNlIHtcblx0XHQubm90aWNlLXRleHQge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHR9XG5cblx0XHQubm90aWNlLWRpc21pc3Mge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0cGFkZGluZzogMCAycHg7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdG9wYWNpdHk6IDAuNjtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdH1cblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogQSBkcmFmdCBpcyB0aGUgcHJhY3RpY2UncyBvd24gd29ya2luZyBjb3B5IC0gbmF2eSwgbm90IHRoZSBncmV5IG9mIHNvbWV0aGluZyBmaW5pc2hlZCB3aXRoICovXG5cdC5pbnYtc3RhdHVzLmlzLWRyYWZ0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5pbnZvaWNlLW92ZXJkdWUtdGV4dCB7XG5cdFx0Y29sb3I6ICRub3RpY2UtZXJyb3I7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBMaXN0IGNvbHVtbjogdGhlIHBhdGllbnQsIHRoZWlyIGJhbGFuY2UsIGFuZCB0aGVpciBpbnZvaWNlc1xuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnZvaWNpbmctbGlzdCB7XG5cdFx0ZmxleDogMCAwIDMyMHB4O1xuXHRcdHdpZHRoOiAzMjBweDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0Lmludm9pY2luZy1saXN0LWhlYWQge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDEycHg7XG5cdFx0cGFkZGluZzogMThweCAxNnB4IDE0cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdH1cblxuXHQuaW52b2ljaW5nLXBhdGllbnQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEycHg7XG5cdH1cblxuXHQuaW52b2ljaW5nLXBhdGllbnQtdGV4dCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0Lmludm9pY2luZy1wYXRpZW50LW5hbWUge1xuXHRcdGZvbnQtZmFtaWx5OiAnR29yZGl0YSBCb2xkJywgc2Fucy1zZXJpZjtcblx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdH1cblxuXHQuaW52b2ljaW5nLXBhdGllbnQtc3ViIHtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRsZXR0ZXItc3BhY2luZzogMC4wNmVtO1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQuaW52b2ljaW5nLWxpc3QtdG9vbHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDhweDtcblx0fVxuXG5cdC5pbnZvaWNpbmctbmV3LWJ0biB7XG5cdFx0ZmxleDogMTtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiA4cHggMTRweDtcblxuXHRcdCYuaXMtY3VycmVudCB7XG5cdFx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgwLCA1MywgMjEwLCAwLjIpO1xuXHRcdH1cblx0fVxuXG5cdC8qIE93aW5nIC8gb3ZlcmR1ZSAvIHBhaWQsIHNpZGUgYnkgc2lkZSAqL1xuXHQuaW52b2ljaW5nLWJhbGFuY2Uge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAxMHB4IDE2cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZhZmJmZTtcblx0fVxuXG5cdC5pbnZvaWNpbmctc3RhdCB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0Ji5pcy1vdmVyZHVlIC5pbnZvaWNpbmctc3RhdC1sYWJlbCxcblx0XHQmLmlzLW92ZXJkdWUgLmludm9pY2luZy1zdGF0LXZhbHVlIHtcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctc3RhdC1sYWJlbCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMXB4O1xuXHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAjYTNhYWMwO1xuXHR9XG5cblx0Lmludm9pY2luZy1zdGF0LXZhbHVlIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTMuNXB4O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0Ji5pcy16ZXJvIHtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdCYuaXMtcGFpZCB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWxpc3QtaXRlbXMge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLWhlaWdodDogMDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXG5cdFx0Jjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRcdFx0d2lkdGg6IDZweDtcblx0XHR9XG5cblx0XHQmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDUzLCAyMTAsIDAuMSk7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIEFuIC5pbnYtdGFibGUsIHRpZ2h0ZW5lZCBmb3IgdGhlIG5hcnJvdyBjb2x1bW46IGV2ZXJ5IHJvdyBhIGNsaWNrIHRhcmdldCwgYXMgdGhlIGludmVudG9yeSdzLlxuXHQgICBUd28gY29sdW1ucyAtIHRoZSBkYXRlIG92ZXIgaXRzIG1haW4gaXRlbSwgdGhlIHRvdGFsIG92ZXIgaXRzIHN0YXR1cyAtIGZpeGVkIHNvIHRoZSBpdGVtIGlzIGN1dFxuXHQgICBzaG9ydCByYXRoZXIgdGhhbiB3aWRlbmluZyB0aGUgbGlzdC4gKi9cblx0Lmludm9pY2UtbGlzdC10YWJsZSB7XG5cdFx0dGFibGUtbGF5b3V0OiBmaXhlZDtcblxuXHRcdC5pbnZvaWNlLWxpc3QtdG90YWwtY29sIHtcblx0XHRcdHdpZHRoOiAxMTJweDtcblx0XHR9XG5cblx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoIHtcblx0XHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHR6LWluZGV4OiAxO1xuXHRcdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0fVxuXG5cdFx0PiB0aGVhZCA+IHRyID4gOmZpcnN0LWNoaWxkLFxuXHRcdD4gdGJvZHkgPiB0ciA+IDpmaXJzdC1jaGlsZCB7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDE2cHg7XG5cdFx0fVxuXG5cdFx0PiB0aGVhZCA+IHRyID4gOmxhc3QtY2hpbGQsXG5cdFx0PiB0Ym9keSA+IHRyID4gOmxhc3QtY2hpbGQge1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTZweDtcblx0XHR9XG5cblx0XHQ+IHRib2R5ID4gdHIgPiB0aCB7XG5cdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC5pbnYtc3RhdHVzIHtcblx0XHRcdHBhZGRpbmc6IDFweCA3cHg7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1saXN0LWFtb3VudCAuaW52LXN0YXR1cyB7XG5cdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0fVxuXG5cdFx0LyogV2hpbGUgdGhlIGVkaXRvciBpcyBvcGVuIHRoZSBsaXN0IGlzIHNob3duIGJ1dCBub3QgdXNlZCAqL1xuXHRcdCYuaXMtbG9ja2VkID4gdGJvZHkgPiB0ciB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cblx0XHRcdCY6aG92ZXIgPiB0ZCxcblx0XHRcdCY6aG92ZXIgPiB0aCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIENlbnRyZWQsIHdpdGggYW55IGljb24ga2VwdCBiZXNpZGUgaXRzIHdvcmRzIHJhdGhlciB0aGFuIHB1c2hlZCB0byB0aGUgb3RoZXIgZWRnZSAqL1xuXHQuaW52b2ljZS1saXN0LWl0ZW0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5pbnZvaWNlLWxpc3QtaXRlbS1uYW1lIHtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHR9XG5cblx0Lmludm9pY2UtbGlzdC1pdGVtLW1vcmUge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQuaW52b2ljaW5nLWxpc3Qtbm90ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiAxOHB4IDE2cHg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdC5mYSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDZweDtcblx0XHR9XG5cblx0XHQmLmlzLWVycm9yIHtcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblx0fVxuXG5cdC8qIFdobyBpbnZvaWNlcyBnbyB0bywgdGhlIGVtYWlsIHRoZXkgYXJlIHNlbnQgdG8sIGFuZCBBQ0MgKi9cblx0Lmludm9pY2luZy1saXN0LWZvb3Qge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiAxMnB4IDE2cHggMTRweDtcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2VlZjFmNztcblxuXHRcdC5mb290ZXItbGFiZWwge1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdC5saW5rLWFjdGlvbiB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmcteGVyby1yb3cge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAxMHB4O1xuXG5cdFx0PiAuZmEge1xuXHRcdFx0d2lkdGg6IDE0cHg7XG5cdFx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR9XG5cblx0XHQ+IC5mYS1saW5rIHtcblx0XHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmcteGVyby10ZXh0IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC8qIFRoZSBsaW5rZWQgY29udGFjdCBpcyBhcmNoaXZlZCBpbiBYZXJvOiBrZXB0IGNvbXBhY3QgdG8gZml0IHRoZSByYWlsICovXG5cdC5zZXR0aW5ncy1ub3RpY2UuaW52b2ljaW5nLWFyY2hpdmVkIHtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHggMTBweDtcblx0XHRtYXJnaW46IDEwcHggMCAwO1xuXHRcdHBhZGRpbmc6IDEwcHggMTJweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBXcmFwcyBvbnRvIGZ1cnRoZXIgbGluZXMgcmF0aGVyIHRoYW4gYmVpbmcgY3V0IG9mZiAtIGEgbG9uZyBuYW1lLCBvciBvbmUgbG9uZyB3b3JkLCBzdGlsbCBzaG93cyBpbiBmdWxsICovXG5cdC5pbnZvaWNpbmcteGVyby1jb250YWN0IHtcblx0XHRtYXJnaW4tdG9wOiAxcHg7XG5cdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0fVxuXG5cdC5pbnZvaWNpbmctbm8tZW1haWwge1xuXHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICM4NzhiYTA7XG5cdH1cblxuXHQuaW52b2ljaW5nLWVtYWlsLWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW4tbGVmdDogMjRweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiAzMnB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDEwcHg7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWVtYWlsLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5pbnZvaWNpbmctZW1haWwtZXJyb3Ige1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdH1cblxuXHQuaW52b2ljZS1zZW5kLWVtYWlsIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWF4LXdpZHRoOiA0MjBweDtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0aGVpZ2h0OiAzMnB4O1xuXHRcdFx0cGFkZGluZzogNXB4IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy14ZXJvLWNvbmZpcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0bWFyZ2luLXRvcDogOHB4O1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRmbGV4OiAxIDEgMTAwJTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWFjYy1saW5rIHtcblx0XHRhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xuXHRcdG1hcmdpbi1sZWZ0OiAyNHB4O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFJlYWRpbmcgcGFuZVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5zZXR0aW5ncy1wYW5lLWlubmVyIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdH1cblxuXHQvKiBUaGUgY2FsZW5kYXIncyBsb2FkaW5nIGxpbmUsIGFjcm9zcyB0aGUgdG9wIG9mIHRoZSBwYW5lIHdoaWxlIGEgcmVxdWVzdCBpcyBvdXQgKi9cblx0Lmludm9pY2luZy1sb2FkaW5nIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0cmlnaHQ6IDA7XG5cdFx0aGVpZ2h0OiAzcHg7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR6LWluZGV4OiA2O1xuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG5cdFx0c3BhbiB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAtNDAlO1xuXHRcdFx0d2lkdGg6IDQwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0YW5pbWF0aW9uOiBjYWxlbmRhci1sb2FkaW5nIDEuMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1yZWFkZXItZW1wdHkge1xuXHRcdGZsZXg6IDE7XG5cdFx0cGFkZGluZzogMjhweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRtYXJnaW46IDE4cHggYXV0byAwO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBidXR0b24ncyBpY29uLCBub3QgdGhlIGVtcHR5IHN0YXRlJ3MgbGFyZ2Ugb25lICguc2V0dGluZ3MtZW1wdHkgaSkgKi9cblx0XHQuc2V0dGluZ3MtZW1wdHkgLmJ0biBpIHtcblx0XHRcdG1hcmdpbjogMCA2cHggMCAwO1xuXHRcdFx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0fVxuXHR9XG5cblx0LyogV2hhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBvcGVuIGludm9pY2UsIGFsb25nIHRoZSB0b3Agb2YgdGhlIHBhbmUgKi9cblx0Lmludm9pY2luZy1yZWFkZXItdG9vbHMge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDE0cHggMjhweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC5pbnZvaWNlLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQuaW52b2ljZS1hY3Rpb25zLWRpdmlkZXIge1xuXHRcdHdpZHRoOiAxcHg7XG5cdFx0aGVpZ2h0OiAyMnB4O1xuXHRcdG1hcmdpbjogMCA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0Lmludm9pY2UtZGVsZXRlLWJ0bjpub3QoW2Rpc2FibGVkXSk6aG92ZXIge1xuXHRcdGJvcmRlci1jb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgaW52b2ljZSwgd2l0aCB0aGUgcGF5bWVudCBjYXJkIGJlc2lkZSBpdCB3aGlsZSBhbnl0aGluZyBpcyBvd2luZyAqL1xuXHQuaW52b2ljZS1yZWFkaW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMjBweDtcblx0fVxuXG5cdC8qIFRoZSBpbnZvaWNlJ3MgY29sdW1uLCB3aGljaCBzZXRzIHRoZSBpbnZvaWNlJ3Mgd2lkdGguIEl0cyBtZXNzYWdlcyBhbmQgY29uZmlybWF0aW9ucyBzaXQgaW4gaXQgdG9vLFxuXHQgICBzbyBub25lIGlzIGV2ZXIgd2lkZXIgdGhhbiB0aGUgaW52b2ljZSAtIHdpdGggdGhlIHBheW1lbnQgY2FyZCBiZXNpZGUgaXQgb3Igbm90LiAqL1xuXHQuaW52b2ljZS1yZWFkaW5nLW1haW4ge1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHRtYXgtd2lkdGg6IDgyMHB4O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFBheW1lbnQgY2FyZCAtIGFzIGNvbXBhY3QgYXMgdGhlIGludmVudG9yeSdzIHN0b2NrIGFkanVzdG1lbnQ6XG5cdC8qIHRoZSBhbW91bnQsIGhvdyBpdCB3YXMgcGFpZCwgd2hlcmUgaXQgd2VudCwgYW5kIG9uZSBidXR0b25cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQuaW52b2ljZS1wYXktY2FyZCB7XG5cdFx0cG9zaXRpb246IHN0aWNreTtcblx0XHR0b3A6IDA7XG5cdFx0ZmxleDogMCAwIDI2MHB4O1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDhweDtcblx0XHRwYWRkaW5nOiAxNnB4IDE2cHggMTRweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdFx0Lmludi1wYW5lbC1zYXZlIHtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLXBheS1oZWFkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDJweDtcblxuXHRcdGg1IHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTMuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0XHR9XG5cblx0XHRzcGFuIHtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtcGF5LWFtb3VudCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXG5cdFx0LmZlZS1pbnB1dCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0cGFkZGluZzogNnB4IDEycHg7XG5cdFx0XHRmb250LWZhbWlseTogaW5oZXJpdDtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1wYXktaGludCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuaW52b2ljZS1jb25maXJtIHtcblx0XHRiIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWNvbmZpcm0tYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0fVxuXG5cdC5pbnZvaWNlLWNvbmZpcm0tZGVsZXRlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgVGhlIHByaW50ZWQgaW52b2ljZSAtIGEgc2hlZXQgb2YgcGFwZXIsIGFmdGVyIHRoZSBsZW5zIGRpc3BlbnNpbmdcblx0LyogaW52b2ljZSAoLmxlbnMtaW52b2ljZS1kb2MpXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0Lmludm9pY2UtZG9jIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDM0cHggMzhweCAzMHB4O1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDEwLCAzNywgNjQsIDAuMDgpO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0Jjo6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHJpZ2h0OiAwO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0aGVpZ2h0OiA1cHg7XG5cdFx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICRuYXZ5IDAlLCAkY3lhbiAxMDAlKTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAyMHB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiAyMHB4O1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLXByYWN0aWNlIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1wcmFjdGljZS1zdWIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMnB4IDEycHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy10aXRsZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcblx0XHRnYXA6IDZweDtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy13b3JkIHtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjEyZW07XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLW51bWJlciB7XG5cdFx0bWFyZ2luLXRvcDogLTRweDtcblx0XHRmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBtb25vc3BhY2U7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0Lmludm9pY2UtZG9jLW1ldGEge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTRweCAzNHB4O1xuXHRcdG1hcmdpbjogMjBweCAwIDI0cHg7XG5cblx0XHRkdCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA0cHg7XG5cdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdH1cblxuXHRcdGRkIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGNvbG9yOiAkZGFya05hdnk7XG5cblx0XHRcdHNtYWxsIHtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBVcCB0byAyNTUgY2hhcmFjdGVycyB0eXBlZCBpbiBYZXJvLCBzbyBpdCB3cmFwcyByYXRoZXIgdGhhbiBwdXNoaW5nIHRoZSBkYXRlcyBvZmYgdGhlIHNoZWV0ICovXG5cdC5pbnZvaWNlLWRvYy1yZWZlcmVuY2Uge1xuXHRcdGZsZXg6IDAgMSAyMjBweDtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtdG8ge1xuXHRcdGZsZXg6IDEgMSAyMjBweDtcblxuXHRcdGRkIHtcblx0XHRcdGIge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdH1cblxuXHRcdFx0c3BhbiB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1saW5lcyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoIHtcblx0XHRcdHBhZGRpbmc6IDhweCAxMHB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRkYXJrTmF2eTtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDZlbTtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0cGFkZGluZzogMTFweCAxMHB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWYxZjc7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHR9XG5cblx0XHQ+IHRib2R5ID4gdHIgPiB0aCB7XG5cdFx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IC5udW0sXG5cdFx0PiB0Ym9keSA+IHRyID4gLm51bSB7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHRcdH1cblxuXHRcdD4gdGhlYWQgPiB0ciA+IHRoOmZpcnN0LWNoaWxkLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRoOmZpcnN0LWNoaWxkIHtcblx0XHRcdHBhZGRpbmctbGVmdDogMDtcblx0XHR9XG5cblx0XHQ+IHRoZWFkID4gdHIgPiA6bGFzdC1jaGlsZCxcblx0XHQ+IHRib2R5ID4gdHIgPiA6bGFzdC1jaGlsZCB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWRvYy1pdGVtIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGNvbG9yOiAkZGFya05hdnk7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtY29kZSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQuaW52LW1vbm8ge1xuXHRcdGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIG1vbm9zcGFjZTtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdH1cblxuXHQuaW52b2ljZS1kb2MtdGF4IHtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC5pbnZvaWNlLWRvYy10b3RhbHMge1xuXHRcdHdpZHRoOiAzMjBweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luOiAxOHB4IDAgMCBhdXRvO1xuXHR9XG5cblx0LyogU2hhcmVkIGJ5IHRoZSBwcmludGVkIGludm9pY2UncyB0b3RhbHMgYW5kIHRoZSBlZGl0b3IncyBzdW1tYXJ5ICovXG5cdC5pbnZvaWNlLXRvdGFsLXJvdyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAxMnB4O1xuXHRcdHBhZGRpbmc6IDRweCAwO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblxuXHRcdCYubXV0ZWQge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdCYudG90YWwge1xuXHRcdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdFx0cGFkZGluZy10b3A6IDlweDtcblx0XHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdCYucGF5bWVudCB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblxuXHRcdFx0LmZhIHtcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA0cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji5kdWUge1xuXHRcdFx0bWFyZ2luLXRvcDogOHB4O1xuXHRcdFx0cGFkZGluZzogOXB4IDEycHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRmb250LXNpemU6IDE0cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEZlZWRiYWNrLCB3aGVyZSB0aGUgYWN0aW9uIGhhcHBlbmVkXG5cdC8qIEEgYnV0dG9uIHNob3dzIGl0IHdvcmtpbmcgYW5kIHRoZW4gdGlja3M7IHdoYXQgY2hhbmdlZCBpc1xuXHQvKiBoaWdobGlnaHRlZCBmb3IgYSBtb21lbnQ7IGFuIGVycm9yIHNpdHMgYmVzaWRlIHdoYXQgZmFpbGVkLlxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnZvaWNlLWxpc3QtdGFibGUgPiB0Ym9keSA+IHRyLmlzLWZyZXNoID4gdGgsXG5cdC5pbnZvaWNlLWxpc3QtdGFibGUgPiB0Ym9keSA+IHRyLmlzLWZyZXNoID4gdGQge1xuXHRcdGFuaW1hdGlvbjogaW52b2ljaW5nLWZyZXNoIDIuNHMgZWFzZS1vdXQ7XG5cdH1cblxuXHQvKiBBIGRlbGV0ZWQgaW52b2ljZSdzIHJvdyBmYWRlcyBvdXQgb2YgdGhlIGxpc3QgKG5nQW5pbWF0ZSkgKi9cblx0Lmludm9pY2UtbGlzdC10YWJsZSA+IHRib2R5ID4gdHIubmctbGVhdmUge1xuXHRcdG9wYWNpdHk6IDE7XG5cdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjM1cyBlYXNlO1xuXHR9XG5cblx0Lmludm9pY2UtbGlzdC10YWJsZSA+IHRib2R5ID4gdHIubmctbGVhdmUubmctbGVhdmUtYWN0aXZlIHtcblx0XHRvcGFjaXR5OiAwO1xuXHR9XG5cblx0Lmludm9pY2UtdG90YWwtcm93LnBheW1lbnQuaXMtZnJlc2gge1xuXHRcdG1hcmdpbjogMCAtOHB4O1xuXHRcdHBhZGRpbmctbGVmdDogOHB4O1xuXHRcdHBhZGRpbmctcmlnaHQ6IDhweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRhbmltYXRpb246IGludm9pY2luZy1mcmVzaCAyLjRzIGVhc2Utb3V0O1xuXHR9XG5cblx0Lmludi1zdGF0dXMuaXMtZnJlc2gge1xuXHRcdGFuaW1hdGlvbjogaW52b2ljaW5nLXBvcCAwLjVzIGVhc2Utb3V0IDAuMTVzO1xuXHR9XG5cblx0LyogRG9uZTogZ3JlZW4sIGFuZCBub3QgZGltbWVkIGlmIHRoZSBidXR0b24gaXMgYnJpZWZseSBkaXNhYmxlZCB3aGlsZSB0aGUgbGlzdCByZWxvYWRzICovXG5cdC5jYWwtYnRuLmlzLWRvbmUsXG5cdC5jYWwtYnRuLmlzLWRvbmU6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHQuY2FsLWJ0bi5pcy1kb25lW2Rpc2FibGVkXSB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtNTA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTA4O1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdG9wYWNpdHk6IDE7XG5cblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0fVxuXHR9XG5cblx0Lmludi1wYW5lbC1zYXZlLmlzLWRvbmUsXG5cdC5pbnYtcGFuZWwtc2F2ZS5pcy1kb25lW2Rpc2FibGVkXSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRib3gtc2hhZG93OiAwIDJweCA2cHggJGdyZWVuLXRwLTMwO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdH1cblxuXHQuaW52b2ljaW5nLWlubGluZS1lcnJvciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDZweDtcblx0XHRtYXJnaW46IDhweCAwIDA7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjQ1O1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLXRvcDogMnB4O1xuXHRcdH1cblxuXHRcdD4gc3BhbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctaW5saW5lLWRpc21pc3Mge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdHBhZGRpbmc6IDAgMnB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRvcGFjaXR5OiAwLjY7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtZWRpdG9yLWVycm9yIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdG1hcmdpbjogMCBhdXRvIDAgMDtcblx0fVxuXG5cdC5pbnZvaWNlLWl0ZW1zLWVycm9yIHtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdG1hcmdpbjogLThweCAwIDE0cHg7XG5cblx0XHQubGluay1hY3Rpb24ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtcGF5LWVycm9yIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvKiBUaGUgZW1haWwganVzdCBzYXZlZDogYSBzbWFsbCB0aWNrIHRoYXQgcG9wcyBpbiBiZXNpZGUgaXQgKi9cblx0Lmludm9pY2luZy1zYXZlZCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRweDtcblx0XHRtYXJnaW4tbGVmdDogNnB4O1xuXHRcdHBhZGRpbmc6IDFweCA4cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JlZW4tdHAtMTA7XG5cdFx0Y29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXG5cdFx0Ji5uZy1lbnRlciB7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgwLjg1KTtcblx0XHR9XG5cblx0XHQmLm5nLWVudGVyLWFjdGl2ZSB7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0dHJhbnNmb3JtOiBzY2FsZSgxKTtcblx0XHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xOHMgZWFzZSwgdHJhbnNmb3JtIDAuMjJzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcblx0XHR9XG5cdH1cblxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC8qICEgQ29ubmVjdCB0byBYZXJvIChiZWZvcmUgdGhlIGxpc3QpOiBvbmUgY2VudHJlZCBjYXJkLCBvbmUgc3RlcCBhdFxuXHQvKiBhIHRpbWUsIHdpdGggd2hlcmUgaXQgaXMgaW4gdGhlIHR3byBzdGVwcyBhYm92ZSBpdFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnZvaWNpbmctc2V0dXAge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHR9XG5cblx0Lmludm9pY2luZy1jb25uZWN0IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDUyMHB4O1xuXHRcdG1hcmdpbi10b3A6IDR2aDtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1zdGVwcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW46IDAgMCAxNnB4O1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdD4gbGkge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDdweDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHRjb2xvcjogI2EzYWFjMDtcblx0XHR9XG5cblx0XHQ+IGxpLmlzLWN1cnJlbnQge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdD4gbGkuaXMtZG9uZSB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLWNvbm5lY3QtbGluZSB7XG5cdFx0XHRmbGV4OiAwIDAgNDBweDtcblx0XHRcdGhlaWdodDogMXB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1kb3Qge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0d2lkdGg6IDIycHg7XG5cdFx0aGVpZ2h0OiAyMnB4O1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1zdGVwcyA+IGxpLmlzLWRvbmUgLmludm9pY2luZy1jb25uZWN0LWRvdCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1jYXJkIHtcblx0XHRwYWRkaW5nOiAyOHB4IDMwcHggMjRweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRoNCB7XG5cdFx0XHRtYXJnaW46IDAgMCA4cHg7XG5cdFx0XHRmb250LXNpemU6IDE3cHg7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwIGF1dG8gMTZweDtcblx0XHRcdG1heC13aWR0aDogNDJjaDtcblx0XHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjU1O1xuXHRcdFx0Y29sb3I6ICM4NzhiYTA7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdH1cblxuXHRcdC5maWVsZC1oZWxwIHtcblx0XHRcdG1hcmdpbjogMTBweCAwIDA7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNpbmctY29ubmVjdC1pY29uIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdHdpZHRoOiA0OHB4O1xuXHRcdGhlaWdodDogNDhweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxMnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdGNvbG9yOiAkbmF2eTtcblx0XHRmb250LXNpemU6IDIwcHg7XG5cblx0XHQmLmlzLXdhcm5pbmcge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1oaWdoLWJnO1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1jb25uZWN0LWNoZWNraW5nIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDI0cHggMDtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0LmZhIHtcblx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3QtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi10b3A6IDE4cHg7XG5cblx0XHQvKiBDcmVhdGUgb24gdGhlIGxlZnQsIGxpbmsgb24gdGhlIHJpZ2h0LCBhcyBhIGRpYWxvZydzIGNhbmNlbCBhbmQgY29uZmlybSAqL1xuXHRcdCYuaXMtc3BsaXQge1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHR9XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbm5lY3QtcHJpbWFyeSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAxODBweDtcblx0XHRtYXJnaW46IDA7XG5cdH1cblxuXHQvKiBVbmRlciB0aGUgY2FyZCwgc28gaXQgd2lucyBvdmVyIHRoZSBjYXJkJ3MgY2VudHJlZCBwYXJhZ3JhcGggcnVsZSAqL1xuXHQuaW52b2ljaW5nLWNvbm5lY3QtY2FyZCAuaW52b2ljaW5nLWNvbm5lY3QtZXJyb3Ige1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRtYXJnaW46IDEycHggMCAwO1xuXHRcdGNvbG9yOiAkcmVkLWRhbmdlci1hbHQ7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdH1cblxuXHQvKiBXaHkgdGhlIHBhdGllbnQgaXMgYmVpbmcgbGlua2VkIGFnYWluLCBhYm92ZSB0aGUgc2VhcmNoICovXG5cdC5pbnZvaWNpbmctY29ubmVjdC1jYXJkIC5zZXR0aW5ncy1ub3RpY2UuaW52b2ljaW5nLWxpbmstbG9zdCB7XG5cdFx0bWFyZ2luOiAwIDAgMTRweDtcblx0XHRwYWRkaW5nOiAxMHB4IDEycHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbnRhY3Qtc2VhcmNoIHtcblx0XHRmbGV4OiBub25lO1xuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0Lmludm9pY2luZy1jb250YWN0LWJ1c3kge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDEwcHg7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBQaWNrIG9uZSwgdGhlbiBsaW5rIGl0OiBlYWNoIHJlc3VsdCBhIHJvdyB3aXRoIGEgcmFkaW8gbWFyayAqL1xuXHQuaW52b2ljaW5nLWNvbnRhY3QtcmVzdWx0cyB7XG5cdFx0bWF4LWhlaWdodDogMjQwcHg7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbnRhY3QtcmVzdWx0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDlweCAxMnB4O1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0JiArIC5pbnZvaWNpbmctY29udGFjdC1yZXN1bHQge1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHR9XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkcGFsZUJsdWU7XG5cdFx0fVxuXG5cdFx0Ji5pcy1zZWxlY3RlZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXJhZGlvIHtcblx0XHRmbGV4OiAwIDAgMTZweDtcblx0XHR3aWR0aDogMTZweDtcblx0XHRoZWlnaHQ6IDE2cHg7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJGNhbmNlbEJvcmRlcjtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXJlc3VsdC5pcy1zZWxlY3RlZCA+IC5pbnZvaWNpbmctY29udGFjdC1yYWRpbyB7XG5cdFx0Ym9yZGVyOiA1cHggc29saWQgJG5hdnk7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbnRhY3QtcmVzdWx0LmlzLXRha2VuID4gLmludm9pY2luZy1jb250YWN0LXJhZGlvIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LW5hbWUge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRkYXJrTmF2eTtcblx0fVxuXG5cdC5pbnZvaWNpbmctY29udGFjdC1yZXN1bHQuaXMtdGFrZW4gPiAuaW52b2ljaW5nLWNvbnRhY3QtbmFtZSB7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0Lmludm9pY2luZy1jb250YWN0LXRha2VuIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdH1cblxuXHQuaW52b2ljaW5nLWNvbnRhY3QtZW1wdHkge1xuXHRcdHBhZGRpbmc6IDE0cHggMTJweDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIEVkaXRvclxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC5pbnZvaWNlLWJhY2sge1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdH1cblxuXHQuaW52b2ljZS1lZGl0b3ItZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIDI4MHB4O1xuXHRcdGFsaWduLWl0ZW1zOiBzdGFydDtcblx0XHRnYXA6IDIwcHg7XG5cdH1cblxuXHQuaW52b2ljZS1lZGl0b3ItbWFpbixcblx0Lmludm9pY2UtZWRpdG9yLXNpZGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDIwcHg7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LnNldHRpbmdzLWNhcmQge1xuXHRcdHBhZGRpbmc6IDIwcHggMjJweDtcblx0fVxuXG5cdC5zZXR0aW5ncy1jYXJkIC5jYXJkLWhlYWRlci1mbGV4IHtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHR9XG5cblx0LyogQ2xpbmljIGRhdGUsIGR1ZSBkYXRlIGFuZCB0aGUgcHJlc2V0IGJlc2lkZSB0aGVtLCBlYWNoIG9ubHkgYXMgd2lkZSBhcyBhIGRhdGUgbmVlZHMgKi9cblx0Lmludm9pY2UtZGF0ZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEycHggMTZweDtcblx0fVxuXG5cdC5pbnZvaWNlLWRhdGUtZmllbGQge1xuXHRcdGZsZXg6IDAgMCAxNjBweDtcblx0XHR3aWR0aDogMTYwcHg7XG5cdH1cblxuXHQuaW52b2ljZS1kdWUtcHJlc2V0IHtcblx0XHRmbGV4OiAwIDAgMTMwcHg7XG5cdFx0d2lkdGg6IDEzMHB4O1xuXHR9XG5cblx0LyogQXMgd2lkZSBhcyB0aGUgZGF0ZSByb3cgYWJvdmUgaXQ6IHR3byBkYXRlcywgdGhlIHByZXNldCBhbmQgdGhlIGdhcHMgYmV0d2VlbiB0aGVtICovXG5cdC5pbnZvaWNlLXJlZmVyZW5jZS1maWVsZCB7XG5cdFx0bWF4LXdpZHRoOiA0ODJweDtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHR9XG5cblx0LyogT25lIHJvdyBpbiBmaXhlZCBjb2x1bW5zOiBmaW5kIHRoZSBpdGVtLCBzZXQgaXRzIHByaWNlLCBxdWFudGl0eSBhbmQgZGlzY291bnQsIGFkZCBpdCAqL1xuXHQvKiBBIHdyYXBwaW5nIHJvdyByYXRoZXIgdGhhbiBmaXhlZCBjb2x1bW5zOiB3aGVyZSB0aGUgY2FyZCBpcyB0b28gbmFycm93IGZvciBpdCBhbGwsIEFkZCBhbmQgQ2xlYXIgZ29cblx0ICAgb250byB0aGUgbmV4dCBsaW5lIGluc3RlYWQgb2YgcnVubmluZyBwYXN0IHRoZSBjYXJkJ3MgZWRnZSAqL1xuXHQuaW52b2ljZS1hZGQtcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDE2cHg7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IGRhc2hlZCByZ2JhKDAsIDUzLCAyMTAsIDAuMjUpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmOGZhZmY7XG5cblx0XHQuY29udHJvbC1sYWJlbCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdFx0fVxuXG5cdFx0LmRyb3Bkb3duLW1lbnUge1xuXHRcdFx0bWF4LWhlaWdodDogMjgwcHg7XG5cdFx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWFkZC1pdGVtIHtcblx0XHRcdGZsZXg6IDEgMSAxODBweDtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdG1heC13aWR0aDogMzAwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtYWRkLXByaWNlIHtcblx0XHRcdGZsZXg6IDAgMCAxMTBweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1hZGQtdmFyaWF0aW9uIHtcblx0XHRcdGZsZXg6IDAgMSAyMDBweDtcblx0XHRcdG1pbi13aWR0aDogMTUwcHg7XG5cdFx0fVxuXG5cdFx0LyogU29sZCBiZXlvbmQgd2hhdCBpcyBpbiBzdG9jazogdGhlIHJlc3QgZ29lcyBvbiBiYWNrb3JkZXIgKi9cblx0XHQuaW52b2ljZS1hZGQtYmFja29yZGVyIHtcblx0XHRcdGZsZXg6IDEgMSAxMDAlO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1hZGQtcXR5IHtcblx0XHRcdGZsZXg6IDAgMCA3MHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWFkZC1kaXNjIHtcblx0XHRcdGZsZXg6IDAgMCA4MHB4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWFkZC1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXg6IDAgMCBhdXRvO1xuXHRcdGdhcDogNnB4O1xuXHR9XG5cblx0Lmludm9pY2UtYWRkLWJ0bixcblx0Lmludm9pY2UtY2xlYXItYnRuIHtcblx0XHR3aWR0aDogYXV0bztcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDhweCAxNnB4O1xuXHR9XG5cblx0LyogLmJ0bi1jYW5jZWwncyBvd24gc2l6ZSBpcyBhIHNtYWxsZXIgcGlsbDsgaGVyZSBpdCBtYXRjaGVzIEFkZCBiZXNpZGUgaXQgKi9cblx0Lmludm9pY2UtY2xlYXItYnRuIHtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdH1cblxuXHQvKiBUaGUgY2FsZW5kYXIncyBkYXRlIHBpY2tlcnM6IHJlYWQtb25seSBzbyB0aGUgcGlja2VyIGlzIHVzZWQsIGJ1dCBub3QgZ3JleWVkIGFzIGlmIGRpc2FibGVkICovXG5cdGRhdGVwaWNrZXIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0LmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0fVxuXHR9XG5cblx0Lmludm9pY2UtbGluZXMtZW1wdHkge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMjZweCAxNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0LmZhIHtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGNvbG9yOiAjYzNjOWRhO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWxpbmVzLXdyYXAge1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHQuaW52b2ljZS1saW5lcy10YWJsZSB7XG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0cGFkZGluZy10b3A6IDdweDtcblx0XHRcdHBhZGRpbmctYm90dG9tOiA3cHg7XG5cdFx0fVxuXG5cdFx0LyogTW9yZSBvZiBhbiBpbnZlbnRvcnkgbGluZSB0aGFuIGlzIGluIHN0b2NrOiB0aGUgcmVzdCBnb2VzIG9uIGJhY2tvcmRlciAqL1xuXHRcdC5pbnZvaWNlLWxpbmUtYmFja29yZGVyIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogM3B4O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRcdH1cblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0cGFkZGluZzogNnB4IDlweDtcblx0XHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGluZS1xdHkge1xuXHRcdFx0d2lkdGg6IDg0cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGluZS1wcmljZSB7XG5cdFx0XHR3aWR0aDogMTIwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGluZS1kaXNjIHtcblx0XHRcdHdpZHRoOiA5MHB4O1xuXHRcdH1cblxuXHRcdC5pbnYtY29sLWFjdGlvbnMge1xuXHRcdFx0d2lkdGg6IDElO1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLXN1bW1hcnktY2FyZCAuZmllbGQtaGVscCB7XG5cdFx0bWFyZ2luOiAxMnB4IDAgMDtcblx0fVxuXG5cdC5pbnZvaWNlLWFjYy1jYXJkIC5idG4ge1xuXHRcdGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0fVxuXG5cdC5pbnZvaWNlLWVkaXRvci1iYXIgLmFjdGlvbi1oaW50IHtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0fVxuXG5cdC8qIEFuIGl0ZW0gcGlja2VkIGJ1dCBub3QgYWRkZWQ6IHRoZSBhZGQgcm93IGlzIG1hcmtlZCwgYW5kIHRoZSBmb290ZXIgc2F5cyBzbyBiZXNpZGUgdGhlIGJ1dHRvbiBpdCBob2xkc1xuXHQgICBiYWNrLCB3aXRoIHRoZSB0d28gd2F5cyBwYXN0IGl0ICovXG5cdC5pbnZvaWNlLWFkZC1yb3cuaXMtcGVuZGluZyB7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHllbGxvdy1jdGE7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlNjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSgyNTUsIDE3MSwgMCwgMC4xNSk7XG5cdH1cblxuXHQuaW52b2ljZS1wZW5kaW5nLWFsZXJ0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1heC13aWR0aDogNDIwcHg7XG5cdFx0cGFkZGluZzogOHB4IDEycHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHllbGxvdy1jdGE7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjhlNjtcblx0XHRjb2xvcjogJHdhcm5pbmctdGV4dDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRhbmltYXRpb246IGludm9pY2luZy1wb3AgMC4zNXMgZWFzZTtcblxuXHRcdD4gLmZhIHtcblx0XHRcdGNvbG9yOiAkeWVsbG93LWN0YTtcblx0XHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1wZW5kaW5nLXRleHQge1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7XG5cdFx0XHRhbmltYXRpb246IG5vbmU7XG5cdFx0fVxuXHR9XG5cblx0LyogTW9uZXkgZmllbGRzOiB0aGUgJCBzaXRzIGluc2lkZSB0aGUgZmllbGQsIHNvIHRoZSBmaWVsZCBpcyBhIGJsb2NrIHRoZSAkIGNhbiBiZSBwbGFjZWQgaW4sIGFuZCBpdHNcblx0ICAgdGV4dCBzdGFydHMgY2xlYXIgb2YgaXQuIEFmdGVyIHRoZSBjb21wYWN0IHRhYmxlIGFuZCBjYXJkIHJ1bGVzLCB3aGljaCB3b3VsZCBvdGhlcndpc2UgcmVzZXQgdGhlXG5cdCAgIHBhZGRpbmcgYW5kIGRyYXcgdGhlICQgb3ZlciB0aGUgZmlndXJlcy4gKi9cblx0LmZlZS1pbnB1dCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0LmZlZS1wcmVmaXgge1xuXHRcdFx0bGVmdDogMTBweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxO1xuXHRcdH1cblx0fVxuXG5cdC5mZWUtaW5wdXQgPiAuZm9ybS1jb250cm9sLFxuXHQuaW52b2ljZS1saW5lcy10YWJsZSAuZmVlLWlucHV0ID4gLmZvcm0tY29udHJvbCxcblx0Lmludm9pY2UtcGF5LWFtb3VudCAuZmVlLWlucHV0ID4gLmZvcm0tY29udHJvbCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAyMnB4O1xuXHR9XG5cblx0LyogTGVhdmluZyB3aXRoIHVuc2F2ZWQgd29yazogYSBjYXJkIG92ZXIgdGhlIGVkaXRvciwgdGhlIGVkaXRvciBkaW1tZWQgYmVoaW5kIGl0ICovXG5cdC5pbnZvaWNlLWRpc2NhcmQtb3ZlcmxheSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGluc2V0OiAwO1xuXHRcdHotaW5kZXg6IDIwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRwYWRkaW5nOiAyNHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjgsIDM1LCA2NCwgMC4zNSk7XG5cdFx0YW5pbWF0aW9uOiBpbnZvaWNpbmctZnJlc2ggMC4xNXMgZWFzZTtcblx0fVxuXG5cdC5pbnZvaWNlLWRpc2NhcmQtY2FyZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0d2lkdGg6IDM4MHB4O1xuXHRcdG1heC13aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nOiAyNHB4IDI0cHggMjBweDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Ym94LXNoYWRvdzogMCAxMnB4IDMycHggcmdiYSgyOCwgMzUsIDY0LCAwLjI1KTtcblxuXHRcdGg0IHtcblx0XHRcdG1hcmdpbjogMTBweCAwIDZweDtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdG1hcmdpbjogMCAwIDE4cHg7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdH1cblx0fVxuXG5cdC5pbnZvaWNlLWRpc2NhcmQtaWNvbiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHR3aWR0aDogNDRweDtcblx0XHRoZWlnaHQ6IDQ0cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0Y29sb3I6ICRub3RpY2UtZXJyb3I7XG5cdFx0Zm9udC1zaXplOiAxOHB4O1xuXHR9XG5cblx0Lmludm9pY2UtZGlzY2FyZC1hY3Rpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMTBweDtcblxuXHRcdC5idG4tZGFuZ2VyLW91dGxpbmUge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgY29sb3IoJGRhbmdlciBhbHBoYSg1NSUpKTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0XHQmOmhvdmVyLFxuXHRcdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkZGFuZ2VyO1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFRha2luZyBhIHBheW1lbnQsIHN0ZXAgdHdvOiB3aGF0IGlzIGFib3V0IHRvIGJlIHJlY29yZGVkLCBhbmQgQ29uZmlybSAtIHNldCBhcGFydCBzbyBpdCBjYW4ndCBiZVxuXHQgICBtaXN0YWtlbiBmb3IgdGhlIGZpcnN0IHN0ZXAgKi9cblx0Lmludm9pY2UtcGF5LWNhcmQuaXMtY29uZmlybWluZyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCAkZ3JlZW4tdHAtMDg7XG5cdH1cblxuXHQuaW52b2ljZS1wYXktY29uZmlybSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogOHB4O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHRwYWRkaW5nOiAxMHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0wODtcblx0XHRhbmltYXRpb246IGludm9pY2luZy1wb3AgMC4zcyBlYXNlO1xuXG5cdFx0cCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRjb2xvcjogJGRhcmtOYXZ5O1xuXHRcdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0XHR9XG5cblx0XHQuaW52LXBhbmVsLXNhdmUge1xuXHRcdFx0bWFyZ2luLXRvcDogMDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLXBheS1iYWNrIHtcblx0XHRcdGFsaWduLXNlbGY6IGNlbnRlcjtcblx0XHR9XG5cblx0XHRAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHRcdFx0YW5pbWF0aW9uOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIG5nQW5pbWF0ZSBrZWVwcyBhbiBuZy1pZidzIG91dGdvaW5nIGVsZW1lbnQgb24gdGhlIHBhZ2UgZm9yIGFzIGxvbmcgYXMgaXRzIGFuaW1hdGlvbiBydW5zLCBzbyBCYWNrXG5cdCAgIHNob3dlZCB0aGUgY29uZmlybSBwYW5lbCBhbmQgdGhlIFRha2UgYnV0dG9uIHRvZ2V0aGVyIGZvciBhIG1vbWVudC4gVGhleSBzd2FwIGF0IG9uY2UuICFpbXBvcnRhbnRcblx0ICAgYmVjYXVzZSBpdCBoYXMgdG8gYmVhdCB0aGUgcGFuZWwncyBvd24gcG9wLWluIGFuaW1hdGlvbi4gKi9cblx0Lmludm9pY2UtcGF5LWNhcmQgPiAuaW52LXBhbmVsLXNhdmUsXG5cdC5pbnZvaWNlLXBheS1jb25maXJtIHtcblx0XHQmLm5nLWVudGVyLFxuXHRcdCYubmctbGVhdmUge1xuXHRcdFx0dHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuXHRcdFx0YW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgUmVzcG9uc2l2ZSAtIGxhcHRvcHMgYW5kIHRhYmxldHMgKGxhbmRzY2FwZSBhbmQgcG9ydHJhaXQpXG4vKiBQaG9uZXMgYXJlIG5vdCBkZXNpZ25lZCBmb3IgeWV0OiBiZWxvdyBhIHBvcnRyYWl0IHRhYmxldCB0aGUgbGlzdFxuLyogc2ltcGx5IHN0YWNrcyBhYm92ZSB0aGUgaW52b2ljZS5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogU21hbGwgbGFwdG9wcyBhbmQgbGFuZHNjYXBlIHRhYmxldHM6IHRoZSBwYXltZW50IGNhcmQgbW92ZXMgYWJvdmUgdGhlIGludm9pY2UsIGxhaWQgb3V0IGluIGEgcm93ICovXG5AbWVkaWEgKG1heC13aWR0aDogMTMwMHB4KSB7XG5cdC5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcge1xuXHRcdC5pbnZvaWNlLWRvYy1vcHRpb25hbCB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWVkaXRvci1ncmlkIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtcmVhZGluZyB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG5cdFx0XHRhbGlnbi1pdGVtczogc3RyZXRjaDtcblx0XHR9XG5cblx0XHQvKiBTdGFja2VkLCB0aGUgY29sdW1uIHRha2VzIHRoZSBmdWxsIHdpZHRoLCBhbmQgdGhlIGludm9pY2UgYW5kIGl0cyBtZXNzYWdlcyB3aXRoIGl0ICovXG5cdFx0Lmludm9pY2UtcmVhZGluZy1tYWluIHtcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHR9XG5cblx0XHQvKiBBbW91bnQsIGhvdywgd2hlcmUgYW5kIHRoZSBidXR0b24gb24gb25lIGxpbmU7IHRoZSBoZWFkaW5nIGFuZCBhbnl0aGluZyBzYWlkLCBmdWxsIHdpZHRoICovXG5cdFx0Lmludm9pY2UtcGF5LWNhcmQge1xuXHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjJmcikgbWlubWF4KDAsIDFmcikgbWlubWF4KDAsIDFmcikgYXV0bztcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDhweCAxMHB4O1xuXG5cdFx0XHQuaW52b2ljZS1wYXktaGVhZCxcblx0XHRcdC5pbnZvaWNpbmctaW5saW5lLWVycm9yLFxuXHRcdFx0Lmludm9pY2UtcGF5LWhpbnQge1xuXHRcdFx0XHRncmlkLWNvbHVtbjogMSAvIC0xO1xuXHRcdFx0fVxuXG5cdFx0XHQuaW52b2ljZS1wYXktaGludCB7XG5cdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5pbnYtcGFuZWwtc2F2ZSB7XG5cdFx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAwO1xuXHRcdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG4vKiBMYW5kc2NhcGUgdGFibGV0cyAoMTAyNC0xMTAwKTogdGhlIGRpYWxvZyB0YWtlcyBuZWFybHkgdGhlIHdob2xlIHNjcmVlbiwgdGhlIGxpc3QgbmFycm93cywgYW5kIHRoZVxuICAgc3RhdHVzIGluIGl0IHNob3dzIGFzIGl0cyBpY29uIGFsb25lICovXG5AbWVkaWEgKG1heC13aWR0aDogMTEwMHB4KSB7XG5cdC5pbnZvaWNpbmctZGlhbG9nIHtcblx0XHRtaW4td2lkdGg6IDk2JTtcblx0XHR3aWR0aDogOTYlO1xuXHRcdGhlaWdodDogOTR2aDtcblx0fVxuXG5cdC5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcge1xuXHRcdC5pbnZvaWNpbmctbGlzdCB7XG5cdFx0XHRmbGV4LWJhc2lzOiAyNjBweDtcblx0XHRcdHdpZHRoOiAyNjBweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1saXN0LXRhYmxlIHtcblx0XHRcdC5pbnZvaWNlLWxpc3QtdG90YWwtY29sIHtcblx0XHRcdFx0d2lkdGg6IDkycHg7XG5cdFx0XHR9XG5cblx0XHRcdC5pbnZvaWNlLXN0YXR1cy10ZXh0IHtcblx0XHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHRcdH1cblxuXHRcdFx0Lmludi1zdGF0dXMge1xuXHRcdFx0XHRwYWRkaW5nOiAycHggNnB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctcmVhZGVyLXRvb2xzIHtcblx0XHRcdHBhZGRpbmc6IDEycHggMjBweDtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdHBhZGRpbmc6IDIwcHg7XG5cdFx0fVxuXG5cdFx0LyogVGhlIGJpbGxpbmcgaXRlbSBnZXRzIGl0cyBvd24gbGluZTsgcHJpY2UsIHF1YW50aXR5LCBkaXNjb3VudCBhbmQgQWRkIHNoYXJlIHRoZSBuZXh0ICovXG5cdFx0Lmludm9pY2UtYWRkLXJvdyAuaW52b2ljZS1hZGQtaXRlbSB7XG5cdFx0XHRmbGV4LWJhc2lzOiAxMDAlO1xuXHRcdFx0bWF4LXdpZHRoOiAzODBweDtcblx0XHR9XG5cdH1cbn1cblxuLyogUG9ydHJhaXQgdGFibGV0cyAoNzY4LTkwMCk6IGZ1bGwgd2lkdGgsIGxpc3QgYW5kIGludm9pY2Ugc3RpbGwgc2lkZSBieSBzaWRlIC0gdGhlIHNldHRpbmdzIHNoZWxsXG4gICB3b3VsZCBzdGFjayB0aGVtIGhlcmUsIHdoaWNoIGxlYXZlcyB0b28gbGl0dGxlIG9mIGVpdGhlciAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7XG5cdC5pbnZvaWNpbmctZGlhbG9nIHtcblx0XHRtaW4td2lkdGg6IDEwMCU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDB2aDtcblx0XHRtYXgtaGVpZ2h0OiAxMDB2aDtcblx0XHRib3JkZXItcmFkaXVzOiAwO1xuXHR9XG5cblx0LnNldHRpbmdzLXNoZWxsLmludm9pY2luZyB7XG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcblxuXHRcdC5pbnZvaWNpbmctbGlzdCB7XG5cdFx0XHRmbGV4LWJhc2lzOiAyMzBweDtcblx0XHRcdHdpZHRoOiAyMzBweDtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLWxpc3QtaGVhZCB7XG5cdFx0XHRwYWRkaW5nOiAxNHB4IDEycHggMTJweDtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLXBhdGllbnQgLnNldHRpbmdzLWF2YXRhciB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctYmFsYW5jZSB7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRnYXA6IDZweCAxNHB4O1xuXHRcdFx0cGFkZGluZzogMTBweCAxMnB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWxpc3QtdGFibGUge1xuXHRcdFx0PiB0aGVhZCA+IHRyID4gOmZpcnN0LWNoaWxkLFxuXHRcdFx0PiB0Ym9keSA+IHRyID4gOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiAxMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQ+IHRoZWFkID4gdHIgPiA6bGFzdC1jaGlsZCxcblx0XHRcdD4gdGJvZHkgPiB0ciA+IDpsYXN0LWNoaWxkIHtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogMTJweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLWxpc3QtZm9vdCB7XG5cdFx0XHRwYWRkaW5nOiAxMHB4IDEycHggMTJweDtcblx0XHR9XG5cblx0XHQuaW52b2ljaW5nLWFjYy1saW5rIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdH1cblxuXHRcdC5pbnZvaWNpbmctcmVhZGVyLXRvb2xzIHtcblx0XHRcdHBhZGRpbmc6IDEwcHggMTZweDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1hY3Rpb25zLWRpdmlkZXIge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5IHtcblx0XHRcdHBhZGRpbmc6IDE2cHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtZG9jIHtcblx0XHRcdHBhZGRpbmc6IDI0cHggMjBweCAyMHB4O1xuXHRcdH1cblxuXHRcdC5pbnZvaWNlLWRvYy1oZWFkIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1kb2MtbGluZXMge1xuXHRcdFx0PiB0aGVhZCA+IHRyID4gdGgsXG5cdFx0XHQ+IHRib2R5ID4gdHIgPiB0aCxcblx0XHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdFx0cGFkZGluZy1sZWZ0OiA2cHg7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDZweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQuaW52b2ljZS1wYXktY2FyZCB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2UtbGluZXMtdGFibGUge1xuXHRcdFx0Lmludm9pY2UtbGluZS1xdHkge1xuXHRcdFx0XHR3aWR0aDogNjRweDtcblx0XHRcdH1cblxuXHRcdFx0Lmludm9pY2UtbGluZS1wcmljZSB7XG5cdFx0XHRcdHdpZHRoOiAxMDBweDtcblx0XHRcdH1cblxuXHRcdFx0Lmludm9pY2UtbGluZS1kaXNjIHtcblx0XHRcdFx0d2lkdGg6IDcycHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1jb25uZWN0IHtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1jb25uZWN0LWNhcmQge1xuXHRcdFx0cGFkZGluZzogMjJweCAyMHB4IDIwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qIEJlbG93IGEgcG9ydHJhaXQgdGFibGV0IChub3QgeWV0IGRlc2lnbmVkIGZvcik6IHRoZSBsaXN0IHN0YWNrcyBhYm92ZSB0aGUgaW52b2ljZSwga2VwdCBzaG9ydCAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc1OXB4KSB7XG5cdC5zZXR0aW5ncy1zaGVsbC5pbnZvaWNpbmcge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cblx0XHQuaW52b2ljaW5nLWxpc3Qge1xuXHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdG1heC1oZWlnaHQ6IDQyJTtcblx0XHRcdGJvcmRlci1yaWdodDogbm9uZTtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1saXN0LWZvb3Qge1xuXHRcdFx0ZGlzcGxheTogbm9uZTtcblx0XHR9XG5cdH1cbn1cblxuLyogVG91Y2ggc2NyZWVuczogcm9vbSBmb3IgYSBmaW5nZXIgb24gZXZlcnkgcm93LCBidXR0b24gYW5kIGZpZWxkICovXG5AbWVkaWEgKHBvaW50ZXI6IGNvYXJzZSkge1xuXHQuc2V0dGluZ3Mtc2hlbGwuaW52b2ljaW5nIHtcblx0XHQuaW52b2ljZS1saXN0LXRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdC5pbnZvaWNlLWxpc3QtdGFibGUgPiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0cGFkZGluZy10b3A6IDEycHg7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMTJweDtcblx0XHR9XG5cblx0XHQuY2FsLWJ0biB7XG5cdFx0XHRoZWlnaHQ6IDQwcHg7XG5cdFx0fVxuXG5cdFx0LmNhbC1pY29uLWJ0biB7XG5cdFx0XHR3aWR0aDogNDBweDtcblx0XHR9XG5cblx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdG1pbi1oZWlnaHQ6IDQwcHg7XG5cdFx0fVxuXG5cdFx0LmNoaXAtc2VsZWN0IHtcblx0XHRcdHBhZGRpbmctdG9wOiA4cHg7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogOHB4O1xuXHRcdH1cblxuXHRcdC5pbnYtcGFuZWwtc2F2ZSxcblx0XHQuaW52b2ljaW5nLW1pbmktYnRuIHtcblx0XHRcdG1pbi1oZWlnaHQ6IDQwcHg7XG5cdFx0fVxuXG5cdFx0Lmludm9pY2luZy1jb250YWN0LXJlc3VsdCB7XG5cdFx0XHRwYWRkaW5nLXRvcDogMTJweDtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAxMnB4O1xuXHRcdH1cblxuXHRcdC5saW5rLWFjdGlvbixcblx0XHQuaW52b2ljaW5nLWlubGluZS1kaXNtaXNzIHtcblx0XHRcdHBhZGRpbmc6IDZweCA0cHg7XG5cdFx0fVxuXHR9XG59XG5cbi8qIEFueW9uZSB3aG8gaGFzIGFza2VkIGZvciBsZXNzIG1vdGlvbiBnZXRzIHRoZSB0aWNrcyBhbmQgd29yZHMgd2l0aG91dCB0aGUgaGlnaGxpZ2h0IG9yIHBvcCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcblx0LnNldHRpbmdzLXNoZWxsLmludm9pY2luZyB7XG5cdFx0LmlzLWZyZXNoLFxuXHRcdC5pcy1mcmVzaCA+IHRoLFxuXHRcdC5pcy1mcmVzaCA+IHRkIHtcblx0XHRcdGFuaW1hdGlvbjogbm9uZTtcblx0XHR9XG5cblx0XHQuaW52b2ljZS1saXN0LXRhYmxlID4gdGJvZHkgPiB0ci5uZy1sZWF2ZSxcblx0XHQuaW52b2ljaW5nLXNhdmVkLm5nLWVudGVyLWFjdGl2ZSB7XG5cdFx0XHR0cmFuc2l0aW9uOiBub25lO1xuXHRcdH1cblx0fVxufVxuIiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBXb3JrbGlzdHMgKHRhc2tzLCBzdXJnZXJ5IHdhaXRsaXN0KVxuLyogQnVpbHQgb24gdGhlIHNldHRpbmdzIHNoZWxsIChfc2V0dGluZ3MuY3NzKSBsaWtlIHRoZSBjYWxlbmRhciBhbmRcbi8qIGludm9pY2luZzogZmlsdGVycyBpbiB0aGUgbGVmdCByYWlsLCB0aGUgbGlzdCBhcyBhIHRhYmxlLCBhbmQgdGhlXG4vKiBvcGVuIHJvdyBpbiBhIHNpZGUgcGFuZWwgYmVzaWRlIGl0LiBUaGUgdGFibGUsIHN0YXR1cyBwaWxscywgc2lkZVxuLyogcGFuZWwsIG5vdGljZXMgYW5kIGNvbmZpcm1zIGNvbWUgZnJvbSBfaW52ZW50b3J5LmNzcywgd2hpY2ggbGlzdHNcbi8qIHRoaXMgc2hlbGwgYWxvbmdzaWRlIGl0cyBvd247IHRoaXMgZmlsZSBhZGRzIHdoYXQgb25seSB0aGVzZSBuZWVkLlxuLyogVGhlIG5ldyB0YXNrIGRpYWxvZyB1c2VzIHRoZSBzYW1lIHNoZWxsLCBsYWlkIG91dCBhcyBvbmUgY29sdW1uLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4ud29ya2xpc3QtZGlhbG9nIHtcblx0bWluLXdpZHRoOiA4OCU7XG5cdHdpZHRoOiA4OCU7XG5cdGhlaWdodDogOTB2aDtcblx0bWF4LWhlaWdodDogOTR2aDtcblx0cGFkZGluZzogMDtcblx0Ym9yZGVyLXRvcC13aWR0aDogMDtcbn1cblxuLnRhc2stY3JlYXRlLWRpYWxvZyB7XG5cdHdpZHRoOiA2NjBweDtcblx0bWF4LXdpZHRoOiA5NHZ3O1xuXHRtYXgtaGVpZ2h0OiA5MnZoO1xuXHRwYWRkaW5nOiAwO1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxuLyogQWRkIHRvIHN1cmdlcnkgd2FpdGxpc3Q6IHRoZSBuZXcgdGFzayBkaWFsb2csIHdpdGggYSBzbGltbWVyIHBhdGllbnQgaGVhZGVyICovXG4udGFzay1jcmVhdGUtZGlhbG9nLndhaXRsaXN0LWFkZC1kaWFsb2cge1xuXHQvKiBBIHNsaW1tZXIgcGF0aWVudCBoZWFkZXIgdGhhbiB0aGUgbmV3IHRhc2sncywgdG8gbGVhdmUgdGhlIGZpZWxkcyByb29tICovXG5cdC5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdC50YXNrLWNyZWF0ZSAud2wtY3JlYXRlLWhlYWQge1xuXHRcdHBhZGRpbmc6IDEwcHggMjRweDtcblxuXHRcdC5zZXR0aW5ncy1hdmF0YXIge1xuXHRcdFx0d2lkdGg6IDM0cHg7XG5cdFx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0fVxuXHR9XG59XG5cbi5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdCB7XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIExlZnQgcmFpbFxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC53b3JrbGlzdC1yYWlsIHtcblx0XHRmbGV4LWJhc2lzOiAyNTZweDtcblx0XHR3aWR0aDogMjU2cHg7XG5cdFx0cGFkZGluZy1ib3R0b206IDhweDtcblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtaXRlbTpmb2N1cy12aXNpYmxlIHtcblx0XHRvdXRsaW5lOiBub25lO1xuXHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHR9XG5cblx0Lm5hdi1pdGVtLXRleHQge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC8qIEhvdyBtYW55IGFyZSBiZWhpbmQgZWFjaCBmaWx0ZXIgLSB3aGl0ZSBvbiB0aGUgYWN0aXZlIHJvdyAqL1xuXHQud2wtY291bnQge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdG1pbi13aWR0aDogMjJweDtcblx0XHRwYWRkaW5nOiAxcHggN3B4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDEwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogIzdkODM5OTtcblx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cblx0XHQvKiBTb21ldGhpbmcgaW4gdGhlIGxpc3QgaXMgb3ZlcmR1ZSAqL1xuXHRcdCYuaXMtYWxlcnQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5vdGljZS1lcnJvci1iZztcblx0XHRcdGNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtaXRlbS5hY3RpdmUgLndsLWNvdW50IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXG5cdFx0Ji5pcy1hbGVydCB7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQvKiBQcmFjdGljZXM6IHRpY2sgdG8gYWRkIG9uZSBhbG9uZ3NpZGUgdGhlIG90aGVycywgY2xpY2sgdGhlIG5hbWUgdG8gc2VlIG9ubHkgaXQgKGFzIHRoZSBjYWxlbmRhcikgKi9cblx0LndsLXRpY2stcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDJweCAxMnB4O1xuXHRcdG1hcmdpbi1ib3R0b206IDFweDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdFx0fVxuXG5cdFx0LndsLWNoZWNrIHtcblx0XHRcdHdpZHRoOiAxOHB4O1xuXHRcdFx0aGVpZ2h0OiAxOHB4O1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGJvcmRlcjogMnB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRib3JkZXItcmFkaXVzOiA1cHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0Zm9udC1zaXplOiA5cHg7XG5cdFx0XHR0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZTtcblxuXHRcdFx0aSB7XG5cdFx0XHRcdG9wYWNpdHk6IDA7XG5cdFx0XHR9XG5cblx0XHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDAsIDUzLCAyMTAsIDAuMTUpO1xuXHRcdFx0fVxuXG5cdFx0XHQvKiBUaGUgbGFzdCBwcmFjdGljZSB0aWNrZWQgY2FuJ3QgYmUgdW50aWNrZWQ7IGl0IHNob3dzIGFzIHRpY2tlZCwgbm90IGFzIGdyZXllZCBvdXQgKi9cblx0XHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYuaXMtdGlja2VkIC53bC1jaGVjayB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC10aWNrLW5hbWUge1xuXHRcdFx0ZmxleDogMTtcblx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdHBhZGRpbmc6IDZweCAwO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zNTtcblx0XHRcdG92ZXJmbG93LXdyYXA6IGFueXdoZXJlO1xuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmlzLXRpY2tlZCAud2wtdGljay1uYW1lIHtcblx0XHRcdGNvbG9yOiAjNGE1NTY4O1xuXHRcdH1cblx0fVxuXG5cdC5zZXR0aW5ncy1uYXYtZm9vdGVyIC53bC1uZXctYnRuIHtcblx0XHRtYXgtd2lkdGg6IG5vbmU7XG5cdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHRwYWRkaW5nOiA3cHggMTRweDtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiA1cHg7XG5cdFx0fVxuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFRvb2xiYXIgYWJvdmUgdGhlIGxpc3Rcblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQud2wtdG9vbGJhciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMThweCAyNHB4IDE0cHg7XG5cdH1cblxuXHQud2wtdGl0bGUge1xuXHRcdG1hcmdpbjogMDtcblx0XHRmb250LWZhbWlseTogJ0dvcmRpdGEgQm9sZCcsIHNhbnMtc2VyaWY7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC53bC10b3RhbCB7XG5cdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0fVxuXG5cdC53bC1zcGFjZXIge1xuXHRcdGZsZXg6IDE7XG5cdH1cblxuXHQud2wtbG9hZGluZy1tb3JlIHtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHR9XG5cblx0LyogQSBzZWFyY2ggb24gYSBsaW5lIG9mIGl0cyBvd24gYmVsb3cgdGhlIHRpdGxlOiB0aGUgYnJlYWsgdGFrZXMgdGhlIHJlc3Qgb2YgdGhlIHRpdGxlJ3MgbGluZSAqL1xuXHQud2wtYnJlYWsge1xuXHRcdGZsZXgtYmFzaXM6IDEwMCU7XG5cdFx0aGVpZ2h0OiAwO1xuXHR9XG5cblx0LndsLXNlYXJjaC53bC1zZWFyY2gtdW5kZXIge1xuXHRcdHdpZHRoOiA0MjBweDtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdH1cblxuXHQud2wtc2VhcmNoIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDI4MHB4O1xuXG5cdFx0PiBpIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdGxlZnQ6IDExcHg7XG5cdFx0XHR0b3A6IDUwJTtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGNvbG9yOiAjYTNhYWMwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0XHRwYWRkaW5nLWxlZnQ6IDMxcHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAyOHB4O1xuXHRcdH1cblxuXHRcdC53bC1zZWFyY2gtY2xlYXIge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0cmlnaHQ6IDZweDtcblx0XHRcdHRvcDogNTAlO1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0d2lkdGg6IDIycHg7XG5cdFx0XHRoZWlnaHQ6IDIycHg7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdFx0Y29sb3I6ICNhM2FhYzA7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LmZvcm0tY29udHJvbC53bC1zZWxlY3Qge1xuXHRcdHdpZHRoOiAxNzBweDtcblx0XHRoZWlnaHQ6IDM0cHg7XG5cdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0cGFkZGluZy1ib3R0b206IDA7XG5cdH1cblxuXHQvKiBBcyB0aGUgY2FsZW5kYXIncyB0b29sYmFyIGJ1dHRvbnMgKi9cblx0LmNhbC1idG4ge1xuXHRcdGhlaWdodDogMzRweDtcblx0XHRwYWRkaW5nOiAwIDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlO1xuXG5cdFx0LmZhIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0fVxuXHR9XG5cblx0LmNhbC1pY29uLWJ0biB7XG5cdFx0d2lkdGg6IDM0cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBXaGF0IGp1c3QgaGFwcGVuZWQsIGJldHdlZW4gdGhlIHRvb2xiYXIgYW5kIHRoZSBsaXN0IC0gd2l0aCBVbmRvIHdoZXJlIGl0IGNhbiBiZSAqL1xuXHQuc2V0dGluZ3Mtbm90aWNlLndsLW5vdGljZSB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRtYXJnaW46IDAgMjRweCAxMnB4O1xuXHRcdHBhZGRpbmc6IDEwcHggMTRweDtcblxuXHRcdC5ub3RpY2UtdGV4dCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC5pbnYtbGluay1idG4ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0fVxuXG5cdFx0Lm5vdGljZS1kaXNtaXNzIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Ym9yZGVyOiBub25lO1xuXHRcdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRcdHBhZGRpbmc6IDAgMnB4O1xuXHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHRvcGFjaXR5OiAwLjY7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdFx0Y29sb3I6IGluaGVyaXQ7XG5cdFx0XHR9XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB0b29sYmFyIHNpdHMgYWJvdmUsIHNvIHRoZSBib2R5J3Mgb3duIHRvcCBwYWRkaW5nIHdvdWxkIGRvdWJsZSB0aGUgZ2FwICovXG5cdC5zZXR0aW5ncy1wYW5lLWJvZHkud2wtYm9keSB7XG5cdFx0cGFkZGluZzogMCAyNHB4IDI0cHg7XG5cdH1cblxuXHQud2wtcmV0cnkge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0XHRwYWRkaW5nOiA2cHggMjJweDtcblx0fVxuXG5cdC53bC1tdXRlZCB7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFRoZSBsaXN0XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuXHQvKiBDb2x1bW4gaGVhZGluZ3MgdGhhdCBzb3J0OiB0aGUgaGVhZGluZydzIG93biBsb29rLCBhcyBhIGJ1dHRvbiAqL1xuXHQud2wtc29ydCB7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRmb250OiBpbmhlcml0O1xuXHRcdGxldHRlci1zcGFjaW5nOiBpbmhlcml0O1xuXHRcdHRleHQtdHJhbnNmb3JtOiBpbmhlcml0O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHQuZmEge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDNweDtcblx0XHR9XG5cblx0XHQud2wtc29ydC1pZGxlIHtcblx0XHRcdG9wYWNpdHk6IDAuMzU7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblxuXHRcdFx0LndsLXNvcnQtaWRsZSB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuODtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud2wtdGFibGUge1xuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdFx0fVxuXG5cdFx0LndsLWNvbC1kYXRlIHtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRcdC5pbnYtc3RhdHVzIHtcblx0XHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC1jb2wtZXllIHtcblx0XHRcdHdpZHRoOiA1NnB4O1xuXHRcdH1cblxuXHRcdC53bC1jb2wtcHJvZ3Jlc3MsXG5cdFx0LndsLWNvbC1wcmVhcHByb3ZhbCB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC53bC1jb2wtcHJlYXBwcm92YWwge1xuXHRcdFx0d2lkdGg6IDElO1xuXHRcdH1cblxuXHRcdC8qIFJvd3MgYXJlIG5vdCBvcGVuZWQgYW55IG1vcmUgLSBldmVyeXRoaW5nIGlzIGNoYW5nZWQgb24gdGhlbSAqL1xuXHRcdD4gdGJvZHkgPiB0ciA+IHRoLFxuXHRcdD4gdGJvZHkgPiB0ciA+IHRkIHtcblx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHR9XG5cblx0XHQud2wtY29sLWJvb2sge1xuXHRcdFx0d2lkdGg6IDElO1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQvKiBBIGJsb2NrIHBlciBwYXRpZW50OiBubyBsaW5lcyBiZXR3ZWVuIGl0cyBleWVzIGFuZCBjb21tZW50cywgYSBsaW5lIGJldHdlZW4gcGF0aWVudHMgKi9cblx0XHQ+IHRib2R5LndsLWdyb3VwIHtcblx0XHRcdD4gdHIgPiB0aCxcblx0XHRcdD4gdHIgPiB0ZCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA1cHg7XG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiA1cHg7XG5cdFx0XHRcdGJvcmRlci10b3A6IG5vbmU7XG5cdFx0XHRcdGJvcmRlci1ib3R0b206IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdD4gdHI6Zmlyc3QtY2hpbGQgPiB0aCxcblx0XHRcdD4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCB7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiAxMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQ+IHRyOmxhc3QtY2hpbGQgPiB0ZCB7XG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiAxMnB4O1xuXHRcdFx0fVxuXG5cdFx0XHQ+IHRyID4gLndsLWNvbC1wYXRpZW50IHtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDEycHg7XG5cdFx0XHR9XG5cblx0XHRcdC8qIFRoZSBwYXRpZW50J3MgbGFzdCBleWUganVzdCBkb25lIChvciB0aGUgcGF0aWVudCByZW9wZW5lZCk6IGl0IGZhZGVzIGJlZm9yZSBtb3ZpbmcgbGlzdCAqL1xuXHRcdFx0Ji5pcy1zZXR0bGluZyB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNTtcblx0XHRcdFx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UgMC4ycztcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBCZXR3ZWVuIG9uZSBwYXRpZW50IGFuZCB0aGUgbmV4dDogYSBmaXJtZXIgbGluZSB0aGFuIHRoZSBoYWlybGluZSBiZXR3ZWVuIGEgcGF0aWVudCdzIG93biBlbnRyaWVzICovXG5cdFx0PiB0Ym9keS53bC1ncm91cCArIHRib2R5LndsLWdyb3VwID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCxcblx0XHQ+IHRib2R5LndsLWdyb3VwICsgdGJvZHkud2wtZ3JvdXAgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHtcblx0XHRcdGJvcmRlci10b3A6IDJweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBwYXRpZW50J3MgZXllcyBhbmQgdGhlaXIgY29tbWVudHMsIGJyYWNrZXRlZCB0b2dldGhlciBkb3duIHRoZSBleWUgY29sdW1uIC0gZWFjaCBleWUncyBjZWxsXG5cdFx0ICAgc3BhbnMgaXRzIGNvbW1lbnRzICovXG5cdFx0PiB0Ym9keSA+IHRyLndsLWV5ZS1saW5lID4gdGQud2wtY29sLWV5ZSB7XG5cdFx0XHRib3gtc2hhZG93OiBpbnNldCAycHggMCAwICRuYXZ5LXBhbGU7XG5cdFx0fVxuXG5cdFx0LyogQSBoYWlybGluZSBiZXR3ZWVuIG9uZSBvZiB0aGUgcGF0aWVudCdzIGVudHJpZXMgYW5kIHRoZSBuZXh0IC0gZnJvbSB0aGUgZXllIGNvbHVtbiBvbiwgYXMgdGhlXG5cdFx0ICAgcGF0aWVudCdzIG93biBjZWxsIHNwYW5zIHRoZW0gYWxsICovXG5cdFx0PiB0Ym9keS53bC1ncm91cCA+IHRyLndsLWVudHJ5LXN0YXJ0ID4gdGQge1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IGRhc2hlZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0fVxuXG5cdFx0LyogQW4gZXllIGp1c3QgY29tcGxldGVkLCB3aGlsZSB0aGUgcGF0aWVudCdzIG90aGVycyB3YWl0OiBpdCBmYWRlcyBiZWZvcmUgaXQgbGVhdmVzIHRoZSBibG9jayAqL1xuXHRcdD4gdGJvZHkgPiB0ci5pcy1zZXR0bGluZyA+IHRkIHtcblx0XHRcdG9wYWNpdHk6IDAuNDU7XG5cdFx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnMgZWFzZSAwLjJzO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBsYXN0IGNvbHVtbiBjbGVhciBvZiB0aGUgdGFibGUncyByaWdodCBlZGdlLCBob3dldmVyIGxvbmcgd2hhdCBpcyBpbiBpdCAqL1xuXHRcdD4gdGhlYWQgPiB0ciA+IHRoOmxhc3QtY2hpbGQsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQud2wtY29sLXByb2dyZXNzIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDI0cHg7XG5cdFx0fVxuXG5cdFx0LyogVGhlIHN1cmdlb24sIGNoYW5nZWQgaW4gcGxhY2UgKi9cblx0XHQud2wtY29sLXN1cmdlb24gLndsLWNoaXAtc2VsZWN0IHNlbGVjdCB7XG5cdFx0XHRtYXgtd2lkdGg6IDE3MHB4O1xuXHRcdH1cblxuXHRcdC8qIFRoZSByb3cgbmFtZSBpcyB0aGUgcGF0aWVudDsgYSBsb25nIG9uZSB3cmFwcyByYXRoZXIgdGhhbiB3aWRlbmluZyB0aGUgY29sdW1uICovXG5cdFx0Lmludi1yb3ctbGluayB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm9ybWFsO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSB0YXNrIGxpc3Q6IGEgY2VudHJlZCBjb2x1bW4gb2YgY29tcGFjdCBjYXJkcywgZWFjaCB3aXRoIGV2ZXJ5dGhpbmcgYWJvdXQgdGhlIHRhc2sgb24gaXQgYW5kXG5cdCAgIGNoYW5nZWQgdGhlcmUuIExpZ2h0OiBhIGhhaXJsaW5lIGJvcmRlciwgdGhlIGxhYmVsJ3MgY29sb3VyIGRvd24gdGhlIGxlZnQgZWRnZS4gKi9cblx0LndsLWNhcmRzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWF4LXdpZHRoOiA4MjBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdH1cblxuXHQud2wtY2FyZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEwcHg7XG5cdFx0cGFkZGluZzogMTBweCAxMnB4IDlweCAxNnB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItbGVmdDogM3B4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZSwgb3BhY2l0eSAwLjZzIGVhc2UgMC4ycztcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0Ym9yZGVyLXRvcC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJvcmRlci1yaWdodC1jb2xvcjogJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJvcmRlci1ib3R0b20tY29sb3I6ICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggJG5hdnktdHAtMDU7XG5cdFx0fVxuXG5cdFx0LyogSnVzdCBjb21wbGV0ZWQgb3IgcmVvcGVuZWQ6IHRoZSBidXR0b24gc2hvd3MgaXQgd29ya2VkLCBhbmQgdGhlIGNhcmQgZmFkZXMgYmVmb3JlIGl0IG1vdmVzIHRhYiAqL1xuXHRcdCYuaXMtc2V0dGxpbmcge1xuXHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdH1cblxuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHQuaW52LXJvdy1saW5rIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0XHR9XG5cblx0XHRcdC53bC1jYXJkLWRlc2MtdGV4dCB7XG5cdFx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud2wtY2FyZC1ib2R5IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0fVxuXG5cdC53bC1jYXJkLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHggOHB4O1xuXHR9XG5cblx0LyogVGhlIHBhdGllbnQsIHdpdGggd2hlbiB0aGUgdGFzayBpcyBkdWUgYmVzaWRlIHRoZW0gKi9cblx0LndsLWNhcmQtd2hvIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4IDEwcHg7XG5cdFx0ZmxleDogMSAxIDE2MHB4O1xuXHRcdG1pbi13aWR0aDogMDtcblxuXHRcdC8qIEEgbG9uZyBuYW1lIHdyYXBzIHJhdGhlciB0aGFuIHB1c2hpbmcgdGhlIHBpY2tlcnMgYXdheSAqL1xuXHRcdC5pbnYtcm93LWxpbmsge1xuXHRcdFx0Zm9udC1zaXplOiAxMy41cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogMS4zNTtcblx0XHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdFx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0XHR9XG5cdH1cblxuXHQud2wtY2FyZC1zdWIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDFweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbm9ybWFsO1xuXHR9XG5cblx0LyogQSBsYWJlbCBvciBhc3NpZ25lZSBwaWNrZXIsIGRyZXNzZWQgYXMgYSBjaGlwOiB0aGUgc2VsZWN0IGl0c2VsZiwgd2l0aG91dCBpdHMgb3duIGJveCAqL1xuXHQud2wtY2hpcC1zZWxlY3Qge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXHRcdGhlaWdodDogMjRweDtcblx0XHRwYWRkaW5nOiAwIDhweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogOTk5cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGxpZ2h0R3JleTtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcblxuXHRcdC8qIFRoZSBjaGlwIGdyb3dzIHdpdGggd2hhdCBpdCBob2xkczsgdGhlIG5hbWUgaXRzZWxmIG5ldmVyIHNxdWVlemVzIHRvIG5vdGhpbmcgKi9cblx0XHRzZWxlY3Qge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDE5MHB4O1xuXHRcdFx0cGFkZGluZzogMCAxNHB4IDAgMDtcblx0XHRcdG1hcmdpbi1yaWdodDogLTE0cHg7XG5cdFx0XHRib3JkZXI6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0XHRcdGNvbG9yOiBpbmhlcml0O1xuXHRcdFx0Zm9udDogaW5oZXJpdDtcblx0XHRcdHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuXHRcdFx0LW1vei1hcHBlYXJhbmNlOiBub25lO1xuXHRcdFx0YXBwZWFyYW5jZTogbm9uZTtcblxuXHRcdFx0Jjpmb2N1cyB7XG5cdFx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0PiAuZmEge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cblx0XHRcdCYuaXMtc2F2ZWQge1xuXHRcdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtY2hpcC1pY29uIHtcblx0XHRcdGZvbnQtc2l6ZTogMTAuNXB4O1xuXHRcdH1cblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy13aXRoaW4ge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQmLmlzLW1lIHtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQvKiBDaGFuZ2VkLCBhbmQgd2FpdGluZyBmb3IgU2F2ZSAqL1xuXHRcdCYuaXMtY2hhbmdlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdC8qIE5vdGhpbmcgY2hvc2VuIC0gYSBuZXcgcHJhY3RpY2Ugd2FudHMgYSBwZXJzb24gb3IgbGFiZWwgdGhlcmUgLSBhbmQgU2F2ZSB3YWl0cyBmb3Igb25lICovXG5cdFx0Ji5pcy1wZW5kaW5nIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIFJvdyB0d28gb2YgYSB0YXNrIGNhcmQ6IGl0cyBwaWNrZXJzLCBvbiBhIGxpbmUgb2YgdGhlaXIgb3duLCBhbmQgU2F2ZSBvbmNlIG9uZSBoYXMgY2hhbmdlZCAqL1xuXHQud2wtY2FyZC1maWVsZHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA1cHggNnB4O1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblxuXHRcdC53bC1pbmxpbmUtc2F2ZWQge1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0XHR9XG5cdH1cblxuXHQvKiBXaGVuIGl0IGlzIGR1ZSwgYmVzaWRlIHRoZSBwYXRpZW50LCB3aXRoIE92ZXJkdWUgb3IgRHVlIHNvb24gYWZ0ZXIgaXQgKi9cblx0LndsLWNhcmQtZHVlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNXB4O1xuXG5cdFx0Lmludi1zdGF0dXMge1xuXHRcdFx0cGFkZGluZzogMCA3cHg7XG5cdFx0XHRmb250LXNpemU6IDEwLjVweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZHVlIGRhdGU6IGEgY2hpcCB0aGF0IG9wZW5zIHRoZSBicm93c2VyJ3MgZGF0ZSBwaWNrZXIsIGFzIHRoZSB3YWl0bGlzdCdzIHN1cmdlcnkgZGF0ZSBidXR0b24gZG9lcyAqL1xuXHQud2wtZHVlLXBpY2sge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblxuXHRcdC8qIFVuZGVyIHRoZSBidXR0b24sIHNvIHRoZSBwaWNrZXIgb3BlbnMgYmVzaWRlIGl0OyBuZXZlciBzZWVuIG9yIGNsaWNrZWQgaXRzZWxmICovXG5cdFx0aW5wdXRbdHlwZT1cImRhdGVcIl0ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAwO1xuXHRcdFx0bGVmdDogMDtcblx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0aGVpZ2h0OiAxMDAlO1xuXHRcdFx0b3BhY2l0eTogMDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdC8qIEEgYnJvd3NlciB0aGF0IGNhbid0IG9wZW4gdGhlIHBpY2tlciBmcm9tIHRoZSBidXR0b24gZ2V0cyB0aGUgZGF0ZSBpbnB1dCBpdHNlbGYgKi9cblx0XHQmLmlzLXR5cGluZyB7XG5cdFx0XHQud2wtZHVlLWJ0biB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcblx0XHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRcdGhlaWdodDogMjRweDtcblx0XHRcdFx0cGFkZGluZzogMCA4cHg7XG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA5OTlweDtcblx0XHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53bC1kdWUtYnRuIHtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdH1cblxuXHRcdCYuaXMtb3ZlcmR1ZSB7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cdFx0fVxuXHR9XG5cblx0LndsLWZpZWxkLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA0cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IDJweDtcblx0XHRhbmltYXRpb246IHdsLWZhZGUtaW4gMC4xMnMgZWFzZTtcblxuXHRcdGJ1dHRvbiB7XG5cdFx0XHRtaW4taGVpZ2h0OiAyNHB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQud2wtZmllbGQtY2FuY2VsIHtcblx0XHRcdHdpZHRoOiAyNHB4O1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1tZWRpdW07XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0XHRjb2xvcjogJHRleHRHcmV5O1xuXG5cdFx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtZmllbGQtc2F2ZSB7XG5cdFx0XHRwYWRkaW5nOiAycHggMTJweDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnk7XG5cdFx0XHRjb2xvcjogJHdoaXRlO1xuXG5cdFx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRuYXZ5IHNoYWRlKDE1JSkpO1xuXHRcdFx0fVxuXG5cdFx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQud2wtY2FyZC1kZWxldGUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdH1cblxuXHQvKiBBIHByYWN0aWNlLCBpbiB0aGUgY29sb3VyIGl0IGhhcyBvbiB0aGUgY2FsZW5kYXIgKi9cblx0LndsLXByYWN0aWNlLXRhZyB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC53bC1jb2wtcGF0aWVudCAud2wtcHJhY3RpY2UtdGFnIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0fVxuXG5cdC53bC1wcmFjdGljZS1kb3Qge1xuXHRcdHdpZHRoOiA4cHg7XG5cdFx0aGVpZ2h0OiA4cHg7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHR9XG5cblx0LndsLWljb24tYnRuIHtcblx0XHR3aWR0aDogMjZweDtcblx0XHRoZWlnaHQ6IDI2cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQud2wtY29uZmlybSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDVweDtcblx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXG5cdFx0YnV0dG9uIHtcblx0XHRcdHBhZGRpbmc6IDJweCA5cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXG5cdFx0LndsLWNvbmZpcm0tbm8ge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0fVxuXG5cdFx0LndsLWNvbmZpcm0teWVzIHtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRub3RpY2UtZXJyb3I7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgZGVzY3JpcHRpb24sIGFzIHdyaXR0ZW4gLSBhIGNsaWNrIGF3YXkgZnJvbSBiZWluZyBjaGFuZ2VkLiBTYW1lIG1ldHJpY3MgYXMgaXRzIGVkaXRvciwgc28gdGhlXG5cdCAgIHRleHQgZG9lcyBub3QgbW92ZSB3aGVuIGl0IGJlY29tZXMgYSBib3ggdG8gd3JpdGUgaW4uICovXG5cdC53bC1jYXJkLWRlc2Mge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi1sZWZ0OiAtOXB4O1xuXHRcdHBhZGRpbmc6IDNweCA4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y3Vyc29yOiB0ZXh0O1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXG5cdFx0XHQud2wtaW5saW5lLXBlbmNpbCB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQmLmlzLWVtcHR5IC53bC1jYXJkLWRlc2MtdGV4dCB7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRmb250LXN0eWxlOiBpdGFsaWM7XG5cdFx0fVxuXHR9XG5cblx0LndsLWNhcmQtZGVzYy10ZXh0IHtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi13aWR0aDogMDtcblx0XHR3aGl0ZS1zcGFjZTogcHJlLWxpbmU7XG5cdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdH1cblxuXHQud2wtZGVzYy1lZGl0b3Ige1xuXHRcdG1hcmdpbi1sZWZ0OiAtOXB4O1xuXG5cdFx0dGV4dGFyZWEge1xuXHRcdFx0cGFkZGluZzogM3B4IDhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6IDZweDtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFJvdyB0d286IHRoZSBkZXNjcmlwdGlvbiwgd2l0aCB3aGVuIGFuZCBieSB3aG9tIHRoZSB0YXNrIHdhcyByYWlzZWQgcXVpZXRseSBiZXNpZGUgaXQgKi9cblx0LndsLWNhcmQtbGluZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0Z2FwOiA0cHggMTJweDtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cblx0XHQud2wtY2FyZC1kZXNjLFxuXHRcdC53bC1kZXNjLWVkaXRvciB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdH1cblxuXHRcdC53bC1jYXJkLWZvb3Qge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXgtd2lkdGg6IDQ1JTtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC53bC1jYXJkLWZvb3Qge1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRsaW5lLWhlaWdodDogMS40NTtcblx0fVxuXG5cdC8qIEVhY2ggcGhyYXNlIGtlZXBzIHRvZ2V0aGVyLCBhbmQgb25seSBicmVha3MgaXRzZWxmIHdoZW4gaXQgaXMgbG9uZ2VyIHRoYW4gYSB3aG9sZSBsaW5lICovXG5cdC53bC1mb290LXBhcnQge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdH1cblxuXHQvKiBXcml0aW5nIGluIHBsYWNlIC0gYSB3YWl0bGlzdCBjb21tZW50IG9yIGEgdGFzayBkZXNjcmlwdGlvbi4gVGhlIGJveCBrZWVwcyB0aGUgcmVhZCBzdGF0ZSdzIHBhZGRpbmcsXG5cdCAgIGZvbnQgYW5kIGNvcm5lcnMsIGdyb3dzIHdpdGggdGhlIHRleHQsIGFuZCBpdHMgYnV0dG9ucyBmYWRlIGluIHNtYWxsIGJlbmVhdGggaXQuICovXG5cdC53bC1pbmxpbmUtcGVuY2lsIHtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTtcblx0fVxuXG5cdC53bC1pbmxpbmUtc2F2ZWQge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuXHRcdC5mYSB7XG5cdFx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHR9XG5cdH1cblxuXHQvKiBuZ0FuaW1hdGUga2VlcHMgYW4gbmctaWYncyBvdXRnb2luZyBlbGVtZW50IG9uIHRoZSBwYWdlIGZvciBhcyBsb25nIGFzIGl0cyB0cmFuc2l0aW9ucyBydW4sIHNvIHRoZVxuXHQgICByZWFkIGFuZCB3cml0ZSBzdGF0ZXMgd291bGQgc2hvdyB0b2dldGhlciBmb3IgYSBtb21lbnQuIEhlcmUgdGhleSBzd2FwIGF0IG9uY2UuICFpbXBvcnRhbnQgYmVjYXVzZVxuXHQgICBpdCBoYXMgdG8gYmVhdCBlYWNoIGVsZW1lbnQncyBvd24gdHJhbnNpdGlvbiwgd2hhdGV2ZXIgaXQgaXMuICovXG5cdC53bC1yb3ctY29tbWVudCxcblx0LndsLWNhcmQtZGVzYyxcblx0LndsLWlubGluZS1lZGl0b3Ige1xuXHRcdCYubmctZW50ZXIsXG5cdFx0Ji5uZy1sZWF2ZSB7XG5cdFx0XHR0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0XHRhbmltYXRpb246IG5vbmUgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cblxuXHQvKiBBIGRlc2NyaXB0aW9uIG9yIGNvbW1lbnQgc2hvd3MgZml2ZSBsaW5lcyBhdCBtb3N0LCBhbmQgc2Nyb2xscyBmb3IgdGhlIHJlc3QuIEl0cyBlZGl0b3IgZ3Jvd3Mgd2l0aFxuXHQgICB0aGUgdGV4dCB0byB0d2VsdmUgbGluZXMsIGFuZCB0aGVuIHNjcm9sbHMgdG9vLiAqL1xuXHQud2wtY2FyZC1kZXNjLXRleHQsXG5cdC53bC1yb3ctY29tbWVudC10ZXh0IHtcblx0XHRtYXgtaGVpZ2h0OiA3LjVlbTtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHR9XG5cblx0LndsLWlubGluZS1lZGl0b3Ige1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRtYXgtd2lkdGg6IDExMGNoO1xuXG5cdFx0dGV4dGFyZWEge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHQvKiBTaXplZCB0byBpdHMgdGV4dCBieSB0aGUgYnJvd3Nlciwgd2hlcmUgaXQgY2FuOyBlbHNld2hlcmUgdGhlIGNvbnRyb2xsZXIgbWVhc3VyZXMgaXQgKi9cblx0XHRcdGZpZWxkLXNpemluZzogY29udGVudDtcblx0XHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0XHRtYXgtaGVpZ2h0OiBjYWxjKDE4ZW0gKyAxNHB4KTtcblx0XHRcdG92ZXJmbG93LXg6IGhpZGRlbjtcblx0XHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IGNvbG9yKCRuYXZ5IGFscGhhKDEwJSkpO1xuXHRcdFx0cmVzaXplOiBub25lO1xuXG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4IGNvbG9yKCRuYXZ5IGFscGhhKDE0JSkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC53bC1pbmxpbmUtYWN0aW9ucyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IDVweDtcblx0XHRhbmltYXRpb246IHdsLWZhZGUtaW4gMC4xMnMgZWFzZTtcblxuXHRcdC53bC1jb3VudGVyIHtcblx0XHRcdG1hcmdpbjogMCBhdXRvIDAgMDtcblx0XHR9XG5cblx0XHRidXR0b24ge1xuXHRcdFx0bWluLWhlaWdodDogMjRweDtcblx0XHRcdHBhZGRpbmc6IDJweCAxMnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQud2wtaW5saW5lLWNhbmNlbCB7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblxuXHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQud2wtaW5saW5lLXNhdmUge1xuXHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cblx0XHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJG5hdnkgc2hhZGUoMTUlKSk7XG5cdFx0XHR9XG5cblx0XHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdFx0b3BhY2l0eTogMC41O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBjYXJkJ3MgbWFpbiBhY3Rpb24sIG9uIGl0cyByaWdodDogdGhlIHdhaXRsaXN0J3Mgc3VyZ2VyeSBjb21wbGV0ZWQgYnV0dG9uLCBhIGxpdHRsZSBzbWFsbGVyICovXG5cdC53bC1jYXJkLWFjdGlvbiB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cblx0XHQud2wtcmVvcGVuIHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xuXHRcdH1cblx0fVxuXG5cdC53bC1jb21wbGV0ZS1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWluLXdpZHRoOiAxMDhweDtcblx0XHRtaW4taGVpZ2h0OiAzMHB4O1xuXHRcdHBhZGRpbmc6IDRweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRmb3Jlc3QtZ3JlZW4gYWxwaGEoNTUlKSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRib3gtc2hhZG93OiAwIDFweCAycHggJG5hdnktdHAtMDU7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJvcmRlci1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgxMCUpKTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCBjb2xvcigkZm9yZXN0LWdyZWVuIGFscGhhKDE1JSkpO1xuXHRcdH1cblxuXHRcdCY6YWN0aXZlOm5vdChbZGlzYWJsZWRdKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkZ3JlZW4gYWxwaGEoMTglKSk7XG5cdFx0fVxuXG5cdFx0JltkaXNhYmxlZF0ge1xuXHRcdFx0Y3Vyc29yOiBwcm9ncmVzcztcblx0XHR9XG5cblx0XHQvKiBTYXZlZDogaXQgZmlsbHMsIGJyaWVmbHksIGJlZm9yZSB0aGUgY2FyZCBtb3ZlcyAqL1xuXHRcdCYuaXMtZG9uZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRmb3Jlc3QtZ3JlZW47XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQvKiBBIHRhc2sgbGFiZWw6IGl0cyBvd24gY29sb3VyIGFzIGEgZG90LCBzbyBhbnkgY29sb3VyIHJlYWRzIG9uIHRoZSBwYWxlIHBpbGwgKi9cblx0LndsLWxhYmVsIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1heC13aWR0aDogMTgwcHg7XG5cdFx0cGFkZGluZzogMnB4IDEwcHggMnB4IDhweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cdH1cblxuXHQud2wtbGFiZWwtZG90IHtcblx0XHR3aWR0aDogOXB4O1xuXHRcdGhlaWdodDogOXB4O1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcblx0fVxuXG5cdC53bC1tZSB7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0fVxuXG5cdC53bC1uaGkge1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAzZW07XG5cdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0fVxuXG5cdC53bC1leWUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRwYWRkaW5nOiAycHggN3B4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblxuXHRcdC8qIFJpZ2h0IGV5ZSByZWQsIGxlZnQgZXllIGJsdWUsIHNvIHdoaWNoIGlzIHdoaWNoIGlzIHNlZW4gYXQgYSBnbGFuY2UgKi9cblx0XHQmLmlzLW9kIHtcblx0XHRcdGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDFweCBjb2xvcigkZXllLW9kIGFscGhhKDMwJSkpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGV5ZS1vZC1wYWxlO1xuXHRcdFx0Y29sb3I6ICRleWUtb2Q7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vcyB7XG5cdFx0XHRib3gtc2hhZG93OiBpbnNldCAwIDAgMCAxcHggY29sb3IoJGV5ZS1vcyBhbHBoYSgzMCUpKTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRleWUtb3MtcGFsZTtcblx0XHRcdGNvbG9yOiAkZXllLW9zO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBjb21tZW50cywgYXMgd3JpdHRlbiwgYWNyb3NzIHRoZSByb3cncyB3aWR0aCAtIGEgY2xpY2sgYXdheSBmcm9tIGJlaW5nIGNoYW5nZWQuIFNhbWUgbWV0cmljcyBhc1xuXHQgICB0aGUgZWRpdG9yIGJlbG93LCBpY29uIGluY2x1ZGVkLCBzbyB0aGUgdGV4dCBkb2VzIG5vdCBtb3ZlIHdoZW4gaXQgYmVjb21lcyBhIGJveCB0byB3cml0ZSBpbi4gKi9cblx0LndsLXJvdy1jb21tZW50IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDdweDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXgtd2lkdGg6IDExMGNoO1xuXHRcdHBhZGRpbmc6IDZweCAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRsaWdodEdyZXk7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y3Vyc29yOiB0ZXh0O1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQ+IC5mYTpmaXJzdC1jaGlsZCB7XG5cdFx0XHR3aWR0aDogMTJweDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHQmOmhvdmVyLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG5cdFx0XHQud2wtaW5saW5lLXBlbmNpbCB7XG5cdFx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvKiBBbiBlbnRyeSB3aXRoIGV2ZXJ5IGV5ZSBkb25lOiBpdHMgY29tbWVudHMgYXJlIHJlYWQsIG5vdCBjaGFuZ2VkICovXG5cdFx0Ji5pcy1yZWFkb25seSB7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbGlnaHRHcmV5O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8qIE5vIGNvbW1lbnQgeWV0OiBqdXN0IGEgcXVpZXQgd2F5IHRvIGFkZCBvbmUgKi9cblx0XHQmLmlzLWVtcHR5IHtcblx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0cGFkZGluZzogMnB4IDEwcHg7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblxuXHRcdFx0PiAuZmE6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRmb250LXNpemU6IDEwcHg7XG5cdFx0XHR9XG5cblx0XHRcdCY6aG92ZXIsXG5cdFx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRcdFx0LmZhIHtcblx0XHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgd2lkdGggb2YgdGhlIGJveCwgc28gYSBsb25nIGNvbW1lbnQncyBzY3JvbGxiYXIgaXMgYXQgaXRzIGVkZ2UsIG5vdCBiZXNpZGUgdGhlIHRleHQgKi9cblx0LndsLXJvdy1jb21tZW50LXRleHQge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdHdoaXRlLXNwYWNlOiBwcmUtbGluZTtcblx0XHRvdmVyZmxvdy13cmFwOiBhbnl3aGVyZTtcblx0fVxuXG5cdC53bC1jb21tZW50LWVkaXRvciB7XG5cdFx0dGV4dGFyZWEge1xuXHRcdFx0cGFkZGluZzogNnB4IDEwcHggNnB4IDI5cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdH1cblxuXHRcdC8qIFdoZXJlIHRoZSByZWFkIHN0YXRlJ3MgaWNvbiB3YXMgKi9cblx0XHQud2wtZWRpdG9yLWljb24ge1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0dG9wOiAxMHB4O1xuXHRcdFx0bGVmdDogMTFweDtcblx0XHRcdHotaW5kZXg6IDE7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBjb21wbGV0ZSBidXR0b25zIC0gYSB0YXNrJ3MgQ29tcGxldGUsIGFuIGV5ZSdzIFN1cmdlcnkgY29tcGxldGVkIC0gcmV3YXJkIHRoZSBjbGljazogYSBzb2Z0IGdyZWVuXG5cdCAgIHNoaW5lIGNyb3NzZXMgdGhlbSBvbiBob3ZlciwgYW5kIG9uY2Ugc2F2ZWQgdGhleSBmaWxsIGdyZWVuLCBhIHdoaXRlIHNoaW5lIHN3ZWVwcyBhY3Jvc3MsIGFuZCB0aGVcblx0ICAgdGljayBwb3BzLiBTdGlsbCBmb3IgYW55b25lIHdobyBoYXMgYXNrZWQgZm9yIGxlc3MgbW90aW9uLiAqL1xuXHQud2wtY29tcGxldGUtYnRuLFxuXHQud2wtc3VyZ2VyeS1idG4ge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMzVzIGVhc2UsIGNvbG9yIDAuMzVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdCY6OmFmdGVyIHtcblx0XHRcdGNvbnRlbnQ6IFwiXCI7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAtNzAlO1xuXHRcdFx0d2lkdGg6IDQ1JTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHRcdGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgxMDBkZWcsIHRyYW5zcGFyZW50IDAlLCBjb2xvcigkZ3JlZW4gYWxwaGEoMjglKSkgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTtcblx0XHRcdHRyYW5zZm9ybTogc2tld1goLTIwZGVnKTtcblx0XHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pOjphZnRlciB7XG5cdFx0XHRhbmltYXRpb246IHdsLXNoaW5lIDAuOHMgZWFzZTtcblx0XHR9XG5cblx0XHQmLmlzLWRvbmUge1xuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoMTAwZGVnLCB0cmFuc3BhcmVudCAwJSwgY29sb3IoJHdoaXRlIGFscGhhKDY1JSkpIDUwJSwgdHJhbnNwYXJlbnQgMTAwJSk7XG5cdFx0XHRcdGFuaW1hdGlvbjogd2wtc2hpbmUgMC42cyBlYXNlIDAuMXM7XG5cdFx0XHR9XG5cblx0XHRcdD4gaSB7XG5cdFx0XHRcdGFuaW1hdGlvbjogd2wtcG9wIDAuNDVzIGN1YmljLWJlemllcigwLjM0LCAxLjU2LCAwLjY0LCAxKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkge1xuXHRcdFx0dHJhbnNpdGlvbjogbm9uZTtcblxuXHRcdFx0Jjo6YWZ0ZXIsXG5cdFx0XHQmLmlzLWRvbmU6OmFmdGVyLFxuXHRcdFx0Ji5pcy1kb25lID4gaSB7XG5cdFx0XHRcdGFuaW1hdGlvbjogbm9uZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBQcmUtYXBwcm92YWw6IHRoZSBzdXJnZXJ5IGNvbXBsZXRlZCBidXR0b24ncyBsb29rLCBzbWFsbGVyIGFuZCBoYWxmIGFzIHdpZGUsIHNvIGl0IHJlYWRzIGFzIHRoZSBsZXNzZXJcblx0ICAgc3RlcC4gSW4gdGhlIGJyYW5kIHB1cnBsZTogbm90IGRvbmUsIGFuIGVtcHR5IGNpcmNsZTsgZG9uZSwgYSB0aWNrIG9uIGEgc29mdCBwdXJwbGUgZmlsbC4gKi9cblx0LndsLXN0ZXAtYnRuIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0d2lkdGg6IDkycHg7XG5cdFx0bWluLWhlaWdodDogMjZweDtcblx0XHRwYWRkaW5nOiAzcHggOXB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRicmFuZC1wdXJwbGUgYWxwaGEoNDUlKSk7XG5cdFx0Ym9yZGVyLXJhZGl1czogNnB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJGJyYW5kLXB1cnBsZTtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0Ym94LXNoYWRvdzogMCAxcHggMnB4ICRuYXZ5LXRwLTA1O1xuXHRcdHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZSwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2U7XG5cblx0XHQmICsgLndsLXN0ZXAtYnRuIHtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHR9XG5cblx0XHQvKiBBIGNoZWNrYm94OiBhbiBlbXB0eSBzcXVhcmUsIHRpY2tlZCBvbmNlIHRoZSBzdGVwIGlzIGRvbmUgKi9cblx0XHQud2wtc3RlcC1ib3gge1xuXHRcdFx0d2lkdGg6IDEycHg7XG5cdFx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRcdFx0Ji5mYS1yZWd1bGFyIHtcblx0XHRcdFx0Y29sb3I6IGNvbG9yKCRicmFuZC1wdXJwbGUgYWxwaGEoNjUlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRicmFuZC1wdXJwbGU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkYnJhbmQtcHVycGxlIGFscGhhKDglKSk7XG5cdFx0fVxuXG5cdFx0Ji5pcy1vbiB7XG5cdFx0XHRib3JkZXItY29sb3I6IGNvbG9yKCRicmFuZC1wdXJwbGUgYWxwaGEoNjAlKSk7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvcigkYnJhbmQtcHVycGxlIGFscGhhKDEzJSkpO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGN1cnNvcjogcHJvZ3Jlc3M7XG5cdFx0fVxuXHR9XG5cblx0LyogU3VyZ2VyeSBjb21wbGV0ZWQ6IHRoZSByb3cncyBtYWluIGFjdGlvbiAtIGFuIG91dGxpbmVkIGJ1dHRvbiwgc3F1YXJlLWNvcm5lcmVkIGxpa2UgdGhlIGFwcCdzIG90aGVyXG5cdCAgIGJ1dHRvbnMgc28gaXQgcmVhZHMgYXMgc29tZXRoaW5nIHRvIHByZXNzLCBhbmQgb25seSBmaWxsZWQgd2l0aCBhIHNvZnQgdGludCB3aGVuIHBvaW50ZWQgYXQgKi9cblx0LndsLXN1cmdlcnktYnRuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogN3B4O1xuXHRcdG1pbi13aWR0aDogMTYwcHg7XG5cdFx0bWluLWhlaWdodDogMzRweDtcblx0XHRwYWRkaW5nOiA2cHggMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCBjb2xvcigkZm9yZXN0LWdyZWVuIGFscGhhKDU1JSkpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdGJveC1zaGFkb3c6IDAgMXB4IDJweCAkbmF2eS10cC0wNTtcblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogY29sb3IoJGdyZWVuIGFscGhhKDEwJSkpO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAycHggOHB4IGNvbG9yKCRmb3Jlc3QtZ3JlZW4gYWxwaGEoMTUlKSk7XG5cdFx0fVxuXG5cdFx0JjphY3RpdmU6bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGNvbG9yKCRncmVlbiBhbHBoYSgxOCUpKTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IHByb2dyZXNzO1xuXHRcdH1cblxuXHRcdC8qIFNhdmVkOiBpdCBmaWxscywgYnJpZWZseSwgYmVmb3JlIHRoZSByb3cgbW92ZXMgKi9cblx0XHQmLmlzLWRvbmUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGZvcmVzdC1ncmVlbjtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXHR9XG5cblx0LyogQ29tcGxldGVkOiB3aGVuLCBhbmQgdGhlIHdheSBiYWNrIHRvIFdhaXRpbmcgLSB3cmFwcGluZywgc28gaXQgaXMgbm8gd2lkZXIgdGhhbiB0aGUgYnV0dG9uIGl0IHJlcGxhY2VzICovXG5cdC53bC1kb25lLW9uIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNHB4IDZweDtcblx0XHRtYXgtd2lkdGg6IDE2MHB4O1xuXHRcdGNvbG9yOiAkZm9yZXN0LWdyZWVuO1xuXHRcdGZvbnQtc2l6ZTogMTNweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cdH1cblxuXHQvKiBcIlN1cmdlcnkgY29tcGxldGVkXCIsIGFuZCB0aGUgZGF0ZSBvbiBhIGxpbmUgb2YgaXRzIG93biBiZWxvdyBpdCAqL1xuXHQud2wtZG9uZS10ZXh0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAxcHg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0fVxuXG5cdC53bC1kb25lLWRhdGUge1xuXHRcdHBhZGRpbmctbGVmdDogMThweDtcblx0XHRjb2xvcjogJHRleHRHcmV5O1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0fVxuXG5cdC53bC1yZW9wZW4ge1xuXHRcdHBhZGRpbmc6IDJweCA4cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLW1lZGl1bTtcblx0XHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGNvbG9yOiAkdGV4dEdyZXk7XG5cdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cblx0XHQuZmEge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgb3RoZXIgZXllIGlzIGJvb2tlZDogYSBjb3B5IGljb24gbGVmdCBvZiB0aGUgZGF0ZSBib29rcyB0aGlzIG9uZSBmb3IgdGhlIHNhbWUgZGF5IC0gb3IsIG9uY2UgZG9uZSxcblx0ICAgYSBub3RlIHNheXMgc28uIEl0IHNpdHMgaW4gdGhlIGJvb2tpbmcncyBndXR0ZXIsIHNvIHRoZSBkYXRlIGJ1dHRvbiBuZXZlciBtb3ZlcyBmb3IgaXQuICovXG5cdC53bC1zYW1lLWRheSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogNTAlO1xuXHRcdHJpZ2h0OiAxMDAlO1xuXHRcdHdpZHRoOiAyNnB4O1xuXHRcdGhlaWdodDogMjZweDtcblx0XHRtYXJnaW4tdG9wOiAtMTNweDtcblx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogbm9uZTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdFx0YmFja2dyb3VuZDogbm9uZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdH1cblx0fVxuXG5cdC53bC1zYW1lLWRheS1ub3RlIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tdG9wOiA0cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0fVxuXG5cdC8qIEFuIGV5ZSdzIGJvb2tpbmc6IHRoZSB0d28gd2F5cyB0byBib29rIC0gdGhlIGRhdGUsIGFuZCB0aGUgY2FsZW5kYXIgLSBhcyBtYXRjaGluZyBidXR0b25zIG9mIG9uZSB3aWR0aCxcblx0ICAgd2l0aCBhIGd1dHRlciBvbiB0aGUgbGVmdCBmb3IgdGhlIHNhbWUtZGF5IGNvcHkgaWNvbiwga2VwdCB3aGV0aGVyIGl0IHNob3dzIG9yIG5vdCAqL1xuXHQud2wtYm9va2luZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogNnB4O1xuXHRcdHBhZGRpbmctbGVmdDogMzBweDtcblxuXHRcdC53bC1kYXRlLWJ0biB7XG5cdFx0XHR3aWR0aDogMTU2cHg7XG5cdFx0fVxuXHR9XG5cblx0LndsLWJvb2tpbmctZGF0ZSB7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0fVxuXG5cdC8qIEJlc2lkZSBhIGJvb2tlZCBkYXRlOiBjbGVhciBpdCAqL1xuXHQud2wtZGF0ZS1jbGVhciB7XG5cdFx0d2lkdGg6IDI2cHg7XG5cdFx0aGVpZ2h0OiAyNnB4O1xuXHRcdG1hcmdpbi1sZWZ0OiA0cHg7XG5cdFx0cGFkZGluZzogMDtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG5cblx0XHQmOmhvdmVyOm5vdChbZGlzYWJsZWRdKSxcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0b3V0bGluZTogbm9uZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0XHRjb2xvcjogJG5vdGljZS1lcnJvcjtcblx0XHR9XG5cdH1cblxuXHQud2wtdGFibGUgPiB0Ym9keSA+IHRyOmhvdmVyIC53bC1kYXRlLWNsZWFyLFxuXHQud2wtZGF0ZS1jbGVhcjpmb2N1cy12aXNpYmxlIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG5cblx0LyogVGhlIHN1cmdlcnkgZGF0ZTogYSBidXR0b24gdGhhdCBvcGVucyB0aGUgYnJvd3NlcidzIGRhdGUgcGlja2VyLiBVbmJvb2tlZCwgaXQgc3RhbmRzIG91dCBhcyB0aGUgbmV4dFxuXHQgICB0aGluZyB0byBkbzsgYm9va2VkLCBpdCByZWFkcyBhcyB0aGUgZGF0ZSwgYW5kIGlzIHN0aWxsIHRoZSB3YXkgdG8gY2hhbmdlIGl0LiAqL1xuXHQud2wtZGF0ZS1waWNrIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG5cdFx0LyogVW5kZXIgdGhlIGJ1dHRvbiwgc28gdGhlIHBpY2tlciBvcGVucyBiZXNpZGUgaXQ7IG5ldmVyIHNlZW4gb3IgY2xpY2tlZCBpdHNlbGYgKi9cblx0XHRpbnB1dFt0eXBlPVwiZGF0ZVwiXSB7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDA7XG5cdFx0XHRsZWZ0OiAwO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0XHRvcGFjaXR5OiAwO1xuXHRcdFx0cG9pbnRlci1ldmVudHM6IG5vbmU7XG5cdFx0fVxuXG5cdFx0LyogQSBicm93c2VyIHRoYXQgY2FuJ3Qgb3BlbiB0aGUgcGlja2VyIGZyb20gdGhlIGJ1dHRvbiBnZXRzIHRoZSBkYXRlIGlucHV0IGl0c2VsZiAqL1xuXHRcdCYuaXMtdHlwaW5nIHtcblx0XHRcdC53bC1kYXRlLWJ0biB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdGlucHV0W3R5cGU9XCJkYXRlXCJdIHtcblx0XHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdFx0cGFkZGluZzogMnB4IDhweDtcblx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgJG5hdnk7XG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0XHRvcGFjaXR5OiAxO1xuXHRcdFx0XHRwb2ludGVyLWV2ZW50czogYXV0bztcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBVbmJvb2tlZDogYW4gb3V0bGluZWQgbmF2eSBidXR0b24sIHRoZSBuZXh0IHRoaW5nIHRvIGRvLiBCb29rZWQ6IHRoZSBkYXRlLCBxdWlldGVyIHN0aWxsLCBhbmQgc3RpbGxcblx0ICAgdGhlIHdheSB0byBjaGFuZ2UgaXQuIEZpbGxlZCB3aXRoIGEgc29mdCB0aW50IG9ubHkgd2hlbiBwb2ludGVkIGF0LiAqL1xuXHQud2wtZGF0ZS1idG4ge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWluLXdpZHRoOiAxMjRweDtcblx0XHRtaW4taGVpZ2h0OiAzNHB4O1xuXHRcdHBhZGRpbmc6IDZweCAxNHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yKCRuYXZ5IGFscGhhKDU1JSkpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHRib3gtc2hhZG93OiAwIDFweCAycHggJG5hdnktdHAtMDU7XG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLCBib3JkZXItY29sb3IgMC4xNXMgZWFzZSwgYm94LXNoYWRvdyAwLjE1cyBlYXNlO1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IG5vbmU7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRcdGJveC1zaGFkb3c6IDAgMnB4IDhweCBjb2xvcigkbmF2eSBhbHBoYSgxMiUpKTtcblx0XHR9XG5cblx0XHQmW2Rpc2FibGVkXSB7XG5cdFx0XHRjdXJzb3I6IHByb2dyZXNzO1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBjYWxlbmRhciBidXR0b24gcXVpZXRlbnMgd2l0aCB0aGUgZGF0ZSBvbmNlIHRoZSBleWUgaXMgYm9va2VkLCBzbyB0aGUgdHdvIHN0aWxsIG1hdGNoICovXG5cdC53bC1kYXRlLXBpY2suaXMtYm9va2VkIC53bC1kYXRlLWJ0bixcblx0LndsLWRhdGUtYnRuLmlzLWJvb2tlZCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHRib3gtc2hhZG93OiBub25lO1xuXG5cdFx0LmZhLWNhbGVuZGFyLFxuXHRcdC5mYS1jYWxlbmRhci1wbHVzLW8ge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdC5mYS1jaGVjayB7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItY29sb3I6IGNvbG9yKCRuYXZ5IGFscGhhKDU1JSkpO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC53bC1kYXRlLXBpY2suaXMtbGFyZ2UgLndsLWRhdGUtYnRuIHtcblx0XHRtaW4td2lkdGg6IDE2MHB4O1xuXHRcdG1pbi1oZWlnaHQ6IDQwcHg7XG5cdFx0cGFkZGluZzogOHB4IDIwcHg7XG5cdFx0Zm9udC1zaXplOiAxNHB4O1xuXHR9XG5cblx0LndsLWNvdW50ZXIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICNhM2FhYzA7XG5cdH1cblxuXHQvKiBSZWFkLW9ubHkgb25seSBzbyB0aGUgcGlja2VyIGlzIHVzZWQgcmF0aGVyIHRoYW4gdHlwZWQgb3ZlciAtIG5vdCBkaXNhYmxlZCwgc28gaXQgc2hvdWxkIG5vdCBsb29rIGl0ICovXG5cdGRhdGVwaWNrZXIge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXG5cdFx0LmZvcm0tY29udHJvbFtyZWFkb25seV06bm90KFtkaXNhYmxlZF0pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblx0fVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIE5ldyB0YXNrIGRpYWxvZ1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLnNldHRpbmdzLXNoZWxsLndvcmtsaXN0LnRhc2stY3JlYXRlIHtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0bWFyZ2luOiAwO1xuXG5cdC53bC1jcmVhdGUtaGVhZCB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMTRweDtcblx0XHRwYWRkaW5nOiAxOHB4IDI4cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cblx0XHQuc2V0dGluZ3MtYXZhdGFyIGkge1xuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBwYXRpZW50LCBvciB0aGUgc2VhcmNoIGZvciBvbmUsIHRha2VzIHRoZSByZXN0IG9mIHRoZSBoZWFkZXIgKi9cblx0LndsLWNyZWF0ZS13aG8ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0LnBhdGllbnQtcGlja2VyLWZpZWxkIHtcblx0XHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRcdG1hcmdpbi10b3A6IDRweDtcblx0XHR9XG5cdH1cblxuXHQud2wtY3JlYXRlLXBhdGllbnQtcm93IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcblx0XHRnYXA6IDEwcHg7XG5cblx0XHQuaW52LWxpbmstYnRuIHtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0fVxuXHR9XG5cblx0LndsLWNyZWF0ZS1leWVicm93IHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1zaXplOiAxMC41cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjA2ZW07XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRjb2xvcjogI2EzYWFjMDtcblx0fVxuXG5cdC53bC1jcmVhdGUtcGF0aWVudCB7XG5cdFx0Zm9udC1mYW1pbHk6ICdHb3JkaXRhIEJvbGQnLCBzYW5zLXNlcmlmO1xuXHRcdGZvbnQtc2l6ZTogMTdweDtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdH1cblxuXHQud2wtY3JlYXRlLXN1YiB7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5zZXR0aW5ncy1wYW5lLWJvZHkge1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQud2wtY3JlYXRlLWNhcmQge1xuXHRcdHBhZGRpbmc6IDIycHggMjRweDtcblx0fVxuXG5cdC53bC1jcmVhdGUtcm93IHtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXHR9XG5cblx0LndsLXByZXNldHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0bWFyZ2luOiAxMHB4IDAgMThweDtcblxuXHRcdC5jaGlwLXNlbGVjdCB7XG5cdFx0XHRwYWRkaW5nOiA0cHggMTJweDtcblx0XHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdH1cblx0fVxuXG5cdC53bC1jcmVhdGUtZXJyb3Ige1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICRub3RpY2UtZXJyb3I7XG5cblx0XHRpIHtcblx0XHRcdG1hcmdpbi10b3A6IDJweDtcblx0XHR9XG5cdH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBOYXJyb3dlciBzY3JlZW5zXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMTAwcHgpIHtcblx0LnNldHRpbmdzLXNoZWxsLndvcmtsaXN0IHtcblx0XHQud2wtc2VhcmNoIHtcblx0XHRcdHdpZHRoOiAyMjBweDtcblx0XHR9XG5cdH1cbn1cblxuLyogX3NldHRpbmdzLmNzcyBsYXlzIHRoZSByYWlsIG91dCBhcyBhIHJvdyBoZXJlIGFuZCBoaWRlcyBpdHMgZm9vdGVyOyB0aGUgbmV3IHRhc2sgYnV0dG9uIHN0YXlzICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcblx0LnNldHRpbmdzLXNoZWxsLndvcmtsaXN0IHtcblx0XHQuc2V0dGluZ3MtbmF2LWZvb3RlciB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogOHB4IDEwcHg7XG5cdFx0XHRib3JkZXItdG9wOiBub25lO1xuXG5cdFx0XHQuZm9vdGVyLWxhYmVsLFxuXHRcdFx0LmZvb3Rlci12YWx1ZSB7XG5cdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0XHR9XG5cblx0XHRcdC53bC1uZXctYnRuIHtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC53bC10aWNrLXJvdyB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblxuXHRcdFx0LndsLXRpY2stbmFtZSB7XG5cdFx0XHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndsLXRvb2xiYXIge1xuXHRcdFx0cGFkZGluZzogMTRweCAxNnB4IDEwcHg7XG5cdFx0fVxuXG5cdFx0LnNldHRpbmdzLW5vdGljZS53bC1ub3RpY2Uge1xuXHRcdFx0bWFyZ2luOiAwIDE2cHggMTBweDtcblx0XHR9XG5cblx0XHQuc2V0dGluZ3MtcGFuZS1ib2R5LndsLWJvZHkge1xuXHRcdFx0cGFkZGluZzogMCAxNnB4IDE2cHg7XG5cdFx0fVxuXG5cdFx0LndsLXNlYXJjaCB7XG5cdFx0XHRmbGV4OiAxIDEgMjAwcHg7XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cdH1cbn1cblxuQGtleWZyYW1lcyB3bC1mYWRlLWluIHtcblx0ZnJvbSB7XG5cdFx0b3BhY2l0eTogMDtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG5cdH1cbn1cblxuQGtleWZyYW1lcyB3bC1zaGluZSB7XG5cdGZyb20ge1xuXHRcdGxlZnQ6IC03MCU7XG5cdH1cblxuXHR0byB7XG5cdFx0bGVmdDogMTMwJTtcblx0fVxufVxuXG5Aa2V5ZnJhbWVzIHdsLXBvcCB7XG5cdDAlIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDAuNCk7XG5cdH1cblxuXHQxMDAlIHtcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQWRkIHRvIHN1cmdlcnkgd2FpdGxpc3Q6IHRoZSBkaWFsb2cgdGhlIFN1cmdlcnkgV2FpdGxpc3QncyByYWlsXG4vKiBidXR0b24gb3BlbnMgKGxhaWQgb3V0IGFzIHRoZSBuZXcgdGFzayBkaWFsb2cpIGFuZCB0aGUgcm93IGl0IGFkZHNcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5zZXR0aW5ncy1zaGVsbC53b3JrbGlzdC53YWl0bGlzdCB7XG5cdC53bC1qdXN0LWFkZGVkIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogIzFmOGE0Yztcblx0fVxuXG5cdC5pbnYtdGFibGUgPiB0Ym9keS53bC1ncm91cC5pcy1qdXN0LWFkZGVkID4gdHIgPiB0aCxcblx0Lmludi10YWJsZSA+IHRib2R5LndsLWdyb3VwLmlzLWp1c3QtYWRkZWQgPiB0ciA+IHRkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmYmY1O1xuXHR9XG5cblx0LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXHQvKiAhIFByZWZlcnJlZCB0aW1lZnJhbWU6IHRoZSBlbnRyeSdzIHBpbGwsIHRoZSBsaW5lIHVuZGVyIGl0IHNheWluZyBob3dcblx0LyogaXQgc3RhbmRzLCBhbmQgdGhlIHJhaWwncyBUaW1lZnJhbWUgZmlsdGVycywgY29sb3VyZWQgdGhlIHNhbWUgd2F5XG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogVGhlIHBpbGwgb24gb25lIGxpbmU7IHRoZSBsaW5lIHVuZGVyIGl0IHdyYXBzIHJhdGhlciB0aGFuIHdpZGVuaW5nIHRoZSBjb2x1bW4gKi9cblx0LndsLWNvbC10aW1lZnJhbWUge1xuXHRcdG1pbi13aWR0aDogMTEycHg7XG5cdH1cblxuXHQud2wtdGYtbm90ZSB7XG5cdFx0bWF4LXdpZHRoOiAxNDBweDtcblx0fVxuXG5cdC53bC10ZiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cdFx0cGFkZGluZzogMnB4IDlweDtcblx0XHRib3JkZXItcmFkaXVzOiAxMnB4O1xuXHRcdGZvbnQtc2l6ZTogMTEuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmM2Y4O1xuXHRcdGNvbG9yOiAjM2M0NjU4O1xuXG5cdFx0Ji5pcy1hc2FwIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmYxZTg7XG5cdFx0XHRjb2xvcjogI2MyNDEwYztcblx0XHR9XG5cblx0XHQmLmlzLW9rIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlYWY3ZWY7XG5cdFx0XHRjb2xvcjogIzFmOGE0Yztcblx0XHR9XG5cblx0XHQmLmlzLXNvb24ge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZlZjZlMDtcblx0XHRcdGNvbG9yOiAjYTE2MjA3O1xuXHRcdH1cblxuXHRcdCYuaXMtbGF0ZSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmRlY2VjO1xuXHRcdFx0Y29sb3I6ICNjNjI4Mjg7XG5cdFx0fVxuXHR9XG5cblx0LndsLXRmLW5vdGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0Ji5pcy1zb29uIHtcblx0XHRcdGNvbG9yOiAjYTE2MjA3O1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cblx0XHQmLmlzLWxhdGUge1xuXHRcdFx0Y29sb3I6ICNjNjI4Mjg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblx0fVxuXG5cdC53bC10Zi1maWx0ZXIge1xuXHRcdCYuaXMtbGF0ZSBpIHtcblx0XHRcdGNvbG9yOiAjYzYyODI4O1xuXHRcdH1cblxuXHRcdCYuaXMtc29vbiBpIHtcblx0XHRcdGNvbG9yOiAjYTE2MjA3O1xuXHRcdH1cblxuXHRcdCYuaXMtYXNhcCBpIHtcblx0XHRcdGNvbG9yOiAjYzI0MTBjO1xuXHRcdH1cblx0fVxuXG5cdC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblx0LyogISBGaXR0aW5nIHRoZSB0YWJsZTogdGVuIGNvbHVtbnMgaW4gdGhlIG1vZGFsIHdpdGhvdXQgc2Nyb2xsaW5nIGl0XG5cdC8qIHNpZGV3YXlzLCBzbyB0aGUgbGFzdCBjb2x1bW4gKFN1cmdlcnkpIGlzIG5ldmVyIG9mZiB0aGUgZWRnZVxuXHQvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cdC53bC10YWJsZSB7XG5cdFx0PiB0aGVhZCA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQge1xuXHRcdFx0cGFkZGluZy1sZWZ0OiA4cHg7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdFx0fVxuXG5cdFx0PiB0Ym9keSA+IHRyID4gdGQud2wtY29sLXByb2dyZXNzIHtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDEycHg7XG5cdFx0fVxuXG5cdFx0LndsLWRhdGUtcGljayAud2wtZGF0ZS1idG4ge1xuXHRcdFx0d2lkdGg6IDEyOHB4O1xuXHRcdFx0bWluLXdpZHRoOiAwO1xuXHRcdFx0cGFkZGluZy1sZWZ0OiAxMHB4O1xuXHRcdFx0cGFkZGluZy1yaWdodDogMTBweDtcblx0XHR9XG5cblx0XHQud2wtY29sLXN1cmdlb24gLndsLWNoaXAtc2VsZWN0IHNlbGVjdCB7XG5cdFx0XHRtYXgtd2lkdGg6IDEyOHB4O1xuXHRcdH1cblx0fVxuXG5cdC8qIENvbXBsZXRlIHN1cmdlcnk6IGFzIHdpZGUgYXMgaXRzIHdvcmRzLCBvbnRvIHR3byBsaW5lcyB3aGVuIHRoZSB0YWJsZSBpcyBzaG9ydCBvZiByb29tICovXG5cdC53bC1zdXJnZXJ5LWJ0biB7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHRcdG1heC13aWR0aDogMTMycHg7XG5cdFx0cGFkZGluZzogNnB4IDEwcHg7XG5cdFx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjI1O1xuXHR9XG59XG5cbi8qIEJlbG93IGEgd2lkZSBzY3JlZW4gdGhlIG1vZGFsIHRha2VzIG1vcmUgb2YgdGhlIHdpbmRvdywgYW5kIHRoZSByYWlsIGdpdmVzIHRoZSB0YWJsZSByb29tICovXG5AbWVkaWEgKG1heC13aWR0aDogMTYwMHB4KSB7XG5cdC53b3JrbGlzdC1kaWFsb2cge1xuXHRcdG1pbi13aWR0aDogOTYlO1xuXHRcdHdpZHRoOiA5NiU7XG5cdH1cblxuXHQuc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qud2FpdGxpc3QgLndvcmtsaXN0LXJhaWwge1xuXHRcdGZsZXgtYmFzaXM6IDIyMHB4O1xuXHRcdHdpZHRoOiAyMjBweDtcblx0fVxufVxuXG4vKiBBIGxhcHRvcCBzY3JlZW46IGEgbGl0dGxlIGxlc3Mgcm9vbSBhZ2FpbiBmb3IgdGhlIHJhaWwsIHRoZSBsaXN0J3MgbWFyZ2lucyBhbmQgdGhlIHdpZGVzdCBjb250cm9scyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDE0MDBweCkge1xuXHQuc2V0dGluZ3Mtc2hlbGwud29ya2xpc3Qud2FpdGxpc3Qge1xuXHRcdC53b3JrbGlzdC1yYWlsIHtcblx0XHRcdGZsZXgtYmFzaXM6IDE5NnB4O1xuXHRcdFx0d2lkdGg6IDE5NnB4O1xuXHRcdH1cblxuXHRcdC53bC1ib2R5IHtcblx0XHRcdHBhZGRpbmctbGVmdDogMTZweDtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDE2cHg7XG5cdFx0fVxuXG5cdFx0LndsLXRhYmxlIHtcblx0XHRcdD4gdGhlYWQgPiB0ciA+IHRoLFxuXHRcdFx0PiB0Ym9keSA+IHRyID4gdGgsXG5cdFx0XHQ+IHRib2R5ID4gdHIgPiB0ZCB7XG5cdFx0XHRcdHBhZGRpbmctbGVmdDogNnB4O1xuXHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiA2cHg7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndsLXRhYmxlIC53bC1kYXRlLXBpY2sgLndsLWRhdGUtYnRuIHtcblx0XHRcdHdpZHRoOiAxMTJweDtcblx0XHR9XG5cblx0XHQud2wtdGFibGUgLndsLWNvbC1zdXJnZW9uIC53bC1jaGlwLXNlbGVjdCBzZWxlY3Qge1xuXHRcdFx0bWF4LXdpZHRoOiAxMDRweDtcblx0XHR9XG5cdH1cbn1cblxuLnNldHRpbmdzLXNoZWxsLndvcmtsaXN0LnRhc2stY3JlYXRlIHtcblx0LyogVGhlIGFkZCBmb3JtIHNpdHMgaW5zaWRlIHRoZSBzaGVsbCwgc28gaXRzIGVsZW1lbnQgYW5kIHRoZSBmb3JtIGNhcnJ5IHRoZSBzaGVsbCdzIGNvbHVtbiBvbiB0byBpdHMgYm9keVxuXHQgICBhbmQgYWN0aW9uIGJhci4gQW4gZWxlbWVudCBpcyBpbmxpbmUgYnkgZGVmYXVsdCwgd2hpY2ggbGV0IHRoZSBmb3JtIGdyb3cgcGFzdCB0aGUgZGlhbG9nIGFuZCBpdHNcblx0ICAgYnV0dG9ucyBiZSBjdXQgb2ZmIG9uY2UgYSBwcm9jZWR1cmUgbGlzdCBvcGVuZWQ7IGhlbGQgdG8gdGhlIGRpYWxvZydzIGhlaWdodCwgb25seSB0aGUgZmllbGRzIHNjcm9sbC4gKi9cblx0c3VyZ2VyeS13YWl0bGlzdC1hZGQtZm9ybSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdH1cblxuXHQud2wtY3JlYXRlLWZvcm0ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRmbGV4OiAxO1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cblx0XHQvKiBOZXZlciB3aWRlciB0aGFuIHRoZSBkaWFsb2c7IGl0IHNjcm9sbHMgZG93biBvbmx5IHdoZW4gdGhlIHdpbmRvdyBpcyB0b28gc2hvcnQgZm9yIHRoZSBmb3JtICovXG5cdFx0LnNldHRpbmdzLXBhbmUtYm9keSB7XG5cdFx0XHRvdmVyZmxvdy14OiBoaWRkZW47XG5cdFx0XHRwYWRkaW5nOiA4cHggMTZweDtcblxuXHRcdFx0Ji53bC1uby1zY3JvbGwge1xuXHRcdFx0XHRvdmVyZmxvdy15OiBoaWRkZW47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LndsLWNyZWF0ZS1jYXJkIHtcblx0XHRcdHBhZGRpbmc6IDEycHggMThweDtcblx0XHR9XG5cdH1cblxuXHQvKiBMYWlkIG91dCBhcyB0aGUgbmV3IHRhc2sgZm9ybSwgaW4gZmllbGQtZ3JpZCByb3dzOyB0aGVzZSBsaW5lIHVwIHdoYXQgdGhlIHdhaXRsaXN0J3Mgb3duIGZpZWxkcyBicmluZyAqL1xuXHQud2wtY3JlYXRlLWZvcm0ge1xuXHRcdC8qIE5hdGl2ZSByYWRpb3MsIGNlbnRyZWQgb24gdGhlaXIgdGV4dCAqL1xuXHRcdC5yYWRpby1pbmxpbmUge1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiA2cHg7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWluLWhlaWdodDogMjZweDtcblxuXHRcdFx0aW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcblx0XHRcdFx0cG9zaXRpb246IHN0YXRpYztcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRleHRhcmVhIHtcblx0XHRcdHJlc2l6ZTogdmVydGljYWw7XG5cdFx0fVxuXHR9XG5cblx0LndsLWFkZC1vcHRpb25zIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHRjb2x1bW4tZ2FwOiAxOHB4O1xuXHRcdHJvdy1nYXA6IDRweDtcblx0XHRtaW4taGVpZ2h0OiAzNXB4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdH1cblxuXHQvKiBPbmUgdGltZWZyYW1lIG9wdGlvbiB0byBhIGxpbmUgKi9cblx0LndsLXRpbWVmcmFtZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMnB4O1xuXG5cdFx0LnJhZGlvLWlubGluZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0bWluLWhlaWdodDogMjhweDtcblx0XHR9XG5cdH1cblxuXHQud2wtdGltZWZyYW1lLWxpbmUge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdH1cblxuXHQud2wtdGltZWZyYW1lLXdlZWtzIHtcblx0XHR3aWR0aDogNjRweDtcblx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0cGFkZGluZzogNHB4IDEwcHg7XG5cdH1cblxuXHQud2wtdGltZWZyYW1lLWRhdGUge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMTJweDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdFx0cGFkZGluZzogNHB4IDEwcHg7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHByb2NlZHVyZSBzZWFyY2ggKHNoYXJlZCB3aXRoIHRoZSBvcGVyYXRpb24gbm90ZSk6IGl0cyBpbnB1dCBhbmQgaXRzIGFkZCBidXR0b24gb24gb25lIGxpbmUsIGF0XG5cdCAgIHRoZSBmaWVsZCdzIGZ1bGwgd2lkdGgsIGVhY2ggZXllJ3MgcHJvY2VkdXJlcyBzdGFja2VkICovXG5cdHByb2NlZHVyZS1zZWFyY2gtYm94IHtcblx0XHRkaXNwbGF5OiBibG9jaztcblxuXHRcdCsgcHJvY2VkdXJlLXNlYXJjaC1ib3gge1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHR9XG5cblx0XHQucm93IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogZmxleC1lbmQ7XG5cdFx0XHRnYXA6IDhweDtcblx0XHRcdG1hcmdpbjogMDtcblxuXHRcdFx0Jjo6YmVmb3JlLFxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IFtjbGFzcyo9XCJjb2wtXCJdIHtcblx0XHRcdFx0ZmxvYXQ6IG5vbmU7XG5cdFx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0fVxuXG5cdFx0XHQ+IC5jb2wtbWQtOCB7XG5cdFx0XHRcdGZsZXg6IDEgMSBhdXRvO1xuXHRcdFx0XHRtaW4td2lkdGg6IDA7XG5cdFx0XHR9XG5cblx0XHRcdD4gLmNvbC1tZC0zIHtcblx0XHRcdFx0ZmxleDogMCAwIGF1dG87XG5cdFx0XHRcdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0XHRcdH1cblxuXHRcdFx0PiAuY29sLXhzLTEyIHtcblx0XHRcdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0XHRcdG1pbi13aWR0aDogMDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQucm93ICsgLnJvdyB7XG5cdFx0XHRtYXJnaW4tdG9wOiA2cHg7XG5cdFx0fVxuXG5cdFx0LmJ0bi1hZGQtaW5jaXNpb24ge1xuXHRcdFx0aGVpZ2h0OiAzNXB4O1xuXHRcdFx0bWluLXdpZHRoOiAzNXB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdC8qIFRoZSBsaXN0J3MgYW5kIEJvb3RzdHJhcCdzIHRhYmxlIG1hcmdpbnMgbGVmdCBhIGdhcCB1bmRlciB0aGUgcHJvY2VkdXJlcyBhZGRlZCAqL1xuXHRcdC5ibHVlLWJveCxcblx0XHQudGFibGUtaW5jaXNpb25zIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGF1dG9tYXRpb24gdGFzayAoc2hhcmVkIHdpdGggdGhlIHByb2dyZXNzIG5vdGUpOiBsYWJlbGxlZCBhbmQgc3BhY2VkIGFzIHRoZSBmaWVsZHMgYXJvdW5kIGl0ICovXG5cdGF1dG9tYXRpb24tdGFzayB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cblx0XHQucHJlLW9wLWZvcm0ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZzogMDtcblx0XHR9XG5cblx0XHQucm93IHtcblx0XHRcdG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDA7XG5cblx0XHRcdD4gW2NsYXNzKj1cImNvbC1cIl0ge1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cdFx0XHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LyogVGhlIHByb2dyZXNzIG5vdGUncyBvd24gbGFiZWwsIHRleHQgY29sb3VyIGFuZCBtYXJrZXIgb2Zmc2V0cywgdW5kb25lIHRvIG1hdGNoIHRoZSBvdGhlciBmaWVsZHMgKi9cblx0XHQuY29udHJvbC1sYWJlbCB7XG5cdFx0XHRjb2xvcjogIzM0M2E0MCAhaW1wb3J0YW50O1xuXHRcdFx0Zm9udC1zaXplOiAxMXB4ICFpbXBvcnRhbnQ7XG5cdFx0XHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogNnB4O1xuXHRcdH1cblxuXHRcdC5yYWRpby1pbmxpbmUsXG5cdFx0Lm1hcmtlciB7XG5cdFx0XHRwb3NpdGlvbjogc3RhdGljO1xuXHRcdFx0Y29sb3I6ICMzMzMzMzM7XG5cdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0fVxuXG5cdFx0LmZvcm0tZ3JvdXAge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGNvbHVtbi1nYXA6IDE4cHg7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblxuXHRcdC5oZWFkLWxpbmsge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0bGluZS1oZWlnaHQ6IDEuNjtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZCAhaW1wb3J0YW50O1xuXHRcdH1cblx0fVxuXG5cdC8qIEFub3RoZXIgcHJhY3RpY2UncyBwYXRpZW50OiBsaXN0ZWQsIGJ1dCBhbiBlbnRyeSBpcyBvbmx5IGFkZGVkIHdoZXJlIHRoZSBwYXRpZW50IGlzIHJlZ2lzdGVyZWQgKi9cblx0LnBhdGllbnQtcmVzdWx0LmlzLXVuYXZhaWxhYmxlIHtcblx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXHRcdG9wYWNpdHk6IDAuNjtcblx0fVxufVxuXG4iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiAhIEltcG9ydGVkIHBhdGllbnRzXG4vKiBUaGUgcmV2aWV3IGRpYWxvZyAobWVyZ2UgaW50byBhbiBleGlzdGluZyBwYXRpZW50LCBvciBjb25maXJtIGFzIG5ldyksXG4vKiB0aGUgcmV2aWV3IGxpc3QgZnJvbSB0aGUgbmF2LCB0aGUgZGlhbG9nIGZvciBhIHBhdGllbnQgdGhlIGltcG9ydFxuLyogY291bGRuJ3QgY3JlYXRlLCBhbmQgdGhlIFwiTmVlZHMgcmV2aWV3XCIgbGFiZWwgaW4gcGF0aWVudCBwaWNrZXJzIGFuZFxuLyogc2VhcmNoLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBcIk5lZWRzIHJldmlld1wiIG5leHQgdG8gYSBwYXRpZW50IGluIGEgcGlja2VyIG9yIHRoZSBzZWFyY2ggcmVzdWx0cyAqL1xuLnBhdGllbnQtb3B0aW9uLXJldmlldyB7XG5cdGZsZXgtc2hyaW5rOiAwO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1hcmdpbi1sZWZ0OiA2cHg7XG5cdHBhZGRpbmc6IDFweCA4cHg7XG5cdGJvcmRlcjogMXB4IHNvbGlkICR3YXJuaW5nLWJvcmRlcjtcblx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdhcm5pbmctYmc7XG5cdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXHRmb250LXNpemU6IDEwLjVweDtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogVGhlIHJldmlldyBkaWFsb2cgYW5kIHRoZSByZXZpZXcgbGlzdC4gTm90IGJ1aWx0IG9uIC5zZXR0aW5ncy1zaGVsbDogdGhhdCBpcyB0aGUgU2V0dGluZ3MgZGlhbG9nJ3Ncbi8qIHNpZGUtYnktc2lkZSBmcmFtZSAoYSBsZWZ0IHJhaWwgYmVzaWRlIHRoZSBjb250ZW50KSwgd2hpY2ggd291bGQgbGF5IHRoZXNlIG91dCBpbiBjb2x1bW5zLiAqL1xuLnBpLWRpYWxvZyB7XG5cdHdpZHRoOiA4ODBweDtcblx0bWF4LXdpZHRoOiA5NXZ3O1xuXHRtYXgtaGVpZ2h0OiA5MHZoO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG5cdC8qIFJlZ2lzdGVyaW5nIGEgbmV3IHBhdGllbnQ6IHJvb20gZm9yIHRoZSByZWdpc3RyYXRpb24gZm9ybSdzIHRocmVlIGNvbHVtbnMgKi9cblx0Ji5waS1kaWFsb2ctLXdpZGUge1xuXHRcdHdpZHRoOiAxMjAwcHg7XG5cdH1cblxuXHQvKiBBbmd1bGFyIE1hdGVyaWFsIHRyYW5zaXRpb25zIGV2ZXJ5IHByb3BlcnR5IG9mIGFuIG9wZW4gZGlhbG9nLCB3aGljaCBhbmltYXRlZCB0aGUgd2lkdGggd2hlbmV2ZXIgdGhlIHN0ZXBcblx0LyogY2hhbmdlZCBpdC4gT25seSB0aGUgZGlhbG9nJ3Mgb3BlbiBhbmQgY2xvc2UgbW92ZS4gKi9cblx0Ji5tZC10cmFuc2l0aW9uLWluLFxuXHQmLm1kLXRyYW5zaXRpb24tb3V0IHtcblx0XHR0cmFuc2l0aW9uLXByb3BlcnR5OiBvcGFjaXR5LCB0cmFuc2Zvcm07XG5cdH1cblxuXHQvKiBTaXplZCB0byB0aGVpciBsYWJlbCwgYXMgaW4gdGhlIGNsYWltIGZsb3cncyBhY3Rpb24gYmFyczogdGhlIGdsb2JhbCAuYnRuLW5hdnkgLyAuYnRuLWNhbmNlbCBhcmUgZnVsbC13aWR0aFxuXHQvKiBzbGFicyBjYXBwZWQgYXQgMjIwcHgsIHdoaWNoIHJlYWQgYXMgZm9ybSBmaWVsZHMgd2hlbiB0d28gc2l0IHNpZGUgYnkgc2lkZS4gTm90IHRoZSByZWdpc3RyYXRpb24gZm9ybSdzIG93bi4gKi9cblx0LnBpLWFjdGlvbnMgLmJ0bixcblx0LnBpLWNhbmRpZGF0ZSAuYnRuLFxuXHQucGktbGlzdCAuYnRuLFxuXHQucGktY2FsbG91dCAuYnRuLFxuXHQucGktdWMtc2VhcmNoIC5idG4ge1xuXHRcdHdpZHRoOiBhdXRvO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRtaW4td2lkdGg6IDhyZW07XG5cdFx0cGFkZGluZzogN3B4IDIycHg7XG5cdFx0Zm9udC1zaXplOiAxM3B4O1xuXHR9XG5cblx0LyogV2hvIGlzIGJlaW5nIHJldmlld2VkLCBhbmQgd2hlcmUgdGhlIHJldmlldyBpcyB1cCB0byAqL1xuXHQucGktaWRlbnRpdHkge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDE0cHg7XG5cdFx0cGFkZGluZzogMTZweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHR9XG5cblx0LnBpLWF2YXRhciB7XG5cdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0d2lkdGg6IDQ0cHg7XG5cdFx0aGVpZ2h0OiA0NHB4O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAkbmF2eSAwJSwgJGRhcmtOYXZ5IDEwMCUpO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogMTVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjVweDtcblx0XHRib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgNTMsIDIxMCwgMC4yKTtcblx0fVxuXG5cdC5waS1pZGVudGl0eS10ZXh0IHtcblx0XHRtaW4td2lkdGg6IDA7XG5cdH1cblxuXHQucGktaWRlbnRpdHktbmFtZSB7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5waS1pZGVudGl0eS1tZXRhIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tdG9wOiAycHg7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBpLWNoaXAge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZzogMnB4IDEwcHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRmb250LXNpemU6IDExLjVweDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHR9XG5cblx0LnBpLWNoaXAtLWltcG9ydCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRjb2xvcjogJG5hdnk7XG5cdH1cblxuXHQucGktc3RlcHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiAwIDAgMCBhdXRvO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRsaSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogOHB4O1xuXHRcdFx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0XHR9XG5cblx0XHQucGktc3RlcC1kb3Qge1xuXHRcdFx0d2lkdGg6IDI0cHg7XG5cdFx0XHRoZWlnaHQ6IDI0cHg7XG5cdFx0XHRib3JkZXI6IDEuNXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdH1cblxuXHRcdGxpLmlzLWN1cnJlbnQge1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cblx0XHRcdC5waS1zdGVwLWRvdCB7XG5cdFx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5O1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxpLmlzLWRvbmUgLnBpLXN0ZXAtZG90IHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGdyZWVuO1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cblx0XHQucGktc3RlcHMtbGluZSB7XG5cdFx0XHR3aWR0aDogMjhweDtcblx0XHRcdGhlaWdodDogMXB4O1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdH1cblx0fVxuXG5cdC8qIFRoZSBzdGVwIGl0c2VsZiwgd2hpY2ggc2Nyb2xscyBiZXR3ZWVuIHRoZSBmaXhlZCBoZWFkZXIgYW5kIGZvb3RlciAqL1xuXHQucGktYm9keSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4taGVpZ2h0OiAwO1xuXHRcdG92ZXJmbG93LXk6IGF1dG87XG5cdFx0cGFkZGluZzogMjRweCAyOHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNGY3ZmU7XG5cdH1cblxuXHQucGktdGl0bGUge1xuXHRcdG1hcmdpbjogMCAwIDZweDtcblx0XHRmb250LXNpemU6IDE4cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LnBpLWxlZGUge1xuXHRcdG1heC13aWR0aDogNzAwcHg7XG5cdFx0bWFyZ2luOiAwIDAgMThweDtcblx0XHRsaW5lLWhlaWdodDogMS41NTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQucGktbXV0ZWQge1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXdlaWdodDogbm9ybWFsO1xuXHR9XG5cblx0LnBpLWZvb3Rub3RlIHtcblx0XHRtYXJnaW46IDEwcHggMnB4IDA7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBpLXN0YXRlIHtcblx0XHRwYWRkaW5nOiA0OHB4IDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC5waS1jYXJkIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcblx0fVxuXG5cdC5waS1jYXJkLS1mbHVzaCB7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0fVxuXG5cdC5waS1jYWxsb3V0IHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHRcdHBhZGRpbmc6IDEycHggMTRweDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0XHRsaW5lLWhlaWdodDogMS41O1xuXG5cdFx0PiBpIHtcblx0XHRcdG1hcmdpbi10b3A6IDNweDtcblx0XHR9XG5cdH1cblxuXHQucGktY2FsbG91dC0taW5mbyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRib3JkZXItY29sb3I6IHJnYmEoMCwgNTMsIDIxMCwgMC4xNSk7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblxuXHRcdD4gaSB7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LnBpLWNhbGxvdXQtLXdhcm5pbmcge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3YXJuaW5nLWJnO1xuXHRcdGJvcmRlci1jb2xvcjogJHdhcm5pbmctYm9yZGVyO1xuXHRcdGNvbG9yOiAkd2FybmluZy10ZXh0O1xuXG5cdFx0YSB7XG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0XHR9XG5cdH1cblxuXHQucGktY2FsbG91dC0tc3VjY2VzcyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuLXRwLTA4O1xuXHRcdGJvcmRlci1jb2xvcjogJGdyZWVuLXRwLTMwO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cblx0XHQ+IGkge1xuXHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHR9XG5cdH1cblxuXHQucGktY2FsbG91dC0tZXJyb3Ige1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRyZWQtZGFuZ2VyLWFsdC10cC0xNTtcblx0XHRib3JkZXItY29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRjb2xvcjogJHJlZC1kYW5nZXItYWx0O1xuXHR9XG5cblx0LnBpLXRhZ3Mge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0fVxuXG5cdC5waS10YWcge1xuXHRcdHBhZGRpbmc6IDJweCAxMHB4O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3YXJuaW5nLWJvcmRlcjtcblx0XHRib3JkZXItcmFkaXVzOiAyMHB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdH1cblxuXHQvKiBTdGVwIDE6IHBvc3NpYmxlIGR1cGxpY2F0ZXMgKi9cblx0LnBpLWNhbmRpZGF0ZXMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDEwcHg7XG5cdFx0bWFyZ2luOiAwIDAgMTJweDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdH1cblxuXHQucGktY2FuZGlkYXRlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNnB4O1xuXHRcdHBhZGRpbmc6IDE2cHggMThweDtcblxuXHRcdC5idG4ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBpLWNhbmRpZGF0ZS13aG8ge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LnBpLWNhbmRpZGF0ZS1uYW1lIHtcblx0XHRtYXJnaW4tYm90dG9tOiA2cHg7XG5cdFx0Zm9udC1zaXplOiAxNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5waS1jYW5kaWRhdGUtZmFjdHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNHB4IDIycHg7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGdhcDogNnB4O1xuXHRcdH1cblxuXHRcdGR0IHtcblx0XHRcdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0fVxuXG5cdFx0ZGQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Y29sb3I6ICR0ZXh0R3JleTtcblx0XHR9XG5cdH1cblxuXHQucGktY2FuZGlkYXRlLWJsb2NrZWQge1xuXHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBpLW5ldy1wYXRpZW50IHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxNHB4O1xuXHRcdHBhZGRpbmc6IDE2cHggMThweDtcblx0XHRib3JkZXItc3R5bGU6IGRhc2hlZDtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLCBib3gtc2hhZG93IDAuMTVzIGVhc2U7XG5cblx0XHQ+IGk6Zmlyc3QtY2hpbGQge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHR3aWR0aDogMzhweDtcblx0XHRcdGhlaWdodDogMzhweDtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdH1cblxuXHRcdD4gc3BhbiB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0XHRnYXA6IDJweDtcblx0XHR9XG5cblx0XHQucGktbmV3LXBhdGllbnQtZ28ge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCY6aG92ZXI6bm90KFtkaXNhYmxlZF0pLFxuXHRcdCY6Zm9jdXMtdmlzaWJsZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRuYXZ5O1xuXHRcdFx0Ym94LXNoYWRvdzogMCA0cHggMTRweCByZ2JhKDAsIDUzLCAyMTAsIDAuMDgpO1xuXHRcdH1cblx0fVxuXG5cdC8qIFN0ZXAgMjogbWVyZ2luZyAqL1xuXHQucGktY29tcGFyZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHRcdHRoLFxuXHRcdHRkIHtcblx0XHRcdHBhZGRpbmc6IDExcHggMTZweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0fVxuXG5cdFx0dGhlYWQgdGgge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHR0Ym9keSB0aCB7XG5cdFx0XHR3aWR0aDogMjAlO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0dGJvZHkgdHI6bGFzdC1jaGlsZCB0aCxcblx0XHR0Ym9keSB0cjpsYXN0LWNoaWxkIHRkIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LyogVGFraW5nIHRoZSBpbXBvcnQ6IGl0cyB2YWx1ZSBpcyB3aGF0IHRoZSByZWNvcmQgd2lsbCBob2xkLCBhbmQgdGhlIGV4aXN0aW5nIG9uZSBpcyByZXBsYWNlZCAqL1xuXHRcdHRyLmlzLXRha2VuIHRkOm50aC1jaGlsZCgzKSB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS1wYWxlO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXG5cdFx0dHIuaXMtdGFrZW4gdGQ6bnRoLWNoaWxkKDIpIHNwYW46bm90KC5waS1tdXRlZCkge1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG5cdFx0fVxuXG5cdFx0LnBpLWNvbXBhcmUtdGFrZSB7XG5cdFx0XHR3aWR0aDogMTEwcHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdGlucHV0IHtcblx0XHRcdFx0d2lkdGg6IDE2cHg7XG5cdFx0XHRcdGhlaWdodDogMTZweDtcblx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHR9XG5cblx0XHRcdGlucHV0W2Rpc2FibGVkXSB7XG5cdFx0XHRcdGN1cnNvcjogZGVmYXVsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKiBTdGVwIDI6IHJlZ2lzdGVyaW5nIC0gdGhlIGRhc2hib2FyZCdzIHJlZ2lzdHJhdGlvbiBmb3JtLCBpbiBhIGNhcmQgaW5zdGVhZCBvZiB1bmRlciBpdHMgbmF2eSBydWxlICovXG5cdC5waS1mb3JtLWNhcmQge1xuXHRcdHBhZGRpbmc6IDhweCA4cHggMDtcblxuXHRcdC5vcGVyYXRpb24tZm9ybSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAxNnB4IDEycHggMDtcblx0XHRcdGJvcmRlci10b3A6IDA7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIGZvb3RlcjogYWx3YXlzIGluIHZpZXcsIHdpdGggdGhlIHN0ZXAncyBtYWluIGFjdGlvbiBvbiB0aGUgcmlnaHQuIE9yZGVyZWQgYWZ0ZXIgdGhlIGNvbnRlbnQsIHdoaWNoXG5cdC8qIEFuZ3VsYXIgTWF0ZXJpYWwgZ2l2ZXMgb3JkZXI6IDEuICovXG5cdC5waS1hY3Rpb25zIHtcblx0XHRvcmRlcjogMjtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAxMHB4O1xuXHRcdHBhZGRpbmc6IDE0cHggMjhweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdC5idG4ge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblx0fVxuXG5cdC5waS1saW5rIHtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGJvcmRlcjogMDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0fVxuXHR9XG5cblx0LnBpLWFjdGlvbnMtbWVzc2FnZSB7XG5cdFx0ZmxleDogMTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0Zm9udC1zaXplOiAxMi41cHg7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdH1cblxuXHQucGktYWN0aW9ucy1lcnJvciB7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0fVxuXG5cdC8qIFRoZSByZXZpZXcgbGlzdCAqL1xuXHQucGktbGlzdCB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcblxuXHRcdHRoLFxuXHRcdHRkIHtcblx0XHRcdHBhZGRpbmc6IDEycHggMTZweDtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVmMWY3O1xuXHRcdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdFx0fVxuXG5cdFx0dGhlYWQgdGgge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHBhbGVCbHVlO1xuXHRcdFx0Zm9udC1zaXplOiAxMS41cHg7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHR0Ym9keSB0cjpsYXN0LWNoaWxkIHRkIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0LnBpLWxpc3QtbmFtZSB7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQucGktbGlzdC1hY3Rpb24ge1xuXHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdH1cblxuXHRcdC8qIFdoYXQgaG9sZHMgdGhlIHBhdGllbnQgYmFjaywgaW4gdGhlIHByb2dyZXNzIHRhYidzIGNvbG91cnM6IGdyZWVuIGZvciBkZXRhaWxzIHRvIGNvbXBsZXRlLCB3aGljaCBjb3VudHMgYXNcblx0XHQvKiBhIHN1Y2Nlc3MsIGFuZCBzb2Z0IHJlZCBmb3IgZHVwbGljYXRlcyBhbmQgdW5maW5pc2hlZCBtZXJnZXMgKi9cblx0XHQucGktcmVzb2x2ZSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRnYXA6IDZweDtcblx0XHRcdHBhZGRpbmc6IDRweCAxMXB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogMjBweDtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbi10cC0xMDtcblx0XHRcdGNvbG9yOiAkdGVhbDtcblx0XHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Zm9udC1zaXplOiAxMXB4O1xuXHRcdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdFx0fVxuXG5cdFx0XHQmLmlzLWZhaWxlZCB7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRub3RpY2UtZXJyb3ItYmc7XG5cdFx0XHRcdGNvbG9yOiAkZGFuZ2VyO1xuXG5cdFx0XHRcdGkge1xuXHRcdFx0XHRcdGNvbG9yOiAkcmVkLXNvZnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQucGktbnVtIHtcblx0XHRcdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRcdFx0Zm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgbGlzdCBhbmQgaXRzIHByb2dyZXNzLCBhcyB0YWJzICovXG5cdC5waS10YWJzIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogNHB4O1xuXHRcdG1hcmdpbjogMCAwIDE2cHg7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0fVxuXG5cdC5waS10YWIge1xuXHRcdG1hcmdpbi1ib3R0b206IC0xcHg7XG5cdFx0cGFkZGluZzogOHB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAwO1xuXHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblxuXHRcdCYuaXMtY3VycmVudCB7XG5cdFx0XHRib3JkZXItYm90dG9tLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcHJvZ3Jlc3MgdGFiICovXG5cdC5waS1wcm9ncmVzcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTZweDtcblxuXHRcdD4gZGl2IHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0Z2FwOiAxNnB4O1xuXHRcdH1cblx0fVxuXG5cdC5waS1wcm9ncmVzcy1oZWFkaW5nIHtcblx0XHRtYXJnaW46IDAgMCA4cHg7XG5cdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xuXHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLWhlcm8ge1xuXHRcdHBhZGRpbmc6IDE4cHggMjBweDtcblx0fVxuXG5cdC5waS1wcm9ncmVzcy1oZWFkbGluZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGdhcDogNHB4IDEycHg7XG5cdH1cblxuXHQucGktcHJvZ3Jlc3MtcGVyY2VudCB7XG5cdFx0Zm9udC1zaXplOiAzNHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0bGluZS1oZWlnaHQ6IDE7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC5waS1wcm9ncmVzcy1jYXB0aW9uIHtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0fVxuXG5cdC5waS1wcm9ncmVzcy10cmFjayB7XG5cdFx0aGVpZ2h0OiA4cHg7XG5cdFx0bWFyZ2luOiAxNHB4IDAgMTZweDtcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktcGFsZTtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLWZpbGwge1xuXHRcdGhlaWdodDogMTAwJTtcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGdyZWVuO1xuXHR9XG5cblx0LnBpLXByb2dyZXNzLWZhY3RzIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDEycHg7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0ZHQge1xuXHRcdFx0Zm9udC1zaXplOiAxMnB4O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHRkZCB7XG5cdFx0XHRtYXJnaW46IDJweCAwIDA7XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgc3VjY2Vzc2VzIGluIGEgcm93IGFib3ZlIHRoZSBmYWlsdXJlcywgc28gdGhlIHRpY2tzIGxpbmUgdXAgYWNyb3NzIHRoZSBkaWFsb2cgKi9cblx0LnBpLXByb2dyZXNzLWdyb3VwcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMTZweDtcblx0fVxuXG5cdC5waS1zdGF0LWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogOHB4O1xuXHR9XG5cblx0LyogRWFjaCBvdXRjb21lIGZpbGxzIGl0cyBjZWxsLCBzbyBhIHJvdydzIGNhcmRzIGxpbmUgdXAgd2hldGhlciBvciBub3QgdGhleSBvcGVuIHRoZSBsaXN0ICovXG5cdC5waS1zdGF0LWdyaWQgPiBkaXYge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdH1cblxuXHQucGktc3RhdCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4OiAxO1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiA0cHg7XG5cdFx0cGFkZGluZzogMTJweCAxNHB4O1xuXHR9XG5cblx0LyogQSBjb3VudCBvZiBwYXRpZW50cyBzdGlsbCB0byByZXZpZXc6IG9wZW5zIHRoZW0gb24gdGhlIGxpc3QgKi9cblx0YnV0dG9uLnBpLXN0YXQge1xuXHRcdGZvbnQ6IGluaGVyaXQ7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0dHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsIGJveC1zaGFkb3cgMC4xNXMgZWFzZTtcblxuXHRcdCY6aG92ZXIsXG5cdFx0Jjpmb2N1cy12aXNpYmxlIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4wOCk7XG5cdFx0fVxuXG5cdFx0Jjpob3ZlciAucGktc3RhdC1saW5rIGksXG5cdFx0Jjpmb2N1cy12aXNpYmxlIC5waS1zdGF0LWxpbmsgaSB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMnB4KTtcblx0XHR9XG5cdH1cblxuXHQucGktc3RhdC1saW5rIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogNnB4O1xuXHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdFx0cGFkZGluZy10b3A6IDRweDtcblx0XHRmb250LXNpemU6IDEycHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJG5hdnk7XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTBweDtcblx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuXHRcdH1cblx0fVxuXG5cdC5waS1zdGF0LXZhbHVlIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0Zm9udC1zaXplOiAyMHB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0bGluZS1oZWlnaHQ6IDEuMTtcblx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHR9XG5cblx0LnBpLXN0YXQtaWNvbiB7XG5cdFx0Zm9udC1zaXplOiAxN3B4O1xuXG5cdFx0Ji5pcy1vayB7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHRcdCYuaXMtZmFpbGVkIHtcblx0XHRcdGNvbG9yOiAkcmVkLXNvZnQ7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXN0YXQtbGFiZWwge1xuXHRcdGZvbnQtc2l6ZTogMTJweDtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC8qIEEgY2FsbG91dCB3aXRoIGFuIGFjdGlvbiBvZiBpdHMgb3duLCBhdCBpdHMgZW5kICovXG5cdC5waS1jYWxsb3V0LXRleHQge1xuXHRcdGZsZXg6IDE7XG5cdFx0bWluLXdpZHRoOiAwO1xuXHR9XG5cblx0LnBpLWNhbGxvdXQtYWN0aW9uIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRhbGlnbi1zZWxmOiBjZW50ZXI7XG5cdH1cblxuXHQvKiBUaGUgbGlzdCdzIGZpbHRlcjogZXZlcnkgcGF0aWVudCB0byByZXZpZXcsIG9ubHkgdGhvc2UgdGhlIGltcG9ydCBjb3VsZG4ndCBjcmVhdGUsIG9yIG9uZSBncm91cCBvZiB0aGUgcmVzdCAqL1xuXHQucGktZmlsdGVycyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0Z2FwOiA4cHg7XG5cdFx0bWFyZ2luOiAwIDAgMTRweDtcblx0fVxuXG5cdC5waS1maWx0ZXIge1xuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiA2cHg7XG5cdFx0cGFkZGluZzogNXB4IDE0cHg7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6IDIwcHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogMTIuNXB4O1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0aSB7XG5cdFx0XHRmb250LXNpemU6IDExcHg7XG5cdFx0fVxuXG5cdFx0Jjpob3Zlcixcblx0XHQmOmZvY3VzLXZpc2libGUge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHR9XG5cblx0XHQmLmlzLWN1cnJlbnQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkbmF2eTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRuYXZ5LXBhbGU7XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXHR9XG5cblx0LyogSG93IG1hbnkgd2VyZSBub3QgY3JlYXRlZCwgaW4gdGhlIHNvZnQgcmVkIHRoZSBsaXN0IGdpdmVzIHRoZW0gKi9cblx0LnBpLWZpbHRlci1jb3VudCB7XG5cdFx0cGFkZGluZzogMCA3cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbm90aWNlLWVycm9yLWJnO1xuXHRcdGNvbG9yOiAkZGFuZ2VyO1xuXHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHRmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xuXHR9XG5cblx0LyogQSBwYXRpZW50IHRoZSBpbXBvcnQgY291bGRuJ3QgY3JlYXRlOiB3aGF0IHRoZSBwcmV2aW91cyBzeXN0ZW0gaGVsZCwgYmVzaWRlIHRoZWlyIHJlY29yZHMgKi9cblx0LnBpLXVjLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdGdhcDogMTJweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHR9XG5cblx0LnBpLXVjLXBhbmVsIHtcblx0XHRwYWRkaW5nOiAxNHB4IDE2cHg7XG5cblx0XHQucGktcHJvZ3Jlc3MtaGVhZGluZyB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xuXHRcdH1cblxuXHRcdHAge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdC5waS11Yy1zZWN0aW9ucyB7XG5cdFx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHRcdH1cblx0fVxuXG5cdC5waS11Yy1mYWN0cyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1heC1jb250ZW50IG1pbm1heCgwLCAxZnIpO1xuXHRcdGdhcDogNnB4IDE0cHg7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0PiBkaXYge1xuXHRcdFx0ZGlzcGxheTogY29udGVudHM7XG5cdFx0fVxuXG5cdFx0ZHQge1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHR9XG5cblx0XHRkZCB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0b3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXVjLWRvY3VtZW50cyB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdHBhZGRpbmc6IDA7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblxuXHRcdGxpIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdFx0Z2FwOiAxMHB4O1xuXHRcdFx0cGFkZGluZzogN3B4IDA7XG5cdFx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZjFmNztcblxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbTogMDtcblx0XHRcdH1cblxuXHRcdFx0PiBpIHtcblx0XHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdFx0fVxuXG5cdFx0XHQucGktbGluayxcblx0XHRcdC5waS1tdXRlZCB7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0fVxuXG5cdFx0XHQucGktbGluayB7XG5cdFx0XHRcdGNvbG9yOiAkbmF2eTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucGktdWMtZG9jdW1lbnRzLW5vdGUge1xuXHRcdG1hcmdpbjogOHB4IDAgMDtcblx0XHRmb250LXNpemU6IDEyLjVweDtcblx0fVxuXG5cdC8qIEEgcmVjb3JkLCByZWFkIGluIHRoZSBQREYgdmlld2VyIGluIHBsYWNlIG9mIHRoZSBwYXRpZW50J3MgZGV0YWlscyAqL1xuXHQucGktdWMtdmlld2VyLWhlYWQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogOHB4IDE2cHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblxuXHRcdC5waS10aXRsZSB7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0fVxuXHR9XG5cblx0LnBpLXVjLXZpZXdlci1uYXYge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiA4cHg7XG5cblx0XHQuYnRuIHtcblx0XHRcdG1hcmdpbjogMDtcblx0XHR9XG5cblx0XHRpIHtcblx0XHRcdGZvbnQtc2l6ZTogMTFweDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgcGFnZXMgc2Nyb2xsIGluc2lkZSB0aGUgdmlld2VyLCBzaXplZCBzbyB0aGUgZGlhbG9nIGl0c2VsZiBuZXZlciBoYXMgdG86IHRoZSB3aW5kb3cncyBoZWlnaHQgbGVzcyB0aGVcblx0ICAgZGlhbG9nJ3MgdGl0bGUsIHRoZSBwYXRpZW50IGFib3ZlLCB0aGUgcmVjb3JkJ3MgaGVhZGluZyBhbmQgdGhlIHZpZXdlcidzIHRvb2xiYXIsIGFuZCB0aGUgYWN0aW9ucyBiZWxvdyAqL1xuXHQucGktdWMtdmlld2VyIC5wZGYtc2Nyb2xsLXZpZXdlci1zY3JvbGwge1xuXHRcdGhlaWdodDogY2FsYyg5MHZoIC0gMzYwcHgpO1xuXHRcdG1pbi1oZWlnaHQ6IDI0MHB4O1xuXHRcdG1heC1oZWlnaHQ6IG5vbmU7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdH1cblxuXHQucGktdWMtZG9jdW1lbnQtZGF0ZSB7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0fVxuXG5cdC8qIFRoZSBwYXRpZW50IGNob3NlbiBmb3IgdGhlIHJlY29yZHMsIG9uIGl0cyBvd24gYWJvdmUgd2hhdCBhZGRpbmcgdGhlbSBtZWFucyAqL1xuXHQucGktdWMtdGFyZ2V0IHtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXHR9XG5cblx0LnBpLXVjLW9wdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDEwcHg7XG5cdH1cblxuXHQucGktdWMtc2VhcmNoIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGdhcDogMTBweDtcblx0XHRtYXJnaW4tYm90dG9tOiAxNnB4O1xuXG5cdFx0LmZvcm0tY29udHJvbCB7XG5cdFx0XHRmbGV4OiAxO1xuXHRcdH1cblx0fVxuXG5cdC8qIEEgbmFycm93IHdpbmRvdzogdGhlIG91dGNvbWVzIGFuZCB0aGUgZmFjdHMgZ28gdHdvIHRvIGEgcm93LCBhbmQgdGhlIG5vdC1jcmVhdGVkIHBhdGllbnQncyBwYW5lbHMgc3RhY2sgKi9cblx0QG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7XG5cdFx0LnBpLXN0YXQtZ3JpZCxcblx0XHQucGktcHJvZ3Jlc3MtZmFjdHMge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpO1xuXHRcdH1cblxuXHRcdC5waS11Yy1ncmlkIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDFmcik7XG5cdFx0fVxuXHR9XG59XG4iLCIubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRtaW4taGVpZ2h0OiAxMDB2aDtcblx0d2lkdGg6IDEwMCU7XG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2Fucy1zZXJpZjtcblx0Zm9udC1zaXplOiAxNnB4O1xuXHRjb2xvcjogJHdoaXRlO1xuXHQtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcblx0LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblx0LS1wYWdlLWJnLWltYWdlOiB1cmwoJ2h0dHBzOi8vY2F0dHJheC1tZWRpYS5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2ltYWdlcy9zdXJnZW9uX2ltYWdlX2Nyb3BwZWQyLmpwZycpO1xuXHQtLXBhZ2UtYmctcG9zaXRpb246IGNlbnRlcjtcblx0YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KCRuYXZ5LWJnLWdyYWRpZW50LWRhcmssICRuYXZ5LWJnLWdyYWRpZW50LWxpZ2h0KSwgdmFyKC0tcGFnZS1iZy1pbWFnZSk7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IHZhcigtLXBhZ2UtYmctcG9zaXRpb24pO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXG5cdG1haW4uaGVyby1zZWN0aW9uIHtcblx0XHRiYWNrZ3JvdW5kOiBub25lO1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjJmciAxZnI7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDRyZW07XG5cdFx0cGFkZGluZzogNXJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0ZmxleC1ncm93OiAxO1xuXHRcdG1heC13aWR0aDogMTQwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6IDNyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdFx0Z2FwOiAyLjVyZW07XG5cdFx0fVxuXHR9XG59XG5cbi5oZXJvLWNvbnRlbnQge1xuXHRwYWRkaW5nLXJpZ2h0OiAycmVtO1xuXHRjb2xvcjogJHdoaXRlO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdHBhZGRpbmctcmlnaHQ6IDA7XG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7IC8qIFRoaXMgY2VudGVycyB0aGUgY29udGVudCBvbiBtb2JpbGUgKi9cblx0fVxufVxuXG4ubWFpbi1sb2dvIHtcblx0bWF4LXdpZHRoOiAyODBweDtcblx0bWFyZ2luLWJvdHRvbTogMi41cmVtO1xuXHRmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDhweCAkYmxhY2stdHAtMzApO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0fVxufVxuXG4uaGVyby10aXRsZSB7XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14eHhsO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdGxpbmUtaGVpZ2h0OiAxLjE1O1xuXHRtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuXHRjb2xvcjogJHdoaXRlO1xuXHRsZXR0ZXItc3BhY2luZzogLTAuMDNlbTtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0Zm9udC1zaXplOiAycmVtO1xuXHR9XG59XG5cbi5oZXJvLXN1YnRpdGxlIHtcblx0Zm9udC1zaXplOiAxLjE1cmVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHRtYXJnaW4tYm90dG9tOiAzcmVtO1xuXHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdH1cbn1cblxuLmJlbmVmaXRzLWxpc3Qge1xuXHRsaXN0LXN0eWxlOiBub25lO1xuXHRwYWRkaW5nOiAwO1xuXHRtYXJnaW46IDA7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0LyogVGhpcyBhbGxvd3MgdGhlIDx1bD4gdG8gYmUgY2VudGVyZWQgYnkgaXRzIHBhcmVudCdzIHRleHQtYWxpZ246Y2VudGVyICovXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cblx0bGkge1xuXHRcdGZvbnQtc2l6ZTogMS4wNXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjJyZW07XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7IC8qIEZpeGVzIGxpc3QgaXRlbSB0ZXh0IGFsaWdubWVudCAqL1xuXHR9XG5cblx0LmNoZWNrbWFyayB7XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHRcdGZvbnQtc2l6ZTogMS40cmVtO1xuXHRcdG1hcmdpbi1yaWdodDogMXJlbTtcblx0XHRmbGV4LXNocmluazogMDtcblx0fVxuXG59XG5cbi5wcml2YWN5LWxpbmsge1xuXHRtYXJnaW4tdG9wOiAycmVtO1xuXHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Y29sb3I6ICR3aGl0ZS10cC03NTtcblxuXHRhIHtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRcdHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG5cdFx0XHRjb2xvcjogJGN5YW4tZGFya2VyO1xuXHRcdH1cblxuXHR9XG59XG5cbi5wcm9vZi1zZWN0aW9uIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTA1O1xuXHRwYWRkaW5nOiAzLjVyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAkd2hpdGUtdHAtMTA7XG5cdGNvbG9yOiAkd2hpdGU7XG5cdGZvbnQtc2l6ZTogMC45NXJlbTtcbn1cblxuLnByb29mLXRpdGxlIHtcblx0Zm9udC1zaXplOiAyLjJyZW07XG5cdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0bWFyZ2luLWJvdHRvbTogM3JlbTtcblx0Y29sb3I6ICR3aGl0ZTtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteGw7XG5cdH1cbn1cblxuLnRlc3RpbW9uaWFscy1ob3Jpem9udGFsIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMDBweCwgMWZyKSk7XG5cdGdhcDogMi41cmVtO1xuXHRtYXgtd2lkdGg6IDEyMDBweDtcblx0bWFyZ2luOiAwIGF1dG87XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdH1cbn1cblxuLnRlc3RpbW9uaWFsLWNhcmQtaG9yaXpvbnRhbCB7XG5cdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0xMDtcblx0cGFkZGluZzogMi41cmVtO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0Ym94LXNoYWRvdzogMCA0cHggMTVweCAkYmxhY2stdHAtMjA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXG5cdC5xdW90ZSB7XG5cdFx0Zm9udC1zaXplOiAxLjA1cmVtO1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtOTA7XG5cdFx0Zm9udC1zdHlsZTogaXRhbGljO1xuXHR9XG5cblx0Y2l0ZSB7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdH1cblxufVxuXG4udGVzdGltb25pYWwtYXZhdGFyIHtcblx0d2lkdGg6IDkwcHg7XG5cdGhlaWdodDogOTBweDtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtY2lyY2xlO1xuXHRvYmplY3QtZml0OiBjb3Zlcjtcblx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRib3JkZXI6IDNweCBzb2xpZCAkY3lhbjtcblx0Ym94LXNoYWRvdzogMCAwIDAgNXB4ICRjeWFuLXRwLTIwO1xufVxuXG4ucGFnZS1mb290ZXIge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvIDFmcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0cGFkZGluZzogMS41cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0d2lkdGg6IDEwMCU7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG5cdFx0Z2FwOiAxLjVyZW07XG5cdFx0cGFkZGluZzogMnJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdH1cblxuXHQuY29weXJpZ2h0IHtcblx0XHRncmlkLWNvbHVtbjogMjtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC03MDtcblx0XHRmb250LXNpemU6IDAuOTVyZW07XG5cdH1cblxuXHQucGVudGVzdC1iYWRnZSB7XG5cdFx0Z3JpZC1jb2x1bW46IDI7XG5cdFx0anVzdGlmeS1zZWxmOiBlbmQ7XG5cblx0XHRpbWcge1xuXHRcdFx0bWF4LXdpZHRoOiAzMDBweDtcblx0XHRcdGhlaWdodDogYXV0bztcblx0XHR9XG5cblx0fVxufVxuXG4udmFsdWUtcHJvcC1zZWN0aW9uIHtcblx0cGFkZGluZzogNi41cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRwYWRkaW5nOiAzcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0fVxufVxuXG4udmFsdWUtcHJvcC1jb250YWluZXIge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuXHRnYXA6IDIuNXJlbTtcblx0bWF4LXdpZHRoOiAxMjAwcHg7XG5cdG1hcmdpbjogMCBhdXRvO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk5MnB4KSB7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdFx0Z2FwOiAycmVtO1xuXHR9XG59XG5cbi52YWx1ZS1wcm9wLWNhcmQge1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMDU7XG5cdHBhZGRpbmc6IDIuNXJlbSAycmVtO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcblx0Ym9yZGVyOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuXHQmOmhvdmVyIHtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0xMDtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LWxnO1xuXHRcdGJvcmRlci1jb2xvcjogJGN5YW4tdHAtNTA7XG5cblx0XHQudGl0bGUtcmVmZXJyYWwge1xuXHRcdFx0Y29sb3I6ICRjeWFuO1xuXHRcdH1cblxuXHRcdC5pY29uLW1hbmFnZW1lbnQsXG5cdFx0LnRpdGxlLW1hbmFnZW1lbnQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtNTA7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHRcdC5pY29uLW1hbmFnZW1lbnQge1xuXHRcdFx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTIwO1xuXHRcdH1cblxuXHRcdC5pY29uLXRlY2gsXG5cdFx0LnRpdGxlLXRlY2gge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkeWVsbG93LXRwLTUwO1xuXHRcdFx0Y29sb3I6ICR5ZWxsb3c7XG5cdFx0fVxuXG5cdFx0Lmljb24tdGVjaCB7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkeWVsbG93LXRwLTIwO1xuXHRcdH1cblxuXHRcdC52YWx1ZS1wcm9wLWljb24td3JhcHBlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMSkgcm90YXRlKDVkZWcpO1xuXHRcdH1cblxuXHR9XG59XG5cbi52YWx1ZS1wcm9wLWljb24td3JhcHBlciB7XG5cdHdpZHRoOiA4MHB4O1xuXHRoZWlnaHQ6IDgwcHg7XG5cdG1hcmdpbjogMCBhdXRvIDEuNXJlbSBhdXRvO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1jaXJjbGU7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4udmFsdWUtcHJvcC1pY29uIHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXh4bDtcblx0bGluZS1oZWlnaHQ6IDE7XG59XG5cbi5pY29uLXJlZmVycmFsIHtcblx0YmFja2dyb3VuZDogJGN5YW4tdHAtMTA7XG5cblx0LnZhbHVlLXByb3AtaWNvbiB7XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHR9XG5cbn1cblxuLnRpdGxlLXJlZmVycmFsLFxuLmljb24tcmVmZXJyYWwgLnZhbHVlLXByb3AtaWNvbiB7XG5cdGNvbG9yOiAkY3lhbjtcbn1cblxuLmljb24tbWFuYWdlbWVudCB7XG5cdGJhY2tncm91bmQ6ICRncmVlbi10cC0xMDtcblxuXHQudmFsdWUtcHJvcC1pY29uIHtcblx0XHRjb2xvcjogJGdyZWVuO1xuXHR9XG5cbn1cblxuLnRpdGxlLW1hbmFnZW1lbnQsXG4uaWNvbi1tYW5hZ2VtZW50IC52YWx1ZS1wcm9wLWljb24ge1xuXHRjb2xvcjogJGdyZWVuO1xufVxuXG4uaWNvbi10ZWNoIHtcblx0YmFja2dyb3VuZDogJHllbGxvdy10cC0xMDtcblxuXHQudmFsdWUtcHJvcC1pY29uIHtcblx0XHRjb2xvcjogJHllbGxvdztcblx0fVxuXG59XG5cbi50aXRsZS10ZWNoLFxuLmljb24tdGVjaCAudmFsdWUtcHJvcC1pY29uIHtcblx0Y29sb3I6ICR5ZWxsb3c7XG59XG5cbi52YWx1ZS1wcm9wLXRpdGxlIHtcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXHRtYXJnaW46IDAgMCAxcmVtIDA7XG5cdHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTtcbn1cblxuLnZhbHVlLXByb3AtdGV4dCB7XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRsaW5lLWhlaWdodDogMS43O1xuXHRtYXJnaW46IDA7XG5cdGZsZXgtZ3JvdzogMTtcbn1cblxuLmJ0bi1zZWUtbW9yZSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0YWxpZ24tc2VsZjogY2VudGVyO1xuXHRtYXJnaW4tdG9wOiBhdXRvO1xuXHRwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTtcblx0Ym9yZGVyOiAycHggc29saWQgJHdoaXRlLXRwLTYwO1xuXHRib3JkZXItcmFkaXVzOiA1MHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0Y29sb3I6ICR3aGl0ZTtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGZvbnQtc2l6ZTogMC44cmVtO1xuXHRsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuXHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZS10cC0xMDtcblx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0fVxuXG59XG5cbi5mZWF0dXJlcy1vdmVydmlldyB7XG5cdHBhZGRpbmctdG9wOiAycmVtO1xuXHRwYWRkaW5nLWJvdHRvbTogNHJlbTtcblxuXHQuZmVhdHVyZXMtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMyMHB4LCAxZnIpKTtcblx0XHRnYXA6IDJyZW07XG5cdH1cblxufVxuXG4uZmVhdHVyZS1jYXRlZ29yeS1zZWN0aW9uIHtcblx0bWF4LXdpZHRoOiAxNDAwcHg7XG5cdG1hcmdpbjogMCBhdXRvIDRyZW0gYXV0bztcblx0cGFkZGluZzogMCAxcmVtO1xufVxuXG4uY2F0ZWdvcnktaGVhZGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRtYXJnaW4tYm90dG9tOiAzcmVtO1xuXG5cdGgyIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRtYXJnaW46IDAgMCAwLjc1cmVtIDA7XG5cdH1cblxuXHRwIHtcblx0XHRmb250LXNpemU6IDEuMTVyZW07XG5cdFx0bWF4LXdpZHRoOiA3NTBweDtcblx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0fVxuXG5cdCYub3B0b21ldHJ5IGgyIHtcbiAgICAgICAgY29sb3I6ICRjeWFuO1xuICAgIH1cblxuICAgICYub3BodGhhbG1vbG9neSBoMiB7XG4gICAgICAgIGNvbG9yOiAkZ3JlZW47XG4gICAgfVxuXG4gICAgJi5tYW5hZ2VtZW50IGgyIHtcbiAgICAgICAgY29sb3I6ICR5ZWxsb3c7XG4gICAgfVxuXG4gICAgJi5ob3NwaXRhbHMgaDIge1xuICAgICAgICBjb2xvcjogJGxhdmVuZGVyO1xuICAgIH1cblxufVxuXG4uY2F0ZWdvcnktaWNvbiB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXh4bDtcblx0d2lkdGg6IDgwcHg7XG5cdGhlaWdodDogODBweDtcblx0bGluZS1oZWlnaHQ6IDgwcHg7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRwYWRkaW5nLXRvcDogMnJlbTtcblx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXG5cdCYub3B0b21ldHJ5IHtcblx0XHRjb2xvcjogJGN5YW47XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJGN5YW4tdHAtMzA7XG5cdH1cblxuXHQmLm9waHRoYWxtb2xvZ3kge1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJGdyZWVuLXRwLTMwO1xuXHR9XG5cblx0Ji5tYW5hZ2VtZW50IHtcblx0XHRjb2xvcjogJHllbGxvdztcblx0XHRib3JkZXI6IDJweCBzb2xpZCAkeWVsbG93LXRwLTMwO1xuXHR9XG5cblx0Ji5ob3NwaXRhbHMge1xuXHRcdGNvbG9yOiAkbGF2ZW5kZXI7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgJGxhdmVuZGVyLXRwLTMwO1xuXHR9XG59XG5cbi5mZWF0dXJlcy1ncmlkIHtcblx0ZGlzcGxheTogZ3JpZDtcblx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcblx0Z2FwOiAycmVtO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHR9XG59XG5cbi5mZWF0dXJlLWNhcmQge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmc6IDIuNXJlbSAycmVtO1xuXHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMDU7XG5cdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlO1xuXG5cdCY6aG92ZXIge1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMTA7XG5cdH1cblxufVxuXG4uZmVhdHVyZS1pY29uIHtcblx0Zm9udC1zaXplOiAyLjhyZW07XG5cdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblx0Y29sb3I6ICRjeWFuO1xufVxuXG4uZmVhdHVyZS10aXRsZSB7XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1sZztcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0bWFyZ2luOiAwIDAgMC43NXJlbSAwO1xuXHRjb2xvcjogJHdoaXRlO1xufVxuXG4uZmVhdHVyZS1kZXNjcmlwdGlvbiB7XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRsaW5lLWhlaWdodDogMS43O1xuXHRtYXJnaW46IDA7XG59XG5cbi5maW5hbC1jdGEtc2VjdGlvbiB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZzogNHJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdGJhY2tncm91bmQtY29sb3I6ICRibGFjay10cC0yMDtcblxuXHQuYnRuLW5hdi1kZW1vIHtcblx0XHRmb250LXNpemU6IDEuMnJlbTtcblx0XHRwYWRkaW5nOiAxcmVtIDIuNXJlbTtcblx0fVxuXG59XG5cbi5mZWF0dXJlcy1kaXNjbGFpbWVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRwYWRkaW5nOiAycmVtICRzZWN0aW9uLXBhZGRpbmcteCAxcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0bWF4LXdpZHRoOiA4MDBweDtcblx0bWFyZ2luOiAwIGF1dG87XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0Y29sb3I6ICR3aGl0ZS10cC02MDtcblx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xufVxuXG4uc2VjdGlvbi10aXRsZSB7XG5cdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdGZvbnQtc2l6ZTogMnJlbTtcblx0fVxufVxuXG4uZnVsbC1zY3JlZW4tbG9hZGVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gICAgei1pbmRleDogOTk5OTk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59IiwiLm1vZGVybi1sb2dpbi1wYWdlIHtcblx0LmxvZ2luLWNhcmQge1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRwYWRkaW5nOiAzcmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctbWQ7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWF4LXdpZHRoOiA0NTBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRcdHBhZGRpbmc6IDIuNXJlbTtcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDJyZW0gMS41cmVtO1xuXHRcdH1cblx0fVxuXG5cdC5wcm9jZXNzaW5nLW92ZXJsYXkge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTkwO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0ei1pbmRleDogMTA7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRnYXA6IDFyZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdH1cblxuXHQuc3Bpbm5lciB7XG5cdFx0d2lkdGg6IDQwcHg7XG5cdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdGJvcmRlcjogNHB4IHNvbGlkICRuYXZ5LXRwLTIwO1xuXHRcdGJvcmRlci10b3AtY29sb3I6ICRjeWFuO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRhbmltYXRpb246IHNwaW5uZXItcm90YXRpb24gMC44cyBsaW5lYXIgaW5maW5pdGU7XG5cdH1cblxuXHQubG9naW4tcGFuZWwge1xuXHRcdC5idG46Zm9jdXMtdmlzaWJsZSwgYTpmb2N1cy12aXNpYmxlIHtcblx0XHRcdG91dGxpbmU6IDJweCBzb2xpZCAkY3lhbjtcblx0XHRcdG91dGxpbmUtb2Zmc2V0OiAycHg7XG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA5OTJweCkge1xuXHRcdFx0cGFkZGluZzogMnJlbTtcblx0XHR9XG5cblx0fVxuXG5cdC50ZXh0LWRhbmdlciB7XG5cdFx0Y29sb3I6ICRyZWQtZGFuZ2VyLWFsdDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW1lZGl1bTtcblx0fVxuXG5cdC50ZXh0LXN1Y2Nlc3Mge1xuXHRcdGNvbG9yOiAkZ3JlZW4tc3VjY2Vzcy1hbHQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdH1cblxuXHQudGV4dC1jZW50ZXIge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0fVxuXG5cdC5sb2dpbi1wYW5lbC10ZXh0IHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0XHRtYXJnaW46IDAgYXV0byAxLjVyZW0gYXV0bztcblx0XHRtYXgtd2lkdGg6IDkwJTtcblx0fVxuXG5cdC52ZXJpZnktaW5wdXQtY29udGFpbmVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRcdGdhcDogMC43NXJlbTtcblx0XHRtYXJnaW46IDJyZW0gYXV0bztcblxuXHRcdGlucHV0IHtcblx0XHRcdHdpZHRoOiA0NXB4O1xuXHRcdFx0aGVpZ2h0OiA1NXB4O1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXhsO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0cGFkZGluZzogMC41cmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdH1cblxuXHQuZm9ybS1hY3Rpb25zLWNlbnRlcmVkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0bWFyZ2luLXRvcDogMS44cmVtO1xuXHRcdGdhcDogMXJlbTtcblx0fVxuXG5cdC5mb3JtLWdyb3VwIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cblx0XHRsYWJlbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMC42cmVtO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0fVxuXG5cdH1cblxuXHQuZm9ybS1jb250cm9sIHtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRwYWRkaW5nOiAxcmVtIDEuMnJlbTtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG5cdFx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zYW5zLXNlcmlmO1xuXG5cdFx0Jjpmb2N1cyB7XG5cdFx0XHRvdXRsaW5lOiBub25lO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRcdGJveC1zaGFkb3c6IDAgMCAwIDNweCAkY3lhbi10cC0yNTtcblx0XHR9XG5cblx0fVxuXG5cdC5mb3JtLWFjdGlvbnMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0Z2FwOiAxcmVtO1xuXHRcdG1hcmdpbi10b3A6IDEuOHJlbTtcblx0fVxuXG5cdC5idG4ge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0XHRwYWRkaW5nOiAxcmVtIDEuNXJlbTtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRcdGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDAuOHJlbSAxcmVtO1xuXHRcdFx0Zm9udC1zaXplOiAwLjk1cmVtO1xuXHRcdH1cblx0fVxuXG5cdC5idG4tbG9naW4ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuO1xuXHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1jeWFuLXNtO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbi1kYXJrZXI7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LWN5YW4tbWQ7XG5cdFx0fVxuXG5cdH1cblxuXHQuYnRuLWxvc3Qge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0b3BhY2l0eTogMC45O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkbmF2eS10cC0wNTtcblx0XHRcdGJvcmRlci1jb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0XHRcdG9wYWNpdHk6IDE7XG5cdFx0XHRib3gtc2hhZG93OiAkc2hhZG93LXNtO1xuXHRcdH1cblxuXHR9XG5cblx0LmRldi13YXJuaW5nIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkd2FybmluZy1iZztcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2FybmluZy1ib3JkZXI7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0cGFkZGluZzogMXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRib3gtc2hhZG93OiAwIDJweCA4cHggJGJsYWNrLXRwLTEwO1xuXHR9XG5cblx0LmxvZ2luLXRpdGxlIHtcblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdGZvbnQtc2l6ZTogMS42cmVtO1xuXHRcdH1cblx0fVxuXG59XG5cbkBrZXlmcmFtZXMgc3Bpbm5lci1yb3RhdGlvbiB7XG5cdHRvIHtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXHR9XG59IiwiLmFib3V0LXBhZ2Uge1xuICAgIC8qIE92ZXJyaWRlIHRoZSB2YXJpYWJsZSBmb3IgdGhpcyBzcGVjaWZpYyBwYWdlICovXG4gICAgLS1wYWdlLWJnLWltYWdlOiB1cmwoJ2h0dHBzOi8vY2F0dHJheC1tZWRpYS5zMy5hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL2ltYWdlcy9zdXJnZW9uX2ltYWdlX2Nyb3BwZWQyLmpwZycpO1xuICAgIC0tcGFnZS1iZy1wb3NpdGlvbjogY2VudGVyO1xufVxuXG4ubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXG4gICAgLmFib3V0LXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiA0cmVtICRzZWN0aW9uLXBhZGRpbmcteDtcbiAgICB9XG5cbiAgICAuYWJvdXQtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIGNvbG9yOiAkd2hpdGUtdHAtOTA7XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMTVyZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS44O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbGlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICAuc2VjdGlvbi10aXRsZSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDEuNXJlbTtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkd2hpdGUtdHAtMjA7XG4gICAgICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgLnN1YnNlY3Rpb24tdGl0bGUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXhsO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA0cmVtO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgICAgIGNvbG9yOiAkd2hpdGUtdHAtODU7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIuNXJlbTtcblxuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjeWFuO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdHJvbmcge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5pbXBhY3Qtc2VjdGlvbiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRibGFjay10cC0zMDtcbiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG4gICAgICAgIHBhZGRpbmc6IDRyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJHdoaXRlLXRwLTEwO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHdoaXRlLXRwLTEwO1xuICAgIH1cblxuICAgIC5pbXBhY3QtY29udGFpbmVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAwLjVmcik7XG4gICAgICAgIGdhcDogMHJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIH1cblxuICAgIC5pbXBhY3QtY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmltcGFjdC1udW1iZXIge1xuICAgICAgICBmb250LXNpemU6IDMuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuICAgICAgICBjb2xvcjogJGN5YW47XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAyMHB4ICRjeWFuLXRwLTIwO1xuICAgIH1cblxuICAgIC5pbXBhY3QtbGFiZWwge1xuICAgICAgICBjb2xvcjogJHdoaXRlLXRwLTgwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuICAgIH1cblxuICAgIC5jbGllbnQtbG9nb3Mtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDNyZW0gMDtcbiAgICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIH1cblxuICAgIC5jbGllbnQtbG9nb3MtbWFycXVlZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdHJhbnNwYXJlbnQsIGJsYWNrIDEwJSwgYmxhY2sgOTAlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIC13ZWJraXQtbWFzay1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgYmxhY2sgMTAlLCBibGFjayA5MCUsIHRyYW5zcGFyZW50KTtcbiAgICB9XG5cbiAgICAuY2xpZW50LWxvZ29zLXRyYWNrIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cmVtO1xuICAgICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICAgIGFuaW1hdGlvbjogY2xpZW50LWxvZ29zLXNjcm9sbCA0MHMgbGluZWFyIGluZmluaXRlO1xuICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYW5pbWF0aW9uLXBsYXktc3RhdGU6IHBhdXNlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5jbGllbnQtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgaGVpZ2h0OiA3MHB4O1xuICAgICAgICBtaW4td2lkdGg6IDE1MHB4O1xuICAgICAgICBvcGFjaXR5OiAwLjY7IFxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgICAgIH1cblxuICAgICAgICBpbWcge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogNjBweDtcbiAgICAgICAgICAgIG1heC13aWR0aDogMTgwcHg7XG4gICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGNsaWVudC1sb2dvcy1zY3JvbGwge1xuICAgIGZyb20ge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLm1vZGVybi1sb2dpbi1wYWdlIHtcbiAgICAgICAgLmFib3V0LXNlY3Rpb24sIC5pbXBhY3Qtc2VjdGlvbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDEuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbXBhY3QtY29udGFpbmVyIHtcbiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgICAgIGdhcDogMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5pbXBhY3QtbnVtYmVyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmNsaWVudC1sb2dvcy10cmFjayB7XG4gICAgICAgICAgICBnYXA6IDJyZW07XG4gICAgICAgIH1cbiAgICB9XG59IiwiLnByaWNpbmctcGFnZSB7XG5cdC0tcGFnZS1iZy1pbWFnZTogdXJsKCdodHRwczovL2NhdHRyYXgtbWVkaWEuczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbS9pbWFnZXMvc3VyZ2Vvbl9pbWFnZV9jcm9wcGVkMi5qcGcnKTtcblx0LS1wYWdlLWJnLXBvc2l0aW9uOiBjZW50ZXIgMTEwJTtcbn1cblxuLm1vZGVybi1sb2dpbi1wYWdlIHtcblx0LnByaWNpbmctc2VjdGlvbiB7XG5cdFx0cGFkZGluZzogM3JlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdH1cblxuXHQucHJpY2luZy1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDUsIDFmcik7XG5cdFx0Z2FwOiAycmVtO1xuXHRcdG1heC13aWR0aDogMTYwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDEyMDFweCkge1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRcdGdhcDogMDtcblxuXHRcdFx0LnByaWNpbmctY2FyZCB7XG5cdFx0XHRcdHdpZHRoOiBjYWxjKCgxMDAlIC0gMTRyZW0pIC8gNSk7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMi41cmVtO1xuXG5cdFx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JjpudGgtY2hpbGQoMikge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDQuOHJlbTtcblxuXHRcdFx0XHRcdCY6OmFmdGVyIHtcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICcnO1xuXHRcdFx0XHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdFx0XHRcdFx0dG9wOiAxNSU7XG5cdFx0XHRcdFx0XHRib3R0b206IDE1JTtcblx0XHRcdFx0XHRcdHJpZ2h0OiAtMi43cmVtO1xuXHRcdFx0XHRcdFx0d2lkdGg6IDJweDtcblx0XHRcdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZS10cC0yMDtcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDFweDtcbiAgICAgICAgXHRcdFx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdCY6aG92ZXI6OmFmdGVyIHtcblx0XHRcdFx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQmOm50aC1jaGlsZCgzKSB7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JjpudGgtY2hpbGQoNCkge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0XHRtYXJnaW4tbGVmdDogMi44cmVtO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogNS40cmVtO1xuXG5cdFx0XHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdFx0XHR0b3A6IDE1JTtcblx0XHRcdFx0XHRcdGJvdHRvbTogMTUlO1xuXHRcdFx0XHRcdFx0cmlnaHQ6IC0yLjVyZW07XG5cdFx0XHRcdFx0XHR3aWR0aDogMnB4O1xuXHRcdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTIwO1xuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMXB4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiAxNDAwcHgpIHtcblx0XHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuXHRcdFx0LnByaWNpbmctY2FyZCB7XG5cdFx0XHRcdHdpZHRoOiA0NSU7XG5cdFx0XHRcdG1hcmdpbjogMXJlbTtcblxuXHRcdFx0XHQmOm50aC1jaGlsZCgyKSxcblx0XHRcdFx0JjpudGgtY2hpbGQoMyksXG5cdFx0XHRcdCY6bnRoLWNoaWxkKDQpIHtcblx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDFyZW07XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDFyZW07XG5cblx0XHRcdFx0XHQmOjphZnRlciB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuXHRcdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXG5cdFx0XHQucHJpY2luZy1jYXJkIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQucHJpY2luZy1jYXJkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTA1O1xuXHRcdHBhZGRpbmc6IDIuNXJlbSAycmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig1cHgpO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1sZztcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW4tdHAtNTA7XG5cdFx0fVxuXG5cdFx0Ji5wb3B1bGFyIHtcblx0XHRcdGJvcmRlci1jb2xvcjogJGN5YW47XG5cdFx0XHRib3JkZXItd2lkdGg6IDJweDtcblx0XHRcdHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG5cdFx0XHRib3gtc2hhZG93OiAwIDEwcHggNDBweCAkY3lhbi10cC0yMDtcblxuXHRcdFx0Jjo6YmVmb3JlIHtcblx0XHRcdFx0Y29udGVudDogJ01vc3QgUG9wdWxhcic7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiAxOHB4O1xuXHRcdFx0XHRyaWdodDogLTM1cHg7XG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuO1xuXHRcdFx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdFx0XHRwYWRkaW5nOiAwLjVyZW0gM3JlbTtcblx0XHRcdFx0Zm9udC1zaXplOiAwLjg1cmVtO1xuXHRcdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdFx0dHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDRweCAxMHB4ICRibGFjay10cC0yMDtcblx0XHRcdH1cblxuXHRcdFx0QG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuXHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDEpO1xuXHRcdFx0fVxuXG5cdFx0fVxuXG5cdFx0Ji5yZWNvbW1lbmRlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiAycHg7XG5cdFx0XHRib3gtc2hhZG93OiAwIDEwcHggNDBweCAkY3lhbi10cC0yMDtcblx0XHR9XG5cblx0XHQuYnRuIHtcblx0XHRcdG1hcmdpbi10b3A6IGF1dG87XG5cdFx0fVxuXG5cdH1cblxuXHQucHJpY2luZy1yb2kge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXNpemU6IDAuOTVyZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdFx0Y29sb3I6ICR3aGl0ZS10cC05MDtcblx0XHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0xMDtcblx0XHRwYWRkaW5nOiAwLjhyZW0gMXJlbTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1zbTtcblx0XHRtYXJnaW4tYm90dG9tOiAyLjVyZW07XG5cdH1cblxuXHQucHJpY2luZy10aXRsZSB7XG5cdFx0Zm9udC1zaXplOiAxLjVyZW07XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdG1hcmdpbjogMCAwIDFyZW0gMDtcblx0fVxuXG5cdC5wcmljaW5nLXByaWNlIHtcblx0XHRmb250LXNpemU6IDIuOHJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICRjeWFuO1xuXHRcdG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG5cblx0XHQucHJpY2UtcGVyaW9kIHtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRjb2xvcjogJHdoaXRlLXRwLTcwO1xuXHRcdH1cblxuXHR9XG5cblx0LnByaWNpbmctZGVzY3JpcHRpb24ge1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRcdG1hcmdpbi1ib3R0b206IDJyZW07XG5cdH1cblxuXHQuZmVhdHVyZXMtbGlzdCB7XG5cdFx0bGlzdC1zdHlsZTogbm9uZTtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdG1hcmdpbjogMCAwIDJyZW0gMDtcblx0XHRmbGV4LWdyb3c6IDE7XG5cblx0XHRsaSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRcdGdhcDogMC43NXJlbTtcblx0XHRcdG1hcmdpbi1ib3R0b206IDFyZW07XG5cdFx0XHRmb250LXNpemU6IDAuOTVyZW07XG5cdFx0XHRjb2xvcjogJHdoaXRlLXRwLTkwO1xuXG5cdFx0XHQmLmRpc2FibGVkIHtcblx0XHRcdFx0Y29sb3I6ICR3aGl0ZS10cC01MDtcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG5cdFx0XHR9XG5cblx0XHR9XG5cblx0XHQuZmEtY2hlY2stY2lyY2xlIHtcblx0XHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0XHRmb250LXNpemU6IDEuMnJlbTtcblx0XHR9XG5cblx0XHQuZmEtdGltZXMtY2lyY2xlIHtcblx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtNDA7XG5cdFx0XHRmb250LXNpemU6IDEuMnJlbTtcblx0XHR9XG5cblx0fVxuXG5cdC5idG4tc2Vjb25kYXJ5IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRjeWFuO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0fVxuXG5cdH1cblxuXHQvKiBBZGQtb25zOiBleHRyYXMgYm91Z2h0IG9uIHRvcCBvZiBhIHBsYW4gcmF0aGVyIHRoYW4gaW5zdGVhZCBvZiBvbmUsIHNvIHRoZXkgc2l0IGJlbG93IHRoZVxuXHQgICBwbGFuIGdyaWQgaW4gYSBuYXJyb3dlciB0aHJlZS1hY3Jvc3Mgcm93IG9mIHRoZWlyIG93bi4gKi9cblx0LmFkZG9uLXNlY3Rpb24ge1xuXHRcdHBhZGRpbmc6IDFyZW0gJHNlY3Rpb24tcGFkZGluZy14IDRyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdG1heC13aWR0aDogMTYwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRwYWRkaW5nOiAxcmVtICRzZWN0aW9uLXBhZGRpbmcteCAzcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHR9XG5cblx0fVxuXG5cdC5hZGRvbi1kaXZpZGVyIHtcblx0XHRoZWlnaHQ6IDFweDtcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCAkd2hpdGUtdHAtMjAsIHRyYW5zcGFyZW50KTtcblx0XHRtYXJnaW4tYm90dG9tOiAzcmVtO1xuXHR9XG5cblx0LmFkZG9uLWhlYWRlciB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdG1hcmdpbi1ib3R0b206IDNyZW07XG5cblx0XHRoMiB7XG5cdFx0XHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRcdG1hcmdpbjogMCAwIDFyZW0gMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZS10cC04NTtcblx0XHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0XHRcdG1heC13aWR0aDogODAwcHg7XG5cdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHR9XG5cblx0fVxuXG5cdC8qIE9uZSBncm91cCBwZXIgYWRkLW9uLiBUaGVyZSBpcyBvbmx5IHRyYW5zY3JpcHRpb24gdG9kYXksIGJ1dCB0aGUgc3BhY2luZyBpcyBzZXQgdXAgc28gYVxuXHQgICBzZWNvbmQgZ3JvdXAgY2FuIGJlIGRyb3BwZWQgaW4gYmVsb3cgd2l0aG91dCB0b3VjaGluZyBhbnl0aGluZyBlbHNlLiAqL1xuXHQvKiBOYXJyb3dlciB0aGFuIHRoZSBzZWN0aW9uIGl0IHNpdHMgaW46IHRocmVlIGNhcmRzIHN0cmV0Y2hlZCBhY3Jvc3MgdGhlIGZ1bGwgMTYwMHB4IHdvdWxkIGVhY2hcblx0ICAgZW5kIHVwIHdpZGVyIHRoYW4gYSBwbGFuIGNhcmQgYWJvdmUgdGhlbS4gQXQgMTIwMCB0aGV5IGxhbmQgY2xvc2UgdG8gb25lLiAqL1xuXHQuYWRkb24tZ3JvdXAge1xuXHRcdG1heC13aWR0aDogMTIwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvIDRyZW0gYXV0bztcblxuXHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdH1cblxuXHR9XG5cblx0LmFkZG9uLWdyb3VwLWhlYWRlciB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblx0XHRnYXA6IDEuMjVyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblxuXHRcdC5hZGRvbi1ncm91cC1pY29uIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0ZGlzcGxheTogZmxleDtcblx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0XHRcdHdpZHRoOiA1NnB4O1xuXHRcdFx0aGVpZ2h0OiA1NnB4O1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbGc7XG5cdFx0XHRiYWNrZ3JvdW5kOiAkY3lhbi10cC0xMDtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRjeWFuLXRwLTMwO1xuXHRcdFx0Y29sb3I6ICRjeWFuO1xuXHRcdFx0Zm9udC1zaXplOiAxLjVyZW07XG5cdFx0fVxuXG5cdFx0aDMge1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWxnO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkd2hpdGU7XG5cdFx0XHRtYXJnaW46IDAgMCAwLjVyZW0gMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0XHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdFx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdFx0XHRtYXgtd2lkdGg6IDkwMHB4O1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGdhcDogMXJlbTtcblx0XHR9XG5cblx0fVxuXG5cdC5hZGRvbi1ncmlkIHtcblx0XHRkaXNwbGF5OiBncmlkO1xuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcblx0XHRnYXA6IDJyZW07XG5cdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XG5cblx0XHQvKiBUd28gYWNyb3NzIGJlZm9yZSBvbmU6IHRocmVlIGNhcmRzIGF0IHRhYmxldCB3aWR0aCBsZWF2ZSBubyByb29tIGZvciB0aGUgZmVhdHVyZSBsaXN0cy4gKi9cblx0XHRAbWVkaWEgKG1heC13aWR0aDogMTIwMHB4KSB7XG5cdFx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0XHRnYXA6IDEuNXJlbTtcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHRcdH1cblxuXHR9XG5cblx0LmFkZG9uLWNhcmQge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRiYWNrZ3JvdW5kOiAkd2hpdGUtdHAtMDU7XG5cdFx0cGFkZGluZzogMnJlbTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2hpdGUtdHAtMTU7XG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcblx0XHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTtcblx0XHRcdGJhY2tncm91bmQ6ICR3aGl0ZS10cC0xMDtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctbGc7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuLXRwLTUwO1xuXHRcdH1cblxuXHRcdCYucmVjb21tZW5kZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRcdGJvcmRlci13aWR0aDogMnB4O1xuXHRcdFx0Ym94LXNoYWRvdzogMCAxMHB4IDQwcHggJGN5YW4tdHAtMjA7XG5cdFx0fVxuXG5cdFx0LyogRGlhbGxlZCBiYWNrIGZyb20gdGhlIHBsYW4gY2FyZHMgYWJvdmU6IGFuIGFkZC1vbiBtdXN0IG5vdCBvdXQtc2hvdXQgdGhlIHBsYW4gaXRcblx0XHQgICBhdHRhY2hlcyB0by4gKi9cblx0XHQucHJpY2luZy10aXRsZSB7XG5cdFx0XHRmb250LXNpemU6IDEuMzVyZW07XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuXHRcdH1cblxuXHRcdC5wcmljaW5nLXByaWNlIHtcblx0XHRcdGZvbnQtc2l6ZTogMi40cmVtO1xuXHRcdH1cblxuXHRcdC5wcmljaW5nLWRlc2NyaXB0aW9uIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblx0XHR9XG5cblx0XHQuZmVhdHVyZXMtbGlzdCB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRtYXJnaW4tdG9wOiBhdXRvO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXG5cdH1cblxuXHQvKiBUaGUgdHJpYWwgaXMgbm90IGEgcGFpZCB0aWVyLCBzbyBpdCBpcyBtYXJrZWQgb3V0IHJhdGhlciB0aGFuIGxlZnQgdG8gcmVhZCBhcyBhIHRoaXJkXG5cdCAgIHByaWNlIHBvaW50LiAqL1xuXHQuYWRkb24tY2FyZC50cmlhbCB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkZ3JlZW4tdHAtNDA7XG5cdFx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTA4O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRncmVlbi10cC03MDtcblx0XHR9XG5cblx0XHQucHJpY2luZy1wcmljZSB7XG5cdFx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdH1cblxuXHR9XG5cblx0LyogU2l0cyBhYm92ZSB0aGUgdHJpYWwgY2FyZCdzIG93biBidXR0b24sIHdoaWNoIGhvbGRzIHRoZSBib3R0b20gc2xvdCBzbyBhbGwgdGhyZWUgY2FyZHNcblx0ICAgbGluZSB1cCBhbG9uZyB0aGUgYm90dG9tLiAqL1xuXHQuYWRkb24tY3RhLW5vdGUge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0Z2FwOiAwLjZyZW07XG5cdFx0bWFyZ2luLXRvcDogYXV0bztcblx0XHRtYXJnaW4tYm90dG9tOiAxLjVyZW07XG5cdFx0cGFkZGluZzogMC45cmVtIDFyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtc207XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0XHRmb250LXNpemU6IDAuODVyZW07XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cblx0XHRpIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0bWFyZ2luLXRvcDogMC4ycmVtO1xuXHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHR9XG5cblx0fVxuXG5cdC5hZGRvbi1iYWRnZSB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdHRvcDogLTAuNzVyZW07XG5cdFx0cmlnaHQ6IDEuNXJlbTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY3lhbjtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdHBhZGRpbmc6IDAuM3JlbSAxcmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdGZvbnQtc2l6ZTogMC43NXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDEwcHggJGJsYWNrLXRwLTIwO1xuXG5cdFx0Ji5mcmVlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmVlbjtcblx0XHR9XG5cblx0fVxuXG59IiwiLmZlYXR1cmVzLXBhZ2Uge1xuXHQtLXBhZ2UtYmctaW1hZ2U6IHVybCgnaHR0cHM6Ly9pbWFnZXMudW5zcGxhc2guY29tL3Bob3RvLTE1MjIwNzE4MjAwODEtMDA5ZjAxMjljNzFjP3E9ODAmdz0yMDcwJmF1dG89Zm9ybWF0JmZpdD1jcm9wJyk7XG5cdC0tcGFnZS1iZy1wb3NpdGlvbjogY2VudGVyIDgwJTtcbn1cblxuLm1vZGVybi1sb2dpbi1wYWdlIHtcblx0LmZlYXR1cmVzLWdyaWQge1xuXHRcdGRpc3BsYXk6IGdyaWQ7XG5cdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcblx0XHRnYXA6IDJyZW07XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuXHRcdH1cblx0fVxuXG5cdC5mZWF0dXJlcy1vdmVydmlldyAuZmVhdHVyZXMtZ3JpZCB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMyMHB4LCAxZnIpKTtcblx0XHRnYXA6IDJyZW07XG5cdH1cblxuXHQuZmVhdHVyZS1jYXJkIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cGFkZGluZzogMi41cmVtIDJyZW07XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTA1O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1sZztcblx0XHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpO1xuXHRcdFx0YmFja2dyb3VuZDogJHdoaXRlLXRwLTEwO1xuXHRcdH1cblxuXHR9XG5cblx0LmZlYXR1cmUtaWNvbiB7XG5cdFx0Zm9udC1zaXplOiAyLjhyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdGNvbG9yOiAkY3lhbjtcblx0fVxuXG5cdC5mZWF0dXJlLXRpdGxlIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtbGc7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRtYXJnaW46IDAgMCAwLjc1cmVtIDA7XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0fVxuXG5cdC5mZWF0dXJlLWRlc2NyaXB0aW9uIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRjb2xvcjogJHdoaXRlLXRwLTg1O1xuXHRcdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdFx0bWFyZ2luOiAwO1xuXHR9XG5cblx0LmZpbmFsLWN0YS1zZWN0aW9uIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0cGFkZGluZzogNHJlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsYWNrLXRwLTIwO1xuXHR9XG5cblx0LmZlYXR1cmVzLWRpc2NsYWltZXIge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRwYWRkaW5nOiAycmVtICRzZWN0aW9uLXBhZGRpbmcteCAxcmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHRtYXgtd2lkdGg6IDgwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJHdoaXRlLXRwLTYwO1xuXHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblx0fVxuXG5cdC5zZWN0aW9uLXRpdGxlIHtcblx0XHRAbWVkaWEgKG1heC13aWR0aDogOTkycHgpIHtcblx0XHRcdGZvbnQtc2l6ZTogMnJlbTtcblx0XHR9XG5cdH1cblxufVxuXG4uY29taW5nLXNvb24tYmFubmVyIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDE4cHg7XG5cdHJpZ2h0OiAtMzVweDtcblx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy1jdGE7XG5cdGNvbG9yOiAkYmxhY2s7XG5cdHBhZGRpbmc6IDZweCAzNXB4O1xuXHRmb250LXNpemU6IDAuOHJlbTtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG5cdGJveC1zaGFkb3c6IDAgNHB4IDZweCAkYmxhY2stdHAtMTA7XG5cdGxldHRlci1zcGFjaW5nOiAwLjVweDtcblx0ei1pbmRleDogMTA7XG59IiwiLm1vZGVybi1sb2dpbi1wYWdlIHtcblx0LmRlbW8taGVybyB7XG5cdFx0cGFkZGluZzogNHJlbSAkc2VjdGlvbi1wYWRkaW5nLXggM3JlbSAkc2VjdGlvbi1wYWRkaW5nLXg7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0Lmhlcm8tdGl0bGUge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdH1cblxuXHRcdC5oZXJvLXN1YnRpdGxlIHtcblx0XHRcdG1heC13aWR0aDogODAwcHg7XG5cdFx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRwYWRkaW5nOiAzcmVtICRzZWN0aW9uLXBhZGRpbmcteCAycmVtICRzZWN0aW9uLXBhZGRpbmcteDtcblx0XHR9XG5cblx0fVxuXG5cdC5kZW1vLXNlY3Rpb24ge1xuXHRcdHBhZGRpbmc6IDNyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRwYWRkaW5nOiAyLjVyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdH1cblx0fVxuXG5cdC5kZW1vLWNvbnRhaW5lciB7XG5cdFx0bWF4LXdpZHRoOiAxMTAwcHg7XG5cdFx0bWFyZ2luOiAwIGF1dG87XG5cdFx0cGFkZGluZzogMCAxcmVtO1xuXHR9XG5cblx0LnZpZGVvLXdyYXBwZXIge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRwYWRkaW5nLWJvdHRvbTogNTYuMjUlO1xuXHRcdGhlaWdodDogMDtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXhsO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICR3aGl0ZS10cC0xNTtcblx0XHRib3gtc2hhZG93OiAwIDEwcHggNDBweCAkYmxhY2stdHAtMzA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGJsYWNrO1xuXG5cdFx0aWZyYW1lIHtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdHRvcDogMDtcblx0XHRcdGxlZnQ6IDA7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdGhlaWdodDogMTAwJTtcblx0XHR9XG5cblx0fVxuXG5cdC5zZWN0aW9uLXRpdGxlIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHR9XG5cblx0LnNlY3Rpb24tc3VidGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogMS4xNXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRtYXgtd2lkdGg6IDc1MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvIDMuNXJlbSBhdXRvO1xuXHRcdGNvbG9yOiAkd2hpdGUtdHAtODU7XG5cdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHR9XG5cblx0LmZvcm0tY29udGFpbmVyIHtcblx0XHRtYXgtd2lkdGg6IDY1MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRwYWRkaW5nOiAzcmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctbWQ7XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdHBhZGRpbmc6IDJyZW0gMS41cmVtO1xuXHRcdH1cblx0fVxuXG5cdC5idG4tcHJpbWFyeSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW47XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRib3gtc2hhZG93OiAkc2hhZG93LWN5YW4tc207XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjeWFuLWRhcmtlcjtcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcblx0XHRcdGJveC1zaGFkb3c6ICRzaGFkb3ctY3lhbi1tZDtcblx0XHR9XG5cblx0XHQmOmRpc2FibGVkIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LWRpc2FibGVkO1xuXHRcdFx0Y3Vyc29yOiBub3QtYWxsb3dlZDtcblx0XHRcdGJveC1zaGFkb3c6IG5vbmU7XG5cdFx0XHR0cmFuc2Zvcm06IG5vbmU7XG5cdFx0fVxuXG5cdH1cblxuXHQuc3VjY2Vzcy1tZXNzYWdlIHtcblx0XHRtYXgtd2lkdGg6IDY1MHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHRcdHBhZGRpbmc6IDIuNXJlbTtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0YmFja2dyb3VuZDogJGdyZWVuLXRwLTEwO1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmVlbi10cC03MDtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWxnO1xuXG5cdFx0aDQge1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXhsO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdG1hcmdpbjogMCAwIDFyZW0gMDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMS4xcmVtO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZS10cC05MDtcblx0XHR9XG5cblx0fVxufVxuXG4ubW9kZXJuLW1vZGFsLWJhY2tkcm9wIHtcblx0YmFja2dyb3VuZDogJG5hdnktYmFja2Ryb3A7XG5cdGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcblx0LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi5tb2Rlcm4tbW9kYWwtd2luZG93IHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRib3R0b206IDA7XG5cdHotaW5kZXg6IDEwNTA7XG5cdGRpc3BsYXk6IGZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRwb2ludGVyLWV2ZW50czogbm9uZTtcblxuXHQubW9kYWwtY29udGVudCB7XG5cdFx0bWFyZ2luOiAwO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcblx0XHRjb2xvcjogJHRleHQtZGFyaztcblx0XHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy14bDtcblx0XHRib3gtc2hhZG93OiAwIDEycHggNDBweCAkYmxhY2stdHAtNDA7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0bWF4LXdpZHRoOiA1MDBweDtcblx0XHR3aWR0aDogOTAlO1xuXHRcdHBvaW50ZXItZXZlbnRzOiBhdXRvO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG5cdFx0b3BhY2l0eTogMDtcblx0XHRhbmltYXRpb246IG1vZGFsRmFkZUluIDAuM3MgZWFzZS1vdXQgZm9yd2FyZHM7XG5cdH1cblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHQubW9kYWwtY29udGVudCB7XG5cdFx0XHR3aWR0aDogOTUlO1xuXHRcdFx0bWFyZ2luOiAxcmVtO1xuXHRcdH1cblx0fVxuXG59XG5cbkBrZXlmcmFtZXMgbW9kYWxGYWRlSW4ge1xuXHRmcm9tIHtcblx0XHRvcGFjaXR5OiAwO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzBweCk7XG5cdH1cblxuXHR0byB7XG5cdFx0b3BhY2l0eTogMTtcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG5cdH1cbn1cblxuLm1vZGFsLWhlYWRlciB7XG5cdHBhZGRpbmc6IDEuNXJlbSAycmVtO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGJhY2tncm91bmQtY29sb3I6ICRncmV5LW1vZGFsLWhlYWRlcjtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRwYWRkaW5nOiAxLjJyZW0gMS41cmVtO1xuXHR9XG59XG5cbi5tb2RhbC10aXRsZSB7XG5cdGZvbnQtc2l6ZTogMS42NXJlbTtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ib2xkO1xuXHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmctcmlnaHQ6IDJyZW07XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRmb250LXNpemU6IDEuNHJlbTtcblx0fVxufVxuXG4uY2xvc2UtYnRuIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDFyZW07XG5cdHJpZ2h0OiAxcmVtO1xuXHRmb250LXNpemU6IDIuMnJlbTtcblx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1saWdodDtcblx0Y29sb3I6ICR0ZXh0LWNsb3NlLWJ0bjtcblx0YmFja2dyb3VuZDogbm9uZTtcblx0Ym9yZGVyOiBub25lO1xuXHRvcGFjaXR5OiAwLjc7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UsIGNvbG9yIDAuMnMgZWFzZSwgdHJhbnNmb3JtIDAuMnMgZWFzZTtcblx0Ly8gQWRkZWQgdHJhbnNmb3JtIFxuXHQmOmhvdmVyIHtcblx0XHRvcGFjaXR5OiAxO1xuXHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcblx0fVxuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdHRvcDogMC44cmVtO1xuXHRcdHJpZ2h0OiAwLjhyZW07XG5cdFx0Zm9udC1zaXplOiAycmVtO1xuXHR9XG5cbn1cblxuLm1vZGFsLWJvZHkge1xuXHRwYWRkaW5nOiAyLjVyZW0gMnJlbTtcblxuXHQuZm9ybS1ncm91cCB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHR9XG5cblx0LmZvcm0tY29udHJvbDpmb2N1cyB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRib3gtc2hhZG93OiAwIDAgMCAzcHggJGN5YW4tdHAtMjU7XG5cdH1cblxuXHQuYnRuLXByaW1hcnkge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDEuMXJlbTtcblx0XHRmb250LXNpemU6IDEuMXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0bWFyZ2luLXRvcDogMC41cmVtO1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0cGFkZGluZzogMS44cmVtIDEuNXJlbTtcblxuXHRcdC5idG4tcHJpbWFyeSB7XG5cdFx0XHRwYWRkaW5nOiAxcmVtO1xuXHRcdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLWJhc2U7XG5cdFx0fVxuXHR9XG5cbn1cblxuLm1vZGFsLXN1YnRpdGxlIHtcblx0Zm9udC1zaXplOiAxLjA1cmVtO1xuXHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWxpZ2h0O1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbi1ib3R0b206IDJyZW07XG5cdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXG5cdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdGZvbnQtc2l6ZTogMC45NXJlbTtcblx0fVxufVxuXG4ubW9kYWwtc3VjY2VzcyB7XG5cdGJhY2tncm91bmQ6ICRncmVlbi10cC0wODtcblx0Ym9yZGVyOiAxcHggc29saWQgJGdyZWVuLXRwLTQwO1xuXHRib3JkZXItcmFkaXVzOiAkYm9yZGVyLXJhZGl1cy1tZDtcblx0cGFkZGluZzogMS41cmVtO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdG1hcmdpbi10b3A6IDEuNXJlbTtcblx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cblx0aDQge1xuXHRcdGZvbnQtc2l6ZTogMS42cmVtO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcblx0XHRjb2xvcjogJGdyZWVuO1xuXHRcdG1hcmdpbjogMCAwIDAuOHJlbSAwO1xuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRmb250LXNpemU6IDEuNHJlbTtcblx0XHR9XG5cdH1cblxuXHRwIHtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtYmFzZTtcblx0XHRsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0LWJhc2U7XG5cdFx0Y29sb3I6ICR0ZXh0LWxpZ2h0O1xuXHR9XG5cblx0LmZhLWNoZWNrLWNpcmNsZSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAwLjc1cmVtO1xuXHRcdGNvbG9yOiAkZ3JlZW47XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXhsO1xuXHRcdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cdH1cbn1cblxuLyogU2l0cyBhYm92ZSB0aGUgc3VibWl0IGJ1dHRvbiByYXRoZXIgdGhhbiByZXBsYWNpbmcgdGhlIGZvcm0sIGJlY2F1c2UgdGhlIGRldGFpbHMgYXJlIHN0aWxsXG4gICBmaWxsZWQgaW4gYW5kIHJldHJ5aW5nIGlzIHVzdWFsbHkgYWxsIHRoYXQgaXMgbmVlZGVkLiAqL1xuLm1vZGFsLWVycm9yIHtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdGdhcDogMC43NXJlbTtcblx0YmFja2dyb3VuZDogcmdiYSgxNjksIDY4LCA2NiwgMC4wOCk7XG5cdGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTY5LCA2OCwgNjYsIDAuNCk7XG5cdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG5cdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1iYXNlO1xuXHRjb2xvcjogJGRhbmdlcjtcblxuXHRpIHtcblx0XHRmbGV4LXNocmluazogMDtcblx0XHRtYXJnaW4tdG9wOiAwLjE1cmVtO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHR9XG59IiwiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogISBTZWF0IG1vZGFscyAocHJpY2luZyBwYWdlIGFkZC1vbnMpXG4vKlxuLyogVGhlIHR3byBtb2RhbHMgb3BlbmVkIGZyb20gdGhlIEFJIHRyYW5zY3JpcHRpb24gYWRkLW9uIGNhcmRzOiBidXlpbmcgc2VhdHMsIGFuZCBoYW5kaW5nIHRoZW1cbi8qIG91dC4gQm90aCBzaGFyZSB0aGUgY2hyb21lICgubW9kYWwtaGVhZGVyLCAubW9kYWwtYm9keSwgLm1vZGFsLXRpdGxlLCAuY2xvc2UtYnRuKSB3aXRoIHRoZVxuLyogYm9vay1hLWRlbW8gbW9kYWwgaW4gX3dlYnNpdGVfYm9va19kZW1vLmNzcywgYW5kIHRoZSBhc3NpZ24gbW9kYWwgcmV1c2VzIHRoZSB0YWJsZSwgYXZhdGFyIGFuZFxuLyogdGllciBzZWxlY3RvciBzdHlsaW5nIGZyb20gX3RyYW5zY3JpcHRpb24tc2VhdHMuY3NzLiBPbmx5IHdoYXQgaXMgc3BlY2lmaWMgdG8gdGhlc2UgdHdvIGxpdmVzXG4vKiBoZXJlLlxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKiBCb3RoIGFyZSB3aWRlciB0aGFuIHRoZSBzaGFyZWQgNTAwcHggZGVtbyBtb2RhbDogdGhlIHB1cmNoYXNlIHN0ZXAgY2FycmllcyB0d28gdGllciBjYXJkcywgYVxuICAgc3RlcHBlciBlYWNoIGFuZCBhIHByaWNlZCBzdW1tYXJ5LCBhbmQgdGhlIGFzc2lnbiBtb2RhbCBjYXJyaWVzIGEgdGFibGUgb2YgdGhlIHdob2xlIHByYWN0aWNlLlxuICAgQ2FwcGVkIGF0IHRoZSB2aWV3cG9ydCB3aXRoIHRoZSBib2R5IHNjcm9sbGluZyBpbnNpZGUsIGJlY2F1c2UgYm90aCBydW4gb2ZmIGEgbGFwdG9wIHNjcmVlbi4gKi9cbi5zZWF0LXB1cmNoYXNlLXdpbmRvdyxcbi5zZWF0LWFzc2lnbi13aW5kb3cge1xuXHQubW9kYWwtY29udGVudCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdG1heC1oZWlnaHQ6IDkwdmg7XG5cdH1cbn1cblxuLnNlYXQtcHVyY2hhc2Utd2luZG93IHtcblx0Lm1vZGFsLWNvbnRlbnQge1xuXHRcdG1heC13aWR0aDogNzIwcHg7XG5cdH1cbn1cblxuLnNlYXQtYXNzaWduLXdpbmRvdyB7XG5cdC5tb2RhbC1jb250ZW50IHtcblx0XHRtYXgtd2lkdGg6IDkwMHB4O1xuXHR9XG59XG5cbi5zZWF0LXB1cmNoYXNlLW1vZGFsIHtcblx0ZGlzcGxheTogZmxleDtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0bWluLWhlaWdodDogMDtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdC5tb2RhbC1oZWFkZXIge1xuXHRcdGZsZXgtc2hyaW5rOiAwO1xuXHR9XG5cblx0LyogbWluLWhlaWdodCBvdmVycmlkZXMgdGhlIG1pbi1jb250ZW50IGZsb29yIGEgZmxleCBpdGVtIGdldHMgYnkgZGVmYXVsdCwgd2l0aG91dCB3aGljaCB0aGVcblx0ICAgYm9keSByZWZ1c2VzIHRvIHNocmluayBhbmQgc2Nyb2xscyB0aGUgd2hvbGUgcGFnZSBpbnN0ZWFkIG9mIGl0c2VsZi4gKi9cblx0Lm1vZGFsLWJvZHkge1xuXHRcdG1pbi1oZWlnaHQ6IDA7XG5cdFx0b3ZlcmZsb3cteTogYXV0bztcblx0fVxuXG5cdC8qIEV2ZXJ5IHN0ZXAgaW4gaGVyZSBpcyBhIHNlcnZlciByb3VuZCB0cmlwIC0gc2lnbmluZyBpbiwgcHJpY2luZywgY2hhcmdpbmcgYSBjYXJkIC0gc28gdGhlXG5cdCAgIHdob2xlIG1vZGFsIGlzIGJsb2NrZWQgcmF0aGVyIHRoYW4gZWFjaCBjb250cm9sIGRpc2FibGVkIG9uZSBhdCBhIHRpbWUuICovXG5cdC5zZWF0LXB1cmNoYXNlLW92ZXJsYXkge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDA7XG5cdFx0bGVmdDogMDtcblx0XHR3aWR0aDogMTAwJTtcblx0XHRoZWlnaHQ6IDEwMCU7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAxcmVtO1xuXHRcdHotaW5kZXg6IDEwO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZS10cC05MDtcblx0XHRiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNHB4KTtcblx0XHQtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuXHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1tZWRpdW07XG5cdH1cblxuXHQuc3Bpbm5lciB7XG5cdFx0d2lkdGg6IDQwcHg7XG5cdFx0aGVpZ2h0OiA0MHB4O1xuXHRcdGJvcmRlcjogNHB4IHNvbGlkICRuYXZ5LXRwLTIwO1xuXHRcdGJvcmRlci10b3AtY29sb3I6ICRjeWFuO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLWNpcmNsZTtcblx0XHRhbmltYXRpb246IHNwaW5uZXItcm90YXRpb24gMC44cyBsaW5lYXIgaW5maW5pdGU7XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1kZXYtd2FybmluZyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMC4yNXJlbTtcblx0XHRwYWRkaW5nOiAwLjc1cmVtIDFyZW07XG5cdFx0bWFyZ2luLWJvdHRvbTogMS41cmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6ICR5ZWxsb3ctdHAtMTA7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJHllbGxvdy10cC01MDtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cblx0XHRzdHJvbmcge1xuXHRcdFx0bGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1mb290bm90ZSB7XG5cdFx0bWFyZ2luOiAxLjVyZW0gMCAwIDA7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cblx0XHRhIHtcblx0XHRcdGNvbG9yOiAkY3lhbi1kYXJrO1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHR9XG5cdH1cblxuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQvKiBUd28tZmFjdG9yIGNvZGUgYm94ZXNcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LnNlYXQtY29kZS1pbnB1dHMge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdFx0Z2FwOiAwLjZyZW07XG5cdFx0bWFyZ2luOiAxLjVyZW0gMCAwLjVyZW0gMDtcblxuXHRcdC5mb3JtLWNvbnRyb2wge1xuXHRcdFx0d2lkdGg6IDQ4cHg7XG5cdFx0XHRoZWlnaHQ6IDU2cHg7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0Zm9udC1zaXplOiAxLjZyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0Z2FwOiAwLjM1cmVtO1xuXG5cdFx0XHQuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0d2lkdGg6IDQwcHg7XG5cdFx0XHRcdGhlaWdodDogNDhweDtcblx0XHRcdFx0Zm9udC1zaXplOiAxLjNyZW07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LyogUHJhY3RpY2UgcGlja2VyXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC5zZWF0LXByYWN0aWNlLWxpc3Qge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRnYXA6IDAuNzVyZW07XG5cdH1cblxuXHQuc2VhdC1wcmFjdGljZS1vcHRpb24ge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAxcmVtO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IDFyZW0gMS4yNXJlbTtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGJhY2tncm91bmQ6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjJzIGVhc2UsIGJhY2tncm91bmQgMC4ycyBlYXNlO1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkY3lhbjtcblx0XHRcdGJhY2tncm91bmQ6ICRjeWFuLXRwLTA1O1xuXHRcdH1cblxuXHRcdC8qIFRoZSBvbmUgYWxyZWFkeSBsb2FkZWQsIHNvIHN3aXRjaGluZyBhd2F5IGFuZCBiYWNrIGlzIG5vdCBhIGd1ZXNzLiAqL1xuXHRcdCYuY3VycmVudCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0YmFja2dyb3VuZDogJGN5YW4tdHAtMDU7XG5cdFx0fVxuXG5cdFx0LnNlYXQtcHJhY3RpY2UtbmFtZSB7XG5cdFx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXG5cdFx0LnNlYXQtcHJhY3RpY2UtY3VycmVudCB7XG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LW5vcm1hbDtcblx0XHRcdGNvbG9yOiAkY3lhbi1kYXJrO1xuXHRcdH1cblxuXHRcdGkge1xuXHRcdFx0Y29sb3I6ICRjeWFuO1xuXHRcdH1cblx0fVxuXG5cdC8qIE5hbWVzIHRoZSBwcmFjdGljZSBiZWluZyB3b3JrZWQgb24sIGFuZCBjYXJyaWVzIHRoZSB3YXkgdG8gc3dhcCB0byBhbm90aGVyLiBTaXRzIGF0IHRoZSB0b3Bcblx0ICAgb2YgYm90aCBtb2RhbHM6IGEgZ3JvdXAgc2V0dGluZyB1cCBzZXZlcmFsIG5lZWRzIHRvIHNlZSB3aGljaCBvbmUgaXQgaXMgb24gYmVmb3JlIGl0IHJlYWRzXG5cdCAgIGFueXRoaW5nIGJlbG93LiAqL1xuXHQuc2VhdC1wcmFjdGljZS1iYXIge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0Z2FwOiAxcmVtO1xuXHRcdHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6ICRuYXZ5LXRwLTA1O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblxuXHRcdC5idG4ge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0XHRtYXJnaW46IDA7XG5cdFx0XHRwYWRkaW5nOiAwLjRyZW0gMC45cmVtO1xuXHRcdFx0Zm9udC1zaXplOiAwLjc1cmVtO1xuXHRcdFx0d2lkdGg6IGF1dG87XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtYXgtd2lkdGg6IDU3NnB4KSB7XG5cdFx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cdFx0XHRnYXA6IDAuNnJlbTtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wcmFjdGljZS1iYXItbGFiZWwge1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDAuNnJlbTtcblx0XHRtaW4td2lkdGg6IDA7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblxuXHRcdHN0cm9uZyB7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblxuXHRcdGkge1xuXHRcdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdH1cblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIEJ1eWluZ1xuXHQvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXHQuc2VhdC1wdXJjaGFzZS1sb2FkaW5nIHtcblx0XHRwYWRkaW5nOiAyLjVyZW0gMDtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcblx0XHRcdGNvbG9yOiAkY3lhbjtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS10aWVycyB7XG5cdFx0ZGlzcGxheTogZ3JpZDtcblx0XHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7XG5cdFx0Z2FwOiAxcmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuNXJlbTtcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1NzZweCkge1xuXHRcdFx0Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG5cdFx0fVxuXHR9XG5cblx0LyogVGhlIHRpZXIgd2hvc2UgYnV0dG9uIHdhcyBjbGlja2VkIG9uIHRoZSBwcmljaW5nIHBhZ2UsIHNvIHRoZSB2aXNpdG9yIGNhbiBzZWUgdGhhdCB0aGVcblx0ICAgbW9kYWwgb3BlbmVkIG9uIHRoZSBzZWF0IHRoZXkgYWN0dWFsbHkgYXNrZWQgZm9yLiAqL1xuXHQuc2VhdC1wdXJjaGFzZS10aWVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0Z2FwOiAwLjZyZW07XG5cdFx0cGFkZGluZzogMS4yNXJlbTtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0YmFja2dyb3VuZDogJHdoaXRlO1xuXG5cdFx0Ji5zZWxlY3RlZCB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjeWFuO1xuXHRcdFx0Ym94LXNoYWRvdzogMCAwIDAgM3B4ICRjeWFuLXRwLTEwO1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXItaGVhZCB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogYmFzZWxpbmU7XG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXHRcdGdhcDogMC41cmVtO1xuXG5cdFx0aDQge1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxLjFyZW07XG5cdFx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0XHRjb2xvcjogJG5hdnktZGFyay10ZXh0O1xuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXItcHJpY2Uge1xuXHRcdGZvbnQtc2l6ZTogMS4xNXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Y29sb3I6ICRuYXZ5O1xuXHRcdHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cblx0XHRzbWFsbCB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdGZvbnQtc2l6ZTogMC43cmVtO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1ub3JtYWw7XG5cdFx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS10aWVyLWluY2x1ZGVkIHtcblx0XHRtYXJnaW46IDA7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLXRpZXItc3RhdGUge1xuXHRcdGZvbnQtc2l6ZTogMC44cmVtO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIFByaWNlZCBzdW1tYXJ5LiBFdmVyeSBmaWd1cmUgaW4gaGVyZSBjb21lcyBiYWNrIGZyb20gdGhlIHNlcnZlci5cblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0LnNlYXQtcHVyY2hhc2Utc3VtbWFyeSB7XG5cdFx0cGFkZGluZzogMS4yNXJlbTtcblx0XHRtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6ICRncmV5LW1vZGFsLWhlYWRlcjtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1zdW1tYXJ5LWxvYWRpbmcsXG5cdC5zZWF0LXB1cmNoYXNlLXN1bW1hcnktZW1wdHkge1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcblx0XHRcdGNvbG9yOiAkY3lhbjtcblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1saW5lIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRnYXA6IDFyZW07XG5cdFx0cGFkZGluZzogMC40cmVtIDA7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGNvbG9yOiAkdGV4dC1saWdodDtcblxuXHRcdHNtYWxsIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAwLjc1cmVtO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdH1cblxuXHRcdHN0cm9uZyB7XG5cdFx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xuXHRcdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHR9XG5cblx0XHQmLnRvdGFsIHtcblx0XHRcdG1hcmdpbi10b3A6IDAuNHJlbTtcblx0XHRcdHBhZGRpbmctdG9wOiAwLjc1cmVtO1xuXHRcdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICRncmV5LWJvcmRlci1saWdodDtcblx0XHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdFx0Zm9udC13ZWlnaHQ6ICRmb250LXdlaWdodC1zZW1pYm9sZDtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXG5cdFx0Ji5kdWUge1xuXHRcdFx0bWFyZ2luLXRvcDogMC41cmVtO1xuXHRcdFx0cGFkZGluZzogMC43NXJlbTtcblx0XHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdFx0YmFja2dyb3VuZDogJGN5YW4tdHAtMTA7XG5cblx0XHRcdHN0cm9uZyB7XG5cdFx0XHRcdGNvbG9yOiAkY3lhbi1kYXJrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5zZWF0LXB1cmNoYXNlLW5leHQge1xuXHRcdG1hcmdpbjogMC43NXJlbSAwIDAgMDtcblx0XHRmb250LXNpemU6IDAuOHJlbTtcblx0XHRjb2xvcjogJHRleHQtbXV0ZWQ7XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1jYXJkcyB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRcdGdhcDogMC42cmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS1jYXJkIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdFx0Z2FwOiAwLjlyZW07XG5cdFx0cGFkZGluZzogMC44cmVtIDFyZW07XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc207XG5cdFx0Y29sb3I6ICR0ZXh0LW11dGVkO1xuXG5cdFx0PiBpIHtcblx0XHRcdGZsZXgtc2hyaW5rOiAwO1xuXHRcdFx0Zm9udC1zaXplOiAxLjFyZW07XG5cdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDAuNHJlbSAwLjlyZW07XG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHRcdGZsZXgtd3JhcDogd3JhcDtcblx0XHR9XG5cdH1cblxuXHQvKiBUaGUgbGFiZWwgYW5kIHRoZSBjYXJkIGl0c2VsZiBzdGFjaywgYW5kIHRha2Ugd2hhdGV2ZXIgd2lkdGggaXMgbGVmdCBvbmNlIHRoZSBpY29uIGFuZCB0aGVcblx0ICAgY2hhbmdlIGJ1dHRvbiBoYXZlIGhhZCB0aGVpcnMuICovXG5cdC5zZWF0LXB1cmNoYXNlLWNhcmQtZGV0YWlsIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdFx0ZmxleDogMSAxIGF1dG87XG5cdFx0bWluLXdpZHRoOiAwO1xuXG5cdFx0c3Ryb25nIHtcblx0XHRcdGNvbG9yOiAkbmF2eS1kYXJrLXRleHQ7XG5cdFx0fVxuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2Utbm90ZSB7XG5cdFx0ZGlzcGxheTogZmxleDtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdGdhcDogMC43NXJlbTtcblx0XHRwYWRkaW5nOiAwLjlyZW0gMS4xcmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtO1xuXHRcdGxpbmUtaGVpZ2h0OiAkbGluZS1oZWlnaHQtYmFzZTtcblxuXHRcdGkge1xuXHRcdFx0ZmxleC1zaHJpbms6IDA7XG5cdFx0fVxuXG5cdFx0LmJ0biB7XG5cdFx0XHRmbGV4LXNocmluazogMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHBhZGRpbmc6IDAuNHJlbSAwLjlyZW07XG5cdFx0XHRmb250LXNpemU6IDAuNzVyZW07XG5cdFx0XHR3aWR0aDogYXV0bztcblx0XHR9XG5cblx0XHQmLmluZm8ge1xuXHRcdFx0YmFja2dyb3VuZDogJG5hdnktdHAtMDU7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbGlnaHQ7XG5cdFx0XHRjb2xvcjogJHRleHQtbGlnaHQ7XG5cblx0XHRcdGkge1xuXHRcdFx0XHRjb2xvcjogJG5hdnk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ji53YXJuaW5nIHtcblx0XHRcdGJhY2tncm91bmQ6ICR5ZWxsb3ctdHAtMTA7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAkeWVsbG93LXRwLTUwO1xuXHRcdFx0Y29sb3I6ICR3YXJuaW5nLXRleHQ7XG5cdFx0fVxuXG5cdFx0Ji5zdWNjZXNzIHtcblx0XHRcdGJhY2tncm91bmQ6ICRncmVlbi10cC0wODtcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRncmVlbi10cC00MDtcblx0XHRcdGNvbG9yOiAkdGV4dC1kYXJrO1xuXG5cdFx0XHRpIHtcblx0XHRcdFx0Y29sb3I6ICRncmVlbjtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQuc2VhdC1wdXJjaGFzZS12YWxpZGF0aW9uIHtcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1zbTtcblx0XHRjb2xvcjogJGRhbmdlcjtcblxuXHRcdGkge1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwLjRyZW07XG5cdFx0fVxuXHR9XG5cblx0LnNlYXQtcHVyY2hhc2Utc3RyaXBlIHtcblx0XHRwYWRkaW5nOiAxcmVtO1xuXHRcdG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGdyZXktYm9yZGVyLWxpZ2h0O1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGJhY2tncm91bmQ6ICR3aGl0ZTtcblx0fVxuXG5cdC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cdC8qIEJ1dHRvbnNcblx0LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvKiAubW9kYWwtYm9keSBpbiBfd2Vic2l0ZV9ib29rX2RlbW8uY3NzIHNpemVzIHRoZSBwcmltYXJ5IENUQSwgYnV0IGl0cyBjb2xvdXIgaXMgZGVjbGFyZWRcblx0ICAgaW5zaWRlIC5tb2Rlcm4tbG9naW4tcGFnZSAtIGFuZCBhIG1vZGFsIGFwcGVuZGVkIHRvIHRoZSBib2R5IHNpdHMgb3V0c2lkZSB0aGF0LiBSZXN0YXRlZFxuXHQgICBoZXJlIHNvIHRoZSBDVEEgbWF0Y2hlcyB0aGUgcHJpY2luZyBwYWdlIGl0IHdhcyBjbGlja2VkIGZyb20uICovXG5cdC5idG4tcHJpbWFyeSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW47XG5cdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHRib3JkZXI6IG5vbmU7XG5cdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1jeWFuLXNtO1xuXG5cdFx0Jjpob3Zlcjpub3QoW2Rpc2FibGVkXSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGN5YW4tZGFya2VyO1xuXHRcdFx0Ym94LXNoYWRvdzogJHNoYWRvdy1jeWFuLW1kO1xuXHRcdH1cblxuXHRcdCZbZGlzYWJsZWRdIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRncmV5LWRpc2FibGVkO1xuXHRcdFx0Ym94LXNoYWRvdzogbm9uZTtcblx0XHRcdGN1cnNvcjogbm90LWFsbG93ZWQ7XG5cdFx0fVxuXHR9XG5cblx0LmJ0bi1vdXRsaW5lLWN5YW4ge1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGJvcmRlcjogMXB4IHNvbGlkICRjeWFuO1xuXHRcdGNvbG9yOiAkY3lhbi1kYXJrO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XG5cblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQ6ICRjeWFuO1xuXHRcdFx0Y29sb3I6ICR3aGl0ZTtcblx0XHR9XG5cdH1cblxuXHQuYnRuLXBsYWluIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR3aWR0aDogMTAwJTtcblx0XHRtYXJnaW4tdG9wOiAwLjc1cmVtO1xuXHRcdHBhZGRpbmc6IDAuOXJlbTtcblx0XHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkZ3JleS1ib3JkZXItbWVkaXVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLW1kO1xuXHRcdGNvbG9yOiAkdGV4dC1tdXRlZDtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LXNlbWlib2xkO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRib3JkZXItY29sb3I6ICR0ZXh0LW11dGVkO1xuXHRcdFx0Y29sb3I6ICR0ZXh0LWRhcms7XG5cdFx0fVxuXHR9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qICEgQXNzaWduIHNlYXRzIG1vZGFsXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5zZWF0LWFzc2lnbi1tb2RhbCB7XG5cdC8qIFRoZSBjb3VudCBzaXRzIGhhcmQgcmlnaHQgb2YgdGhlIHNlYXJjaCBib3guIFRoZSBhcHAncyBjb3B5IG9mIHRoaXMgdG9vbGJhciB1c2VzIEFuZ3VsYXJcblx0ICAgTWF0ZXJpYWwncyBmbGV4IGF0dHJpYnV0ZSBmb3IgdGhlIGdhcCwgd2hpY2ggaGFzIG5vIHBsYWNlIGluIGEgcGxhaW4gQm9vdHN0cmFwIG1vZGFsLiAqL1xuXHQuc2VhdC10YWJsZS10b29sYmFyIHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cdFx0ZmxleC13cmFwOiB3cmFwO1xuXHR9XG5cblx0LyogVGhlIHRhYmxlIGlzIHRoZSB0YWxsIHBhcnQsIHNvIGl0IHNjcm9sbHMgaW5zaWRlIGl0c2VsZiByYXRoZXIgdGhhbiBwdXNoaW5nIHRoZSBhY3Rpb25zXG5cdCAgIGJlbG93IHRoZSBmb2xkIG9uIGEgcHJhY3RpY2Ugd2l0aCBhIGxvbmcgc3RhZmYgbGlzdC4gKi9cblx0LnNlYXQtdGFibGUtd3JhcHBlciB7XG5cdFx0bWF4LWhlaWdodDogNDJ2aDtcblx0XHRvdmVyZmxvdy15OiBhdXRvO1xuXHR9XG5cblx0LnNlYXQtYXNzaWduLWFjdGlvbnMge1xuXHRcdG1hcmdpbi10b3A6IDEuNXJlbTtcblxuXHRcdC5idG4tcGxhaW4ge1xuXHRcdFx0bWFyZ2luLXRvcDogMC43NXJlbTtcblx0XHR9XG5cdH1cblxuXHRAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHtcblx0XHQuc2VhdC1zZWFyY2gge1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0fVxuXHR9XG59XG4iLCIubW9kZXJuLWxvZ2luLXBhZ2Uge1xuXG5cdC5wYWdlLWhlYWRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJG5hdnktaGVhZGVyLWJnO1xuXHRcdHBhZGRpbmc6IDAuNzVyZW0gJHNlY3Rpb24tcGFkZGluZy14O1xuXHRcdHBhZGRpbmctdG9wOiAwLjVyZW07XG5cdFx0bWFyZ2luLXRvcDogMHJlbTtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgJHdoaXRlLXRwLTE1O1xuXHRcdGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuXHRcdHBvc2l0aW9uOiBzdGlja3k7XG5cdFx0dG9wOiAwO1xuXHRcdHotaW5kZXg6IDEwMDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC5oZWFkZXItY29udGFpbmVyIHtcblx0XHRkaXNwbGF5OiBmbGV4O1xuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdG1heC13aWR0aDogMTQwMHB4O1xuXHRcdG1hcmdpbjogMCBhdXRvO1xuXHR9XG5cblx0Lm5hdi1sb2dvIHtcblx0XHRoZWlnaHQ6IDUwcHg7XG5cdFx0d2lkdGg6IGF1dG87XG5cdFx0ZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCA0cHggJGJsYWNrLXRwLTMwKTtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHR9XG5cblx0Lm1haW4tbmF2IHVsIHtcblx0XHRsaXN0LXN0eWxlOiBub25lO1xuXHRcdG1hcmdpbjogMDtcblx0XHRwYWRkaW5nOiAwO1xuXHRcdGRpc3BsYXk6IGZsZXg7XG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0XHRnYXA6IDFyZW07XG5cdH1cblxuXHQubmF2LWxpbmsge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZS10cC0xMDtcblx0XHRib3JkZXI6IDFweCBzb2xpZCAkd2hpdGUtdHAtMjA7XG5cdFx0YmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7XG5cdFx0LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTtcblx0XHRjb2xvcjogJHdoaXRlO1xuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1iYXNlO1xuXHRcdGZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtbWVkaXVtO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRwYWRkaW5nOiAwLjZyZW0gMS4ycmVtO1xuXHRcdGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzLXNtO1xuXHRcdHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2UtaW4tb3V0O1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHdoaXRlLXRwLTIwO1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAkd2hpdGUtdHAtNTA7XG5cdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG5cdFx0fVxuXHR9XG5cblx0LmJ0bi1uYXYtZGVtbyB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdy1jdGE7XG5cdFx0Y29sb3I6ICRuYXZ5LWRhcmstdGV4dDtcblx0XHRwYWRkaW5nOiAwLjhyZW0gMS44cmVtO1xuXHRcdGZvbnQtc2l6ZTogMS4xNXJlbTtcblx0XHRmb250LXdlaWdodDogJGZvbnQtd2VpZ2h0LWJvbGQ7XG5cdFx0Ym9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXMtbWQ7XG5cdFx0Ym9yZGVyOiBub25lO1xuXHRcdGN1cnNvcjogcG9pbnRlcjtcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDE1cHggJGJsYWNrLXRwLTEwO1xuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0bWF4LXdpZHRoOiAyNXJlbTtcblxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHllbGxvdztcblx0XHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcblx0XHRcdGJveC1zaGFkb3c6IDAgM3B4IDIwcHggJHllbGxvdztcblx0XHR9XG5cdH1cbn0iXX0= */
