/*! tailwindcss v2.1.4 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */

/*
Document
========
*/

/**
Use a better box model (opinionated).
*/

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

/**
Use a more readable tab size (opinionated).
*/

html {
	-moz-tab-size: 4;
	tab-size: 4;
}

/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/

html {
	line-height: 1.15; /* 1 */
	-webkit-text-size-adjust: 100%; /* 2 */
}

/*
Sections
========
*/

/**
Remove the margin in all browsers.
*/

body {
	margin: 0;
}

/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/

body {
	font-family:
		system-ui,
		-apple-system, /* Firefox supports this but not yet `system-ui` */
		'Segoe UI',
		Roboto,
		Helvetica,
		Arial,
		sans-serif,
		'Apple Color Emoji',
		'Segoe UI Emoji';
}

/*
Grouping content
================
*/

/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/

hr {
	height: 0; /* 1 */
	color: inherit; /* 2 */
}

/*
Text-level semantics
====================
*/

/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr[title] {
	text-decoration: underline dotted;
}

/**
Add the correct font weight in Edge and Safari.
*/

b,
strong {
	font-weight: bolder;
}

/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
	font-family:
		ui-monospace,
		SFMono-Regular,
		Consolas,
		'Liberation Mono',
		Menlo,
		monospace; /* 1 */
	font-size: 1em; /* 2 */
}

/**
Add the correct font size in all browsers.
*/

small {
	font-size: 80%;
}

/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/

sub,
sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}

sub {
	bottom: -0.25em;
}

sup {
	top: -0.5em;
}

/*
Tabular data
============
*/

/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/

table {
	text-indent: 0; /* 1 */
	border-color: inherit; /* 2 */
}

/*
Forms
=====
*/

/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/

button,
input,
optgroup,
select,
textarea {
	font-family: inherit; /* 1 */
	font-size: 100%; /* 1 */
	line-height: 1.15; /* 1 */
	margin: 0; /* 2 */
}

/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/

button,
select { /* 1 */
	text-transform: none;
}

/**
Correct the inability to style clickable types in iOS and Safari.
*/

button,
[type='button'],
[type='reset'],
[type='submit'] {
	-webkit-appearance: button;
}

/**
Remove the inner border and padding in Firefox.
*/

::-moz-focus-inner {
	border-style: none;
	padding: 0;
}

/**
Restore the focus styles unset by the previous rule.
*/

:-moz-focusring {
	outline: 1px dotted ButtonText;
}

/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/

:-moz-ui-invalid {
	box-shadow: none;
}

/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/

legend {
	padding: 0;
}

/**
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
	vertical-align: baseline;
}

/**
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
	height: auto;
}

/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
	-webkit-appearance: textfield; /* 1 */
	outline-offset: -2px; /* 2 */
}

/**
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
	-webkit-appearance: none;
}

/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/

::-webkit-file-upload-button {
	-webkit-appearance: button; /* 1 */
	font: inherit; /* 2 */
}

/*
Interactive
===========
*/

/*
Add the correct display in Chrome and Safari.
*/

summary {
	display: list-item;
}/**
 * Manually forked from SUIT CSS Base: https://github.com/suitcss/base
 * A thin layer on top of normalize.css that provides a starting point more
 * suitable for web applications.
 */

/**
 * Removes the default spacing and border for appropriate elements.
 */

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

button {
  background-color: transparent;
  background-image: none;
}

/**
 * Work around a Firefox/IE bug where the transparent `button` background
 * results in a loss of the default `button` focus styles.
 */

button:focus {
  outline: 1px dotted;
  outline: 5px auto -webkit-focus-ring-color;
}

fieldset {
  margin: 0;
  padding: 0;
}

ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

/**
 * Tailwind custom reset styles
 */

/**
 * 1. Use the user's configured `sans` font-family (with Tailwind's default
 *    sans-serif font stack as a fallback) as a sane default.
 * 2. Use Tailwind's default "normal" line-height so the user isn't forced
 *    to override it to ensure consistency even when using the default theme.
 */

html {
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */
  line-height: 1.5; /* 2 */
}


/**
 * Inherit font-family and line-height from `html` so users can set them as
 * a class directly on the `html` element.
 */

body {
  font-family: inherit;
  line-height: inherit;
}

/**
 * 1. Prevent padding and border from affecting element width.
 *
 *    We used to set this in the html element and inherit from
 *    the parent element for everything else. This caused issues
 *    in shadow-dom-enhanced elements like <details> where the content
 *    is wrapped by a div with box-sizing set to `content-box`.
 *
 *    https://github.com/mozdevs/cssremedy/issues/4
 *
 *
 * 2. Allow adding a border to an element by just adding a border-width.
 *
 *    By default, the way the browser specifies that an element should have no
 *    border is by setting it's border-style to `none` in the user-agent
 *    stylesheet.
 *
 *    In order to easily add borders to elements by just setting the `border-width`
 *    property, we change the default border-style for all elements to `solid`, and
 *    use border-width to hide them instead. This way our `border` utilities only
 *    need to set the `border-width` property instead of the entire `border`
 *    shorthand, making our border utilities much more straightforward to compose.
 *
 *    https://github.com/tailwindcss/tailwindcss/pull/116
 */

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e4e4e7; /* 2 */
}

/*
 * Ensure horizontal rules are visible by default
 */

hr {
  border-top-width: 1px;
}

/**
 * Undo the `border-style: none` reset that Normalize applies to images so that
 * our `border-{width}` utilities have the expected effect.
 *
 * The Normalize reset is unnecessary for us since we default the border-width
 * to 0 on all elements.
 *
 * https://github.com/tailwindcss/tailwindcss/issues/362
 */

img {
  border-style: solid;
}

textarea {
  resize: vertical;
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #a1a1aa;
}

button,
[role="button"] {
  cursor: pointer;
}

table {
  border-collapse: collapse;
}

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

/**
 * Reset links to optimize for opt-in styling instead of
 * opt-out.
 */

a {
  color: inherit;
  text-decoration: inherit;
}

/**
 * Reset form element properties that are easy to forget to
 * style explicitly so you don't inadvertently introduce
 * styles that deviate from your design system. These styles
 * supplement a partial reset that is already applied by
 * normalize.css.
 */

button,
input,
optgroup,
select,
textarea {
  padding: 0;
  line-height: inherit;
  color: inherit;
}

/**
 * Use the configured 'mono' font family for elements that
 * are expected to be rendered with a monospace font, falling
 * back to the system monospace stack if there is no configured
 * 'mono' font family.
 */

pre,
code,
kbd,
samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}

/**
 * Make replaced elements `display: block` by default as that's
 * the behavior you want almost all of the time. Inspired by
 * CSS Remedy, with `svg` added as well.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  vertical-align: middle;
}

/**
 * Constrain images and videos to the parent width and preserve
 * their intrinsic aspect ratio.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */

img,
video {
  max-width: 100%;
  height: auto;
}

* {
	--tw-shadow: 0 0 #0000;
	--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
	--tw-ring-offset-width: 0px;
	--tw-ring-offset-color: #fff;
	--tw-ring-color: rgba(59, 130, 246, 0.5);
	--tw-ring-offset-shadow: 0 0 #0000;
	--tw-ring-shadow: 0 0 #0000;
}
.container {
	width: 100%;
}
@media (min-width: 640px) {

	.container {
		max-width: 640px;
	}
}
@media (min-width: 768px) {

	.container {
		max-width: 768px;
	}
}
@media (min-width: 1024px) {

	.container {
		max-width: 1024px;
	}
}
@media (min-width: 1280px) {

	.container {
		max-width: 1280px;
	}
}
@media (min-width: 1536px) {

	.container {
		max-width: 1536px;
	}
}
.visible {
	visibility: visible;
}
.relative {
	position: relative;
}
.absolute {
	position: absolute;
}
.sticky {
	position: sticky;
}
.fixed {
	position: fixed;
}
.top-0 {
	top: 0px;
}
.left-0 {
	left: 0px;
}
.right-0 {
	right: 0px;
}
.bottom-0 {
	bottom: 0px;
}
.z-10 {
	z-index: 10;
}
.col-span-2 {
	grid-column: span 2 / span 2;
}
.col-span-full {
	grid-column: 1 / -1;
}
.mx-auto {
	margin-left: auto;
	margin-right: auto;
}
.mx-36 {
	margin-left: 9rem;
	margin-right: 9rem;
}
.my-4 {
	margin-top: 1rem;
	margin-bottom: 1rem;
}
.mb-4 {
	margin-bottom: 1rem;
}
.mb-2 {
	margin-bottom: 0.5rem;
}
.mt-1 {
	margin-top: 0.25rem;
}
.mt-8 {
	margin-top: 2rem;
}
.mt-20 {
	margin-top: 5rem;
}
.mt-2 {
	margin-top: 0.5rem;
}
.mt-auto {
	margin-top: auto;
}
.mr-24 {
	margin-right: 6rem;
}
.mt-24 {
	margin-top: 6rem;
}
.mb-auto {
	margin-bottom: auto;
}
.mt-28 {
	margin-top: 7rem;
}
.block {
	display: block;
}
.inline-block {
	display: inline-block;
}
.flex {
	display: flex;
}
.table {
	display: table;
}
.grid {
	display: grid;
}
.contents {
	display: contents;
}
.hidden {
	display: none;
}
.h-6 {
	height: 1.5rem;
}
.h-auto {
	height: auto;
}
.h-full {
	height: 100%;
}
.h-screen {
	height: 100vh;
}
.h-10 {
	height: 2.5rem;
}
.max-h-96 {
	max-height: 24rem;
}
.min-h-screen {
	min-height: 100vh;
}
.w-full {
	width: 100%;
}
.w-6 {
	width: 1.5rem;
}
.w-24 {
	width: 6rem;
}
.w-4\/6 {
	width: 66.666667%;
}
.w-40 {
	width: 10rem;
}
.max-w-md {
	max-width: 28rem;
}
.flex-initial {
	flex: 0 1 auto;
}
.flex-auto {
	flex: 1 1 auto;
}
.flex-grow {
	flex-grow: 1;
}
.table-auto {
	table-layout: auto;
}
.border-collapse {
	border-collapse: collapse;
}
.transform {
	--tw-translate-x: 0;
	--tw-translate-y: 0;
	--tw-rotate: 0;
	--tw-skew-x: 0;
	--tw-skew-y: 0;
	--tw-scale-x: 1;
	--tw-scale-y: 1;
	transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.cursor-pointer {
	cursor: pointer;
}
.select-none {
	user-select: none;
}
.grid-cols-2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-1 {
	grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}
.flex-col {
	flex-direction: column;
}
.flex-row {
	flex-direction: row;
}
.content-center {
	align-content: center;
}
.items-center {
	align-items: center;
}
.justify-between {
	justify-content: space-between;
}
.justify-center {
	justify-content: center;
}
.justify-end {
	justify-content: flex-end;
}
.gap-4 {
	gap: 1rem;
}
.gap-2 {
	gap: 0.5rem;
}
.space-x-16 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(4rem * var(--tw-space-x-reverse));
	margin-left: calc(4rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-x-1 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(0.25rem * var(--tw-space-x-reverse));
	margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
}
.space-x-12 > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(3rem * var(--tw-space-x-reverse));
	margin-left: calc(3rem * calc(1 - var(--tw-space-x-reverse)));
}
.self-end {
	align-self: flex-end;
}
.overflow-auto {
	overflow: auto;
}
.overflow-hidden {
	overflow: hidden;
}
.rounded-lg {
	border-radius: 0.5rem;
}
.rounded {
	border-radius: 0.25rem;
}
.border {
	border-width: 1px;
}
.border-2 {
	border-width: 2px;
}
.border-t {
	border-top-width: 1px;
}
.border-t-2 {
	border-top-width: 2px;
}
.border-none {
	border-style: none;
}
.border-gray-300 {
	--tw-border-opacity: 1;
	border-color: rgba(212, 212, 216, var(--tw-border-opacity));
}
.border-gray-500 {
	--tw-border-opacity: 1;
	border-color: rgba(113, 113, 122, var(--tw-border-opacity));
}
.border-blue-500 {
	--tw-border-opacity: 1;
	border-color: rgba(59, 130, 246, var(--tw-border-opacity));
}
.border-red-500 {
	--tw-border-opacity: 1;
	border-color: rgba(239, 68, 68, var(--tw-border-opacity));
}
.border-green-500 {
	--tw-border-opacity: 1;
	border-color: rgba(34, 197, 94, var(--tw-border-opacity));
}
.bg-gray-50 {
	--tw-bg-opacity: 1;
	background-color: rgba(250, 250, 250, var(--tw-bg-opacity));
}
.bg-gray-100 {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}
.bg-blue-500 {
	--tw-bg-opacity: 1;
	background-color: rgba(59, 130, 246, var(--tw-bg-opacity));
}
.bg-red-500 {
	--tw-bg-opacity: 1;
	background-color: rgba(239, 68, 68, var(--tw-bg-opacity));
}
.bg-green-500 {
	--tw-bg-opacity: 1;
	background-color: rgba(34, 197, 94, var(--tw-bg-opacity));
}
.bg-coolGray-200 {
	--tw-bg-opacity: 1;
	background-color: rgba(229, 231, 235, var(--tw-bg-opacity));
}
.bg-amber-100 {
	--tw-bg-opacity: 1;
	background-color: rgba(254, 243, 199, var(--tw-bg-opacity));
}
.bg-blue-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(37, 99, 235, var(--tw-bg-opacity));
}
.bg-red-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(220, 38, 38, var(--tw-bg-opacity));
}
.bg-green-600 {
	--tw-bg-opacity: 1;
	background-color: rgba(22, 163, 74, var(--tw-bg-opacity));
}
.bg-white {
	--tw-bg-opacity: 1;
	background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
}
.bg-black {
	--tw-bg-opacity: 1;
	background-color: rgba(0, 0, 0, var(--tw-bg-opacity));
}
.bg-opacity-50 {
	--tw-bg-opacity: 0.5;
}
.bg-center {
	background-position: center;
}
.bg-no-repeat {
	background-repeat: no-repeat;
}
.object-scale-down {
	object-fit: scale-down;
}
.p-4 {
	padding: 1rem;
}
.p-12 {
	padding: 3rem;
}
.p-2 {
	padding: 0.5rem;
}
.py-2 {
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}
.px-4 {
	padding-left: 1rem;
	padding-right: 1rem;
}
.py-7 {
	padding-top: 1.75rem;
	padding-bottom: 1.75rem;
}
.py-1 {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
}
.px-2 {
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}
.px-8 {
	padding-left: 2rem;
	padding-right: 2rem;
}
.py-4 {
	padding-top: 1rem;
	padding-bottom: 1rem;
}
.px-20 {
	padding-left: 5rem;
	padding-right: 5rem;
}
.px-16 {
	padding-left: 4rem;
	padding-right: 4rem;
}
.px-24 {
	padding-left: 6rem;
	padding-right: 6rem;
}
.py-16 {
	padding-top: 4rem;
	padding-bottom: 4rem;
}
.pt-5 {
	padding-top: 1.25rem;
}
.pr-8 {
	padding-right: 2rem;
}
.pt-2 {
	padding-top: 0.5rem;
}
.pb-4 {
	padding-bottom: 1rem;
}
.pl-3 {
	padding-left: 0.75rem;
}
.pr-24 {
	padding-right: 6rem;
}
.pt-28 {
	padding-top: 7rem;
}
.pt-8 {
	padding-top: 2rem;
}
.pb-2 {
	padding-bottom: 0.5rem;
}
.pr-2 {
	padding-right: 0.5rem;
}
.text-center {
	text-align: center;
}
.align-baseline {
	vertical-align: baseline;
}
.align-middle {
	vertical-align: middle;
}
.text-sm {
	font-size: 0.875rem;
	line-height: 1.25rem;
}
.text-xl {
	font-size: 1.25rem;
	line-height: 1.75rem;
}
.text-2xl {
	font-size: 1.5rem;
	line-height: 2rem;
}
.text-4xl {
	font-size: 2.25rem;
	line-height: 2.5rem;
}
.text-3xl {
	font-size: 1.875rem;
	line-height: 2.25rem;
}
.font-bold {
	font-weight: 700;
}
.font-medium {
	font-weight: 500;
}
.font-semibold {
	font-weight: 600;
}
.font-extrabold {
	font-weight: 800;
}
.uppercase {
	text-transform: uppercase;
}
.tracking-wider {
	letter-spacing: 0.05em;
}
.text-blue-600 {
	--tw-text-opacity: 1;
	color: rgba(37, 99, 235, var(--tw-text-opacity));
}
.text-white {
	--tw-text-opacity: 1;
	color: rgba(255, 255, 255, var(--tw-text-opacity));
}
.text-gray-900 {
	--tw-text-opacity: 1;
	color: rgba(24, 24, 27, var(--tw-text-opacity));
}
.text-gray-500 {
	--tw-text-opacity: 1;
	color: rgba(113, 113, 122, var(--tw-text-opacity));
}
.text-blue-500 {
	--tw-text-opacity: 1;
	color: rgba(59, 130, 246, var(--tw-text-opacity));
}
.text-gray-800 {
	--tw-text-opacity: 1;
	color: rgba(39, 39, 42, var(--tw-text-opacity));
}
.text-black {
	--tw-text-opacity: 1;
	color: rgba(0, 0, 0, var(--tw-text-opacity));
}
.text-amber-800 {
	--tw-text-opacity: 1;
	color: rgba(146, 64, 14, var(--tw-text-opacity));
}
.text-red-600 {
	--tw-text-opacity: 1;
	color: rgba(220, 38, 38, var(--tw-text-opacity));
}
.text-gray-400 {
	--tw-text-opacity: 1;
	color: rgba(161, 161, 170, var(--tw-text-opacity));
}
.shadow-lg {
	--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
.filter {
	--tw-blur: var(--tw-empty,/*!*/ /*!*/);
	--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
	--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
	--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
	--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
	--tw-invert: var(--tw-empty,/*!*/ /*!*/);
	--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
	--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
	--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
	filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.transition {
	transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
	transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
	transition-duration: 150ms;
}

/* Fix for Zend Debug Bar */
#ZFDebug_debug {
    float: left;
}
#ZFDebug_debug div {
    float: left;
}
#ZFDebug_debug span {
    float: left;
}
#ZFDebug_debug span img {
    float: left;
    margin-right: 4px;
}
.bg-bunnings-gray {
    --tw-bg-opacity: 1;
    background-color: rgba(241, 241, 241, var(--tw-bg-opacity));
    /*@apply bg-coolGray-100;*/
}

.bg-size-45 {
    background-size: 45%;
}
.bg-opacity-0 {
    opacity: 0;
}

.bg-opacity-25 {
    opacity: 0.25;
}

.bg-opacity-50 {
    opacity: 0.5;
}

.bg-opacity-75 {
    opacity: 0.75;
}

.bg-opacity-100 {
    opacity: 1;
}
/* TODO: Fix purge config */

/* Login Form */
/* Note: Due to the nature of how the form is output, we can't style it nice with classes so must use custom css. */
form#login input[name=username], form#login input[name=password] {
    padding: 13px;
    width: 100%;
    border-radius: 0px;
    /*height: 51px;*/
}

form#login input[name=password] {
    margin-top: 1rem;
}

form#login input[type=submit] {
    color: #0d5257;
    text-transform: uppercase;
    display: none;
}
/* Add the arrow on right side of Login submit button text. */
form#login dd#login-element::after {
    color: #0d5257;
    padding-left: 1px;
    font-size: 15pt;
    content: "> todo hide this";
    display: none;
}

form#login #username-label, form#login #password-label {
    display: none;
}

.btn--login {
    color: #0d5257;
}

.btn--forgot-password {
    color: black;
}
/* End of Login Form */

/* Fixed width only on sm and up */
@media (min-width: 640px) {
    .w-fixed {
        flex: 0 1 500px;
        min-width: 230px;
    }
}

/* Make orders table a little bit bigger and more readable. */
.order-filter-block {
	display: flex;
	flex-direction: row;
	align-items: center;
}
.order-filter-block > :not([hidden]) ~ :not([hidden]) {
	--tw-space-x-reverse: 0;
	margin-right: calc(2rem * var(--tw-space-x-reverse));
	margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
}
.order-filter-block {
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
}

.order-filter-search input {
    height: 40px;
}

div.orderlist table {
    width: 66vw;
}

div.orderlist table th, div.orderlist table th a {
    font-size: 1em;
}

div.orderlist table td, div.orderlist table td a {
    font-size: 1em;
}

div.orderlist a:link {
    color: #333;
    text-decoration: none;
    font-weight: bold;
}

div.orderlist .order-action {
    font-size: 1em;
    text-transform: capitalize;
}

div.orderlist table {
    background: #aaa;
    border-collapse: collapse;
}

div.orderlist table th {
    text-align: left;
    background: #dcd8c9;
    padding: 4px 1px;
}

div.orderlist table th, div.orderlist table th a {
    color: #333;
    text-decoration: none;
}

div.orderlist table td {
    padding: 1px 1px;
}

div.orderlist table tbody tr:nth-child(odd) {
    background: #e3e1d8;
}

div.orderlist table tbody tr:nth-child(even) {
    background: #fff;
}

div.orderlist table tr {
    border: 1px solid #1c1c1c;
}

a.order-filter {
    color: #333;
    font-weight: bold;
    --tw-translate-x: 0;
    --tw-translate-y: 0;
    --tw-rotate: 0;
    --tw-skew-x: 0;
    --tw-skew-y: 0;
    --tw-scale-x: 1;
    --tw-scale-y: 1;
    transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
    transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}

a.order-filter:hover {
	--tw-translate-y: -0.125rem;
	--tw-bg-opacity: 1;
	background-color: rgba(228, 228, 231, var(--tw-bg-opacity));
}

a.order-filter:active {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}

/* End of orders table */

/* Zend Theme Phtml Exception */
.zend-view-exception {
	display: block;
	width: 100%;
	border-radius: 0.5rem;
	border-width: 1px;
	border-width: 2px;
	--tw-border-opacity: 1;
	border-color: rgba(239, 68, 68, var(--tw-border-opacity));
	--tw-bg-opacity: 1;
	background-color: rgba(220, 38, 38, var(--tw-bg-opacity));
	padding-left: 0.5rem;
	padding-right: 0.5rem;
	padding-top: 1rem;
	padding-bottom: 1rem;
	--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}


/* Styling the Bench Add/Edit screen. */

#controlPanel {
    -webkit-user-drag: none;
    -moz-user-select: none;
    -ms-user-select: none;
    position: absolute;
    right: initial;
    left: 0px;
    top: 0px;
    bottom: 0px;
    /*width: 170px;*/
    width: 25rem;
    padding: 3px;
    background: #f4f4f4;
    border-left: none;
    border-right: solid 1px #d1d1d1;
    z-index: 1;
}

#container #main-canvas-wrap {
    position: absolute;
    left: 25rem;
    right: 0px;
    top: 0px;
    bottom: 70px;
    margin: 0;
    padding: 0;
    float: left;
    overflow: hidden;
}

#main-canvas {
    width: 100%;
    height: 100%;
}

.color_img {
    width: 142px; /* For some reason eneds to be 2 pixels larger for the border to show? */
}

/* Make the message/error text smaller. */
#msgBox {
    font-size: 2em;
    left: 25rem;
    right: 0px;
    height: initial;
}

#msgBox .error {

}
/* End of Styling Bench Add/Edit screen. */

/* jQuery UI Dialogs */
.ui-dialog {
    border: none;
    border-radius: 0;
}
.ui-dialog-titlebar {
    border: none;
    border-radius: 0px;
    background: none;
}
.ui-dialog-title {
    font-size: 1.8em;
    font-weight: normal;
    text-align: center;
    width: 100%;
    padding-top: 0.5rem;
    padding-bottom: 0.85rem;
    padding-left: 2rem;
    padding-right: 2rem;
}

.ui-dialog-title::after {
    display: block;
    position: absolute;
    left: 5rem;
    right: 5rem;
    padding-top: 0.85rem;
    border-bottom: 2px solid #969696;
    content: "";
}

#dialog-form select, #dialog-form input[type=text] {
    border: 2px solid #969696;
    border-radius: 0px;
    padding: 1em;
    width: 100%;
    font-size: 1.2em;
}

.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix {
    border: none;
}

#dialog-form label {
    font-size: 1.5em;
}

#dialog-form .bench-shape-label {
    font-size: 1.5em;
}

#chooseBenchPiece input[type=radio] {
    opacity: 0;
    position: fixed;
    width: 0;
}
#chooseBenchPiece label {
    display: inline-block;
    padding: 5px 5px;
    margin: 4px;
    font-family: sans-serif, Arial;
    font-size: 16px;
    border: 2px solid #FFFFFF;
    border-radius: 0px;
}

#chooseBenchPiece input[type=radio]:checked + label {
    background-color:#fefefe;
    border-color: #0d5257;
}

#dialog-form .q_left {
    border: none;
    height: auto;
}

div.ui-dialog-buttonpane button {
    background: none !important;
    border: none !important;
    color: #0d5257 !important;
}

#dialog-form select[name=mode_select], #dialog-form input[name=customer_name], #dialog-form input[name=job_name] {
    margin-bottom: 0.75rem;
}

.ui-button-text {
    font-size: 1.4em;
}

.quote-logo {
    width: 300px;
    background-color: #0d5257;
}

/*.ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable {*/
/*  background-color: #FF00FF;*/
/*  border: none;*/
/*}*/

/* End of jQuery UI Dialogs */

.hover\:-translate-y-0\.5:hover {
	--tw-translate-y: -0.125rem;
}

.hover\:-translate-y-0:hover {
	--tw-translate-y: 0px;
}

.hover\:border-b-2:hover {
	border-bottom-width: 2px;
}

.hover\:bg-blue-700:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(29, 78, 216, var(--tw-bg-opacity));
}

.hover\:bg-red-700:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(185, 28, 28, var(--tw-bg-opacity));
}

.hover\:bg-gray-200:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(228, 228, 231, var(--tw-bg-opacity));
}

.hover\:bg-amber-200:hover {
	--tw-bg-opacity: 1;
	background-color: rgba(253, 230, 138, var(--tw-bg-opacity));
}

.hover\:text-blue-800:hover {
	--tw-text-opacity: 1;
	color: rgba(30, 64, 175, var(--tw-text-opacity));
}

.hover\:text-gray-700:hover {
	--tw-text-opacity: 1;
	color: rgba(63, 63, 70, var(--tw-text-opacity));
}

.focus\:outline-none:focus {
	outline: 2px solid transparent;
	outline-offset: 2px;
}

.focus\:ring-2:focus {
	--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
	--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
	box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}

.focus\:ring-blue-500:focus {
	--tw-ring-opacity: 1;
	--tw-ring-color: rgba(59, 130, 246, var(--tw-ring-opacity));
}

.active\:bg-gray-100:active {
	--tw-bg-opacity: 1;
	background-color: rgba(244, 244, 245, var(--tw-bg-opacity));
}

.active\:bg-amber-100:active {
	--tw-bg-opacity: 1;
	background-color: rgba(254, 243, 199, var(--tw-bg-opacity));
}

.group:hover .group-hover\:block {
	display: block;
}

@media (min-width: 640px) {

	.sm\:col-span-2 {
		grid-column: span 2 / span 2;
	}

	.sm\:flex {
		display: flex;
	}

	.sm\:w-auto {
		width: auto;
	}

	.sm\:flex-col {
		flex-direction: column;
	}

	.sm\:flex-row {
		flex-direction: row;
	}

	.sm\:self-center {
		align-self: center;
	}

	.sm\:px-6 {
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}

	.sm\:py-0 {
		padding-top: 0px;
		padding-bottom: 0px;
	}

	.sm\:px-10 {
		padding-left: 2.5rem;
		padding-right: 2.5rem;
	}

	.sm\:py-1 {
		padding-top: 0.25rem;
		padding-bottom: 0.25rem;
	}

	.sm\:pb-0 {
		padding-bottom: 0px;
	}

	.sm\:pt-2 {
		padding-top: 0.5rem;
	}
}

@media (min-width: 768px) {

	.md\:text-5xl {
		font-size: 3rem;
		line-height: 1;
	}
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIjxubyBzb3VyY2U+IiwiPGlucHV0IGNzcyBwNzhBRlE+IiwiPGlucHV0IGNzcyAwMkJiMHI+IiwiLi4vLi4vLi4vLi4vdWkvc3JjL3RhaWx3aW5kY3NzL2F1L2J1bm5pbmdzL2J1bm5pbmdzLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpRUFBQSxBQ0FBLCtGQUErRjs7QUFFL0Y7OztFQUdFOztBQUVGOztFQUVFOztBQUVGOzs7Q0FHQyx1QkFBdUI7Q0FDdkI7O0FBRUQ7O0VBRUU7O0FBRUY7Q0FDQyxpQkFBaUI7Q0FDakIsWUFBWTtDQUNaOztBQUVEOzs7RUFHRTs7QUFFRjtDQUNDLGtCQUFrQixDQUFDLE9BQU87Q0FDMUIsK0JBQStCLENBQUMsT0FBTztDQUN2Qzs7QUFFRDs7O0VBR0U7O0FBRUY7O0VBRUU7O0FBRUY7Q0FDQyxVQUFVO0NBQ1Y7O0FBRUQ7O0VBRUU7O0FBRUY7Q0FDQzs7Ozs7Ozs7O21CQVNrQjtDQUNsQjs7QUFFRDs7O0VBR0U7O0FBRUY7OztFQUdFOztBQUVGO0NBQ0MsVUFBVSxDQUFDLE9BQU87Q0FDbEIsZUFBZSxDQUFDLE9BQU87Q0FDdkI7O0FBRUQ7OztFQUdFOztBQUVGOztFQUVFOztBQUVGO0NBQ0Msa0NBQWtDO0NBQ2xDOztBQUVEOztFQUVFOztBQUVGOztDQUVDLG9CQUFvQjtDQUNwQjs7QUFFRDs7O0VBR0U7O0FBRUY7Ozs7Q0FJQzs7Ozs7O1lBTVcsQ0FBQyxPQUFPO0NBQ25CLGVBQWUsQ0FBQyxPQUFPO0NBQ3ZCOztBQUVEOztFQUVFOztBQUVGO0NBQ0MsZUFBZTtDQUNmOztBQUVEOztFQUVFOztBQUVGOztDQUVDLGVBQWU7Q0FDZixlQUFlO0NBQ2YsbUJBQW1CO0NBQ25CLHlCQUF5QjtDQUN6Qjs7QUFFRDtDQUNDLGdCQUFnQjtDQUNoQjs7QUFFRDtDQUNDLFlBQVk7Q0FDWjs7QUFFRDs7O0VBR0U7O0FBRUY7OztFQUdFOztBQUVGO0NBQ0MsZUFBZSxDQUFDLE9BQU87Q0FDdkIsc0JBQXNCLENBQUMs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QUFBOztDQUFBO0VBQUEsaUJBQUE7RUFBQTtDQUFBO0FBQUE7O0NBQUE7RUFBQSxrQkFBQTtFQUFBO0NBQUE7QUFBQTs7Q0FBQTtFQUFBLGtCQUFBO0VBQUE7Q0FBQTtBQUFBOztDQUFBO0VBQUEsa0JBQUE7RUFBQTtDQUFBO0FBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBO0FBQUE7Q0FBQSxpQkFBQTtDQUFBO0FBQUE7Q0FBQSxnQkFBQTtDQUFBO0FBQUE7Q0FBQSxTQUFBO0NBQUE7QUFBQTtDQUFBLFVBQUE7Q0FBQTtBQUFBO0NBQUEsV0FBQTtDQUFBO0FBQUE7Q0FBQSxZQUFBO0NBQUE7QUFBQTtDQUFBLFlBQUE7Q0FBQTtBQUFBO0NBQUEsNkJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQSxtQkFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBLG1CQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsZUFBQTtDQUFBO0FBQUE7Q0FBQSxzQkFBQTtDQUFBO0FBQUE7Q0FBQSxjQUFBO0NBQUE7QUFBQTtDQUFBLGVBQUE7Q0FBQTtBQUFBO0NBQUEsY0FBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBO0FBQUE7Q0FBQSxjQUFBO0NBQUE7QUFBQTtDQUFBLGVBQUE7Q0FBQTtBQUFBO0NBQUEsYUFBQTtDQUFBO0FBQUE7Q0FBQSxhQUFBO0NBQUE7QUFBQTtDQUFBLGNBQUE7Q0FBQTtBQUFBO0NBQUEsZUFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBO0FBQUE7Q0FBQSxZQUFBO0NBQUE7QUFBQTtDQUFBLGNBQUE7Q0FBQTtBQUFBO0NBQUEsWUFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBO0FBQUE7Q0FBQSxhQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUE7QUFBQTtDQUFBLGVBQUE7Q0FBQTtBQUFBO0NBQUEsZUFBQTtDQUFBO0FBQUE7Q0FBQSxhQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUE7QUFBQTtDQUFBLDBCQUFBO0NBQUE7QUFBQTtDQUFBLG9CQUFBO0NBQUEsb0JBQUE7Q0FBQSxlQUFBO0NBQUEsZUFBQTtDQUFBLGVBQUE7Q0FBQSxnQkFBQTtDQUFBLGdCQUFBO0NBQUEsNE1BQUE7Q0FBQTtBQUFBO0NBQUEsZ0JBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsaURBQUE7Q0FBQTtBQUFBO0NBQUEsaURBQUE7Q0FBQTtBQUFBO0NBQUEsaURBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsK0JBQUE7Q0FBQTtBQUFBO0NBQUEsd0JBQUE7Q0FBQTtBQUFBO0NBQUEsMEJBQUE7Q0FBQTtBQUFBO0NBQUEsVUFBQTtDQUFBO0FBQUE7Q0FBQSxZQUFBO0NBQUE7QUFBQTtDQUFBLHdCQUFBO0NBQUEscURBQUE7Q0FBQSw4REFBQTtDQUFBO0FBQUE7Q0FBQSx3QkFBQTtDQUFBLHdEQUFBO0NBQUEsaUVBQUE7Q0FBQTtBQUFBO0NBQUEsd0JBQUE7Q0FBQSxxREFBQTtDQUFBLDhEQUFBO0NBQUE7QUFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLGVBQUE7Q0FBQTtBQUFBO0NBQUEsaUJBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQSw0REFBQTtDQUFBO0FBQUE7Q0FBQSx1QkFBQTtDQUFBLDREQUFBO0NBQUE7QUFBQTtDQUFBLHVCQUFBO0NBQUEsMkRBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQSwwREFBQTtDQUFBO0FBQUE7Q0FBQSx1QkFBQTtDQUFBLDBEQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsNERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSw0REFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDJEQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsMERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSwwREFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDREQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsNERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSwwREFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLDBEQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsMERBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSw0REFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLHNEQUFBO0NBQUE7QUFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLDRCQUFBO0NBQUE7QUFBQTtDQUFBLDZCQUFBO0NBQUE7QUFBQTtDQUFBLHVCQUFBO0NBQUE7QUFBQTtDQUFBLGNBQUE7Q0FBQTtBQUFBO0NBQUEsY0FBQTtDQUFBO0FBQUE7Q0FBQSxnQkFBQTtDQUFBO0FBQUE7Q0FBQSxvQkFBQTtDQUFBLHVCQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQSx3QkFBQTtDQUFBO0FBQUE7Q0FBQSxxQkFBQTtDQUFBLHdCQUFBO0NBQUE7QUFBQTtDQUFBLHFCQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxrQkFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLG1CQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLG9CQUFBO0NBQUE7QUFBQTtDQUFBLGtCQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQTtBQUFBO0NBQUEsc0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQTtBQUFBO0NBQUEseUJBQUE7Q0FBQTtBQUFBO0NBQUEsdUJBQUE7Q0FBQTtBQUFBO0NBQUEsb0JBQUE7Q0FBQSxxQkFBQTtDQUFBO0FBQUE7Q0FBQSxtQkFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLGtCQUFBO0NBQUEsa0JBQUE7Q0FBQTtBQUFBO0NBQUEsbUJBQUE7Q0FBQSxvQkFBQTtDQUFBO0FBQUE7Q0FBQSxvQkFBQTtDQUFBLHFCQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUE7QUFBQTtDQUFBLGlCQUFBO0NBQUE7QUFBQTtDQUFBLDBCQUFBO0NBQUE7QUFBQTtDQUFBLHVCQUFBO0NBQUE7QUFBQTtDQUFBLHFCQUFBO0NBQUEsaURBQUE7Q0FBQTtBQUFBO0NBQUEscUJBQUE7Q0FBQSxtREFBQTtDQUFBO0FB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QUFBLGlEQUFBO0NBQUE7O0FBQUE7Q0FBQSxxQkFBQTtDQUFBLGdEQUFBO0NBQUE7O0FBQUE7Q0FBQSwrQkFBQTtDQUFBLG9CQUFBO0NBQUE7O0FBQUE7Q0FBQSw0R0FBQTtDQUFBLDBHQUFBO0NBQUEsNkZBQUE7Q0FBQTs7QUFBQTtDQUFBLHFCQUFBO0NBQUEsNERBQUE7Q0FBQTs7QUFBQTtDQUFBLG1CQUFBO0NBQUEsNERBQUE7Q0FBQTs7QUFBQTtDQUFBLG1CQUFBO0NBQUEsNERBQUE7Q0FBQTs7QUFBQTtDQUFBLGVBQUE7Q0FBQTs7QUFBQTs7Q0FBQTtFQUFBLDZCQUFBO0VBQUE7O0NBQUE7RUFBQSxjQUFBO0VBQUE7O0NBQUE7RUFBQSxZQUFBO0VBQUE7O0NBQUE7RUFBQSx1QkFBQTtFQUFBOztDQUFBO0VBQUEsb0JBQUE7RUFBQTs7Q0FBQTtFQUFBLG1CQUFBO0VBQUE7O0NBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0VBQUE7O0NBQUE7RUFBQSxpQkFBQTtFQUFBLG9CQUFBO0VBQUE7O0NBQUE7RUFBQSxxQkFBQTtFQUFBLHNCQUFBO0VBQUE7O0NBQUE7RUFBQSxxQkFBQTtFQUFBLHdCQUFBO0VBQUE7O0NBQUE7RUFBQSxvQkFBQTtFQUFBOztDQUFBO0VBQUEsb0JBQUE7RUFBQTtDQUFBOztBQUFBOztDQUFBO0VBQUEsZ0JBQUE7RUFBQSxlQUFBO0VBQUE7Q0FBQSIsImZpbGUiOiJidW5uaW5ncy5jc3MiLCJzb3VyY2VzQ29udGVudCI6W251bGwsIi8qISBtb2Rlcm4tbm9ybWFsaXplIHYxLjEuMCB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplICovXG5cbi8qXG5Eb2N1bWVudFxuPT09PT09PT1cbiovXG5cbi8qKlxuVXNlIGEgYmV0dGVyIGJveCBtb2RlbCAob3BpbmlvbmF0ZWQpLlxuKi9cblxuKixcbjo6YmVmb3JlLFxuOjphZnRlciB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi8qKlxuVXNlIGEgbW9yZSByZWFkYWJsZSB0YWIgc2l6ZSAob3BpbmlvbmF0ZWQpLlxuKi9cblxuaHRtbCB7XG5cdC1tb3otdGFiLXNpemU6IDQ7XG5cdHRhYi1zaXplOiA0O1xufVxuXG4vKipcbjEuIENvcnJlY3QgdGhlIGxpbmUgaGVpZ2h0IGluIGFsbCBicm93c2Vycy5cbjIuIFByZXZlbnQgYWRqdXN0bWVudHMgb2YgZm9udCBzaXplIGFmdGVyIG9yaWVudGF0aW9uIGNoYW5nZXMgaW4gaU9TLlxuKi9cblxuaHRtbCB7XG5cdGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG5cdC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKlxuU2VjdGlvbnNcbj09PT09PT09XG4qL1xuXG4vKipcblJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiovXG5cbmJvZHkge1xuXHRtYXJnaW46IDA7XG59XG5cbi8qKlxuSW1wcm92ZSBjb25zaXN0ZW5jeSBvZiBkZWZhdWx0IGZvbnRzIGluIGFsbCBicm93c2Vycy4gKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvbW9kZXJuLW5vcm1hbGl6ZS9pc3N1ZXMvMylcbiovXG5cbmJvZHkge1xuXHRmb250LWZhbWlseTpcblx0XHRzeXN0ZW0tdWksXG5cdFx0LWFwcGxlLXN5c3RlbSwgLyogRmlyZWZveCBzdXBwb3J0cyB0aGlzIGJ1dCBub3QgeWV0IGBzeXN0ZW0tdWlgICovXG5cdFx0J1NlZ29lIFVJJyxcblx0XHRSb2JvdG8sXG5cdFx0SGVsdmV0aWNhLFxuXHRcdEFyaWFsLFxuXHRcdHNhbnMtc2VyaWYsXG5cdFx0J0FwcGxlIENvbG9yIEVtb2ppJyxcblx0XHQnU2Vnb2UgVUkgRW1vamknO1xufVxuXG4vKlxuR3JvdXBpbmcgY29udGVudFxuPT09PT09PT09PT09PT09PVxuKi9cblxuLyoqXG4xLiBBZGQgdGhlIGNvcnJlY3QgaGVpZ2h0IGluIEZpcmVmb3guXG4yLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBvZiBib3JkZXIgY29sb3IgaW4gRmlyZWZveC4gKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDY1NSlcbiovXG5cbmhyIHtcblx0aGVpZ2h0OiAwOyAvKiAxICovXG5cdGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qXG5UZXh0LWxldmVsIHNlbWFudGljc1xuPT09PT09PT09PT09PT09PT09PT1cbiovXG5cbi8qKlxuQWRkIHRoZSBjb3JyZWN0IHRleHQgZGVjb3JhdGlvbiBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4qL1xuXG5hYmJyW3RpdGxlXSB7XG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbn1cblxuLyoqXG5BZGQgdGhlIGNvcnJlY3QgZm9udCB3ZWlnaHQgaW4gRWRnZSBhbmQgU2FmYXJpLlxuKi9cblxuYixcbnN0cm9uZyB7XG5cdGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuMS4gSW1wcm92ZSBjb25zaXN0ZW5jeSBvZiBkZWZhdWx0IGZvbnRzIGluIGFsbCBicm93c2Vycy4gKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvbW9kZXJuLW5vcm1hbGl6ZS9pc3N1ZXMvMylcbjIuIENvcnJlY3QgdGhlIG9kZCAnZW0nIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiovXG5cbmNvZGUsXG5rYmQsXG5zYW1wLFxucHJlIHtcblx0Zm9udC1mYW1pbHk6XG5cdFx0dWktbW9ub3NwYWNlLFxuXHRcdFNGTW9uby1SZWd1bGFyLFxuXHRcdENvbnNvbGFzLFxuXHRcdCdMaWJlcmF0aW9uIE1vbm8nLFxuXHRcdE1lbmxvLFxuXHRcdG1vbm9zcGFjZTsgLyogMSAqL1xuXHRmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbkFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuc21hbGwge1xuXHRmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG5QcmV2ZW50ICdzdWInIGFuZCAnc3VwJyBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuc3ViLFxuc3VwIHtcblx0Zm9udC1zaXplOiA3NSU7XG5cdGxpbmUtaGVpZ2h0OiAwO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcblx0Ym90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuXHR0b3A6IC0wLjVlbTtcbn1cblxuLypcblRhYnVsYXIgZGF0YVxuPT09PT09PT09PT09XG4qL1xuXG4vKipcbjEuIFJlbW92ZSB0ZXh0IGluZGVudGF0aW9uIGZyb20gdGFibGUgY29udGVudHMgaW4gQ2hyb21lIGFuZCBTYWZhcmkuIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD05OTkwODgsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEyOTcpXG4yLiBDb3JyZWN0IHRhYmxlIGJvcmRlciBjb2xvciBpbmhlcml0YW5jZSBpbiBhbGwgQ2hyb21lIGFuZCBTYWZhcmkuIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD05MzU3MjksIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTUwMTYpXG4qL1xuXG50YWJsZSB7XG5cdHRleHQtaW5kZW50OiAwOyAvKiAxICovXG5cdGJvcmRlci1jb2xvcjogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKlxuRm9ybXNcbj09PT09XG4qL1xuXG4vKipcbjEuIENoYW5nZSB0aGUgZm9udCBzdHlsZXMgaW4gYWxsIGJyb3dzZXJzLlxuMi4gUmVtb3ZlIHRoZSBtYXJnaW4gaW4gRmlyZWZveCBhbmQgU2FmYXJpLlxuKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7IC8qIDEgKi9cblx0Zm9udC1zaXplOiAxMDAlOyAvKiAxICovXG5cdGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG5cdG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcblJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRWRnZSBhbmQgRmlyZWZveC5cbjEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiovXG5cbmJ1dHRvbixcbnNlbGVjdCB7IC8qIDEgKi9cblx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiovXG5cbmJ1dHRvbixcblt0eXBlPSdidXR0b24nXSxcblt0eXBlPSdyZXNldCddLFxuW3R5cGU9J3N1Ym1pdCddIHtcblx0LXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiovXG5cbjo6LW1vei1mb2N1cy1pbm5lciB7XG5cdGJvcmRlci1zdHlsZTogbm9uZTtcblx0cGFkZGluZzogMDtcbn1cblxuLyoqXG5SZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4qL1xuXG46LW1vei1mb2N1c3Jpbmcge1xuXHRvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuUmVtb3ZlIHRoZSBhZGRpdGlvbmFsICc6aW52YWxpZCcgc3R5bGVzIGluIEZpcmVmb3guXG5TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL2dlY2tvLWRldi9ibG9iLzJmOWVhY2Q5ZDNkOTk1YzkzN2I0MjUxYTU1NTdkOTVkNDk0YzliZTEvbGF5b3V0L3N0eWxlL3Jlcy9mb3Jtcy5jc3MjTDcyOC1MNzM3XG4qL1xuXG46LW1vei11aS1pbnZhbGlkIHtcblx0Ym94LXNoYWRvdzogbm9uZTtcbn1cblxuLyoqXG5SZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0ICdmaWVsZHNldCcgZWxlbWVudHMgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxubGVnZW5kIHtcblx0cGFkZGluZzogMDtcbn1cblxuLyoqXG5BZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSBhbmQgRmlyZWZveC5cbiovXG5cbnByb2dyZXNzIHtcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbkNvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIFNhZmFyaS5cbiovXG5cbjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG5cdGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4xLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbjIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuKi9cblxuW3R5cGU9J3NlYXJjaCddIHtcblx0LXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cblx0b3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG5SZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4qL1xuXG46Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbjIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gJ2luaGVyaXQnIGluIFNhZmFyaS5cbiovXG5cbjo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b24ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMSAqL1xuXHRmb250OiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qXG5JbnRlcmFjdGl2ZVxuPT09PT09PT09PT1cbiovXG5cbi8qXG5BZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiovXG5cbnN1bW1hcnkge1xuXHRkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG4iLCIvKipcbiAqIE1hbnVhbGx5IGZvcmtlZCBmcm9tIFNVSVQgQ1NTIEJhc2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdWl0Y3NzL2Jhc2VcbiAqIEEgdGhpbiBsYXllciBvbiB0b3Agb2Ygbm9ybWFsaXplLmNzcyB0aGF0IHByb3ZpZGVzIGEgc3RhcnRpbmcgcG9pbnQgbW9yZVxuICogc3VpdGFibGUgZm9yIHdlYiBhcHBsaWNhdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBSZW1vdmVzIHRoZSBkZWZhdWx0IHNwYWNpbmcgYW5kIGJvcmRlciBmb3IgYXBwcm9wcmlhdGUgZWxlbWVudHMuXG4gKi9cblxuYmxvY2txdW90ZSxcbmRsLFxuZGQsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5ocixcbmZpZ3VyZSxcbnAsXG5wcmUge1xuICBtYXJnaW46IDA7XG59XG5cbmJ1dHRvbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xufVxuXG4vKipcbiAqIFdvcmsgYXJvdW5kIGEgRmlyZWZveC9JRSBidWcgd2hlcmUgdGhlIHRyYW5zcGFyZW50IGBidXR0b25gIGJhY2tncm91bmRcbiAqIHJlc3VsdHMgaW4gYSBsb3NzIG9mIHRoZSBkZWZhdWx0IGBidXR0b25gIGZvY3VzIHN0eWxlcy5cbiAqL1xuXG5idXR0b246Zm9jdXMge1xuICBvdXRsaW5lOiAxcHggZG90dGVkO1xuICBvdXRsaW5lOiA1cHggYXV0byAtd2Via2l0LWZvY3VzLXJpbmctY29sb3I7XG59XG5cbmZpZWxkc2V0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5vbCxcbnVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFRhaWx3aW5kIGN1c3RvbSByZXNldCBzdHlsZXNcbiAqL1xuXG4vKipcbiAqIDEuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtZmFtaWx5ICh3aXRoIFRhaWx3aW5kJ3MgZGVmYXVsdFxuICogICAgc2Fucy1zZXJpZiBmb250IHN0YWNrIGFzIGEgZmFsbGJhY2spIGFzIGEgc2FuZSBkZWZhdWx0LlxuICogMi4gVXNlIFRhaWx3aW5kJ3MgZGVmYXVsdCBcIm5vcm1hbFwiIGxpbmUtaGVpZ2h0IHNvIHRoZSB1c2VyIGlzbid0IGZvcmNlZFxuICogICAgdG8gb3ZlcnJpZGUgaXQgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGV2ZW4gd2hlbiB1c2luZyB0aGUgZGVmYXVsdCB0aGVtZS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHRoZW1lKCdmb250RmFtaWx5LnNhbnMnLCB1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIFwiTm90byBTYW5zXCIsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIik7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuNTsgLyogMiAqL1xufVxuXG5cbi8qKlxuICogSW5oZXJpdCBmb250LWZhbWlseSBhbmQgbGluZS1oZWlnaHQgZnJvbSBgaHRtbGAgc28gdXNlcnMgY2FuIHNldCB0aGVtIGFzXG4gKiBhIGNsYXNzIGRpcmVjdGx5IG9uIHRoZSBgaHRtbGAgZWxlbWVudC5cbiAqL1xuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgcGFkZGluZyBhbmQgYm9yZGVyIGZyb20gYWZmZWN0aW5nIGVsZW1lbnQgd2lkdGguXG4gKlxuICogICAgV2UgdXNlZCB0byBzZXQgdGhpcyBpbiB0aGUgaHRtbCBlbGVtZW50IGFuZCBpbmhlcml0IGZyb21cbiAqICAgIHRoZSBwYXJlbnQgZWxlbWVudCBmb3IgZXZlcnl0aGluZyBlbHNlLiBUaGlzIGNhdXNlZCBpc3N1ZXNcbiAqICAgIGluIHNoYWRvdy1kb20tZW5oYW5jZWQgZWxlbWVudHMgbGlrZSA8ZGV0YWlscz4gd2hlcmUgdGhlIGNvbnRlbnRcbiAqICAgIGlzIHdyYXBwZWQgYnkgYSBkaXYgd2l0aCBib3gtc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgLlxuICpcbiAqICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvNFxuICpcbiAqXG4gKiAyLiBBbGxvdyBhZGRpbmcgYSBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBqdXN0IGFkZGluZyBhIGJvcmRlci13aWR0aC5cbiAqXG4gKiAgICBCeSBkZWZhdWx0LCB0aGUgd2F5IHRoZSBicm93c2VyIHNwZWNpZmllcyB0aGF0IGFuIGVsZW1lbnQgc2hvdWxkIGhhdmUgbm9cbiAqICAgIGJvcmRlciBpcyBieSBzZXR0aW5nIGl0J3MgYm9yZGVyLXN0eWxlIHRvIGBub25lYCBpbiB0aGUgdXNlci1hZ2VudFxuICogICAgc3R5bGVzaGVldC5cbiAqXG4gKiAgICBJbiBvcmRlciB0byBlYXNpbHkgYWRkIGJvcmRlcnMgdG8gZWxlbWVudHMgYnkganVzdCBzZXR0aW5nIHRoZSBgYm9yZGVyLXdpZHRoYFxuICogICAgcHJvcGVydHksIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBib3JkZXItc3R5bGUgZm9yIGFsbCBlbGVtZW50cyB0byBgc29saWRgLCBhbmRcbiAqICAgIHVzZSBib3JkZXItd2lkdGggdG8gaGlkZSB0aGVtIGluc3RlYWQuIFRoaXMgd2F5IG91ciBgYm9yZGVyYCB1dGlsaXRpZXMgb25seVxuICogICAgbmVlZCB0byBzZXQgdGhlIGBib3JkZXItd2lkdGhgIHByb3BlcnR5IGluc3RlYWQgb2YgdGhlIGVudGlyZSBgYm9yZGVyYFxuICogICAgc2hvcnRoYW5kLCBtYWtpbmcgb3VyIGJvcmRlciB1dGlsaXRpZXMgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBjb21wb3NlLlxuICpcbiAqICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9wdWxsLzExNlxuICovXG5cbiosXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGJvcmRlci13aWR0aDogMDsgLyogMiAqL1xuICBib3JkZXItc3R5bGU6IHNvbGlkOyAvKiAyICovXG4gIGJvcmRlci1jb2xvcjogdGhlbWUoJ2JvcmRlckNvbG9yLkRFRkFVTFQnLCBjdXJyZW50Q29sb3IpOyAvKiAyICovXG59XG5cbi8qXG4gKiBFbnN1cmUgaG9yaXpvbnRhbCBydWxlcyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0XG4gKi9cblxuaHIge1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG59XG5cbi8qKlxuICogVW5kbyB0aGUgYGJvcmRlci1zdHlsZTogbm9uZWAgcmVzZXQgdGhhdCBOb3JtYWxpemUgYXBwbGllcyB0byBpbWFnZXMgc28gdGhhdFxuICogb3VyIGBib3JkZXIte3dpZHRofWAgdXRpbGl0aWVzIGhhdmUgdGhlIGV4cGVjdGVkIGVmZmVjdC5cbiAqXG4gKiBUaGUgTm9ybWFsaXplIHJlc2V0IGlzIHVubmVjZXNzYXJ5IGZvciB1cyBzaW5jZSB3ZSBkZWZhdWx0IHRoZSBib3JkZXItd2lkdGhcbiAqIHRvIDAgb24gYWxsIGVsZW1lbnRzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9pc3N1ZXMvMzYyXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxudGV4dGFyZWEge1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5pbnB1dDo6cGxhY2Vob2xkZXIsXG50ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogdGhlbWUoJ2NvbG9ycy5ncmF5LjQwMCcsICNhMWExYWEpO1xufVxuXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIFJlc2V0IGxpbmtzIHRvIG9wdGltaXplIGZvciBvcHQtaW4gc3R5bGluZyBpbnN0ZWFkIG9mXG4gKiBvcHQtb3V0LlxuICovXG5cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBpbmhlcml0O1xufVxuXG4vKipcbiAqIFJlc2V0IGZvcm0gZWxlbWVudCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGVhc3kgdG8gZm9yZ2V0IHRvXG4gKiBzdHlsZSBleHBsaWNpdGx5IHNvIHlvdSBkb24ndCBpbmFkdmVydGVudGx5IGludHJvZHVjZVxuICogc3R5bGVzIHRoYXQgZGV2aWF0ZSBmcm9tIHlvdXIgZGVzaWduIHN5c3RlbS4gVGhlc2Ugc3R5bGVzXG4gKiBzdXBwbGVtZW50IGEgcGFydGlhbCByZXNldCB0aGF0IGlzIGFscmVhZHkgYXBwbGllZCBieVxuICogbm9ybWFsaXplLmNzcy5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuICBwYWRkaW5nOiAwO1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogVXNlIHRoZSBjb25maWd1cmVkICdtb25vJyBmb250IGZhbWlseSBmb3IgZWxlbWVudHMgdGhhdFxuICogYXJlIGV4cGVjdGVkIHRvIGJlIHJlbmRlcmVkIHdpdGggYSBtb25vc3BhY2UgZm9udCwgZmFsbGluZ1xuICogYmFjayB0byB0aGUgc3lzdGVtIG1vbm9zcGFjZSBzdGFjayBpZiB0aGVyZSBpcyBubyBjb25maWd1cmVkXG4gKiAnbW9ubycgZm9udCBmYW1pbHkuXG4gKi9cblxucHJlLFxuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogdGhlbWUoJ2ZvbnRGYW1pbHkubW9ubycsIHVpLW1vbm9zcGFjZSwgU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCBcIkxpYmVyYXRpb24gTW9ub1wiLCBcIkNvdXJpZXIgTmV3XCIsIG1vbm9zcGFjZSk7XG59XG5cbi8qKlxuICogTWFrZSByZXBsYWNlZCBlbGVtZW50cyBgZGlzcGxheTogYmxvY2tgIGJ5IGRlZmF1bHQgYXMgdGhhdCdzXG4gKiB0aGUgYmVoYXZpb3IgeW91IHdhbnQgYWxtb3N0IGFsbCBvZiB0aGUgdGltZS4gSW5zcGlyZWQgYnlcbiAqIENTUyBSZW1lZHksIHdpdGggYHN2Z2AgYWRkZWQgYXMgd2VsbC5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96ZGV2cy9jc3NyZW1lZHkvaXNzdWVzLzE0XG4gKi9cblxuaW1nLFxuc3ZnLFxudmlkZW8sXG5jYW52YXMsXG5hdWRpbyxcbmlmcmFtZSxcbmVtYmVkLFxub2JqZWN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbi8qKlxuICogQ29uc3RyYWluIGltYWdlcyBhbmQgdmlkZW9zIHRvIHRoZSBwYXJlbnQgd2lkdGggYW5kIHByZXNlcnZlXG4gKiB0aGVpciBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTRcbiAqL1xuXG5pbWcsXG52aWRlbyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuIiwiQHRhaWx3aW5kIGJhc2U7XG5AdGFpbHdpbmQgY29tcG9uZW50cztcbkB0YWlsd2luZCB1dGlsaXRpZXM7XG5cbi8qIEZpeCBmb3IgWmVuZCBEZWJ1ZyBCYXIgKi9cbiNaRkRlYnVnX2RlYnVnIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiNaRkRlYnVnX2RlYnVnIGRpdiB7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG4jWkZEZWJ1Z19kZWJ1ZyBzcGFuIHtcbiAgICBmbG9hdDogbGVmdDtcbn1cbiNaRkRlYnVnX2RlYnVnIHNwYW4gaW1nIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbn1cbi5iZy1idW5uaW5ncy1ncmF5IHtcbiAgICAtLXR3LWJnLW9wYWNpdHk6IDE7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDEsIDI0MSwgMjQxLCB2YXIoLS10dy1iZy1vcGFjaXR5KSk7XG4gICAgLypAYXBwbHkgYmctY29vbEdyYXktMTAwOyovXG59XG5cbi5iZy1zaXplLTQ1IHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDQ1JTtcbn1cbi5iZy1vcGFjaXR5LTAge1xuICAgIG9wYWNpdHk6IDA7XG59XG5cbi5iZy1vcGFjaXR5LTI1IHtcbiAgICBvcGFjaXR5OiAwLjI1O1xufVxuXG4uYmctb3BhY2l0eS01MCB7XG4gICAgb3BhY2l0eTogMC41O1xufVxuXG4uYmctb3BhY2l0eS03NSB7XG4gICAgb3BhY2l0eTogMC43NTtcbn1cblxuLmJnLW9wYWNpdHktMTAwIHtcbiAgICBvcGFjaXR5OiAxO1xufVxuLyogVE9ETzogRml4IHB1cmdlIGNvbmZpZyAqL1xuXG4vKiBMb2dpbiBGb3JtICovXG4vKiBOb3RlOiBEdWUgdG8gdGhlIG5hdHVyZSBvZiBob3cgdGhlIGZvcm0gaXMgb3V0cHV0LCB3ZSBjYW4ndCBzdHlsZSBpdCBuaWNlIHdpdGggY2xhc3NlcyBzbyBtdXN0IHVzZSBjdXN0b20gY3NzLiAqL1xuZm9ybSNsb2dpbiBpbnB1dFtuYW1lPXVzZXJuYW1lXSwgZm9ybSNsb2dpbiBpbnB1dFtuYW1lPXBhc3N3b3JkXSB7XG4gICAgcGFkZGluZzogMTNweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiAwcHg7XG4gICAgLypoZWlnaHQ6IDUxcHg7Ki9cbn1cblxuZm9ybSNsb2dpbiBpbnB1dFtuYW1lPXBhc3N3b3JkXSB7XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbn1cblxuZm9ybSNsb2dpbiBpbnB1dFt0eXBlPXN1Ym1pdF0ge1xuICAgIGNvbG9yOiAjMGQ1MjU3O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbi8qIEFkZCB0aGUgYXJyb3cgb24gcmlnaHQgc2lkZSBvZiBMb2dpbiBzdWJtaXQgYnV0dG9uIHRleHQuICovXG5mb3JtI2xvZ2luIGRkI2xvZ2luLWVsZW1lbnQ6OmFmdGVyIHtcbiAgICBjb2xvcjogIzBkNTI1NztcbiAgICBwYWRkaW5nLWxlZnQ6IDFweDtcbiAgICBmb250LXNpemU6IDE1cHQ7XG4gICAgY29udGVudDogXCI+IHRvZG8gaGlkZSB0aGlzXCI7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuZm9ybSNsb2dpbiAjdXNlcm5hbWUtbGFiZWwsIGZvcm0jbG9naW4gI3Bhc3N3b3JkLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uYnRuLS1sb2dpbiB7XG4gICAgY29sb3I6ICMwZDUyNTc7XG59XG5cbi5idG4tLWZvcmdvdC1wYXNzd29yZCB7XG4gICAgY29sb3I6IGJsYWNrO1xufVxuLyogRW5kIG9mIExvZ2luIEZvcm0gKi9cblxuLyogRml4ZWQgd2lkdGggb25seSBvbiBzbSBhbmQgdXAgKi9cbkBtZWRpYSAobWluLXdpZHRoOiA2NDBweCkge1xuICAgIC53LWZpeGVkIHtcbiAgICAgICAgZmxleDogMCAxIDUwMHB4O1xuICAgICAgICBtaW4td2lkdGg6IDIzMHB4O1xuICAgIH1cbn1cblxuLyogTWFrZSBvcmRlcnMgdGFibGUgYSBsaXR0bGUgYml0IGJpZ2dlciBhbmQgbW9yZSByZWFkYWJsZS4gKi9cbi5vcmRlci1maWx0ZXItYmxvY2sge1xuICAgIEBhcHBseSBmbGV4IGZsZXgtcm93IHNwYWNlLXgtOCBpdGVtcy1jZW50ZXIgcHktMTtcbn1cblxuLm9yZGVyLWZpbHRlci1zZWFyY2ggaW5wdXQge1xuICAgIGhlaWdodDogNDBweDtcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB7XG4gICAgd2lkdGg6IDY2dnc7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdGgsIGRpdi5vcmRlcmxpc3QgdGFibGUgdGggYSB7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdGQsIGRpdi5vcmRlcmxpc3QgdGFibGUgdGQgYSB7XG4gICAgZm9udC1zaXplOiAxZW07XG59XG5cbmRpdi5vcmRlcmxpc3QgYTpsaW5rIHtcbiAgICBjb2xvcjogIzMzMztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbmRpdi5vcmRlcmxpc3QgLm9yZGVyLWFjdGlvbiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUge1xuICAgIGJhY2tncm91bmQ6ICNhYWE7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB0aCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBiYWNrZ3JvdW5kOiAjZGNkOGM5O1xuICAgIHBhZGRpbmc6IDRweCAxcHg7XG59XG5cbmRpdi5vcmRlcmxpc3QgdGFibGUgdGgsIGRpdi5vcmRlcmxpc3QgdGFibGUgdGggYSB7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5kaXYub3JkZXJsaXN0IHRhYmxlIHRkIHtcbiAgICBwYWRkaW5nOiAxcHggMXB4O1xufVxuXG5kaXYub3JkZXJsaXN0IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChvZGQpIHtcbiAgICBiYWNrZ3JvdW5kOiAjZTNlMWQ4O1xufVxuXG5kaXYub3JkZXJsaXN0IHRhYmxlIHRib2R5IHRyOm50aC1jaGlsZChldmVuKSB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuZGl2Lm9yZGVybGlzdCB0YWJsZSB0ciB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzFjMWMxYztcbn1cblxuYS5vcmRlci1maWx0ZXIge1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgQGFwcGx5IGhvdmVyOmJnLWdyYXktMjAwIGhvdmVyOi10cmFuc2xhdGUteS0wLjUgYWN0aXZlOmJnLWdyYXktMTAwIHRyYW5zZm9ybSB0cmFuc2l0aW9uO1xufVxuXG4vKiBFbmQgb2Ygb3JkZXJzIHRhYmxlICovXG5cbi8qIFplbmQgVGhlbWUgUGh0bWwgRXhjZXB0aW9uICovXG4uemVuZC12aWV3LWV4Y2VwdGlvbiB7XG4gICAgQGFwcGx5IGJvcmRlciBib3JkZXItMiBib3JkZXItcmVkLTUwMCBweC0yIHB5LTQgYmctcmVkLTYwMCByb3VuZGVkLWxnIHNoYWRvdy1sZyBibG9jayB3LWZ1bGxcbn1cblxuXG4vKiBTdHlsaW5nIHRoZSBCZW5jaCBBZGQvRWRpdCBzY3JlZW4uICovXG5cbiNjb250cm9sUGFuZWwge1xuICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgLyp3aWR0aDogMTcwcHg7Ki9cbiAgICB3aWR0aDogMjVyZW07XG4gICAgcGFkZGluZzogM3B4O1xuICAgIGJhY2tncm91bmQ6ICNmNGY0ZjQ7XG4gICAgYm9yZGVyLWxlZnQ6IG5vbmU7XG4gICAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAxcHggI2QxZDFkMTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4jY29udGFpbmVyICNtYWluLWNhbnZhcy13cmFwIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMjVyZW07XG4gICAgcmlnaHQ6IDBweDtcbiAgICB0b3A6IDBweDtcbiAgICBib3R0b206IDcwcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuI21haW4tY2FudmFzIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jb2xvcl9pbWcge1xuICAgIHdpZHRoOiAxNDJweDsgLyogRm9yIHNvbWUgcmVhc29uIGVuZWRzIHRvIGJlIDIgcGl4ZWxzIGxhcmdlciBmb3IgdGhlIGJvcmRlciB0byBzaG93PyAqL1xufVxuXG4vKiBNYWtlIHRoZSBtZXNzYWdlL2Vycm9yIHRleHQgc21hbGxlci4gKi9cbiNtc2dCb3gge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICAgIGxlZnQ6IDI1cmVtO1xuICAgIHJpZ2h0OiAwcHg7XG4gICAgaGVpZ2h0OiBpbml0aWFsO1xufVxuXG4jbXNnQm94IC5lcnJvciB7XG5cbn1cbi8qIEVuZCBvZiBTdHlsaW5nIEJlbmNoIEFkZC9FZGl0IHNjcmVlbi4gKi9cblxuLyogalF1ZXJ5IFVJIERpYWxvZ3MgKi9cbi51aS1kaWFsb2cge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuLnVpLWRpYWxvZy10aXRsZWJhciB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xufVxuLnVpLWRpYWxvZy10aXRsZSB7XG4gICAgZm9udC1zaXplOiAxLjhlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLXRvcDogMC41cmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjg1cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuXG4udWktZGlhbG9nLXRpdGxlOjphZnRlciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDVyZW07XG4gICAgcmlnaHQ6IDVyZW07XG4gICAgcGFkZGluZy10b3A6IDAuODVyZW07XG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICM5Njk2OTY7XG4gICAgY29udGVudDogXCJcIjtcbn1cblxuI2RpYWxvZy1mb3JtIHNlbGVjdCwgI2RpYWxvZy1mb3JtIGlucHV0W3R5cGU9dGV4dF0ge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICM5Njk2OTY7XG4gICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICAgIHBhZGRpbmc6IDFlbTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDEuMmVtO1xufVxuXG4udWktZGlhbG9nLWJ1dHRvbnBhbmUudWktd2lkZ2V0LWNvbnRlbnQudWktaGVscGVyLWNsZWFyZml4IHtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbiNkaWFsb2ctZm9ybSBsYWJlbCB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuI2RpYWxvZy1mb3JtIC5iZW5jaC1zaGFwZS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuI2Nob29zZUJlbmNoUGllY2UgaW5wdXRbdHlwZT1yYWRpb10ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHdpZHRoOiAwO1xufVxuI2Nob29zZUJlbmNoUGllY2UgbGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiA1cHggNXB4O1xuICAgIG1hcmdpbjogNHB4O1xuICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmLCBBcmlhbDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgI0ZGRkZGRjtcbiAgICBib3JkZXItcmFkaXVzOiAwcHg7XG59XG5cbiNjaG9vc2VCZW5jaFBpZWNlIGlucHV0W3R5cGU9cmFkaW9dOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjojZmVmZWZlO1xuICAgIGJvcmRlci1jb2xvcjogIzBkNTI1Nztcbn1cblxuI2RpYWxvZy1mb3JtIC5xX2xlZnQge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBoZWlnaHQ6IGF1dG87XG59XG5cbmRpdi51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b24ge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzBkNTI1NyAhaW1wb3J0YW50O1xufVxuXG4jZGlhbG9nLWZvcm0gc2VsZWN0W25hbWU9bW9kZV9zZWxlY3RdLCAjZGlhbG9nLWZvcm0gaW5wdXRbbmFtZT1jdXN0b21lcl9uYW1lXSwgI2RpYWxvZy1mb3JtIGlucHV0W25hbWU9am9iX25hbWVdIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xufVxuXG4udWktYnV0dG9uLXRleHQge1xuICAgIGZvbnQtc2l6ZTogMS40ZW07XG59XG5cbi5xdW90ZS1sb2dvIHtcbiAgICB3aWR0aDogMzAwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzBkNTI1Nztcbn1cblxuLyoudWktZGlhbG9nIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLWRyYWdnYWJsZSB7Ki9cbi8qICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkYwMEZGOyovXG4vKiAgYm9yZGVyOiBub25lOyovXG4vKn0qL1xuXG4vKiBFbmQgb2YgalF1ZXJ5IFVJIERpYWxvZ3MgKi9cbiJdfQ== */