/***
 * Reponsive:
 */
/**
 * Container:
 * `.container` - A main website container that centers the container and has the corresponing responsive jumps
 * 
 * 	@example
 * 	div.container(style='background-color:#AAA;height:50px;') 
 */
.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}
/**
 * Columns:
 * `.columns` - A base styling for floating columns
 * 
 * 	@example
 * 	div.columns
 */
.columns {
  margin-left: -15px;
  margin-right: -15px;
  /**
	 * 2 column grid:
	 * `.columns-2` - Defines a style for a two column layout container. There should only be two containers inside the '.columns-2' selector.
	 * 
	 * 	@example
	 * 	div.columns.columns-2(style='background-color:#AAA')
	 * 		div(style='background-color:#888;height:50px') Left
	 * 		div(style='background-color:#666;height:50px') Right
	 * 	
	 */
  /**
	 * 2 column grid swap:
	 * `.columns-2.swap` - A modifier for the columns selector that swaps the ':first-child' and ':last-child' columns in side by side mode. 
	 * 
	 * 	@example
	 * 	div.columns.columns-2.swap(style='background-color:#AAA')
	 * 		div(style='background-color:#888;height:50px') Left
	 * 		div(style='background-color:#666;height:50px') Right
	 * 	
	 */
  /**
	 * 3 column grid:
	 * `.columns-3` - A modifier for the columns selector to make children as a three column grid.
	 * 
	 * 	@example
	 * 	div.columns.columns-3(style='background-color:#AAA')
	 * 		div(style='background-color:#888;height:50px') One
	 * 		div(style='background-color:#666;height:50px') Two
	 * 		div(style='background-color:#444;height:50px') Three
	 */
  /**
	 * Block columns:
	 * `.columns.box` - A modifier that removes the margin. This way the text is not edge aligned but the box is.
	 * 
	 * 	@example
	 * 	div.columns.box.columns-2
	 * 		div(style='background-color:#888;height:50px') Left
	 * 		div(style='background-color:#666;height:50px') Right
	 */
}
.columns:before {
  display: table;
  content: ' ';
}
.columns:after {
  display: table;
  content: ' ';
  clear: both;
}
.columns > * {
  box-sizing: border-box;
  padding-left: 15px;
  padding-right: 15px;
  position: relative;
}
@media (min-width: 768px) {
  .columns > * {
    float: left;
  }
}
@media (min-width: 768px) {
  .columns.columns-2 > * {
    width: 50%;
  }
}
@media (min-width: 768px) {
  .columns.columns-2.swap > :first-child {
    left: 50%;
  }
  .columns.columns-2.swap > :last-child {
    right: 50%;
  }
}
@media (min-width: 768px) {
  .columns.columns-3 > * {
    width: 33.33333333%;
  }
}
.columns.box {
  margin: 0;
}
/**
 * Responsive image container:
 * `.responsive-img` - A style that makes the image scaling to its max width.
 * 
 * 	@example
 * 	img.responsive-img(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
 */
.responsive-img {
  max-width: 100%;
  height: auto;
}
/**
 * Responsive 4:3/16:9 media container:
 * `.responsive-media .media-4-3, .responsive-media .media-16-9` - This makes a div a container for any media element (iframe, video, ... ) that responsive scales with a fix ratio.
 * The media element needs the class `.media`. The `.responsive-media` container can have one of the following classes: `.media-4-3`, `.media-16-9` to define the fix ratio.
 * 
 * 	@example
 * 	div.responsive-media.media-4-3
 * 		iframe.media(src='//www.youtube.com/embed/HhZaHf8RP6g',frameborder='0')
 */
.responsive-media {
  width: 100%;
  position: relative;
  padding-bottom: 50%;
}
.responsive-media > .media {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.responsive-media.media-4-3 {
  padding-bottom: 75%;
}
.responsive-media.media-16-9 {
  padding-bottom: 56.26%;
}
/***
 * Image-Areas (for hotspots / tooltips / ... ):
 */
/**
 * Image-Area:
 * `.img-area` Image area defines an area over the image in which image area elements can be placed
 *
 * 	@example
 * 	div.img-area
 * 		img.responsive-img(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
 * 		div.abs( style="position: absolute; top: 10%; left: 10%; width: 30%; height: 30%; background-color: #FFF") Example Area
 */
.img-area {
  position: relative;
  display: inline-block;
  max-width: 100%;
}
/***
 * Position:
 */
/**
 * Abs:
 * `.abs` Set the element absolute to its parent
 *
 * 	@example
 * 	div.abs( style="background-color:#AAA") Absolute position
 */
.abs {
  position: absolute;
}
/**
 * Rel:
 * `.rel` Set the position relative to its parent
 *
 * 	@example
 * 	div.rel( style="background-color:#AAA") Relative position
 */
.rel {
  position: relative;
}
/***
 * Stretch:
 */
/**
 * Stretch:
 * `.stretch` Define an element which stretches to the size of its parent
 *
 * 	@example
 * 	div.rel( style="background-color:#AAA; height: 25px" )
 * 		div.stretch I'm stretched to the size of my parent
 */
.stretch {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
/***
 * Color variables:
 */
/**
 * Main color:
 * `@primary-action-color`
 * The main action color.
 *
 * 	@example
 * 	div(style='width:50px;height:50px;background-color:rgb(35, 100, 165)')
 */
/**
 * Correct color:
 * `@correct-answer-color`
 * The color for correct answered questions 
 *
 * 	@example
 * 	div(style='width:50px;height:50px;background-color:#47882d')
 */
/**
 * Correct color:
 * `@wrong-answer-color`
 * The color for correct answered questions 
 *
 * 	@example
 * 	div(style='width:50px;height:50px;background-color:#9B2727')
 */
/***
 * Less variables:
 */
/**
 * Border radius:
 * `@border-radius` - The commonly used border radius
 * 
 * 	@example
 * 	div(style='width:50px;height:50px;border-radius:3px;background-color:#666')
 */
/***
 * Buttons:
 */
/**
 * Regular Button:
 * `.btn` - A regular button
 * 
 * 	@example
 * 	button.btn Button
 */
.btn {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-color: #ff0033;
  padding: 8px 12px;
  color: #fff;
  border: none;
  font-size: 1em;
  font-weight: 200;
  cursor: pointer;
  border-radius: 3px;
  outline: none;
  /**
 * Next button:
 * `.next` - A modifier for the regular button to be shown as a next button
 * 
 * 	@example
 * 	button.btn.next Next
 */
  /**
 * Previous button:
 * `.prev` - The previous button
 * 
 * 	@example
 * 	button.btn.prev Previous
 */
  /**
 * Solution button:
 * `.solution` - A button that will reveal the solution when clicked
 * 
 * 	@example
 * 	button.btn.solution Solution
 */
  /**
 * Disabled button:
 * `.disabled` - A style for a disabled button
 * 
 * 	@example
 * 	button.btn.disabled Disabled
 */
  /**
 * Secondary button:
 * `.second` - A style for a secondary action button
 * 
 * 	@example
 * 	button.btn.second Secondary action
 */
}
.btn:hover {
  background-color: #ff6685;
}
.btn:focus {
  border-bottom: 2px solid #99001f;
  padding-bottom: 6px;
}
.btn.next:after {
  content: ' >';
}
.btn.prev:before {
  content: '< ';
}
.btn.solution:after {
  content: ' ?';
}
.btn.disabled {
  background-color: #d6c2c6;
  cursor: default;
  color: #996670;
}
.btn.second {
  background-color: #e61942;
  color: #ffffff;
  font-size: 0.8em;
}
.btn.second:hover {
  background-color: #ff1a47;
}
/***
 * Forms:
 */
/**
 * Input:
 * `.input` - A style for an inputfield 
 * 
 * 	@example
 * 	input.input
 */
.input {
  outline: none;
  line-height: 1.467em;
  padding: 8px 12px;
  -webkit-appearance: none;
  border-radius: 3px;
  box-shadow: none;
  font-size: 1em;
  border: 2px solid #ebe0e2;
  /**
	 * Correct gap input:
	 * `.correct` - Feedback if the input is correct answered
	 * 
	 * 	@example
	 * 	input.input.correct
	 */
  /**
	 * Wrong gap input:
	 * `.wrong` - Feedback if the input is wrong answered
	 * 
	 * 	@example
	 * 	input.input.wrong
	 */
}
.input:focus {
  border: 2px solid #996670;
}
.input.correct {
  border: 2px solid #47882d;
  background-color: #f1f9ee;
}
.input.wrong {
  border: 2px solid #9b2727;
  background-color: #fdf7f7;
}
/**
 * Dropdown:
 * `select.dropdown` - Styling of a dropdown.
 * 
 * 	@example
 * 	select.dropdown
 * 		option(value="opt1") Option 1
 * 		option(value="opt2") Option 2
 */
select.dropdown {
  font-size: 1em;
  padding: 5px;
  border: 2px solid #ebe0e2;
  height: 2.6em;
  border-radius: 3px;
  background-color: #FFF;
  margin: 2px;
  /**
	 * Correct dropdown input:
	 * `.correct` - Feedback if the input is correct answered
	 * 
	 * 	@example
	 * 	select.dropdown.correct
	 * 		option(value="opt1") Option 1
	 * 		option(value="opt2") Option 2
	 */
  /**
	 * Wrong dropdown input:
	 * `.wrong` - Feedback if the input is wrong answered
	 * 
	 * 	@example
	 * 	select.dropdown.wrong
	 * 		option(value="opt1") Option 1
	 * 		option(value="opt2") Option 2
	 */
}
select.dropdown.correct {
  border: 2px solid #47882d;
  background-color: #f1f9ee;
}
select.dropdown.wrong {
  border: 2px solid #9b2727;
  background-color: #fdf7f7;
}
/**
 * Freetext textarea:
 * `textarea` - Minimum sized textarea for free text input
 * 
 * 	@example
 * 	textarea.input
 */
textarea {
  min-height: 120px;
  width: 100%;
  box-sizing: border-box;
}
/**
 * Single- & MultipleChoice answer:
 * `.answer-view` - This style is for an answer on a multiple- or singlechoice question. It properly aligns the text and the checkbox.
 * 
 * 	@example
 * 	div.answer-view
 * 		label
 * 			input(type="radio")
 * 			p Pro TypeScript shows you how to write large-scale JavaScript programs that can run in any web browser or on any web server using Microsoft’s TypeScript language.
 * 	div.answer-view
 * 		label
 * 			input(type="checkbox")
 * 			p Pro TypeScript shows you how to write large-scale JavaScript programs that can run in any web browser or on any web server using Microsoft’s TypeScript language.
 */
.answer-view {
  min-height: 20px;
  margin: 5px 0;
  position: relative;
  padding: 5px;
  /**
	 * Correct answered view:
	 * `.answer-view.correct` - Feedback if the answer is correct
	 * 
	 * 	@example
	 * 	div.answer-view.correct
	 * 		label
	 * 			input(type="radio")
	 * 			p Correct
	 */
  /**
	 * Wrong answered view:
	 * `.answer-view.wrong` - Feedback if the answer is wrong
	 * 
	 * 	@example
	 * 	div.answer-view.wrong
	 * 		label
	 * 			input(type="checkbox")
	 * 			p Wrong
	 */
}
.answer-view label {
  display: inline-block;
  padding-left: 20px;
}
.answer-view input {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px;
}
.answer-view p {
  margin: 0;
}
.answer-view.correct {
  background-color: #f1f9ee;
  color: #47882d;
}
.answer-view.correct p:after {
  content: ' \02713';
}
.answer-view.wrong {
  color: #9b2727;
  background-color: #fdf7f7;
}
.answer-view.wrong p:after {
  content: ' \02717';
}
/**
 * Drag node:
 * `.drag-node` - A node style that shows it can be dragged.
 * 
 * 	@example
 * 	div.drag-node My draggable element
 */
.drag-node {
  display: inline-block;
  cursor: move;
  border-radius: 3px;
  padding: 10px;
  border: 2px solid #ebe0e2;
  background-color: #ffffff;
  /**
	 * Correct placed drag node:
	 * `.drag-node.correct` - Feedback if the drag is correct placed
	 * 
	 * 	@example
	 * 	div.drag-node.correct Correct element
	 */
  /**
	 * Wrong placed drag node:
	 * `.drag-node.wrong` - Style wrong if wrong
	 * 
	 * 	@example
	 * 	div.drag-node.wrong Wrong element
	 */
}
.drag-node:hover {
  border: 2px solid #996670;
}
.drag-node.correct {
  border: 2px solid #47882d;
  background-color: #f1f9ee;
}
.drag-node.wrong {
  border: 2px solid #9b2727;
  background-color: #fdf7f7;
}
/**
 * Drop node:
 * `.drop-node` - A style for a node where drag elements can be dropped.
 * 
 * 	@example
 * 	div.drop-node
 * 		div.title Drop node
 * 		div.drags
 * 			div.drag-node Drag element
 */
.drop-node {
  border-radius: 3px;
  border: 1px solid #ebe0e2;
  background-color: #777;
  margin: 10px 0;
}
.drop-node .title {
  padding: 5px;
  background-color: #FFF;
}
.drop-node .drag-node {
  margin: 5px;
}
.drop-node .drags {
  min-height: 52px;
  display: inline-block;
  width: 100%;
  vertical-align: top;
}
/**
 * Drag container:
 * `.drag-container` - A container that stores the drag nodes when they are not on a drop node.
 * 
 * 	@example
 * 	div.drag-container
 * 		div.drag-node Drag element
 */
.drag-container {
  background-color: #ffffff;
  margin: 10px 0;
}
.drag-container .drag-node {
  margin: 5px;
}
/**
 * Hotspot point:
 * `.hotspot-point` - A point that is shown on the hotspot image when it is clicked.
 * 
 * 	@example
 * 	div.hotspot-point
 */
.hotspot-point {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAvCAYAAAAfIcGpAAAEaUlEQVRYCbWYT0gjZxTAZybRjcZqXa1ZjS3img0u1BZqWSlePNiDh7IUPHgt2AY8iAgeFL0LvXrbhXULy+62pbS2tJTSP1jEYtWKihW1WaMGK+KKtdH4Z96+N9nnfGMmyWQmfvDyvXn/fr4v+WbmU5Zejurqav+1wsJ3Fdl9g0wqnG3HY7Gpzc3NLY7J1SxToUAgcEd1uZolya1d68XPQDk//31lZeUP3eZcc1GHLo+nLRlIxRUZFOkNr8cTOTg4+M85LlFBoSW9DDw9jr2iA9xyIka3ONUU/g7FQhvr4U8Q7GWbWQz77MyKWRIA+BAcEsFmcXZtCv1KzZIRfONlx4WpYszyrNgU2haSdAZmwQiuRPDH/0ajK2Z+uzaF9iFtCzNwMBiUEOw/PDx8iIBSu5CUebR1bt66dTcQvB3CIOocotEo4B7WdLzGFZFKUK5saCDsEnAloK6ujsF0kyi+KuoFlMCRSARqa2sZPIFQYR/n7k8wQAm8vr4ONTU1DMbfgFSUO1yiUhKUwOFwGPC7VzGE/L+hXNxAEmnOPk2hBF5bW4OqqioG/4KYQmcoPTsllMD41IHKykoG/4RpBXqqfS0tlMDLy8vg8/kY/COiPPZxicyMUAIvLS1BRUUFg7/H1GtOwJagBF5cXITy8nIGf4vQfLtgy1ACz8/PQ1lZGYO/QWieHXBWUALPzc1BaWkpg7+yA84aSuDZ2VkoKSlh8BcIdmfTsS0ogaenp6G4uJjBTxDqsgq2DSXw1NQUFBUVMfiRVbAjKIEnJydF8GcINn01ElfBMZTAExMT4PV6ueMHmcA5gRJ4fHwcCgoKGHwfwXJWvy5xKUR9YWFBGhgYEE0G3e/3y6urq2T7COXc4BQusupUVVWor6/XcrCGlVlA6WpKaDweh/b2du2hTsvHY3R0lGHPscxdlA/SiE4SNFPo8fExtLW1ab5QKMQ8bT49PRXfLD4UallWk6CxWAxaW1u5G3C73erGxoYBPDIywv4/LZOEQAMU33uhpaWFC9KJ4GcU6OrqMkCPjo7ER937Qj1L6gUUj4jQ3NzMQDogB1Fuo6h5eXnq1taWATw8PMyxv2JMVkNL3N/fh6amJi4SwQp1QpWnqEN3d7cBSn+kcNN/T4jPqGqgxsZGBoYxo+ZS1pt4rebn56vb29sG8ODgIOfRQ93y4CSa6fD0eorML9EOvb29Buju7q54F3orRW6SmaF/o6cqyasb3kYVPB6PurOzYwD39PRwjcd6eHqNEhZQfOnDNO/X+Al9fX0GKJ2BaFuhj257AS0yw8df6H8tQwy730FFW05aVnF0dnZyt/c4ON18PZ3TxPcd2qC/v19kai/lsixTt3GUapM8R6Y7mK09O/f29gzgjo4O7pYe5DkfP2BFGBoaMkDpmKkoCneb89M83Qi0V5TLd6mGhgbutj7nrWLBzwlMkJmZGTg5OYGxsTECUqdHKFfy74NXsTBtNe5MnPvRfmWDTuifovyD8j/KMxQCXrwNvgAWQYAbp0r17QAAAABJRU5ErkJggg==');
  width: 29px;
  height: 47px;
  margin-left: -5px;
  margin-top: -5px;
  /**
	 * Correct hotspot point:
	 * `.hotspot-point.correct` - The style for a correct placed hotspot point
	 * 
	 * 	@example
	 * 	div.hotspot-point.correct
	 */
  /**
	 * Wrong hotspot point:
	 * `.hotspot-point.wrong` - The style for a wrong placed hotspot point
	 * 
	 * 	@example
	 * 	div.hotspot-point.wrong
	 */
}
.hotspot-point.correct {
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAvCAYAAAAfIcGpAAAFnElEQVRYCbWY2W9bRRTG58z1FiclTRM3SZuGqonjOC1SQWoRKjRtSgVUICFEJRACgYQKL7xT3lgklr8BCYEQQqVQVewvZRVLEVJZVJw4S+vGbZrQOMrieLszfOeaGxvnJvHGeZl7z8ycn79Zzp0xiX+tq6tru9fv3yfJ1cEupXNT6WTyl8nJybjdpl4lcaBgMHi7Mow7hXBZ74XgOS1N8/toNPpzwVf7k8EKDZ/v2GogB5ekpehu9Pli8/PzC7Xj8hEkD2kpkITaVAC4KN+m4Kn1SdpzWBxIC/mMVqrR9jm1seuqKaVTJ0minaR4VqvcCtipXbU+yavUqbMk2WFIeQJg/1ptnPqV45O8LYTIacfGJLdJMk5kU6moY32VTsn7kLeFE9iH5USStrsbmt7p7u5uqZKxqpvBntnZ2ThvC5dLNkhBHkF0P/t330diDqlBZalTurxHWpqbTiUSiTTX1WIlySAfKhjeYw33vkelyCxpETmnRXpRCKzo87MzU0fxI+drgTqu3uKAnkYS/UMkPFjHJOX+lkDnF21tbUX7uLh1ec8bQjkMg8MM9iNHSbqjubX9cxEINJWHWN2qLKgFboLiIyTcDVoDfKBnS+Az+Kvax2VDGewFOHwE+cnHYHlXTyj8CdzQX5lVBOXQ3k0kBu4G2Mtg41BPaOBjuBsqwVYMXQEftcFyaFffnrPw+8oFVwW1wf2s2KO1YYijUHwGfm854KqhHLzhJiwugA2AMcf3BsMDH8Ht2QhcE9QCN+cXl+HWSCjyWG9o92n43euBa4Za4M0As2KX1sjVD2CoT60HrgvUBltDDTCG+sGevvD78Lu4rtTqBuXA/hYSIexjw6W0NIyHekMD78FtfVSKwXWFcuDGLQAPGSQNhaGWx6H43VJw3aEWuLUAhuJHoPht+FdYKw/cuJ7W1AbwYYMIByIofgyK30J8i/e/QVlAU4A/i3kwFD8BxW/CTY6riztUYstzWkz+5nzM4jgevyQ+BEDxU1Bs1gXqQ4JILWqRKuM8AcVPVwzVphZjP2ix41ayPnWshHDo6RwQYuInnKeUnjNN/SRuCYrrnKwiqAIw+p0W89ew671a7NxfOGK13kwi/rsWmSRt1mS6xiORD52A7Ct7ISkcjaPf5IHccWZcaT602Yb0JzrD+Tfcul6w/U5lWVAzq8XI1wBe53urmlJKnRNa0rWLBSgHb+shwZ86pMHbenv773ECsm9DKAOHv9JiYYaPoDquM6nB7HLmOYDV9BjUJgtgaZDoCPMMY57da6tdF5rLAIgz79INS2EsnUwPjo+Pj8RioxcR97ST2q1BEvy1gZ6DPaHQAf4BpbYu1ALOWgonzFRy8MqV0TE7gM6mXoFYPT2qdHa5oNZwk9gayqvFGcpxbteFJhMAChVdXpw7eAlmA7mE4j+E1mcstX8VoFzX0UfYRorVHtu5M7iXfcW2LhRzGMkmlwbj8fhkcSf72czkXubn6ZH/qnX5oLYPyxlmeN0nuSy2NaEYuj/nEzOHLl++jF3pbJcuRS+g3VmsV5qKlKjtB9NSKx7u6toVLI7gDFXqwvLC3OHp6Wlskg2MlKX2+jCuzqkC2OMnEdiFqzXM1+h7vjiKIzS9vDh09erVv4sbrvU8Fon8qkzxqaV2uADl9p1hHmHMLcnHt23bs8OO4QiNxWJYQuWbymZe4tYYYp1LF8B8G9jSLQlr2e3fpF61IzpC7cpyy4mJkfPYPV9qRTRVonbH3vzc4o+T4/Ztvi5Q/nFkpl/k8jrUFudkvmY2NPNKlh4ir/UXYN2go6OjP+Km/oEyiYaRp5dmteDPYOKKEskEMrZSqYWFG9b/jDzTdbPNsNb27d/i/npLaVDTzJ0cH4m8xv5VZ9LSxpW8p2CJGzPvtARaOfu2I595kNLi0Pk6gG/Ysf4B5xAmzCjnbwcAAAAASUVORK5CYII=');
}
.hotspot-point.wrong {
  background-image: url('data:image/png;base64,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');
}
/**
 * Hotspot rectangles:
 * `.hotspot-rect` - A visualization of the hotspot rectangles on an area
 * 
 * 	@example
 * 	div.img-area
 * 		div.stretch
 * 			div.hotspot-rect.abs(style="top:40%;left:40%;width:20%;height:20%;z-index: 1;")
 * 		img(src='http://www.byui.edu/images/agriculture-life-sciences/flower.jpg')
 */
.hotspot-rect {
  background-color: rgba(0, 0, 0, 0.2);
  border: 1px solid #FFF;
}
/***
 * Decorators:
 */
/**
 * Feedback:
 * `.feedback` - This styles a feedback message when the user has answered a question.
 * 
 * 	@example
 * 	div.feedback Thanks for your answer.
 */
.feedback {
  border-radius: 3px;
  padding: 20px 20px;
  background-color: #ffffff;
  margin: 20px 5px;
  /**
	 * Correct feedback:
	 * `.correct` - The style for a correct answered feedback
	 * 
	 * 	@example
	 * 	div.feedback.correct Perfect, your answer is correct
	 */
  /**
	 * Wrong feedback:
	 * `.wrong` - The style for a wrong answered feedback
	 * 
	 * 	@example
	 * 	div.feedback.wrong Sorry, but your answer is wrong.
	 */
}
.feedback.correct {
  border: 1px solid #47882d;
  background-color: #f1f9ee;
  color: #1f3b14;
}
.feedback.wrong {
  border: 1px solid #9b2727;
  background-color: #fdf7f7;
  color: #4a1212;
}
/***
 * Text:
 */
/**
 * H1:
 * `h1` - The header 1
 * 
 * 	@example
 * 	h1 header 1
 */
h1 {
  font-weight: 100;
  color: #111;
  font-size: 3.4em;
}
/**
 * H2:
 * `h2` - The header 2
 * 
 * 	@example
 * 	h2 header 2
 */
h2 {
  font-weight: 100;
  color: #111;
  font-size: 2.1em;
}
/**
 * H3:
 * `h3` - The header 3
 * 
 * 	@example
 * 	h3 header 3
 */
h3 {
  font-weight: 700;
  color: #111;
  font-size: 1.2em;
}
/**
 * Paragraph:
 * `p` - The style for a paragraph
 * 
 * 	@example
 * 	p Als Blindtext wird Text bezeichnet, den man bei der Gestaltung von Publikationen verwendet, wenn der eigentliche Text noch nicht vorliegt. Mit Hilfe des Blindtextes kann die Verteilung des Textes auf der Seite (Layout oder Satzspiegel) sowie die Lesbarkeit der verwendeten Schriftarten (Typografie) beurteilt werden. Er besteht aus einer mehr oder minder sinnlosen Folge von Wörtern, oft auch nur aus wortähnlichen Silbenfolgen.
 */
p {
  font-size: 1em;
}
/**
 * Center text:
 * `.center` - Centers the text
 * 
 * 	@example
 * 	p.center This is centered
 */
.center {
  text-align: center;
}
/***
 * Navigation:
 */
/**
 * Categories list:
 * `.categories` - A styling for a list of categories in a navigation
 * 
 * 	@example
 * 	ol.categories
 * 		li.active Home
 * 		li Gallery
 * 		li Blog
 */
.categories {
  margin: 0;
  padding: 0;
  list-style: none;
}
.categories li {
  padding: 7px 12px;
  background-color: #FFF;
  font-size: 0.9em;
}
.categories li:hover {
  background-color: #ff0033;
  color: #FFF;
}
.categories li.active {
  background-color: #bbb;
  color: #FFF;
}
/**
 * Category navigation:
 * `.categories-navigation` - A styling for a category navigation
 * 
 * 	@example
 * 	div.category-navigation
 * 		ul.categories
 * 			li.active Home
 * 			li Gallery
 * 			li Blog
 */
.category-navigation {
  border-bottom: 1px solid #bbb;
}
.category-navigation li {
  display: inline-block;
}
/**
 * Menu navigation:
 * `.menu-navigation` - A styling for a menu navigation
 * 
 * 	@example
 * 	div.menu-navigation.open(style='height:150px')
 * 		div.toggle-menu Menu
 * 		ol.categories
 * 			li.active Home
 * 			li Gallery
 * 			li Blog
 */
.menu-navigation {
  position: relative;
}
.menu-navigation .categories {
  position: absolute;
  display: none;
  background-color: #FFF;
  z-index: 10;
  top: 20px;
  left: 0;
}
.menu-navigation.open .categories {
  display: block;
}
/**
 * Points navigation:
 * `.points-navigation` - A style for a points navigation
 * 
 * 	@example
 * 	div.points-navigation
 * 		div.point
 * 		div.point.active
 * 		div.point.has-input
 * 		div.point.small
 */
.points-navigation {
  text-align: center;
}
.points-navigation .point {
  cursor: pointer;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  border: 2px solid #999;
  display: inline-block;
}
.points-navigation .point:hover {
  border: 2px solid #777;
  background-color: #eee;
}
.points-navigation .point.small {
  width: 10px;
  height: 10px;
}
.points-navigation .point.has-input {
  background-color: #eee;
}
.points-navigation .point.active {
  border: 2px solid #666;
}
.points-navigation .point + .point {
  margin-left: 5px;
}
/***
 * Tooltip:
 */
/**
 * Tooltip Content:
 * `.tooltip-container` Container for the tooltip content
 *
 * 	@example
 * 	div.tooltip-container I'm a tooltip
 */
.tooltip-container {
  background-color: #fff;
  padding: 5px;
  display: inline-block;
  border-radius: 3px;
  border: 1px solid #BBBBBB;
}
.header {
  background-color: #FFF;
  padding: 30px 0;
}
.header .logo {
  width: 205px;
}
.header .title {
  width: 100%;
  text-align: right;
}
#lernfragen {
  min-height: 600px;
  background-color: #FFF;
  padding: 18px;
}
.content {
  background-color: rgba(0, 0, 0, 0.3);
  padding: 20px;
}
h1 {
  font-size: 2.5em;
}
.next-prev-navigation {
  text-align: right;
}
.slide-container {
  margin-bottom: 30px;
}
.slide-container .text {
  margin: 20px 0;
}
.prev-button {
  margin-right: 10px;
}
.submit .row {
  padding: 5px;
}
.submit .label {
  vertical-align: middle;
  min-width: 115px;
  color: #555;
  font-size: 1em;
}
.submit .input {
  padding: 6px 10px;
}
.tooltip_area {
  background-color: rgba(255, 255, 255, 0.4);
}
.tooltip_area .tooltip-container {
  box-shadow: 1px 1px 3px 0px rgba(0, 0, 0, 0.1);
  min-width: 200px;
  max-width: 400px;
}
.row {
  display: table;
}
.row > * {
  display: table-cell;
}
.container.full {
  padding: 0;
}
.hidden {
  display: none;
}
html,
body {
  font-family: 'Helvetica', sans-serif;
  margin: 0px;
  padding: 0px;
  font-size: 1em;
  height: 100%;
}
body {
  background-image: url('../img/bg.jpg');
  background-repeat: no-repeat;
  background-size: 120%;
  background-position: center 160px;
  background-color: #404040;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIiwibGVybmZyYWdlbi9nbG9iYWwvcmVzcG9uc2l2ZS5sZXNzIiwibGVybmZyYWdlbi9nbG9iYWwvaW1nLWFyZWEubGVzcyIsImxlcm5mcmFnZW4vZ2xvYmFsL3Bvc2l0aW9uLmxlc3MiLCJsZXJuZnJhZ2VuL2dsb2JhbC9zdHJldGNoLmxlc3MiLCJsZXJuZnJhZ2VuL2J1dHRvbi5sZXNzIiwibGVybmZyYWdlbi9mb3JtLmxlc3MiLCJsZXJuZnJhZ2VuL2ZlZWRiYWNrLmxlc3MiLCJsZXJuZnJhZ2VuL3RleHQubGVzcyIsImxlcm5mcmFnZW4vbmF2aWdhdGlvbi5sZXNzIiwibGVybmZyYWdlbi90b29sdGlwLmxlc3MiLCJsYXlvdXQubGVzcyIsImxlcm5mcmFnZW4ubGVzcyIsImhlbHBlcnMubGVzcyIsIm1haW4ubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNIOzs7Ozs7R0FNRztBQ0VIO0VBQ0Msb0JBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7Q0RBQTtBQ0tBO0VBaUtEO0lBbktFLGFBQUE7R0RDQztDQUNGO0FDR0E7RUE4SkQ7SUFoS0UsYUFBQTtHREdDO0NBQ0Y7QUNDRDtFQTJKQTtJQTdKRSxjQUFBO0dES0M7Q0FDRjtBQUNEOzs7Ozs7R0FNRztBQ0ZIO0VBR0UsbUJBQUE7RUFDQSxvQkFBQTtFREVBOzs7Ozs7Ozs7SUFTRTtFQUNGOzs7Ozs7Ozs7SUFTRTtFQUNGOzs7Ozs7Ozs7SUFTRTtFQUNGOzs7Ozs7OztJQVFFO0NBQ0g7QUN0Q0E7RUFDQyxlQUFBO0VBQ0EsYUFBQTtDRHdDRDtBQ3JDQTtFQUNDLGVBQUE7RUFDQSxhQUFBO0VBQ0EsWUFBQTtDRHVDRDtBQ3BDQTtFQUNDLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxvQkFBQTtFQUNBLG1CQUFBO0NEc0NEO0FDakNBO0VBdUhEO0lBekhHLFlBQUE7R0R1Q0E7Q0FDRjtBQ25CQTtFQUpFO0lBQ0MsV0FBQTtHRDBCRDtDQUNGO0FD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QSxlQUFBO0VBQ0EsYUFBQTtDZHc2QkE7QWNyNkJEO0VBQ0MsdUNBQUE7RUFDRyw2QkFBQTtFQUNILHNCQUFBO0VBQ0csa0NBQUE7RUFDQSwwQkFBQTtDZHU2QkgiLCJmaWxlIjoic3dpc3N2b2xsZXkuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKlxuICogUmVwb25zaXZlOlxuICovXG4vKipcbiAqIENvbnRhaW5lcjpcbiAqIGAuY29udGFpbmVyYCAtIEEgbWFpbiB3ZWJzaXRlIGNvbnRhaW5lciB0aGF0IGNlbnRlcnMgdGhlIGNvbnRhaW5lciBhbmQgaGFzIHRoZSBjb3JyZXNwb25pbmcgcmVzcG9uc2l2ZSBqdW1wc1xuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5jb250YWluZXIoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQTtoZWlnaHQ6NTBweDsnKSBcbiAqL1xuLmNvbnRhaW5lciB7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gIHBhZGRpbmctbGVmdDogMTVweDtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogNzUwcHg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY29udGFpbmVyIHtcbiAgICB3aWR0aDogOTcwcHg7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHtcbiAgLmNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDExNzBweDtcbiAgfVxufVxuLyoqXG4gKiBDb2x1bW5zOlxuICogYC5jb2x1bW5zYCAtIEEgYmFzZSBzdHlsaW5nIGZvciBmbG9hdGluZyBjb2x1bW5zXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmNvbHVtbnNcbiAqL1xuLmNvbHVtbnMge1xuICBtYXJnaW4tbGVmdDogLTE1cHg7XG4gIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIC8qKlxuXHQgKiAyIGNvbHVtbiBncmlkOlxuXHQgKiBgLmNvbHVtbnMtMmAgLSBEZWZpbmVzIGEgc3R5bGUgZm9yIGEgdHdvIGNvbHVtbiBsYXlvdXQgY29udGFpbmVyLiBUaGVyZSBzaG91bGQgb25seSBiZSB0d28gY29udGFpbmVycyBpbnNpZGUgdGhlICcuY29sdW1ucy0yJyBzZWxlY3Rvci5cblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuY29sdW1ucy5jb2x1bW5zLTIoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQScpXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6Izg4ODtoZWlnaHQ6NTBweCcpIExlZnRcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDo1MHB4JykgUmlnaHRcblx0ICogXHRcblx0ICovXG4gIC8qKlxuXHQgKiAyIGNvbHVtbiBncmlkIHN3YXA6XG5cdCAqIGAuY29sdW1ucy0yLnN3YXBgIC0gQSBtb2RpZmllciBmb3IgdGhlIGNvbHVtbnMgc2VsZWN0b3IgdGhhdCBzd2FwcyB0aGUgJzpmaXJzdC1jaGlsZCcgYW5kICc6bGFzdC1jaGlsZCcgY29sdW1ucyBpbiBzaWRlIGJ5IHNpZGUgbW9kZS4gXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmNvbHVtbnMuY29sdW1ucy0yLnN3YXAoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQScpXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6Izg4ODtoZWlnaHQ6NTBweCcpIExlZnRcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDo1MHB4JykgUmlnaHRcblx0ICogXHRcblx0ICovXG4gIC8qKlxuXHQgKiAzIGNvbHVtbiBncmlkOlxuXHQgKiBgLmNvbHVtbnMtM2AgLSBBIG1vZGlmaWVyIGZvciB0aGUgY29sdW1ucyBzZWxlY3RvciB0byBtYWtlIGNoaWxkcmVuIGFzIGEgdGhyZWUgY29sdW1uIGdyaWQuXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmNvbHVtbnMuY29sdW1ucy0zKHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiNBQUEnKVxuXHQgKiBcdFx0ZGl2KHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiM4ODg7aGVpZ2h0OjUwcHgnKSBPbmVcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDo1MHB4JykgVHdvXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6IzQ0NDtoZWlnaHQ6NTBweCcpIFRocmVlXG5cdCAqL1xuICAvKipcblx0ICogQmxvY2sgY29sdW1uczpcblx0ICogYC5jb2x1bW5zLmJveGAgLSBBIG1vZGlmaWVyIHRoYXQgcmVtb3ZlcyB0aGUgbWFyZ2luLiBUaGlzIHdheSB0aGUgdGV4dCBpcyBub3QgZWRnZSBhbGlnbmVkIGJ1dCB0aGUgYm94IGlzLlxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5jb2x1bW5zLmJveC5jb2x1bW5zLTJcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojODg4O2hlaWdodDo1MHB4JykgTGVmdFxuXHQgKiBcdFx0ZGl2KHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7aGVpZ2h0OjUwcHgnKSBSaWdodFxuXHQgKi9cbn1cbi5jb2x1bW5zOmJlZm9yZSB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjb250ZW50OiAnICc7XG59XG4uY29sdW1uczphZnRlciB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICBjb250ZW50OiAnICc7XG4gIGNsZWFyOiBib3RoO1xufVxuLmNvbHVtbnMgPiAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmNvbHVtbnMgPiAqIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jb2x1bW5zLmNvbHVtbnMtMiA+ICoge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sdW1ucy5jb2x1bW5zLTIuc3dhcCA+IDpmaXJzdC1jaGlsZCB7XG4gICAgbGVmdDogNTAlO1xuICB9XG4gIC5jb2x1bW5zLmNvbHVtbnMtMi5zd2FwID4gOmxhc3QtY2hpbGQge1xuICAgIHJpZ2h0OiA1MCU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAuY29sdW1ucy5jb2x1bW5zLTMgPiAqIHtcbiAgICB3aWR0aDogMzMuMzMzMzMzMzMlO1xuICB9XG59XG4uY29sdW1ucy5ib3gge1xuICBtYXJnaW46IDA7XG59XG4vKipcbiAqIFJlc3BvbnNpdmUgaW1hZ2UgY29udGFpbmVyOlxuICogYC5yZXNwb25zaXZlLWltZ2AgLSBBIHN0eWxlIHRoYXQgbWFrZXMgdGhlIGltYWdlIHNjYWxpbmcgdG8gaXRzIG1heCB3aWR0aC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRpbWcucmVzcG9uc2l2ZS1pbWcoc3JjPSdodHRwOi8vd3d3LmJ5dWkuZWR1L2ltYWdlcy9hZ3JpY3VsdHVyZS1saWZlLXNjaWVuY2VzL2Zsb3dlci5qcGcnKVxuICovXG4ucmVzcG9uc2l2ZS1pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cbi8qKlxuICogUmVzcG9uc2l2ZSA0OjMvMTY6OSBtZWRpYSBjb250YWluZXI6XG4gKiBgLnJlc3BvbnNpdmUtbWVkaWEgLm1lZGlhLTQtMywgLnJlc3BvbnNpdmUtbWVkaWEgLm1lZGlhLTE2LTlgIC0gVGhpcyBtYWtlcyBhIGRpdiBhIGNvbnRhaW5lciBmb3IgYW55IG1lZGlhIGVsZW1lbnQgKGlmcmFtZSwgdmlkZW8sIC4uLiApIHRoYXQgcmVzcG9uc2l2ZSBzY2FsZXMgd2l0aCBhIGZpeCByYXRpby5cbiAqIFRoZSBtZWRpYSBlbGVtZW50IG5lZWRzIHRoZSBjbGFzcyBgLm1lZGlhYC4gVGhlIGAucmVzcG9uc2l2ZS1tZWRpYWAgY29udGFpbmVyIGNhbiBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXM6IGAubWVkaWEtNC0zYCwgYC5tZWRpYS0xNi05YCB0byBkZWZpbmUgdGhlIGZpeCByYXRpby5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYucmVzcG9uc2l2ZS1tZWRpYS5tZWRpYS00LTNcbiAqIFx0XHRpZnJhbWUubWVkaWEoc3JjPScvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9IaFphSGY4UlA2ZycsZnJhbWVib3JkZXI9JzAnKVxuICovXG4ucmVzcG9uc2l2ZS1tZWRpYSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmctYm90dG9tOiA1MCU7XG59XG4ucmVzcG9uc2l2ZS1tZWRpYSA+IC5tZWRpYSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLnJlc3BvbnNpdmUtbWVkaWEubWVkaWEtNC0zIHtcbiAgcGFkZGluZy1ib3R0b206IDc1JTtcbn1cbi5yZXNwb25zaXZlLW1lZGlhLm1lZGlhLTE2LTkge1xuICBwYWRkaW5nLWJvdHRvbTogNTYuMjYlO1xufVxuLyoqKlxuICogSW1hZ2UtQXJlYXMgKGZvciBob3RzcG90cyAvIHRvb2x0aXBzIC8gLi4uICk6XG4gKi9cbi8qKlxuICogSW1hZ2UtQXJlYTpcbiAqIGAuaW1nLWFyZWFgIEltYWdlIGFyZWEgZGVmaW5lcyBhbiBhcmVhIG92ZXIgdGhlIGltYWdlIGluIHdoaWNoIGltYWdlIGFyZWEgZWxlbWVudHMgY2FuIGJlIHBsYWNlZFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmltZy1hcmVhXG4gKiBcdFx0aW1nLnJlc3BvbnNpdmUtaW1nKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbiAqIFx0XHRkaXYuYWJzKCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMCU7IGxlZnQ6IDEwJTsgd2lkdGg6IDMwJTsgaGVpZ2h0OiAzMCU7IGJhY2tncm91bmQtY29sb3I6ICNGRkZcIikgRXhhbXBsZSBBcmVhXG4gKi9cbi5pbWctYXJlYSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4vKioqXG4gKiBQb3NpdGlvbjpcbiAqL1xuLyoqXG4gKiBBYnM6XG4gKiBgLmFic2AgU2V0IHRoZSBlbGVtZW50IGFic29sdXRlIHRvIGl0cyBwYXJlbnRcbiAqXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5hYnMoIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojQUFBXCIpIEFic29sdXRlIHBvc2l0aW9uXG4gKi9cbi5hYnMge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG59XG4vKipcbiAqIFJlbDpcbiAqIGAucmVsYCBTZXQgdGhlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGl0cyBwYXJlbnRcbiAqXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5yZWwoIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojQUFBXCIpIFJlbGF0aXZlIHBvc2l0aW9uXG4gKi9cbi5yZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4vKioqXG4gKiBTdHJldGNoOlxuICovXG4vKipcbiAqIFN0cmV0Y2g6XG4gKiBgLnN0cmV0Y2hgIERlZmluZSBhbiBlbGVtZW50IHdoaWNoIHN0cmV0Y2hlcyB0byB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50XG4gKlxuICogXHRAZXhhbXBsZVxuICogXHRkaXYucmVsKCBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I0FBQTsgaGVpZ2h0OiAyNXB4XCIgKVxuICogXHRcdGRpdi5zdHJldGNoIEknbSBzdHJldGNoZWQgdG8gdGhlIHNpemUgb2YgbXkgcGFyZW50XG4gKi9cbi5zdHJldGNoIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG4vKioqXG4gKiBDb2xvciB2YXJpYWJsZXM6XG4gKi9cbi8qKlxuICogTWFpbiBjb2xvcjpcbiAqIGBAcHJpbWFyeS1hY3Rpb24tY29sb3JgXG4gKiBUaGUgbWFpbiBhY3Rpb24gY29sb3IuXG4gKlxuICogXHRAZXhhbXBsZVxuICogXHRkaXYoc3R5bGU9J3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMzUsIDEwMCwgMTY1KScpXG4gKi9cbi8qKlxuICogQ29ycmVjdCBjb2xvcjpcbiAqIGBAY29ycmVjdC1hbnN3ZXItY29sb3JgXG4gKiBUaGUgY29sb3IgZm9yIGNvcnJlY3QgYW5zd2VyZWQgcXVlc3Rpb25zIFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2KHN0eWxlPSd3aWR0aDo1MHB4O2hlaWdodDo1MHB4O2JhY2tncm91bmQtY29sb3I6IzQ3ODgyZCcpXG4gKi9cbi8qKlxuICogQ29ycmVjdCBjb2xvcjpcbiAqIGBAd3JvbmctYW5zd2VyLWNvbG9yYFxuICogVGhlIGNvbG9yIGZvciBjb3JyZWN0IGFuc3dlcmVkIHF1ZXN0aW9ucyBcbiAqXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdihzdHlsZT0nd2lkdGg6NTBweDtoZWlnaHQ6NTBweDtiYWNrZ3JvdW5kLWNvbG9yOiM5QjI3MjcnKVxuICovXG4vKioqXG4gKiBMZXNzIHZhcmlhYmxlczpcbiAqL1xuLyoqXG4gKiBCb3JkZXIgcmFkaXVzOlxuICogYEBib3JkZXItcmFkaXVzYCAtIFRoZSBjb21tb25seSB1c2VkIGJvcmRlciByYWRpdXNcbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYoc3R5bGU9J3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZC1jb2xvcjojNjY2JylcbiAqL1xuLyoqKlxuICogQnV0dG9uczpcbiAqL1xuLyoqXG4gKiBSZWd1bGFyIEJ1dHRvbjpcbiAqIGAuYnRuYCAtIEEgcmVndWxhciBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuIEJ1dHRvblxuICovXG4uYnRuIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjAwMzM7XG4gIHBhZGRpbmc6IDhweCAxMnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyOiBub25lO1xuICBmb250LXNpemU6IDFlbTtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIC8qKlxuICogTmV4dCBidXR0b246XG4gKiBgLm5leHRgIC0gQSBtb2RpZmllciBmb3IgdGhlIHJlZ3VsYXIgYnV0dG9uIHRvIGJlIHNob3duIGFzIGEgbmV4dCBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLm5leHQgTmV4dFxuICovXG4gIC8qKlxuICogUHJldmlvdXMgYnV0dG9uOlxuICogYC5wcmV2YCAtIFRoZSBwcmV2aW91cyBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLnByZXYgUHJldmlvdXNcbiAqL1xuICAvKipcbiAqIFNvbHV0aW9uIGJ1dHRvbjpcbiAqIGAuc29sdXRpb25gIC0gQSBidXR0b24gdGhhdCB3aWxsIHJldmVhbCB0aGUgc29sdXRpb24gd2hlbiBjbGlja2VkXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0YnV0dG9uLmJ0bi5zb2x1dGlvbiBTb2x1dGlvblxuICovXG4gIC8qKlxuICogRGlzYWJsZWQgYnV0dG9uOlxuICogYC5kaXNhYmxlZGAgLSBBIHN0eWxlIGZvciBhIGRpc2FibGVkIGJ1dHRvblxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGJ1dHRvbi5idG4uZGlzYWJsZWQgRGlzYWJsZWRcbiAqL1xuICAvKipcbiAqIFNlY29uZGFyeSBidXR0b246XG4gKiBgLnNlY29uZGAgLSBBIHN0eWxlIGZvciBhIHNlY29uZGFyeSBhY3Rpb24gYnV0dG9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0YnV0dG9uLmJ0bi5zZWNvbmQgU2Vjb25kYXJ5IGFjdGlvblxuICovXG59XG4uYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmNjY4NTtcbn1cbi5idG46Zm9jdXMge1xuICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzk5MDAxZjtcbiAgcGFkZGluZy1ib3R0b206IDZweDtcbn1cbi5idG4ubmV4dDphZnRlciB7XG4gIGNvbnRlbnQ6ICcgPic7XG59XG4uYnRuLnByZXY6YmVmb3JlIHtcbiAgY29udGVudDogJzwgJztcbn1cbi5idG4uc29sdXRpb246YWZ0ZXIge1xuICBjb250ZW50OiAnID8nO1xufVxuLmJ0bi5kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkNmMyYzY7XG4gIGN1cnNvcjogZGVmYXVsdDtcbiAgY29sb3I6ICM5OTY2NzA7XG59XG4uYnRuLnNlY29uZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNjE5NDI7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBmb250LXNpemU6IDAuOGVtO1xufVxuLmJ0bi5zZWNvbmQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYxYTQ3O1xufVxuLyoqKlxuICogRm9ybXM6XG4gKi9cbi8qKlxuICogSW5wdXQ6XG4gKiBgLmlucHV0YCAtIEEgc3R5bGUgZm9yIGFuIGlucHV0ZmllbGQgXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aW5wdXQuaW5wdXRcbiAqL1xuLmlucHV0IHtcbiAgb3V0bGluZTogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDEuNDY3ZW07XG4gIHBhZGRpbmc6IDhweCAxMnB4O1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICBib3gtc2hhZG93OiBub25lO1xuICBmb250LXNpemU6IDFlbTtcbiAgYm9yZGVyOiAycHggc29saWQgI2ViZTBlMjtcbiAgLyoqXG5cdCAqIENvcnJlY3QgZ2FwIGlucHV0OlxuXHQgKiBgLmNvcnJlY3RgIC0gRmVlZGJhY2sgaWYgdGhlIGlucHV0IGlzIGNvcnJlY3QgYW5zd2VyZWRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRpbnB1dC5pbnB1dC5jb3JyZWN0XG5cdCAqL1xuICAvKipcblx0ICogV3JvbmcgZ2FwIGlucHV0OlxuXHQgKiBgLndyb25nYCAtIEZlZWRiYWNrIGlmIHRoZSBpbnB1dCBpcyB3cm9uZyBhbnN3ZXJlZFxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGlucHV0LmlucHV0Lndyb25nXG5cdCAqL1xufVxuLmlucHV0OmZvY3VzIHtcbiAgYm9yZGVyOiAycHggc29saWQgIzk5NjY3MDtcbn1cbi5pbnB1dC5jb3JyZWN0IHtcbiAgYm9yZGVyOiAycHggc29saWQgIzQ3ODgyZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjllZTtcbn1cbi5pbnB1dC53cm9uZyB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM5YjI3Mjc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGY3Zjc7XG59XG4vKipcbiAqIERyb3Bkb3duOlxuICogYHNlbGVjdC5kcm9wZG93bmAgLSBTdHlsaW5nIG9mIGEgZHJvcGRvd24uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0c2VsZWN0LmRyb3Bkb3duXG4gKiBcdFx0b3B0aW9uKHZhbHVlPVwib3B0MVwiKSBPcHRpb24gMVxuICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDJcIikgT3B0aW9uIDJcbiAqL1xuc2VsZWN0LmRyb3Bkb3duIHtcbiAgZm9udC1zaXplOiAxZW07XG4gIHBhZGRpbmc6IDVweDtcbiAgYm9yZGVyOiAycHggc29saWQgI2ViZTBlMjtcbiAgaGVpZ2h0OiAyLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBtYXJnaW46IDJweDtcbiAgLyoqXG5cdCAqIENvcnJlY3QgZHJvcGRvd24gaW5wdXQ6XG5cdCAqIGAuY29ycmVjdGAgLSBGZWVkYmFjayBpZiB0aGUgaW5wdXQgaXMgY29ycmVjdCBhbnN3ZXJlZFxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdHNlbGVjdC5kcm9wZG93bi5jb3JyZWN0XG5cdCAqIFx0XHRvcHRpb24odmFsdWU9XCJvcHQxXCIpIE9wdGlvbiAxXG5cdCAqIFx0XHRvcHRpb24odmFsdWU9XCJvcHQyXCIpIE9wdGlvbiAyXG5cdCAqL1xuICAvKipcblx0ICogV3JvbmcgZHJvcGRvd24gaW5wdXQ6XG5cdCAqIGAud3JvbmdgIC0gRmVlZGJhY2sgaWYgdGhlIGlucHV0IGlzIHdyb25nIGFuc3dlcmVkXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0c2VsZWN0LmRyb3Bkb3duLndyb25nXG5cdCAqIFx0XHRvcHRpb24odmFsdWU9XCJvcHQxXCIpIE9wdGlvbiAxXG5cdCAqIFx0XHRvcHRpb24odmFsdWU9XCJvcHQyXCIpIE9wdGlvbiAyXG5cdCAqL1xufVxuc2VsZWN0LmRyb3Bkb3duLmNvcnJlY3Qge1xuICBib3JkZXI6IDJweCBzb2xpZCAjNDc4ODJkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmOWVlO1xufVxuc2VsZWN0LmRyb3Bkb3duLndyb25nIHtcbiAgYm9yZGVyOiAycHggc29saWQgIzliMjcyNztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZkZjdmNztcbn1cbi8qKlxuICogRnJlZXRleHQgdGV4dGFyZWE6XG4gKiBgdGV4dGFyZWFgIC0gTWluaW11bSBzaXplZCB0ZXh0YXJlYSBmb3IgZnJlZSB0ZXh0IGlucHV0XG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0dGV4dGFyZWEuaW5wdXRcbiAqL1xudGV4dGFyZWEge1xuICBtaW4taGVpZ2h0OiAxMjBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4vKipcbiAqIFNpbmdsZS0gJiBNdWx0aXBsZUNob2ljZSBhbnN3ZXI6XG4gKiBgLmFuc3dlci12aWV3YCAtIFRoaXMgc3R5bGUgaXMgZm9yIGFuIGFuc3dlciBvbiBhIG11bHRpcGxlLSBvciBzaW5nbGVjaG9pY2UgcXVlc3Rpb24uIEl0IHByb3Blcmx5IGFsaWducyB0aGUgdGV4dCBhbmQgdGhlIGNoZWNrYm94LlxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5hbnN3ZXItdmlld1xuICogXHRcdGxhYmVsXG4gKiBcdFx0XHRpbnB1dCh0eXBlPVwicmFkaW9cIilcbiAqIFx0XHRcdHAgUHJvIFR5cGVTY3JpcHQgc2hvd3MgeW91IGhvdyB0byB3cml0ZSBsYXJnZS1zY2FsZSBKYXZhU2NyaXB0IHByb2dyYW1zIHRoYXQgY2FuIHJ1biBpbiBhbnkgd2ViIGJyb3dzZXIgb3Igb24gYW55IHdlYiBzZXJ2ZXIgdXNpbmcgTWljcm9zb2Z04oCZcyBUeXBlU2NyaXB0IGxhbmd1YWdlLlxuICogXHRkaXYuYW5zd2VyLXZpZXdcbiAqIFx0XHRsYWJlbFxuICogXHRcdFx0aW5wdXQodHlwZT1cImNoZWNrYm94XCIpXG4gKiBcdFx0XHRwIFBybyBUeXBlU2NyaXB0IHNob3dzIHlvdSBob3cgdG8gd3JpdGUgbGFyZ2Utc2NhbGUgSmF2YVNjcmlwdCBwcm9ncmFtcyB0aGF0IGNhbiBydW4gaW4gYW55IHdlYiBicm93c2VyIG9yIG9uIGFueSB3ZWIgc2VydmVyIHVzaW5nIE1pY3Jvc29mdOKAmXMgVHlwZVNjcmlwdCBsYW5ndWFnZS5cbiAqL1xuLmFuc3dlci12aWV3IHtcbiAgbWluLWhlaWdodDogMjBweDtcbiAgbWFyZ2luOiA1cHggMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA1cHg7XG4gIC8qKlxuXHQgKiBDb3JyZWN0IGFuc3dlcmVkIHZpZXc6XG5cdCAqIGAuYW5zd2VyLXZpZXcuY29ycmVjdGAgLSBGZWVkYmFjayBpZiB0aGUgYW5zd2VyIGlzIGNvcnJlY3Rcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuYW5zd2VyLXZpZXcuY29ycmVjdFxuXHQgKiBcdFx0bGFiZWxcblx0ICogXHRcdFx0aW5wdXQodHlwZT1cInJhZGlvXCIpXG5cdCAqIFx0XHRcdHAgQ29ycmVjdFxuXHQgKi9cbiAgLyoqXG5cdCAqIFdyb25nIGFuc3dlcmVkIHZpZXc6XG5cdCAqIGAuYW5zd2VyLXZpZXcud3JvbmdgIC0gRmVlZGJhY2sgaWYgdGhlIGFuc3dlciBpcyB3cm9uZ1xuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5hbnN3ZXItdmlldy53cm9uZ1xuXHQgKiBcdFx0bGFiZWxcblx0ICogXHRcdFx0aW5wdXQodHlwZT1cImNoZWNrYm94XCIpXG5cdCAqIFx0XHRcdHAgV3Jvbmdcblx0ICovXG59XG4uYW5zd2VyLXZpZXcgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmctbGVmdDogMjBweDtcbn1cbi5hbnN3ZXItdmlldyBpbnB1dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbWFyZ2luLWxlZnQ6IC0yMHB4O1xuICBtYXJnaW4tdG9wOiA0cHg7XG59XG4uYW5zd2VyLXZpZXcgcCB7XG4gIG1hcmdpbjogMDtcbn1cbi5hbnN3ZXItdmlldy5jb3JyZWN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjllZTtcbiAgY29sb3I6ICM0Nzg4MmQ7XG59XG4uYW5zd2VyLXZpZXcuY29ycmVjdCBwOmFmdGVyIHtcbiAgY29udGVudDogJyBcXDAyNzEzJztcbn1cbi5hbnN3ZXItdmlldy53cm9uZyB7XG4gIGNvbG9yOiAjOWIyNzI3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmN2Y3O1xufVxuLmFuc3dlci12aWV3Lndyb25nIHA6YWZ0ZXIge1xuICBjb250ZW50OiAnIFxcMDI3MTcnO1xufVxuLyoqXG4gKiBEcmFnIG5vZGU6XG4gKiBgLmRyYWctbm9kZWAgLSBBIG5vZGUgc3R5bGUgdGhhdCBzaG93cyBpdCBjYW4gYmUgZHJhZ2dlZC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuZHJhZy1ub2RlIE15IGRyYWdnYWJsZSBlbGVtZW50XG4gKi9cbi5kcmFnLW5vZGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGN1cnNvcjogbW92ZTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAxMHB4O1xuICBib3JkZXI6IDJweCBzb2xpZCAjZWJlMGUyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAvKipcblx0ICogQ29ycmVjdCBwbGFjZWQgZHJhZyBub2RlOlxuXHQgKiBgLmRyYWctbm9kZS5jb3JyZWN0YCAtIEZlZWRiYWNrIGlmIHRoZSBkcmFnIGlzIGNvcnJlY3QgcGxhY2VkXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmRyYWctbm9kZS5jb3JyZWN0IENvcnJlY3QgZWxlbWVudFxuXHQgKi9cbiAgLyoqXG5cdCAqIFdyb25nIHBsYWNlZCBkcmFnIG5vZGU6XG5cdCAqIGAuZHJhZy1ub2RlLndyb25nYCAtIFN0eWxlIHdyb25nIGlmIHdyb25nXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmRyYWctbm9kZS53cm9uZyBXcm9uZyBlbGVtZW50XG5cdCAqL1xufVxuLmRyYWctbm9kZTpob3ZlciB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM5OTY2NzA7XG59XG4uZHJhZy1ub2RlLmNvcnJlY3Qge1xuICBib3JkZXI6IDJweCBzb2xpZCAjNDc4ODJkO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmOWVlO1xufVxuLmRyYWctbm9kZS53cm9uZyB7XG4gIGJvcmRlcjogMnB4IHNvbGlkICM5YjI3Mjc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZGY3Zjc7XG59XG4vKipcbiAqIERyb3Agbm9kZTpcbiAqIGAuZHJvcC1ub2RlYCAtIEEgc3R5bGUgZm9yIGEgbm9kZSB3aGVyZSBkcmFnIGVsZW1lbnRzIGNhbiBiZSBkcm9wcGVkLlxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5kcm9wLW5vZGVcbiAqIFx0XHRkaXYudGl0bGUgRHJvcCBub2RlXG4gKiBcdFx0ZGl2LmRyYWdzXG4gKiBcdFx0XHRkaXYuZHJhZy1ub2RlIERyYWcgZWxlbWVudFxuICovXG4uZHJvcC1ub2RlIHtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZWJlMGUyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzc3O1xuICBtYXJnaW46IDEwcHggMDtcbn1cbi5kcm9wLW5vZGUgLnRpdGxlIHtcbiAgcGFkZGluZzogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xufVxuLmRyb3Atbm9kZSAuZHJhZy1ub2RlIHtcbiAgbWFyZ2luOiA1cHg7XG59XG4uZHJvcC1ub2RlIC5kcmFncyB7XG4gIG1pbi1oZWlnaHQ6IDUycHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4vKipcbiAqIERyYWcgY29udGFpbmVyOlxuICogYC5kcmFnLWNvbnRhaW5lcmAgLSBBIGNvbnRhaW5lciB0aGF0IHN0b3JlcyB0aGUgZHJhZyBub2RlcyB3aGVuIHRoZXkgYXJlIG5vdCBvbiBhIGRyb3Agbm9kZS5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuZHJhZy1jb250YWluZXJcbiAqIFx0XHRkaXYuZHJhZy1ub2RlIERyYWcgZWxlbWVudFxuICovXG4uZHJhZy1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBtYXJnaW46IDEwcHggMDtcbn1cbi5kcmFnLWNvbnRhaW5lciAuZHJhZy1ub2RlIHtcbiAgbWFyZ2luOiA1cHg7XG59XG4vKipcbiAqIEhvdHNwb3QgcG9pbnQ6XG4gKiBgLmhvdHNwb3QtcG9pbnRgIC0gQSBwb2ludCB0aGF0IGlzIHNob3duIG9uIHRoZSBob3RzcG90IGltYWdlIHdoZW4gaXQgaXMgY2xpY2tlZC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuaG90c3BvdC1wb2ludFxuICovXG4uaG90c3BvdC1wb2ludCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCMEFBQUF2Q0FZQUFBQWZJY0dwQUFBRWFVbEVRVlJZQ2JXWVQwZ2paeFRBWnliUmpjWnFYYTFaalMzaW1nMHUxQlpxV1NsZVBOaURoN0lVUEhndDJBWThpQWdlRkwwTHZYcmJoWFVMeSs2MnBiUzJ0SlRTUDFqRVl0V0tpaFcxV2FNR0srS0t0ZEg0Wjk2K045bm5mR01teVdRbWZ2RHl2WG4vZnI0ditXYm1VNVplanVycWF2KzF3c0ozRmRsOWcwd3FuRzNIWTdHcHpjM05MWTdKMVN4VG9VQWdjRWQxdVpvbHlhMWQ2OFhQUURrLy8zMWxaZVVQM2VaY2MxR0hMbytuTFJsSXhSVVpGT2tOcjhjVE9UZzQrTTg1TGxGQm9TVzlERHc5anIyaUE5eHlJa2EzT05VVS9nN0ZRaHZyNFU4UTdHV2JXUXo3N015S1dSSUErQkFjRXNGbWNYWnRDdjFLelpJUmZPTmx4NFdwWXN6eXJOZ1UyaGFTZEFabXdRaXVSUERILzBhaksyWit1emFGOWlGdEN6TndNQmlVRU93L1BEeDhpSUJTdTVDVWViUjFidDY2ZFRjUXZCM0NJT29jb3RFbzRCN1dkTHpHRlpGS1VLNXNhQ0RzRW5BbG9LNnVqc0Ywa3lpK0t1b0ZsTUNSU0FScWEyc1pQSUZRWVIvbjdrOHdRQW04dnI0T05UVTFETWJmZ0ZTVU8xeWlVaEtVd09Gd0dQQzdWekdFL0wraFhOeEFFbW5PUGsyaEJGNWJXNE9xcWlvRy80S1lRbWNvUFRzbGxNRDQxSUhLeWtvRy80UnBCWHFxZlMwdGxNREx5OHZnOC9rWS9DT2lQUFp4aWN5TVVBSXZMUzFCUlVVRmc3L0gxR3RPd0phZ0JGNWNYSVR5OG5JR2Y0dlFmTHRneTFBQ3o4L1BRMWxaR1lPL1FXaWVIWEJXVUFMUHpjMUJhV2twZzcreUE4NGFTdURaMlZrb0tTbGg4QmNJZG1mVHNTMG9nYWVucDZHNHVKakJUeERxc2dxMkRTWHcxTlFVRkJVVk1maVJWYkFqS0lFbkp5ZEY4R2NJTm4wMUVsZkJNWlRBRXhNVDRQVjZ1ZU1IbWNBNWdSSjRmSHdjQ2dvS0dId2Z3WEpXdnk1eEtVUjlZV0ZCR2hnWUVFMEczZS8zeTZ1cnEyVDdDT1hjNEJRdXN1cFVWVldvcjYvWGNyQ0dsVmxBNldwS2FEd2VoL2IyZHUyaFRzdkhZM1IwbEdIUHNjeGRsQS9TaUU0U05GUG84ZkV4dExXMWFiNVFLTVE4YlQ0OVBSWGZMRDRVYWxsV2s2Q3hXQXhhVzF1NUczQzczZXJHeG9ZQlBESXl3djQvTFpPRVFBTVUzM3VocGFXRkM5S0o0R2NVNk9ycU1rQ1BqbzdFUjkzN1FqMUw2Z1VVajRqUTNOek1RRG9nQjFGdW82aDVlWG5xMXRhV0FUdzhQTXl4djJKTVZrTkwzTi9maDZhbUppNFN3UXAxUXBXbnFFTjNkN2NCU24ra2NOTi9UNGpQcUdxZ3hzWkdCb1l4bytaUzFwdDRyZWJuNTZ2YjI5c0c4T0RnSU9mUlE5M3k0Q1NhNmZEMGVvck1MOUVPdmIyOUJ1anU3cTU0RjNvclJXNlNtYUYvbzZjcXlhc2Iza1lWUEI2UHVyT3pZd0QzOVBSd2pjZDZlSHFORWhaUWZPbkROTy9YK0FsOWZYMEdLSjJCYUZ1aGoyNTdBUzB5dzhkZjZIOHRRd3k3MzBGRlcwNWFWbkYwZG5aeXQvYzRPTjE4UFozVHhQY2QycUMvdjE5a2FpL2xzaXhUdDNHVWFwTThSNlk3bUswOU8vZjI5Z3pnam80TzdwWWU1RGtmUDJCRkdCb2FNa0RwbUtrb0NuZWI4OU04M1FpMFY1VExkNm1HaGdidXRqN25yV0xCendsTWtKbVpHVGc1T1lHeHNURUNVcWRIS0ZmeTc0TlhzVEJ0TmU1TW5QdlJmbVdEVHVpZm92eUQ4ai9LTXhRQ1hyd052Z0FXUVlBYnAwcjE3UUFBQUFCSlJVNUVya0pnZ2c9PScpO1xuICB3aWR0aDogMjlweDtcbiAgaGVpZ2h0OiA0N3B4O1xuICBtYXJnaW4tbGVmdDogLTVweDtcbiAgbWFyZ2luLXRvcDogLTVweDtcbiAgLyoqXG5cdCAqIENvcnJlY3QgaG90c3BvdCBwb2ludDpcblx0ICogYC5ob3RzcG90LXBvaW50LmNvcnJlY3RgIC0gVGhlIHN0eWxlIGZvciBhIGNvcnJlY3QgcGxhY2VkIGhvdHNwb3QgcG9pbnRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuaG90c3BvdC1wb2ludC5jb3JyZWN0XG5cdCAqL1xuICAvKipcblx0ICogV3JvbmcgaG90c3BvdCBwb2ludDpcblx0ICogYC5ob3RzcG90LXBvaW50Lndyb25nYCAtIFRoZSBzdHlsZSBmb3IgYSB3cm9uZyBwbGFjZWQgaG90c3BvdCBwb2ludFxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5ob3RzcG90LXBvaW50Lndyb25nXG5cdCAqL1xufVxuLmhvdHNwb3QtcG9pbnQuY29ycmVjdCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCMEFBQUF2Q0FZQUFBQWZJY0dwQUFBRm5FbEVRVlJZQ2JXWTJXOWJSUlRHNTh6MUZpY2xUUk0zU1p1R3FvbmpPQzFTUVdvUktqUnRTZ1ZVSUNGRUpSQUNnWVFLTDd4VDNsZ2tscjhCQ1lFUVFxVlFWZXd2WlJWTEVWSlpWSnc0Uyt2R2JaclFPTXJpZUxzemZPZWFHeHZuSnZIR2VabDd6OHljbjc5WnpwMHhpWCt0cTZ0cnU5ZnYzeWZKMWNFdXBYTlQ2V1R5bDhuSnliamRwbDRsY2FCZ01IaTdNb3c3aFhCWjc0WGdPUzFOOC90b05QcHp3VmY3azhFS0RaL3YyR29nQjVla3BlaHU5UGxpOC9QekM3WGo4aEVrRDJrcGtJVGFWQUM0S04rbTRLbjFTZHB6V0J4SUMvbU1WcXJSOWptMXNldXFLYVZUSjBtaW5hUjRWcXZjQ3RpcFhiVSt5YXZVcWJNazJXRkllUUpnLzFwdG5QcVY0NU84TFlUSWFjZkdKTGRKTWs1a1U2bW9ZMzJWVHNuN2tMZUZFOWlINVVTU3Ryc2JtdDdwN3U1dXFaS3hxcHZCbnRuWjJUaHZDNWRMTmtoQkhrRjBQL3QzMzBkaURxbEJaYWxUdXJ4SFdwcWJUaVVTaVRUWDFXSWx5U0FmS2hqZVl3MzN2a2VseUN4cEVUbW5SWHBSQ0t6bzg3TXpVMGZ4SStkcmdUcXUzdUtBbmtZUy9VTWtQRmpISk9YK2xrRG5GMjF0YlVYN3VMaDFlYzhiUWprTWc4TU05aU5IU2JxanViWDljeEVJTkpXSFdOMnFMS2dGYm9MaUl5VGNEVm9EZktCblMrQXorS3ZheDJWREdld0ZPSHdFK2NuSFlIbFhUeWo4Q2R6UVg1bFZCT1hRM2swa0J1NEcyTXRnNDFCUGFPQmp1QnNxd1ZZTVhRRWZ0Y0Z5YUZmZm5yUHcrOG9GVndXMXdmMnMyS08xWVlpalVId0dmbTg1NEtxaEhMemhKaXd1Z0EyQU1jZjNCc01ESDhIdDJRaGNFOVFDTitjWGwrSFdTQ2p5V0c5bzkybjQzZXVCYTRaYTRNMEFzMktYMXNqVkQyQ29UNjBIcmd2VUJsdEREVENHK3NHZXZ2RDc4THU0cnRUcUJ1WEEvaFlTSWV4anc2VzBOSXlIZWtNRDc4RnRmVlNLd1hXRmN1REdMUUFQR1NRTmhhR1d4Nkg0M1ZKdzNhRVd1TFVBaHVKSG9QaHQrRmRZS3cvY3VKN1cxQWJ3WVlNSUJ5SW9mZ3lLMzBKOGkvZS9RVmxBVTRBL2kza3dGRDhCeFcvQ1RZNnJpenRVWXN0eldreis1bnpNNGpnZXZ5UStCRUR4VTFCczFnWHFRNEpJTFdxUkt1TThBY1ZQVnd6VnBoWmpQMml4NDFheVBuV3NoSERvNlJ3UVl1SW5uS2VVbmpOTi9TUnVDWXJybkt3aXFBSXcrcDBXODlldzY3MWE3TnhmT0dLMTNrd2kvcnNXbVNSdDFtUzZ4aU9SRDUyQTdDdDdJU2tjamFQZjVJSGNjV1pjYVQ2MDJZYjBKenJEK1RmY3VsNncvVTVsV1ZBenE4WEkxd0JlNTN1cm1sSktuUk5hMHJXTEJTZ0hiK3Nod1o4NnBNSGJlbnY3NzNFQ3NtOURLQU9IdjlKaVlZYVBvRHF1TTZuQjdITG1PWURWOUJqVUpndGdhWkRvQ1BNTVk1N2RhNnRkRjVyTEFJZ3o3OUlOUzJFc25Vd1BqbytQajhSaW94Y1I5N1NUMnExQkV2eTFnWjZEUGFIUUFmNEJwYll1MUFMT1dnb256RlJ5OE1xVjBURTdnTTZtWG9GWVBUMnFkSGE1b05ad2s5Z2F5cXZGR2NweGJ0ZUZKaE1BQ2hWZFhwdzdlQWxtQTdtRTRqK0UxbWNzdFg4Vm9GelgwVWZZUm9yVkh0dTVNN2lYZmNXMkxoUnpHTWttbHdiajhmaGtjU2Y3MmN6a1h1Ym42WkgvcW5YNW9MWVB5eGxtZU4wbnVTeTJOYUVZdWovbkV6T0hMbCsrakYzcGJKY3VSUytnM1Ztc1Y1cUtsS2p0QjlOU0t4N3U2dG9WTEk3Z0RGWHF3dkxDM09IcDZXbHNrZzJNbEtYMitqQ3V6cWtDMk9NbkVkaUZxelhNMStoN3ZqaUtJelM5dkRoMDllclZ2NHNicnZVOEZvbjhxa3p4cWFWMnVBRGw5cDFoSG1ITUxjbkh0MjNiczhPTzRRaU54V0pZUXVXYnltWmU0dFlZWXAxTEY4QjhHOWpTTFFscjJlM2ZwRjYxSXpwQzdjcHl5NG1Ka2ZQWVBWOXFSVFJWb25iSDN2emM0bytUNC9adHZpNVEvbkZrcGwvazhqclVGdWRrdm1ZMk5QTktsaDRpci9VWFlOMmdvNk9qUCtLbS9vRXlpWWFScDVkbXRlRFBZT0tLRXNrRU1yWlNxWVdGRzliL2pEelRkYlBOc05iMjdkL2kvbnBMYVZEVHpKMGNING04eHY1Vlo5TFN4cFc4cDJDSkd6UHZ0QVJhT2Z1Mkk1OTVrTkxpMFBrNmdHL1lzZjRCNXhBbXpDam5id2NBQUFBQVNVVk9SSzVDWUlJPScpO1xufVxuLmhvdHNwb3QtcG9pbnQud3Jvbmcge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQjBBQUFBdkNBWUFBQUFmSWNHcEFBQUZ2MGxFUVZSWUNiV1krMjlVUlJUSHo4eTkrK2h1MjIyN1c3cDkwRFMwU3kxaWdrWXhDRkxBRUExS1lnd2tKa2FqaWZJdzhSZC9Fbi96a2ZqNkEzd0VOUkExaWlnaFBsQi9VSU5FRkdKQ0lwcEtTMm0zM2JZVXVsdDJsMzNmR2MrNTI5dGV0bmZMYm5jNXY4enNtWm56bWUvY08rZk9MSU01Nitqb2FIZTRYUGR3cHZySkpXUnVLcDFJbkIwZkh3OFpmYXBWTWdvVUNBVHVGWXF5Q1VEVmZ5OEV6MG11YWFjR0J3Zi9YUEJWWGxOSW9lSjA3bGdNcE9DY1NRNmRicWN6R0kxR1k1WGo4aEU0TFdraGtJR29Xd0NvTE45bndWTnBqUnZQMEJ4SUF0OHJoWEFiUHFzK1J0dHlTbTQxaUROb1lSejJTWkdiQjF2MVc2NlAwMXRxTlpnejdsYzQzNE5nVjdFK1Z1Tks4WEhhRmdBNWFkbVo4VGJPbEQzWlZHclFzbjJaVGs3N2tMYUZGZGluY0dDY3RkdHFhZzkzZG5ZMkxwT3hhSmhDbm5BNEhLSnRvYXE4QmpGMllPd1I4ci9ZNW9OL0VpbElBYlJ5MWZGQW82ZjJTQ1FTU1ZOYkpWYVFEUEtoQW4xcjllVitwOHNQczFrTjNwMjZDbUZOQXI3Ulo4SlhwcmJqSktPVlFDM2ZYblBBQnBzQysveGVhRklZTGpWZjM5amMrb1BQNXpQdFkzUHYwdW8zaFZLWVJwdXFneHNSakJ0N2c4ZmJjZ0thbTJ0TFF5enVWUkowSHR6aUJROERpZUNOM1UzTjM2Ti9XZnU0WkNpQm0rd3E3Ry8xc1hvZHpPL3Y3dTM3RnQwdWFpdkh5b0pTWU84Y3VFNEhLMXU2ZTlkOGcrNmFXd3FsNEQ0ZDdHWHV2T0p0cTFhdlBZNXVaNm5nc3BVYWdadnRObmplbndjckNteEh4Y2V3eldHMEwxVXVHMHBCVnpoc3NCL0JycnppaHdKOWE3NUd0MzBwSUxWVkJLVUFMUVlZQUJNSzM5SFRlL3RSZE51b3JaaFZES1hBZmdUdmJmV3lHcEFTYy9WT1hPb2o2QzRLcmdxVXdHMEV4cVYySXBoei9tajM2cjdQMGExU1c2RlZEVXFCMjUxMkhld2dzS0k4MXRPNzVqTjA2eDhWTTdpcVVBcmNNUWUyUzFwcXZoc1ZmMUlJcmpxVXdDdE5ZRlQ4T0NvK2hPNTUxbnlGT2xmVE9tdnM4SnkvaWRueWlwOUF4UjlqZkoxM3k2QWtvS3ZHb1lOVkJLUGlwMUR4UVhRenk3ZUxCcFJqaytrc25JZ1VQNHZYcTV6UklRQ2Y4VE9vV0tzSzFJKzVlQ2FiZzJsTjNIU3VxUGpac3FFNUllSFQ2UWpzYktyWFAzVkVZWXpCVm84YnZnakhRQWc1cTJueWFid2xGSjFCV2RBc0FnOWREc04vdUp6dTJSanNXckZ3UUx5ejFnVS9YWXREQktCQk1rMGRIaGo0cXBqc2tsK2tEQUkvbXByUmdSVHM3UFdVak9DU0dxYmd0YUMvUG4rUXdGdlh5NGJmcWl3SlNzQVBFVGlVeWVHOVZVd0pJWDRXdUthL3pNWnZpTG0remcxejM5aTdlbnB1ZS9DR1J0T1BtMExUK0dnK21KeUJZUVJLSVVNeWsrclBKak12SUZpY2lTZmxOVHlpR21iTHE5V1B0Y3hXWE8yUzBHUk93UHVUWVJqRlpVU0Z3WFFpM1Q4OFBId2hHQno2RjBGSE5RdTE5K0VMUlVrZjg4RG03dDdlamNhRXpPV1MwUGN1ejhBWUFsSGhKUzJWNkI4Ykc3cG9ESmJaMU9zb1Z2NFJUOGhvYmtHdGczUFlWSWVmZFRUT0ZjdG51eVIwQXBkT2doaE14bWMzajZBWlFDcFI4ZDhvNkJpcC9iWGcyVzd5MUFKbEljVHU2T29LckRPUG8vcVNVRlE0a0UxYzd3K0ZRdU9GQSttM2xzbTlSdVhwV0VMR1RHcmRxZ0liNXRRcUR0c0I2bU8yb2xCY3V2UFJ5SlV0bzZPamsrWUI1dnJJeU9BNTdIYzhaNkcySDlWeVhTM3M2dWhZRlRDUHM0WUtjUzRabTkwNlBUMTkyZHpac3M2RXJ2WjNWQnMzcWZYZ0hlaHV0eFBUTGVkT3QvTWw4MWhMYURvWjN6WXhNWEhWM0xGWS9lTEF3RjlDZys5STdVbk1TR2JiMm9EM0xGTEwrSk50Yld0WEdtMlcwR0F3aU5tc2RCUFp6S3ZVKzFRMElSTzR6UXlqUS9rNmx3T25BelpYblhqRDhGdENqY1pTeTB1WExwekIzZk5qVmxkNzR5ZnU0U2FQL216eGxMamJ1TTFYQlVxVFkxcjZGU3AvUTdWMGtUYU03cmNyYkhqSHhCcytZdzc5TDhDcVFZZUdoazdqVGYzTERLbzlpSGw2UEpVQitpcWRqeWRoTXF0aGswakZZalA2LzR4NjVqQm1WV25aZ09adGFUK0o5OWM3Q21OcFd1N0E4SVdCTjhtLzZFeGEyTG1jM3ltMHlNeVZ3NDNOWGt4STBJS3ZyaDFUV2dqejlsc0lmTnVJOVQ5d2t5OUhhWGcxbmdBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcbn1cbi8qKlxuICogSG90c3BvdCByZWN0YW5nbGVzOlxuICogYC5ob3RzcG90LXJlY3RgIC0gQSB2aXN1YWxpemF0aW9uIG9mIHRoZSBob3RzcG90IHJlY3RhbmdsZXMgb24gYW4gYXJlYVxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5pbWctYXJlYVxuICogXHRcdGRpdi5zdHJldGNoXG4gKiBcdFx0XHRkaXYuaG90c3BvdC1yZWN0LmFicyhzdHlsZT1cInRvcDo0MCU7bGVmdDo0MCU7d2lkdGg6MjAlO2hlaWdodDoyMCU7ei1pbmRleDogMTtcIilcbiAqIFx0XHRpbWcoc3JjPSdodHRwOi8vd3d3LmJ5dWkuZWR1L2ltYWdlcy9hZ3JpY3VsdHVyZS1saWZlLXNjaWVuY2VzL2Zsb3dlci5qcGcnKVxuICovXG4uaG90c3BvdC1yZWN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBib3JkZXI6IDFweCBzb2xpZCAjRkZGO1xufVxuLyoqKlxuICogRGVjb3JhdG9yczpcbiAqL1xuLyoqXG4gKiBGZWVkYmFjazpcbiAqIGAuZmVlZGJhY2tgIC0gVGhpcyBzdHlsZXMgYSBmZWVkYmFjayBtZXNzYWdlIHdoZW4gdGhlIHVzZXIgaGFzIGFuc3dlcmVkIGEgcXVlc3Rpb24uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmZlZWRiYWNrIFRoYW5rcyBmb3IgeW91ciBhbnN3ZXIuXG4gKi9cbi5mZWVkYmFjayB7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZzogMjBweCAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBtYXJnaW46IDIwcHggNXB4O1xuICAvKipcblx0ICogQ29ycmVjdCBmZWVkYmFjazpcblx0ICogYC5jb3JyZWN0YCAtIFRoZSBzdHlsZSBmb3IgYSBjb3JyZWN0IGFuc3dlcmVkIGZlZWRiYWNrXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmZlZWRiYWNrLmNvcnJlY3QgUGVyZmVjdCwgeW91ciBhbnN3ZXIgaXMgY29ycmVjdFxuXHQgKi9cbiAgLyoqXG5cdCAqIFdyb25nIGZlZWRiYWNrOlxuXHQgKiBgLndyb25nYCAtIFRoZSBzdHlsZSBmb3IgYSB3cm9uZyBhbnN3ZXJlZCBmZWVkYmFja1xuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5mZWVkYmFjay53cm9uZyBTb3JyeSwgYnV0IHlvdXIgYW5zd2VyIGlzIHdyb25nLlxuXHQgKi9cbn1cbi5mZWVkYmFjay5jb3JyZWN0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgIzQ3ODgyZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjllZTtcbiAgY29sb3I6ICMxZjNiMTQ7XG59XG4uZmVlZGJhY2sud3Jvbmcge1xuICBib3JkZXI6IDFweCBzb2xpZCAjOWIyNzI3O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmN2Y3O1xuICBjb2xvcjogIzRhMTIxMjtcbn1cbi8qKipcbiAqIFRleHQ6XG4gKi9cbi8qKlxuICogSDE6XG4gKiBgaDFgIC0gVGhlIGhlYWRlciAxXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aDEgaGVhZGVyIDFcbiAqL1xuaDEge1xuICBmb250LXdlaWdodDogMTAwO1xuICBjb2xvcjogIzExMTtcbiAgZm9udC1zaXplOiAzLjRlbTtcbn1cbi8qKlxuICogSDI6XG4gKiBgaDJgIC0gVGhlIGhlYWRlciAyXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aDIgaGVhZGVyIDJcbiAqL1xuaDIge1xuICBmb250LXdlaWdodDogMTAwO1xuICBjb2xvcjogIzExMTtcbiAgZm9udC1zaXplOiAyLjFlbTtcbn1cbi8qKlxuICogSDM6XG4gKiBgaDNgIC0gVGhlIGhlYWRlciAzXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aDMgaGVhZGVyIDNcbiAqL1xuaDMge1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogIzExMTtcbiAgZm9udC1zaXplOiAxLjJlbTtcbn1cbi8qKlxuICogUGFyYWdyYXBoOlxuICogYHBgIC0gVGhlIHN0eWxlIGZvciBhIHBhcmFncmFwaFxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdHAgQWxzIEJsaW5kdGV4dCB3aXJkIFRleHQgYmV6ZWljaG5ldCwgZGVuIG1hbiBiZWkgZGVyIEdlc3RhbHR1bmcgdm9uIFB1Ymxpa2F0aW9uZW4gdmVyd2VuZGV0LCB3ZW5uIGRlciBlaWdlbnRsaWNoZSBUZXh0IG5vY2ggbmljaHQgdm9ybGllZ3QuIE1pdCBIaWxmZSBkZXMgQmxpbmR0ZXh0ZXMga2FubiBkaWUgVmVydGVpbHVuZyBkZXMgVGV4dGVzIGF1ZiBkZXIgU2VpdGUgKExheW91dCBvZGVyIFNhdHpzcGllZ2VsKSBzb3dpZSBkaWUgTGVzYmFya2VpdCBkZXIgdmVyd2VuZGV0ZW4gU2NocmlmdGFydGVuIChUeXBvZ3JhZmllKSBiZXVydGVpbHQgd2VyZGVuLiBFciBiZXN0ZWh0IGF1cyBlaW5lciBtZWhyIG9kZXIgbWluZGVyIHNpbm5sb3NlbiBGb2xnZSB2b24gV8O2cnRlcm4sIG9mdCBhdWNoIG51ciBhdXMgd29ydMOkaG5saWNoZW4gU2lsYmVuZm9sZ2VuLlxuICovXG5wIHtcbiAgZm9udC1zaXplOiAxZW07XG59XG4vKipcbiAqIENlbnRlciB0ZXh0OlxuICogYC5jZW50ZXJgIC0gQ2VudGVycyB0aGUgdGV4dFxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdHAuY2VudGVyIFRoaXMgaXMgY2VudGVyZWRcbiAqL1xuLmNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi8qKipcbiAqIE5hdmlnYXRpb246XG4gKi9cbi8qKlxuICogQ2F0ZWdvcmllcyBsaXN0OlxuICogYC5jYXRlZ29yaWVzYCAtIEEgc3R5bGluZyBmb3IgYSBsaXN0IG9mIGNhdGVnb3JpZXMgaW4gYSBuYXZpZ2F0aW9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0b2wuY2F0ZWdvcmllc1xuICogXHRcdGxpLmFjdGl2ZSBIb21lXG4gKiBcdFx0bGkgR2FsbGVyeVxuICogXHRcdGxpIEJsb2dcbiAqL1xuLmNhdGVnb3JpZXMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4uY2F0ZWdvcmllcyBsaSB7XG4gIHBhZGRpbmc6IDdweCAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBmb250LXNpemU6IDAuOWVtO1xufVxuLmNhdGVnb3JpZXMgbGk6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmYwMDMzO1xuICBjb2xvcjogI0ZGRjtcbn1cbi5jYXRlZ29yaWVzIGxpLmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiYmI7XG4gIGNvbG9yOiAjRkZGO1xufVxuLyoqXG4gKiBDYXRlZ29yeSBuYXZpZ2F0aW9uOlxuICogYC5jYXRlZ29yaWVzLW5hdmlnYXRpb25gIC0gQSBzdHlsaW5nIGZvciBhIGNhdGVnb3J5IG5hdmlnYXRpb25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuY2F0ZWdvcnktbmF2aWdhdGlvblxuICogXHRcdHVsLmNhdGVnb3JpZXNcbiAqIFx0XHRcdGxpLmFjdGl2ZSBIb21lXG4gKiBcdFx0XHRsaSBHYWxsZXJ5XG4gKiBcdFx0XHRsaSBCbG9nXG4gKi9cbi5jYXRlZ29yeS1uYXZpZ2F0aW9uIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiYmI7XG59XG4uY2F0ZWdvcnktbmF2aWdhdGlvbiBsaSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi8qKlxuICogTWVudSBuYXZpZ2F0aW9uOlxuICogYC5tZW51LW5hdmlnYXRpb25gIC0gQSBzdHlsaW5nIGZvciBhIG1lbnUgbmF2aWdhdGlvblxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5tZW51LW5hdmlnYXRpb24ub3BlbihzdHlsZT0naGVpZ2h0OjE1MHB4JylcbiAqIFx0XHRkaXYudG9nZ2xlLW1lbnUgTWVudVxuICogXHRcdG9sLmNhdGVnb3JpZXNcbiAqIFx0XHRcdGxpLmFjdGl2ZSBIb21lXG4gKiBcdFx0XHRsaSBHYWxsZXJ5XG4gKiBcdFx0XHRsaSBCbG9nXG4gKi9cbi5tZW51LW5hdmlnYXRpb24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4ubWVudS1uYXZpZ2F0aW9uIC5jYXRlZ29yaWVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICB6LWluZGV4OiAxMDtcbiAgdG9wOiAyMHB4O1xuICBsZWZ0OiAwO1xufVxuLm1lbnUtbmF2aWdhdGlvbi5vcGVuIC5jYXRlZ29yaWVzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4vKipcbiAqIFBvaW50cyBuYXZpZ2F0aW9uOlxuICogYC5wb2ludHMtbmF2aWdhdGlvbmAgLSBBIHN0eWxlIGZvciBhIHBvaW50cyBuYXZpZ2F0aW9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LnBvaW50cy1uYXZpZ2F0aW9uXG4gKiBcdFx0ZGl2LnBvaW50XG4gKiBcdFx0ZGl2LnBvaW50LmFjdGl2ZVxuICogXHRcdGRpdi5wb2ludC5oYXMtaW5wdXRcbiAqIFx0XHRkaXYucG9pbnQuc21hbGxcbiAqL1xuLnBvaW50cy1uYXZpZ2F0aW9uIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnBvaW50cy1uYXZpZ2F0aW9uIC5wb2ludCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDE1cHg7XG4gIGhlaWdodDogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBib3JkZXI6IDJweCBzb2xpZCAjOTk5O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG4ucG9pbnRzLW5hdmlnYXRpb24gLnBvaW50OmhvdmVyIHtcbiAgYm9yZGVyOiAycHggc29saWQgIzc3NztcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcbn1cbi5wb2ludHMtbmF2aWdhdGlvbiAucG9pbnQuc21hbGwge1xuICB3aWR0aDogMTBweDtcbiAgaGVpZ2h0OiAxMHB4O1xufVxuLnBvaW50cy1uYXZpZ2F0aW9uIC5wb2ludC5oYXMtaW5wdXQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xufVxuLnBvaW50cy1uYXZpZ2F0aW9uIC5wb2ludC5hY3RpdmUge1xuICBib3JkZXI6IDJweCBzb2xpZCAjNjY2O1xufVxuLnBvaW50cy1uYXZpZ2F0aW9uIC5wb2ludCArIC5wb2ludCB7XG4gIG1hcmdpbi1sZWZ0OiA1cHg7XG59XG4vKioqXG4gKiBUb29sdGlwOlxuICovXG4vKipcbiAqIFRvb2x0aXAgQ29udGVudDpcbiAqIGAudG9vbHRpcC1jb250YWluZXJgIENvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAgY29udGVudFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LnRvb2x0aXAtY29udGFpbmVyIEknbSBhIHRvb2x0aXBcbiAqL1xuLnRvb2x0aXAtY29udGFpbmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcGFkZGluZzogNXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI0JCQkJCQjtcbn1cbi5oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBwYWRkaW5nOiAzMHB4IDA7XG59XG4uaGVhZGVyIC5sb2dvIHtcbiAgd2lkdGg6IDIwNXB4O1xufVxuLmhlYWRlciAudGl0bGUge1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4jbGVybmZyYWdlbiB7XG4gIG1pbi1oZWlnaHQ6IDYwMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBwYWRkaW5nOiAxOHB4O1xufVxuLmNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gIHBhZGRpbmc6IDIwcHg7XG59XG5oMSB7XG4gIGZvbnQtc2l6ZTogMi41ZW07XG59XG4ubmV4dC1wcmV2LW5hdmlnYXRpb24ge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5zbGlkZS1jb250YWluZXIge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuLnNsaWRlLWNvbnRhaW5lciAudGV4dCB7XG4gIG1hcmdpbjogMjBweCAwO1xufVxuLnByZXYtYnV0dG9uIHtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuLnN1Ym1pdCAucm93IHtcbiAgcGFkZGluZzogNXB4O1xufVxuLnN1Ym1pdCAubGFiZWwge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtaW4td2lkdGg6IDExNXB4O1xuICBjb2xvcjogIzU1NTtcbiAgZm9udC1zaXplOiAxZW07XG59XG4uc3VibWl0IC5pbnB1dCB7XG4gIHBhZGRpbmc6IDZweCAxMHB4O1xufVxuLnRvb2x0aXBfYXJlYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcbn1cbi50b29sdGlwX2FyZWEgLnRvb2x0aXAtY29udGFpbmVyIHtcbiAgYm94LXNoYWRvdzogMXB4IDFweCAzcHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgbWluLXdpZHRoOiAyMDBweDtcbiAgbWF4LXdpZHRoOiA0MDBweDtcbn1cbi5yb3cge1xuICBkaXNwbGF5OiB0YWJsZTtcbn1cbi5yb3cgPiAqIHtcbiAgZGlzcGxheTogdGFibGUtY2VsbDtcbn1cbi5jb250YWluZXIuZnVsbCB7XG4gIHBhZGRpbmc6IDA7XG59XG4uaGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbmh0bWwsXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmO1xuICBtYXJnaW46IDBweDtcbiAgcGFkZGluZzogMHB4O1xuICBmb250LXNpemU6IDFlbTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuYm9keSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL2JnLmpwZycpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDEyMCU7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciAxNjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzQwNDA0MDtcbn1cbiIsIi8qKipcbiAqIFJlcG9uc2l2ZTpcbiAqL1xuXG4vKipcbiAqIENvbnRhaW5lcjpcbiAqIGAuY29udGFpbmVyYCAtIEEgbWFpbiB3ZWJzaXRlIGNvbnRhaW5lciB0aGF0IGNlbnRlcnMgdGhlIGNvbnRhaW5lciBhbmQgaGFzIHRoZSBjb3JyZXNwb25pbmcgcmVzcG9uc2l2ZSBqdW1wc1xuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5jb250YWluZXIoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQTtoZWlnaHQ6NTBweDsnKSBcbiAqL1xuLmNvbnRhaW5lciB7XG5cdHBhZGRpbmctcmlnaHQ6IDE1cHg7XG5cdHBhZGRpbmctbGVmdDogMTVweDtcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0XG5cdEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCApIHtcblx0XHR3aWR0aDogNzUwcHg7XG5cdH1cblx0QG1lZGlhIChtaW4td2lkdGg6IDk5MnB4ICkge1xuXHRcdHdpZHRoOiA5NzBweDtcblx0fVxuXHRAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4ICkge1xuXHRcdHdpZHRoOiAxMTcwcHg7XG5cdH1cbn1cblxuLyoqXG4gKiBDb2x1bW5zOlxuICogYC5jb2x1bW5zYCAtIEEgYmFzZSBzdHlsaW5nIGZvciBmbG9hdGluZyBjb2x1bW5zXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmNvbHVtbnNcbiAqL1xuLmNvbHVtbnMge1xuXHRcblx0Ly9AbWVkaWEgKG1pbi13aWR0aDogNzY4cHggKSB7XG5cdFx0bWFyZ2luLWxlZnQ6IC0xNXB4O1xuXHRcdG1hcmdpbi1yaWdodDogLTE1cHg7XG5cdC8vfVxuXHRcblx0JjpiZWZvcmUge1xuXHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdGNvbnRlbnQ6ICcgJztcblx0fVxuXHRcblx0JjphZnRlciB7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0Y29udGVudDogJyAnO1xuXHRcdGNsZWFyOiBib3RoO1xuXHR9XG5cdFxuXHQmID4gKiB7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRwYWRkaW5nLWxlZnQ6IDE1cHg7XG5cdFx0cGFkZGluZy1yaWdodDogMTVweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4ICkge1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIDIgY29sdW1uIGdyaWQ6XG5cdCAqIGAuY29sdW1ucy0yYCAtIERlZmluZXMgYSBzdHlsZSBmb3IgYSB0d28gY29sdW1uIGxheW91dCBjb250YWluZXIuIFRoZXJlIHNob3VsZCBvbmx5IGJlIHR3byBjb250YWluZXJzIGluc2lkZSB0aGUgJy5jb2x1bW5zLTInIHNlbGVjdG9yLlxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5jb2x1bW5zLmNvbHVtbnMtMihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojQUFBJylcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojODg4O2hlaWdodDo1MHB4JykgTGVmdFxuXHQgKiBcdFx0ZGl2KHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7aGVpZ2h0OjUwcHgnKSBSaWdodFxuXHQgKiBcdFxuXHQgKi9cblx0Ji5jb2x1bW5zLTIge1xuXHRcdFxuXHRcdEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCApIHtcblx0XHRcdCYgPiAqIHtcblx0XHRcdFx0d2lkdGg6IDEwMCUgLyAyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiAyIGNvbHVtbiBncmlkIHN3YXA6XG5cdCAqIGAuY29sdW1ucy0yLnN3YXBgIC0gQSBtb2RpZmllciBmb3IgdGhlIGNvbHVtbnMgc2VsZWN0b3IgdGhhdCBzd2FwcyB0aGUgJzpmaXJzdC1jaGlsZCcgYW5kICc6bGFzdC1jaGlsZCcgY29sdW1ucyBpbiBzaWRlIGJ5IHNpZGUgbW9kZS4gXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmNvbHVtbnMuY29sdW1ucy0yLnN3YXAoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQScpXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6Izg4ODtoZWlnaHQ6NTBweCcpIExlZnRcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDo1MHB4JykgUmlnaHRcblx0ICogXHRcblx0ICovXG5cdCYuY29sdW1ucy0yLnN3YXAge1xuXHRcdFxuXHRcdEBtZWRpYSAoIG1pbi13aWR0aDogNzY4cHggKSB7XG5cdFx0XHQmID4gOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQmID4gOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRyaWdodDogNTAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIDMgY29sdW1uIGdyaWQ6XG5cdCAqIGAuY29sdW1ucy0zYCAtIEEgbW9kaWZpZXIgZm9yIHRoZSBjb2x1bW5zIHNlbGVjdG9yIHRvIG1ha2UgY2hpbGRyZW4gYXMgYSB0aHJlZSBjb2x1bW4gZ3JpZC5cblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuY29sdW1ucy5jb2x1bW5zLTMoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6I0FBQScpXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6Izg4ODtoZWlnaHQ6NTBweCcpIE9uZVxuXHQgKiBcdFx0ZGl2KHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiM2NjY7aGVpZ2h0OjUwcHgnKSBUd29cblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNDQ0O2hlaWdodDo1MHB4JykgVGhyZWVcblx0ICovXG5cdCAmLmNvbHVtbnMtMyB7XG5cdCBcdEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCApIHtcblx0XHRcdCYgPiAqIHtcblx0XHRcdFx0d2lkdGg6IDEwMCUgLyAzO1xuXHRcdFx0fVxuXHRcdH1cblx0IH1cblx0IFxuXHQgLyoqXG5cdCAqIEJsb2NrIGNvbHVtbnM6XG5cdCAqIGAuY29sdW1ucy5ib3hgIC0gQSBtb2RpZmllciB0aGF0IHJlbW92ZXMgdGhlIG1hcmdpbi4gVGhpcyB3YXkgdGhlIHRleHQgaXMgbm90IGVkZ2UgYWxpZ25lZCBidXQgdGhlIGJveCBpcy5cblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuY29sdW1ucy5ib3guY29sdW1ucy0yXG5cdCAqIFx0XHRkaXYoc3R5bGU9J2JhY2tncm91bmQtY29sb3I6Izg4ODtoZWlnaHQ6NTBweCcpIExlZnRcblx0ICogXHRcdGRpdihzdHlsZT0nYmFja2dyb3VuZC1jb2xvcjojNjY2O2hlaWdodDo1MHB4JykgUmlnaHRcblx0ICovXG5cdCAmLmJveCB7XG5cdCBcdG1hcmdpbjogMDtcblx0IH1cbn1cblxuLyoqXG4gKiBSZXNwb25zaXZlIGltYWdlIGNvbnRhaW5lcjpcbiAqIGAucmVzcG9uc2l2ZS1pbWdgIC0gQSBzdHlsZSB0aGF0IG1ha2VzIHRoZSBpbWFnZSBzY2FsaW5nIHRvIGl0cyBtYXggd2lkdGguXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aW1nLnJlc3BvbnNpdmUtaW1nKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbiAqL1xuLnJlc3BvbnNpdmUtaW1nIHtcblx0bWF4LXdpZHRoOiAxMDAlO1xuXHRoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogUmVzcG9uc2l2ZSA0OjMvMTY6OSBtZWRpYSBjb250YWluZXI6XG4gKiBgLnJlc3BvbnNpdmUtbWVkaWEgLm1lZGlhLTQtMywgLnJlc3BvbnNpdmUtbWVkaWEgLm1lZGlhLTE2LTlgIC0gVGhpcyBtYWtlcyBhIGRpdiBhIGNvbnRhaW5lciBmb3IgYW55IG1lZGlhIGVsZW1lbnQgKGlmcmFtZSwgdmlkZW8sIC4uLiApIHRoYXQgcmVzcG9uc2l2ZSBzY2FsZXMgd2l0aCBhIGZpeCByYXRpby5cbiAqIFRoZSBtZWRpYSBlbGVtZW50IG5lZWRzIHRoZSBjbGFzcyBgLm1lZGlhYC4gVGhlIGAucmVzcG9uc2l2ZS1tZWRpYWAgY29udGFpbmVyIGNhbiBoYXZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXM6IGAubWVkaWEtNC0zYCwgYC5tZWRpYS0xNi05YCB0byBkZWZpbmUgdGhlIGZpeCByYXRpby5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYucmVzcG9uc2l2ZS1tZWRpYS5tZWRpYS00LTNcbiAqIFx0XHRpZnJhbWUubWVkaWEoc3JjPScvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC9IaFphSGY4UlA2ZycsZnJhbWVib3JkZXI9JzAnKVxuICovXG4ucmVzcG9uc2l2ZS1tZWRpYSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmctYm90dG9tOiA1MCU7XG5cdFxuXHQmID4gLm1lZGlhIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAwO1xuXHRcdGxlZnQ6IDA7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiAxMDAlO1xuXHR9XG5cdFxuXHQmLm1lZGlhLTQtMyB7XG5cdFx0cGFkZGluZy1ib3R0b206IDc1JTtcblx0fVxuXHRcblx0Ji5tZWRpYS0xNi05IHtcblx0XHRwYWRkaW5nLWJvdHRvbTogNTYuMjYlXG5cdH1cbn1cblxuIiwiLyoqKlxuICogSW1hZ2UtQXJlYXMgKGZvciBob3RzcG90cyAvIHRvb2x0aXBzIC8gLi4uICk6XG4gKi9cbiBcbi8qKlxuICogSW1hZ2UtQXJlYTpcbiAqIGAuaW1nLWFyZWFgIEltYWdlIGFyZWEgZGVmaW5lcyBhbiBhcmVhIG92ZXIgdGhlIGltYWdlIGluIHdoaWNoIGltYWdlIGFyZWEgZWxlbWVudHMgY2FuIGJlIHBsYWNlZFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmltZy1hcmVhXG4gKiBcdFx0aW1nLnJlc3BvbnNpdmUtaW1nKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbiAqIFx0XHRkaXYuYWJzKCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMCU7IGxlZnQ6IDEwJTsgd2lkdGg6IDMwJTsgaGVpZ2h0OiAzMCU7IGJhY2tncm91bmQtY29sb3I6ICNGRkZcIikgRXhhbXBsZSBBcmVhXG4gKi9cbiBcbi5pbWctYXJlYXtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdG1heC13aWR0aDogMTAwJTtcbn0iLCIvKioqXG4gKiBQb3NpdGlvbjpcbiAqL1xuIFxuLyoqXG4gKiBBYnM6XG4gKiBgLmFic2AgU2V0IHRoZSBlbGVtZW50IGFic29sdXRlIHRvIGl0cyBwYXJlbnRcbiAqXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5hYnMoIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjojQUFBXCIpIEFic29sdXRlIHBvc2l0aW9uXG4gKi9cbi5hYnMge1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG59XG5cbi8qKlxuICogUmVsOlxuICogYC5yZWxgIFNldCB0aGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gaXRzIHBhcmVudFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LnJlbCggc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiNBQUFcIikgUmVsYXRpdmUgcG9zaXRpb25cbiAqL1xuLnJlbCB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbn0iLCIvKioqXG4gKiBTdHJldGNoOlxuICovXG4gXG4vKipcbiAqIFN0cmV0Y2g6XG4gKiBgLnN0cmV0Y2hgIERlZmluZSBhbiBlbGVtZW50IHdoaWNoIHN0cmV0Y2hlcyB0byB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50XG4gKlxuICogXHRAZXhhbXBsZVxuICogXHRkaXYucmVsKCBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6I0FBQTsgaGVpZ2h0OiAyNXB4XCIgKVxuICogXHRcdGRpdi5zdHJldGNoIEknbSBzdHJldGNoZWQgdG8gdGhlIHNpemUgb2YgbXkgcGFyZW50XG4gKi9cbiBcbi5zdHJldGNoe1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDtcblx0bGVmdDogMDtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMTAwJTtcbn0iLCIvKioqXG4gKiBCdXR0b25zOlxuICovXG5cbi8qKlxuICogUmVndWxhciBCdXR0b246XG4gKiBgLmJ0bmAgLSBBIHJlZ3VsYXIgYnV0dG9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0YnV0dG9uLmJ0biBCdXR0b25cbiAqL1xuLmJ0biB7XG5cblx0LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7XG5cdC1tb3otYXBwZWFyYW5jZTpub25lO1xuXHRhcHBlYXJhbmNlOm5vbmU7XG5cblx0YmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnktYWN0aW9uLWNvbG9yO1xuXHRwYWRkaW5nOiA4cHggMTJweDtcblx0Y29sb3I6I2ZmZjtcblx0Ym9yZGVyOiBub25lO1xuXHRmb250LXNpemU6IDFlbTtcblx0Zm9udC13ZWlnaHQ6IDIwMDtcblxuXHRjdXJzb3I6cG9pbnRlcjtcblx0Ym9yZGVyLXJhZGl1czpAYm9yZGVyLXJhZGl1cztcblx0b3V0bGluZTpub25lO1xuXG5cdCY6aG92ZXIge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgMjAlICk7XG5cdH1cblx0XG5cdCY6Zm9jdXMge1xuXHRcdGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBkYXJrZW4oIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgMjAlICk7XG5cdFx0cGFkZGluZy1ib3R0b206IDZweDtcblx0fVxuXHRcbi8qKlxuICogTmV4dCBidXR0b246XG4gKiBgLm5leHRgIC0gQSBtb2RpZmllciBmb3IgdGhlIHJlZ3VsYXIgYnV0dG9uIHRvIGJlIHNob3duIGFzIGEgbmV4dCBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLm5leHQgTmV4dFxuICovXG5cdCYubmV4dCB7XG5cdFx0XG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnID4nO1xuXHRcdH1cblx0fVxuXG4vKipcbiAqIFByZXZpb3VzIGJ1dHRvbjpcbiAqIGAucHJldmAgLSBUaGUgcHJldmlvdXMgYnV0dG9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0YnV0dG9uLmJ0bi5wcmV2IFByZXZpb3VzXG4gKi9cdFxuXHQmLnByZXYge1xuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICc8ICc7XG5cdFx0fVxuXHR9XG5cbi8qKlxuICogU29sdXRpb24gYnV0dG9uOlxuICogYC5zb2x1dGlvbmAgLSBBIGJ1dHRvbiB0aGF0IHdpbGwgcmV2ZWFsIHRoZSBzb2x1dGlvbiB3aGVuIGNsaWNrZWRcbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLnNvbHV0aW9uIFNvbHV0aW9uXG4gKi9cblx0Ji5zb2x1dGlvbiB7XG5cdFx0JjphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnID8nO1xuXHRcdH1cblx0fVxuXG4vKipcbiAqIERpc2FibGVkIGJ1dHRvbjpcbiAqIGAuZGlzYWJsZWRgIC0gQSBzdHlsZSBmb3IgYSBkaXNhYmxlZCBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLmRpc2FibGVkIERpc2FibGVkXG4gKi9cblx0Ji5kaXNhYmxlZCB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggZGVzYXR1cmF0ZSggQHByaW1hcnktYWN0aW9uLWNvbG9yLCA4MCUgKSwgMzAlICk7XG5cdFx0Y3Vyc29yOiBkZWZhdWx0O1xuXHRcdGNvbG9yOiBkZXNhdHVyYXRlKCBAcHJpbWFyeS1hY3Rpb24tY29sb3IsIDgwJSApO1xuXHR9XG5cbi8qKlxuICogU2Vjb25kYXJ5IGJ1dHRvbjpcbiAqIGAuc2Vjb25kYCAtIEEgc3R5bGUgZm9yIGEgc2Vjb25kYXJ5IGFjdGlvbiBidXR0b25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRidXR0b24uYnRuLnNlY29uZCBTZWNvbmRhcnkgYWN0aW9uXG4gKi9cblx0Ji5zZWNvbmQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGRlc2F0dXJhdGUoIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgMjAlICk7XG5cdFx0Y29sb3I6IGxpZ2h0ZW4oIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgNjAlICk7XG5cdFx0Zm9udC1zaXplOiAwLjhlbTtcblx0XHRcblx0XHQmOmhvdmVyIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgNSUgKTtcblx0XHR9XG5cdH1cbn0iLCIvKioqXG4gKiBGb3JtczpcbiAqL1xuXG4vKipcbiAqIElucHV0OlxuICogYC5pbnB1dGAgLSBBIHN0eWxlIGZvciBhbiBpbnB1dGZpZWxkIFxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGlucHV0LmlucHV0XG4gKi9cbi5pbnB1dHtcblx0XG5cdG91dGxpbmU6bm9uZTtcblx0bGluZS1oZWlnaHQ6IDEuNDY3ZW07XG5cdHBhZGRpbmc6IDhweCAxMnB4O1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG5cdGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzO1xuXHQtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7XG5cdGJveC1zaGFkb3c6IG5vbmU7XG5cdGZvbnQtc2l6ZTogMWVtO1xuXHRib3JkZXI6IDJweCBzb2xpZCBsaWdodGVuKCBkZXNhdHVyYXRlKCBAcHJpbWFyeS1hY3Rpb24tY29sb3IsIDgwJSApLCA0MCUgKTtcblx0XG5cdCY6Zm9jdXMge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIGRlc2F0dXJhdGUoIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgODAlICk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDb3JyZWN0IGdhcCBpbnB1dDpcblx0ICogYC5jb3JyZWN0YCAtIEZlZWRiYWNrIGlmIHRoZSBpbnB1dCBpcyBjb3JyZWN0IGFuc3dlcmVkXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0aW5wdXQuaW5wdXQuY29ycmVjdFxuXHQgKi9cblx0Ji5jb3JyZWN0IHtcblx0XHRib3JkZXI6IDJweCBzb2xpZCBAY29ycmVjdC1hbnN3ZXItY29sb3I7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggQGNvcnJlY3QtYW5zd2VyLWNvbG9yLCA2MCUgKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFdyb25nIGdhcCBpbnB1dDpcblx0ICogYC53cm9uZ2AgLSBGZWVkYmFjayBpZiB0aGUgaW5wdXQgaXMgd3JvbmcgYW5zd2VyZWRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRpbnB1dC5pbnB1dC53cm9uZ1xuXHQgKi9cblx0Ji53cm9uZyB7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgQHdyb25nLWFuc3dlci1jb2xvcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCBAd3JvbmctYW5zd2VyLWNvbG9yLCA2MCUgKTtcblx0fVxufVxuXG4vKipcbiAqIERyb3Bkb3duOlxuICogYHNlbGVjdC5kcm9wZG93bmAgLSBTdHlsaW5nIG9mIGEgZHJvcGRvd24uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0c2VsZWN0LmRyb3Bkb3duXG4gKiBcdFx0b3B0aW9uKHZhbHVlPVwib3B0MVwiKSBPcHRpb24gMVxuICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDJcIikgT3B0aW9uIDJcbiAqL1xuc2VsZWN0LmRyb3Bkb3duIHtcblx0XG5cdGZvbnQtc2l6ZTogMWVtO1xuXHRwYWRkaW5nOiA1cHg7XG5cdGJvcmRlcjogMnB4IHNvbGlkIGxpZ2h0ZW4oIGRlc2F0dXJhdGUoIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgODAlICksIDQwJSApO1xuXHRoZWlnaHQ6IDIuNmVtO1xuXHRib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cztcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0bWFyZ2luOiAycHg7XG5cdFxuXHQvKipcblx0ICogQ29ycmVjdCBkcm9wZG93biBpbnB1dDpcblx0ICogYC5jb3JyZWN0YCAtIEZlZWRiYWNrIGlmIHRoZSBpbnB1dCBpcyBjb3JyZWN0IGFuc3dlcmVkXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0c2VsZWN0LmRyb3Bkb3duLmNvcnJlY3Rcblx0ICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDFcIikgT3B0aW9uIDFcblx0ICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDJcIikgT3B0aW9uIDJcblx0ICovXG5cdCYuY29ycmVjdCB7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgQGNvcnJlY3QtYW5zd2VyLWNvbG9yO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIEBjb3JyZWN0LWFuc3dlci1jb2xvciwgNjAlICk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBXcm9uZyBkcm9wZG93biBpbnB1dDpcblx0ICogYC53cm9uZ2AgLSBGZWVkYmFjayBpZiB0aGUgaW5wdXQgaXMgd3JvbmcgYW5zd2VyZWRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRzZWxlY3QuZHJvcGRvd24ud3Jvbmdcblx0ICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDFcIikgT3B0aW9uIDFcblx0ICogXHRcdG9wdGlvbih2YWx1ZT1cIm9wdDJcIikgT3B0aW9uIDJcblx0ICovXG5cdCYud3Jvbmcge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIEB3cm9uZy1hbnN3ZXItY29sb3I7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggQHdyb25nLWFuc3dlci1jb2xvciwgNjAlICk7XG5cdH1cblx0XG59XG5cbi8qKlxuICogRnJlZXRleHQgdGV4dGFyZWE6XG4gKiBgdGV4dGFyZWFgIC0gTWluaW11bSBzaXplZCB0ZXh0YXJlYSBmb3IgZnJlZSB0ZXh0IGlucHV0XG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0dGV4dGFyZWEuaW5wdXRcbiAqL1xudGV4dGFyZWEge1xuXHRtaW4taGVpZ2h0OiAxMjBweDtcblx0d2lkdGg6IDEwMCU7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cblxuLyoqXG4gKiBTaW5nbGUtICYgTXVsdGlwbGVDaG9pY2UgYW5zd2VyOlxuICogYC5hbnN3ZXItdmlld2AgLSBUaGlzIHN0eWxlIGlzIGZvciBhbiBhbnN3ZXIgb24gYSBtdWx0aXBsZS0gb3Igc2luZ2xlY2hvaWNlIHF1ZXN0aW9uLiBJdCBwcm9wZXJseSBhbGlnbnMgdGhlIHRleHQgYW5kIHRoZSBjaGVja2JveC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuYW5zd2VyLXZpZXdcbiAqIFx0XHRsYWJlbFxuICogXHRcdFx0aW5wdXQodHlwZT1cInJhZGlvXCIpXG4gKiBcdFx0XHRwIFBybyBUeXBlU2NyaXB0IHNob3dzIHlvdSBob3cgdG8gd3JpdGUgbGFyZ2Utc2NhbGUgSmF2YVNjcmlwdCBwcm9ncmFtcyB0aGF0IGNhbiBydW4gaW4gYW55IHdlYiBicm93c2VyIG9yIG9uIGFueSB3ZWIgc2VydmVyIHVzaW5nIE1pY3Jvc29mdOKAmXMgVHlwZVNjcmlwdCBsYW5ndWFnZS5cbiAqIFx0ZGl2LmFuc3dlci12aWV3XG4gKiBcdFx0bGFiZWxcbiAqIFx0XHRcdGlucHV0KHR5cGU9XCJjaGVja2JveFwiKVxuICogXHRcdFx0cCBQcm8gVHlwZVNjcmlwdCBzaG93cyB5b3UgaG93IHRvIHdyaXRlIGxhcmdlLXNjYWxlIEphdmFTY3JpcHQgcHJvZ3JhbXMgdGhhdCBjYW4gcnVuIGluIGFueSB3ZWIgYnJvd3NlciBvciBvbiBhbnkgd2ViIHNlcnZlciB1c2luZyBNaWNyb3NvZnTigJlzIFR5cGVTY3JpcHQgbGFuZ3VhZ2UuXG4gKi9cbi5hbnN3ZXItdmlldyB7XG5cdFxuXHRtaW4taGVpZ2h0OiAyMHB4O1xuXHRtYXJnaW46IDVweCAwO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmc6IDVweDtcblxuXHRsYWJlbCB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHBhZGRpbmctbGVmdDogMjBweDtcblx0fVxuXHRcblx0aW5wdXQge1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRtYXJnaW4tbGVmdDogLTIwcHg7XG5cdFx0bWFyZ2luLXRvcDogNHB4O1xuXHR9XG5cdFxuXHRwIHtcblx0XHRtYXJnaW46IDA7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDb3JyZWN0IGFuc3dlcmVkIHZpZXc6XG5cdCAqIGAuYW5zd2VyLXZpZXcuY29ycmVjdGAgLSBGZWVkYmFjayBpZiB0aGUgYW5zd2VyIGlzIGNvcnJlY3Rcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuYW5zd2VyLXZpZXcuY29ycmVjdFxuXHQgKiBcdFx0bGFiZWxcblx0ICogXHRcdFx0aW5wdXQodHlwZT1cInJhZGlvXCIpXG5cdCAqIFx0XHRcdHAgQ29ycmVjdFxuXHQgKi9cblx0Ji5jb3JyZWN0IHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCBAY29ycmVjdC1hbnN3ZXItY29sb3IsIDYwJSApO1xuXHRcdGNvbG9yOiBAY29ycmVjdC1hbnN3ZXItY29sb3I7XG5cdFx0XG5cdFx0cDphZnRlciB7XG5cdFx0XHRjb250ZW50OiAnIFxcMDI3MTMnO1xuXHRcdH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFdyb25nIGFuc3dlcmVkIHZpZXc6XG5cdCAqIGAuYW5zd2VyLXZpZXcud3JvbmdgIC0gRmVlZGJhY2sgaWYgdGhlIGFuc3dlciBpcyB3cm9uZ1xuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5hbnN3ZXItdmlldy53cm9uZ1xuXHQgKiBcdFx0bGFiZWxcblx0ICogXHRcdFx0aW5wdXQodHlwZT1cImNoZWNrYm94XCIpXG5cdCAqIFx0XHRcdHAgV3Jvbmdcblx0ICovXG5cdCYud3Jvbmcge1xuXHRcdGNvbG9yOiBAd3JvbmctYW5zd2VyLWNvbG9yO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIEB3cm9uZy1hbnN3ZXItY29sb3IsIDYwJSApO1xuXHRcdFxuXHRcdHA6YWZ0ZXIge1xuXHRcdFx0Y29udGVudDogJyBcXDAyNzE3Jztcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBEcmFnIG5vZGU6XG4gKiBgLmRyYWctbm9kZWAgLSBBIG5vZGUgc3R5bGUgdGhhdCBzaG93cyBpdCBjYW4gYmUgZHJhZ2dlZC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuZHJhZy1ub2RlIE15IGRyYWdnYWJsZSBlbGVtZW50XG4gKi9cbi5kcmFnLW5vZGUge1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGN1cnNvcjogbW92ZTtcblx0Ym9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXM7XG5cdHBhZGRpbmc6IDEwcHg7XG5cdGJvcmRlcjogMnB4IHNvbGlkIGxpZ2h0ZW4oIGRlc2F0dXJhdGUoIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgODAlICksIDQwJSApO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCBkZXNhdHVyYXRlKCBAcHJpbWFyeS1hY3Rpb24tY29sb3IsIDgwJSApLCA2NSUgKTtcblx0XG5cdCY6aG92ZXIge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIGRlc2F0dXJhdGUoIEBwcmltYXJ5LWFjdGlvbi1jb2xvciwgODAlICk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDb3JyZWN0IHBsYWNlZCBkcmFnIG5vZGU6XG5cdCAqIGAuZHJhZy1ub2RlLmNvcnJlY3RgIC0gRmVlZGJhY2sgaWYgdGhlIGRyYWcgaXMgY29ycmVjdCBwbGFjZWRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuZHJhZy1ub2RlLmNvcnJlY3QgQ29ycmVjdCBlbGVtZW50XG5cdCAqL1xuXHQmLmNvcnJlY3Qge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIEBjb3JyZWN0LWFuc3dlci1jb2xvcjtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCBAY29ycmVjdC1hbnN3ZXItY29sb3IsIDYwJSApO1xuXHR9XG5cdFxuXHQvKipcblx0ICogV3JvbmcgcGxhY2VkIGRyYWcgbm9kZTpcblx0ICogYC5kcmFnLW5vZGUud3JvbmdgIC0gU3R5bGUgd3JvbmcgaWYgd3Jvbmdcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuZHJhZy1ub2RlLndyb25nIFdyb25nIGVsZW1lbnRcblx0ICovXG5cdCYud3Jvbmcge1xuXHRcdGJvcmRlcjogMnB4IHNvbGlkIEB3cm9uZy1hbnN3ZXItY29sb3I7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggQHdyb25nLWFuc3dlci1jb2xvciwgNjAlICk7XG5cdH1cbn1cblxuLyoqXG4gKiBEcm9wIG5vZGU6XG4gKiBgLmRyb3Atbm9kZWAgLSBBIHN0eWxlIGZvciBhIG5vZGUgd2hlcmUgZHJhZyBlbGVtZW50cyBjYW4gYmUgZHJvcHBlZC5cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuZHJvcC1ub2RlXG4gKiBcdFx0ZGl2LnRpdGxlIERyb3Agbm9kZVxuICogXHRcdGRpdi5kcmFnc1xuICogXHRcdFx0ZGl2LmRyYWctbm9kZSBEcmFnIGVsZW1lbnRcbiAqL1xuLmRyb3Atbm9kZSB7XG5cdGJvcmRlci1yYWRpdXM6IEBib3JkZXItcmFkaXVzO1xuXHRib3JkZXI6IDFweCBzb2xpZCBsaWdodGVuKCBkZXNhdHVyYXRlKCBAcHJpbWFyeS1hY3Rpb24tY29sb3IsIDgwJSApLCA0MCUgKTtcblx0YmFja2dyb3VuZC1jb2xvcjogIzc3Nztcblx0bWFyZ2luOiAxMHB4IDA7XG5cdC50aXRsZSB7XG5cdFx0cGFkZGluZzogNXB4O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdH1cblx0XG5cdC5kcmFnLW5vZGUge1xuXHRcdG1hcmdpbjogNXB4O1xuXHR9XG5cdFxuXHQuZHJhZ3Mge1xuXHRcdG1pbi1oZWlnaHQ6IDUycHg7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdH1cbn1cblxuLyoqXG4gKiBEcmFnIGNvbnRhaW5lcjpcbiAqIGAuZHJhZy1jb250YWluZXJgIC0gQSBjb250YWluZXIgdGhhdCBzdG9yZXMgdGhlIGRyYWcgbm9kZXMgd2hlbiB0aGV5IGFyZSBub3Qgb24gYSBkcm9wIG5vZGUuXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmRyYWctY29udGFpbmVyXG4gKiBcdFx0ZGl2LmRyYWctbm9kZSBEcmFnIGVsZW1lbnRcbiAqL1xuLmRyYWctY29udGFpbmVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggZGVzYXR1cmF0ZSggQHByaW1hcnktYWN0aW9uLWNvbG9yLCA4MCUgKSwgNTAlICk7XG5cdFxuXHQuZHJhZy1ub2RlIHtcblx0XHRtYXJnaW46IDVweDtcblx0fVxuXHRcblx0bWFyZ2luOiAxMHB4IDA7XG59XG5cbi8qKlxuICogSG90c3BvdCBwb2ludDpcbiAqIGAuaG90c3BvdC1wb2ludGAgLSBBIHBvaW50IHRoYXQgaXMgc2hvd24gb24gdGhlIGhvdHNwb3QgaW1hZ2Ugd2hlbiBpdCBpcyBjbGlja2VkLlxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5ob3RzcG90LXBvaW50XG4gKi9cbi5ob3RzcG90LXBvaW50IHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUIwQUFBQXZDQVlBQUFBZkljR3BBQUFFYVVsRVFWUllDYldZVDBnalp4VEFaeWJSamNacVhhMVpqUzNpbWcwdTFCWnFXU2xlUE5pRGg3SVVQSGd0MkFZOGlBZ2VGTDBMdlhyYmhYVUx5KzYycGJTMnRKVFNQMWpFWXRXS2loVzFXYU1HSytLS3RkSDRaOTYrTjlubmZHTW15V1FtZnZEeXZYbi9mcjR2K1dibVU1WmVqdXJxYXYrMXdzSjNGZGw5ZzB3cW5HM0hZN0dwemMzTkxZN0oxU3hUb1VBZ2NFZDF1Wm9seWExZDY4WFBRRGsvLzMxbFplVVAzZVpjYzFHSExvK25MUmxJeFJVWkZPa05yOGNUT1RnNCtNODVMbEZCb1NXOUREdzlqcjJpQTl4eUlrYTNPTlVVL2c3RlFodnI0VThRN0dXYldRejc3TXlLV1JJQStCQWNFc0ZtY1hadEN2MUt6WklSZk9ObHg0V3BZc3p5ck5nVTJoYVNkQVptd1FpdVJQREgvMGFqSzJaK3V6YUY5aUZ0Q3pOd01CaVVFT3cvUER4OGlJQlN1NUNVZWJSMWJ0NjZkVGNRdkIzQ0lPb2NvdEVvNEI3V2RMekdGWkZLVUs1c2FDRHNFbkFsb0s2dWpzRjBreWkrS3VvRmxNQ1JTQVJxYTJzWlBJRlFZUi9uN2s4d1FBbTh2cjRPTlRVMURNYmZnRlNVTzF5aVVoS1V3T0Z3R1BDN1Z6R0UvTCtoWE54QUVtbk9QazJoQkY1Ylc0T3FxaW9HLzRLWVFtY29QVHNsbE1ENDFJSEt5a29HLzRScEJYcXFmUzB0bE1ETHk4dmc4L2tZL0NPaVBQWnhpY3lNVUFJdkxTMUJSVVVGZzcvSDFHdE93SmFnQkY1Y1hJVHk4bklHZjR2UWZMdGd5MUFDejgvUFExbFpHWU8vUVdpZUhYQldVQUxQemMxQmFXa3BnNyt5QTg0YVN1RFoyVmtvS1NsaDhCY0lkbWZUc1Mwb2dhZW5wNkc0dUpqQlR4RHFzZ3EyRFNYdzFOUVVGQlVWTWZpUlZiQWpLSUVuSnlkRjhHY0lObjAxRWxmQk1aVEFFeE1UNFBWNnVlTUhtY0E1Z1JKNGZId2NDZ29LR0h3ZndYSld2eTV4S1VSOVlXRkJHaGdZRUUwRzNlLzN5NnVycTJUN0NPWGM0QlF1c3VwVVZWV29yNi9YY3JDR2xWbEE2V3BLYUR3ZWgvYjJkdTJoVHN2SFkzUjBsR0hQc2N4ZGxBL1NpRTRTTkZQbzhmRXh0TFcxYWI1UUtNUThiVDQ5UFJYZkxENFVhbGxXazZDeFdBeGFXMXU1RzNDNzNlckd4b1lCUERJeXd2NC9MWk9FUUFNVTMzdWhwYVdGQzlLSjRHY1U2T3JxTWtDUGpvN0VSOTM3UWoxTDZnVVVqNGpRM056TVFEb2dCMUZ1bzZoNWVYbnExdGFXQVR3OFBNeXh2MkpNVmtOTDNOL2ZoNmFtSmk0U3dRcDFRcFducUVOM2Q3Y0JTbitrY05OL1Q0alBxR3FneHNaR0JvWXhvK1pTMXB0NHJlYm41NnZiMjlzRzhPRGdJT2ZSUTkzeTRDU2E2ZkQwZW9yTUw5RU92YjI5QnVqdTdxNTRGM29yUlc2U21hRi9vNmNxeWFzYjNrWVZQQjZQdXJPell3RDM5UFJ3amNkNmVIcU5FaFpRZk9uRE5PL1grQWw5ZlgwR0tKMkJhRnVoajI1N0FTMHl3OGRmNkg4dFF3eTczMEZGVzA1YVZuRjBkblp5dC9jNE9OMThQWjNUeFBjZDJxQy92MTlrYWkvbHNpeFR0M0dVYXBNOFI2WTdtSzA5Ty9mMjlnemdqbzRPN3BZZTVEa2ZQMkJGR0JvYU1rRHBtS2tvQ25lYjg5TTgzUWkwVjVUTGQ2bUdoZ2J1dGo3bnJXTEJ6d2xNa0ptWkdUZzVPWUd4c1RFQ1VxZEhLRmZ5NzROWHNUQnROZTVNblB2UmZtV0RUdWlmb3Z5RDhqL0tNeFFDWHJ3TnZnQVdRWUFicDByMTdRQUFBQUJKUlU1RXJrSmdnZz09Jyk7XG5cdHdpZHRoOiAyOXB4O1xuXHRoZWlnaHQ6IDQ3cHg7XG5cdG1hcmdpbi1sZWZ0OiAtNXB4O1xuXHRtYXJnaW4tdG9wOiAtNXB4O1xuXHRcblx0LyoqXG5cdCAqIENvcnJlY3QgaG90c3BvdCBwb2ludDpcblx0ICogYC5ob3RzcG90LXBvaW50LmNvcnJlY3RgIC0gVGhlIHN0eWxlIGZvciBhIGNvcnJlY3QgcGxhY2VkIGhvdHNwb3QgcG9pbnRcblx0ICogXG5cdCAqIFx0QGV4YW1wbGVcblx0ICogXHRkaXYuaG90c3BvdC1wb2ludC5jb3JyZWN0XG5cdCAqL1xuXHQmLmNvcnJlY3Qge1xuXHRcdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCMEFBQUF2Q0FZQUFBQWZJY0dwQUFBRm5FbEVRVlJZQ2JXWTJXOWJSUlRHNTh6MUZpY2xUUk0zU1p1R3FvbmpPQzFTUVdvUktqUnRTZ1ZVSUNGRUpSQUNnWVFLTDd4VDNsZ2tscjhCQ1lFUVFxVlFWZXd2WlJWTEVWSlpWSnc0Uyt2R2JaclFPTXJpZUxzemZPZWFHeHZuSnZIR2VabDd6OHljbjc5WnpwMHhpWCt0cTZ0cnU5ZnYzeWZKMWNFdXBYTlQ2V1R5bDhuSnliamRwbDRsY2FCZ01IaTdNb3c3aFhCWjc0WGdPUzFOOC90b05QcHp3VmY3azhFS0RaL3YyR29nQjVla3BlaHU5UGxpOC9QekM3WGo4aEVrRDJrcGtJVGFWQUM0S04rbTRLbjFTZHB6V0J4SUMvbU1WcXJSOWptMXNldXFLYVZUSjBtaW5hUjRWcXZjQ3RpcFhiVSt5YXZVcWJNazJXRkllUUpnLzFwdG5QcVY0NU84TFlUSWFjZkdKTGRKTWs1a1U2bW9ZMzJWVHNuN2tMZUZFOWlINVVTU3Ryc2JtdDdwN3U1dXFaS3hxcHZCbnRuWjJUaHZDNWRMTmtoQkhrRjBQL3QzMzBkaURxbEJaYWxUdXJ4SFdwcWJUaVVTaVRUWDFXSWx5U0FmS2hqZVl3MzN2a2VseUN4cEVUbW5SWHBSQ0t6bzg3TXpVMGZ4SStkcmdUcXUzdUtBbmtZUy9VTWtQRmpISk9YK2xrRG5GMjF0YlVYN3VMaDFlYzhiUWprTWc4TU05aU5IU2JxanViWDljeEVJTkpXSFdOMnFMS2dGYm9MaUl5VGNEVm9EZktCblMrQXorS3ZheDJWREdld0ZPSHdFK2NuSFlIbFhUeWo4Q2R6UVg1bFZCT1hRM2swa0J1NEcyTXRnNDFCUGFPQmp1QnNxd1ZZTVhRRWZ0Y0Z5YUZmZm5yUHcrOG9GVndXMXdmMnMyS08xWVlpalVId0dmbTg1NEtxaEhMemhKaXd1Z0EyQU1jZjNCc01ESDhIdDJRaGNFOVFDTitjWGwrSFdTQ2p5V0c5bzkybjQzZXVCYTRaYTRNMEFzMktYMXNqVkQyQ29UNjBIcmd2VUJsdEREVENHK3NHZXZ2RDc4THU0cnRUcUJ1WEEvaFlTSWV4anc2VzBOSXlIZWtNRDc4RnRmVlNLd1hXRmN1REdMUUFQR1NRTmhhR1d4Nkg0M1ZKdzNhRVd1TFVBaHVKSG9QaHQrRmRZS3cvY3VKN1cxQWJ3WVlNSUJ5SW9mZ3lLMzBKOGkvZS9RVmxBVTRBL2kza3dGRDhCeFcvQ1RZNnJpenRVWXN0eldreis1bnpNNGpnZXZ5UStCRUR4VTFCczFnWHFRNEpJTFdxUkt1TThBY1ZQVnd6VnBoWmpQMml4NDFheVBuV3NoSERvNlJ3UVl1SW5uS2VVbmpOTi9TUnVDWXJybkt3aXFBSXcrcDBXODlldzY3MWE3TnhmT0dLMTNrd2kvcnNXbVNSdDFtUzZ4aU9SRDUyQTdDdDdJU2tjamFQZjVJSGNjV1pjYVQ2MDJZYjBKenJEK1RmY3VsNncvVTVsV1ZBenE4WEkxd0JlNTN1cm1sSktuUk5hMHJXTEJTZ0hiK3Nod1o4NnBNSGJlbnY3NzNFQ3NtOURLQU9IdjlKaVlZYVBvRHF1TTZuQjdITG1PWURWOUJqVUpndGdhWkRvQ1BNTVk1N2RhNnRkRjVyTEFJZ3o3OUlOUzJFc25Vd1BqbytQajhSaW94Y1I5N1NUMnExQkV2eTFnWjZEUGFIUUFmNEJwYll1MUFMT1dnb256RlJ5OE1xVjBURTdnTTZtWG9GWVBUMnFkSGE1b05ad2s5Z2F5cXZGR2NweGJ0ZUZKaE1BQ2hWZFhwdzdlQWxtQTdtRTRqK0UxbWNzdFg4Vm9GelgwVWZZUm9yVkh0dTVNN2lYZmNXMkxoUnpHTWttbHdiajhmaGtjU2Y3MmN6a1h1Ym42WkgvcW5YNW9MWVB5eGxtZU4wbnVTeTJOYUVZdWovbkV6T0hMbCsrakYzcGJKY3VSUytnM1Ztc1Y1cUtsS2p0QjlOU0t4N3U2dG9WTEk3Z0RGWHF3dkxDM09IcDZXbHNrZzJNbEtYMitqQ3V6cWtDMk9NbkVkaUZxelhNMStoN3ZqaUtJelM5dkRoMDllclZ2NHNicnZVOEZvbjhxa3p4cWFWMnVBRGw5cDFoSG1ITUxjbkh0MjNiczhPTzRRaU54V0pZUXVXYnltWmU0dFlZWXAxTEY4QjhHOWpTTFFscjJlM2ZwRjYxSXpwQzdjcHl5NG1Ka2ZQWVBWOXFSVFJWb25iSDN2emM0bytUNC9adHZpNVEvbkZrcGwvazhqclVGdWRrdm1ZMk5QTktsaDRpci9VWFlOMmdvNk9qUCtLbS9vRXlpWWFScDVkbXRlRFBZT0tLRXNrRU1yWlNxWVdGRzliL2pEelRkYlBOc05iMjdkL2kvbnBMYVZEVHpKMGNING04eHY1Vlo5TFN4cFc4cDJDSkd6UHZ0QVJhT2Z1Mkk1OTVrTkxpMFBrNmdHL1lzZjRCNXhBbXpDam5id2NBQUFBQVNVVk9SSzVDWUlJPScpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogV3JvbmcgaG90c3BvdCBwb2ludDpcblx0ICogYC5ob3RzcG90LXBvaW50Lndyb25nYCAtIFRoZSBzdHlsZSBmb3IgYSB3cm9uZyBwbGFjZWQgaG90c3BvdCBwb2ludFxuXHQgKiBcblx0ICogXHRAZXhhbXBsZVxuXHQgKiBcdGRpdi5ob3RzcG90LXBvaW50Lndyb25nXG5cdCAqL1xuXHQmLndyb25nIHtcblx0XHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQjBBQUFBdkNBWUFBQUFmSWNHcEFBQUZ2MGxFUVZSWUNiV1krMjlVUlJUSHo4eTkrK2h1MjIyN1c3cDkwRFMwU3kxaWdrWXhDRkxBRUExS1lnd2tKa2FqaWZJdzhSZC9Fbi96a2ZqNkEzd0VOUkExaWlnaFBsQi9VSU5FRkdKQ0lwcEtTMm0zM2JZVXVsdDJsMzNmR2MrNTI5dGV0bmZMYm5jNXY4enNtWm56bWUvY08rZk9MSU01Nitqb2FIZTRYUGR3cHZySkpXUnVLcDFJbkIwZkh3OFpmYXBWTWdvVUNBVHVGWXF5Q1VEVmZ5OEV6MG11YWFjR0J3Zi9YUEJWWGxOSW9lSjA3bGdNcE9DY1NRNmRicWN6R0kxR1k1WGo4aEU0TFdraGtJR29Xd0NvTE45bndWTnBqUnZQMEJ4SUF0OHJoWEFiUHFzK1J0dHlTbTQxaUROb1lSejJTWkdiQjF2MVc2NlAwMXRxTlpnejdsYzQzNE5nVjdFK1Z1Tks4WEhhRmdBNWFkbVo4VGJPbEQzWlZHclFzbjJaVGs3N2tMYUZGZGluY0dDY3RkdHFhZzkzZG5ZMkxwT3hhSmhDbm5BNEhLSnRvYXE4QmpGMllPd1I4ci9ZNW9OL0VpbElBYlJ5MWZGQW82ZjJTQ1FTU1ZOYkpWYVFEUEtoQW4xcjllVitwOHNQczFrTjNwMjZDbUZOQXI3Ulo4SlhwcmJqSktPVlFDM2ZYblBBQnBzQysveGVhRklZTGpWZjM5amMrb1BQNXpQdFkzUHYwdW8zaFZLWVJwdXFneHNSakJ0N2c4ZmJjZ0thbTJ0TFF5enVWUkowSHR6aUJROERpZUNOM1UzTjM2Ti9XZnU0WkNpQm0rd3E3Ry8xc1hvZHpPL3Y3dTM3RnQwdWFpdkh5b0pTWU84Y3VFNEhLMXU2ZTlkOGcrNmFXd3FsNEQ0ZDdHWHV2T0p0cTFhdlBZNXVaNm5nc3BVYWdadnRObmplbndjckNteEh4Y2V3eldHMEwxVXVHMHBCVnpoc3NCL0JycnppaHdKOWE3NUd0MzBwSUxWVkJLVUFMUVlZQUJNSzM5SFRlL3RSZE51b3JaaFZES1hBZmdUdmJmV3lHcEFTYy9WT1hPb2o2QzRLcmdxVXdHMEV4cVYySXBoei9tajM2cjdQMGExU1c2RlZEVXFCMjUxMkhld2dzS0k4MXRPNzVqTjA2eDhWTTdpcVVBcmNNUWUyUzFwcXZoc1ZmMUlJcmpxVXdDdE5ZRlQ4T0NvK2hPNTUxbnlGT2xmVE9tdnM4SnkvaWRueWlwOUF4UjlqZkoxM3k2QWtvS3ZHb1lOVkJLUGlwMUR4UVhRenk3ZUxCcFJqaytrc25JZ1VQNHZYcTV6UklRQ2Y4VE9vV0tzSzFJKzVlQ2FiZzJsTjNIU3VxUGpac3FFNUllSFQ2UWpzYktyWFAzVkVZWXpCVm84YnZnakhRQWc1cTJueWFid2xGSjFCV2RBc0FnOWREc04vdUp6dTJSanNXckZ3UUx5ejFnVS9YWXREQktCQk1rMGRIaGo0cXBqc2tsK2tEQUkvbXByUmdSVHM3UFdVak9DU0dxYmd0YUMvUG4rUXdGdlh5NGJmcWl3SlNzQVBFVGlVeWVHOVZVd0pJWDRXdUthL3pNWnZpTG0remcxejM5aTdlbnB1ZS9DR1J0T1BtMExUK0dnK21KeUJZUVJLSVVNeWsrclBKak12SUZpY2lTZmxOVHlpR21iTHE5V1B0Y3hXWE8yUzBHUk93UHVUWVJqRlpVU0Z3WFFpM1Q4OFBId2hHQno2RjBGSE5RdTE5K0VMUlVrZjg4RG03dDdlamNhRXpPV1MwUGN1ejhBWUFsSGhKUzJWNkI4Ykc3cG9ESmJaMU9zb1Z2NFJUOGhvYmtHdGczUFlWSWVmZFRUT0ZjdG51eVIwQXBkT2doaE14bWMzajZBWlFDcFI4ZDhvNkJpcC9iWGcyVzd5MUFKbEljVHU2T29LckRPUG8vcVNVRlE0a0UxYzd3K0ZRdU9GQSttM2xzbTlSdVhwV0VMR1RHcmRxZ0liNXRRcUR0c0I2bU8yb2xCY3V2UFJ5SlV0bzZPamsrWUI1dnJJeU9BNTdIYzhaNkcySDlWeVhTM3M2dWhZRlRDUHM0WUtjUzRabTkwNlBUMTkyZHpac3M2RXJ2WjNWQnMzcWZYZ0hlaHV0eFBUTGVkT3QvTWw4MWhMYURvWjN6WXhNWEhWM0xGWS9lTEF3RjlDZys5STdVbk1TR2JiMm9EM0xGTEwrSk50Yld0WEdtMlcwR0F3aU5tc2RCUFp6S3ZVKzFRMElSTzR6UXlqUS9rNmx3T25BelpYblhqRDhGdENqY1pTeTB1WExwekIzZk5qVmxkNzR5ZnU0U2FQL216eGxMamJ1TTFYQlVxVFkxcjZGU3AvUTdWMGtUYU03cmNyYkhqSHhCcytZdzc5TDhDcVFZZUdoazdqVGYzTERLbzlpSGw2UEpVQitpcWRqeWRoTXF0aGswakZZalA2LzR4NjVqQm1WV25aZ09adGFUK0o5OWM3Q21OcFd1N0E4SVdCTjhtLzZFeGEyTG1jM3ltMHlNeVZ3NDNOWGt4STBJS3ZyaDFUV2dqejlsc0lmTnVJOVQ5d2t5OUhhWGcxbmdBQUFBQkpSVTVFcmtKZ2dnPT0nKTtcblx0fVxufVxuXG4vKipcbiAqIEhvdHNwb3QgcmVjdGFuZ2xlczpcbiAqIGAuaG90c3BvdC1yZWN0YCAtIEEgdmlzdWFsaXphdGlvbiBvZiB0aGUgaG90c3BvdCByZWN0YW5nbGVzIG9uIGFuIGFyZWFcbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRkaXYuaW1nLWFyZWFcbiAqIFx0XHRkaXYuc3RyZXRjaFxuICogXHRcdFx0ZGl2LmhvdHNwb3QtcmVjdC5hYnMoc3R5bGU9XCJ0b3A6NDAlO2xlZnQ6NDAlO3dpZHRoOjIwJTtoZWlnaHQ6MjAlO3otaW5kZXg6IDE7XCIpXG4gKiBcdFx0aW1nKHNyYz0naHR0cDovL3d3dy5ieXVpLmVkdS9pbWFnZXMvYWdyaWN1bHR1cmUtbGlmZS1zY2llbmNlcy9mbG93ZXIuanBnJylcbiAqL1xuXG4uaG90c3BvdC1yZWN0IHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSggMCwgMCwgMCwgMC4yICk7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNGRkY7XG59XG4iLCIvKioqXG4gKiBEZWNvcmF0b3JzOlxuICovXG5cbi8qKlxuICogRmVlZGJhY2s6XG4gKiBgLmZlZWRiYWNrYCAtIFRoaXMgc3R5bGVzIGEgZmVlZGJhY2sgbWVzc2FnZSB3aGVuIHRoZSB1c2VyIGhhcyBhbnN3ZXJlZCBhIHF1ZXN0aW9uLlxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5mZWVkYmFjayBUaGFua3MgZm9yIHlvdXIgYW5zd2VyLlxuICovXG4uZmVlZGJhY2sge1xuXHRib3JkZXItcmFkaXVzOiBAYm9yZGVyLXJhZGl1cztcblx0cGFkZGluZzogMjBweCAyMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGVuKCBkZXNhdHVyYXRlKCBAcHJpbWFyeS1hY3Rpb24tY29sb3IsIDgwJSApLCA1NSUgKTtcblx0bWFyZ2luOiAyMHB4IDVweDtcblxuXHQvKipcblx0ICogQ29ycmVjdCBmZWVkYmFjazpcblx0ICogYC5jb3JyZWN0YCAtIFRoZSBzdHlsZSBmb3IgYSBjb3JyZWN0IGFuc3dlcmVkIGZlZWRiYWNrXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmZlZWRiYWNrLmNvcnJlY3QgUGVyZmVjdCwgeW91ciBhbnN3ZXIgaXMgY29ycmVjdFxuXHQgKi9cblx0Ji5jb3JyZWN0IHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCBAY29ycmVjdC1hbnN3ZXItY29sb3I7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbiggQGNvcnJlY3QtYW5zd2VyLWNvbG9yLCA2MCUgKTtcblx0XHRjb2xvcjogZGFya2VuKCBAY29ycmVjdC1hbnN3ZXItY29sb3IsIDIwJSApO1xuXHR9XG5cdFxuXHQvKipcblx0ICogV3JvbmcgZmVlZGJhY2s6XG5cdCAqIGAud3JvbmdgIC0gVGhlIHN0eWxlIGZvciBhIHdyb25nIGFuc3dlcmVkIGZlZWRiYWNrXG5cdCAqIFxuXHQgKiBcdEBleGFtcGxlXG5cdCAqIFx0ZGl2LmZlZWRiYWNrLndyb25nIFNvcnJ5LCBidXQgeW91ciBhbnN3ZXIgaXMgd3JvbmcuXG5cdCAqL1xuXHQmLndyb25nIHtcblx0XHRib3JkZXI6IDFweCBzb2xpZCBAd3JvbmctYW5zd2VyLWNvbG9yO1xuXHRcdGJhY2tncm91bmQtY29sb3I6IGxpZ2h0ZW4oIEB3cm9uZy1hbnN3ZXItY29sb3IsIDYwJSApO1xuXHRcdGNvbG9yOiBkYXJrZW4oIEB3cm9uZy1hbnN3ZXItY29sb3IsIDIwJSApO1xuXHR9XG5cbn0iLCIvKioqXG4gKiBUZXh0OlxuICovXG5cbi8qKlxuICogSDE6XG4gKiBgaDFgIC0gVGhlIGhlYWRlciAxXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0aDEgaGVhZGVyIDFcbiAqL1xuaDEge1xuXHRmb250LXdlaWdodDogMTAwO1xuXHRjb2xvcjogIzExMTtcblx0Zm9udC1zaXplOiAzLjRlbTtcbn1cblxuLyoqXG4gKiBIMjpcbiAqIGBoMmAgLSBUaGUgaGVhZGVyIDJcbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRoMiBoZWFkZXIgMlxuICovXG5oMiB7XG5cdGZvbnQtd2VpZ2h0OiAxMDA7XG5cdGNvbG9yOiAjMTExO1xuXHRmb250LXNpemU6IDIuMWVtO1xufVxuXG4vKipcbiAqIEgzOlxuICogYGgzYCAtIFRoZSBoZWFkZXIgM1xuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGgzIGhlYWRlciAzXG4gKi9cbmgzIHtcblx0Zm9udC13ZWlnaHQ6IDcwMDtcblx0Y29sb3I6ICMxMTE7XG5cdGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qKlxuICogUGFyYWdyYXBoOlxuICogYHBgIC0gVGhlIHN0eWxlIGZvciBhIHBhcmFncmFwaFxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdHAgQWxzIEJsaW5kdGV4dCB3aXJkIFRleHQgYmV6ZWljaG5ldCwgZGVuIG1hbiBiZWkgZGVyIEdlc3RhbHR1bmcgdm9uIFB1Ymxpa2F0aW9uZW4gdmVyd2VuZGV0LCB3ZW5uIGRlciBlaWdlbnRsaWNoZSBUZXh0IG5vY2ggbmljaHQgdm9ybGllZ3QuIE1pdCBIaWxmZSBkZXMgQmxpbmR0ZXh0ZXMga2FubiBkaWUgVmVydGVpbHVuZyBkZXMgVGV4dGVzIGF1ZiBkZXIgU2VpdGUgKExheW91dCBvZGVyIFNhdHpzcGllZ2VsKSBzb3dpZSBkaWUgTGVzYmFya2VpdCBkZXIgdmVyd2VuZGV0ZW4gU2NocmlmdGFydGVuIChUeXBvZ3JhZmllKSBiZXVydGVpbHQgd2VyZGVuLiBFciBiZXN0ZWh0IGF1cyBlaW5lciBtZWhyIG9kZXIgbWluZGVyIHNpbm5sb3NlbiBGb2xnZSB2b24gV8O2cnRlcm4sIG9mdCBhdWNoIG51ciBhdXMgd29ydMOkaG5saWNoZW4gU2lsYmVuZm9sZ2VuLlxuICovXG5wIHtcblx0Zm9udC1zaXplOiAxZW07XG59XG5cbi8qKlxuICogQ2VudGVyIHRleHQ6XG4gKiBgLmNlbnRlcmAgLSBDZW50ZXJzIHRoZSB0ZXh0XG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0cC5jZW50ZXIgVGhpcyBpcyBjZW50ZXJlZFxuICovXG4uY2VudGVyIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufSIsIi8qKipcbiAqIE5hdmlnYXRpb246XG4gKi9cblxuLyoqXG4gKiBDYXRlZ29yaWVzIGxpc3Q6XG4gKiBgLmNhdGVnb3JpZXNgIC0gQSBzdHlsaW5nIGZvciBhIGxpc3Qgb2YgY2F0ZWdvcmllcyBpbiBhIG5hdmlnYXRpb25cbiAqIFxuICogXHRAZXhhbXBsZVxuICogXHRvbC5jYXRlZ29yaWVzXG4gKiBcdFx0bGkuYWN0aXZlIEhvbWVcbiAqIFx0XHRsaSBHYWxsZXJ5XG4gKiBcdFx0bGkgQmxvZ1xuICovXG4uY2F0ZWdvcmllcyB7XG5cdFxuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG5cdGxpc3Qtc3R5bGU6IG5vbmU7XG5cdFxuXHRsaSB7XG5cdFx0cGFkZGluZzogN3B4IDEycHg7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0XHRmb250LXNpemU6IDAuOWVtO1xuXHRcdFxuXHRcdCY6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogQHByaW1hcnktYWN0aW9uLWNvbG9yO1xuXHRcdFx0Y29sb3I6ICNGRkY7XG5cdFx0fVxuXHRcdFxuXHRcdCYuYWN0aXZlIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNiYmI7XG5cdFx0XHRjb2xvcjogI0ZGRjtcblx0XHR9XG5cdH1cbn1cbiBcbi8qKlxuICogQ2F0ZWdvcnkgbmF2aWdhdGlvbjpcbiAqIGAuY2F0ZWdvcmllcy1uYXZpZ2F0aW9uYCAtIEEgc3R5bGluZyBmb3IgYSBjYXRlZ29yeSBuYXZpZ2F0aW9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LmNhdGVnb3J5LW5hdmlnYXRpb25cbiAqIFx0XHR1bC5jYXRlZ29yaWVzXG4gKiBcdFx0XHRsaS5hY3RpdmUgSG9tZVxuICogXHRcdFx0bGkgR2FsbGVyeVxuICogXHRcdFx0bGkgQmxvZ1xuICovXG4uY2F0ZWdvcnktbmF2aWdhdGlvbiB7XG5cdFxuXHRsaSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG5cdFxuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JiYjtcbn1cblxuLyoqXG4gKiBNZW51IG5hdmlnYXRpb246XG4gKiBgLm1lbnUtbmF2aWdhdGlvbmAgLSBBIHN0eWxpbmcgZm9yIGEgbWVudSBuYXZpZ2F0aW9uXG4gKiBcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2Lm1lbnUtbmF2aWdhdGlvbi5vcGVuKHN0eWxlPSdoZWlnaHQ6MTUwcHgnKVxuICogXHRcdGRpdi50b2dnbGUtbWVudSBNZW51XG4gKiBcdFx0b2wuY2F0ZWdvcmllc1xuICogXHRcdFx0bGkuYWN0aXZlIEhvbWVcbiAqIFx0XHRcdGxpIEdhbGxlcnlcbiAqIFx0XHRcdGxpIEJsb2dcbiAqL1xuLm1lbnUtbmF2aWdhdGlvbiB7XG5cdFxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFxuXHQuY2F0ZWdvcmllcyB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0XHR6LWluZGV4OiAxMDtcblx0XHR0b3A6IDIwcHg7XG5cdFx0bGVmdDogMDtcblx0fVxuXHRcblx0Ji5vcGVuIHtcblx0XHQuY2F0ZWdvcmllcyB7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHR9XG5cdH1cbn1cblxuXG5cblxuLyoqXG4gKiBQb2ludHMgbmF2aWdhdGlvbjpcbiAqIGAucG9pbnRzLW5hdmlnYXRpb25gIC0gQSBzdHlsZSBmb3IgYSBwb2ludHMgbmF2aWdhdGlvblxuICogXG4gKiBcdEBleGFtcGxlXG4gKiBcdGRpdi5wb2ludHMtbmF2aWdhdGlvblxuICogXHRcdGRpdi5wb2ludFxuICogXHRcdGRpdi5wb2ludC5hY3RpdmVcbiAqIFx0XHRkaXYucG9pbnQuaGFzLWlucHV0XG4gKiBcdFx0ZGl2LnBvaW50LnNtYWxsXG4gKi9cbi5wb2ludHMtbmF2aWdhdGlvbiB7XG5cdFxuXG5cdC5wb2ludCB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHdpZHRoOiAxNXB4O1xuXHRcdGhlaWdodDogMTVweDtcblx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgIzk5OTtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XG5cdCAgICAmOmhvdmVyIHtcblx0ICAgICAgYm9yZGVyOiAycHggc29saWQgIzc3Nztcblx0ICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZTtcblx0ICAgIH1cblx0XHRcblxuXHRcdCYuc21hbGwge1xuXHRcdCBcdHdpZHRoOiAxMHB4O1xuXHRcdCBcdGhlaWdodDogMTBweDtcblx0XHQgfVxuXHRcdCBcblxuXHRcdCYuaGFzLWlucHV0IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG5cdCAgICB9XG5cdFxuXG5cdCAgICAmLmFjdGl2ZSB7XG5cdCAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM2NjY7XG5cdCAgICB9XG5cdCAgICBcblx0XHRcblx0fVxuXHRcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcblx0LnBvaW50ICsgLnBvaW50IHtcblx0XHRtYXJnaW4tbGVmdDogNXB4O1xuXHR9XG59XG4iLCIvKioqXG4gKiBUb29sdGlwOlxuICovXG4gXG4vKipcbiAqIFRvb2x0aXAgQ29udGVudDpcbiAqIGAudG9vbHRpcC1jb250YWluZXJgIENvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAgY29udGVudFxuICpcbiAqIFx0QGV4YW1wbGVcbiAqIFx0ZGl2LnRvb2x0aXAtY29udGFpbmVyIEknbSBhIHRvb2x0aXBcbiAqL1xuIFxuLnRvb2x0aXAtY29udGFpbmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuXHRwYWRkaW5nOiA1cHg7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0Ym9yZGVyLXJhZGl1czogQGJvcmRlci1yYWRpdXM7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNCQkJCQkI7XG59IiwiLmhlYWRlciB7XG5cdFxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHRwYWRkaW5nOiAzMHB4IDA7XG5cdC5sb2dvIHtcblx0XHR3aWR0aDogMjA1cHg7XG5cdH1cblx0XG5cdC50aXRsZSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdH1cbn1cblxuI2xlcm5mcmFnZW4ge1xuXHRtaW4taGVpZ2h0OiA2MDBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblx0cGFkZGluZzogMThweDtcbn1cblxuLmNvbnRlbnQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuMyk7XG5cdHBhZGRpbmc6IDIwcHg7XG59IiwiaDEge1xuXHRmb250LXNpemU6IDIuNWVtO1xufVxuXG4ubmV4dC1wcmV2LW5hdmlnYXRpb24ge1xuXHR0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnNsaWRlLWNvbnRhaW5lciB7XG5cdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cdFxuXHQudGV4dCB7XG5cdFx0bWFyZ2luOiAyMHB4IDA7XG5cdH1cbn1cblxuLnByZXYtYnV0dG9uIHtcblx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4vLyBzdHlsZSBmb3IgdGhlIHN1Ym1pdCBzbGlkZVxuLnN1Ym1pdCB7XG5cdC5yb3cge1xuXHRcdHBhZGRpbmc6IDVweDtcblx0fVxuXHRcblx0LmxhYmVsIHtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdG1pbi13aWR0aDogMTE1cHg7XG5cdFx0Y29sb3I6ICM1NTU7XG5cdFx0Zm9udC1zaXplOiAxZW07XG5cdH1cblx0XG5cdC5pbnB1dCB7XG5cdFx0cGFkZGluZzogNnB4IDEwcHg7XG5cdH1cbn1cblxuLnRvb2x0aXBfYXJlYSB7XG5cdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KTtcblx0XG5cdC50b29sdGlwLWNvbnRhaW5lciB7XG5cdFx0Ym94LXNoYWRvdzogMXB4IDFweCAzcHggMHB4IHJnYmEoMCwwLDAsMC4xKTtcblx0XHRtaW4td2lkdGg6IDIwMHB4O1xuXHRcdG1heC13aWR0aDogNDAwcHg7XG5cdFx0Ly90ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG59IiwiLnJvdyB7XG5cdFxuXHRkaXNwbGF5OiB0YWJsZTtcblx0XG5cdD4gKiB7XG5cdFx0ZGlzcGxheTogdGFibGUtY2VsbDtcblx0fVxufVxuXG4uY29udGFpbmVyLmZ1bGwge1xuXHRwYWRkaW5nOiAwO1xufVxuXG5cbi5oaWRkZW4ge1xuXHRkaXNwbGF5OiBub25lO1xufVxuIiwiQGltcG9ydCBcImxlcm5mcmFnZW4vbWFpbi5sZXNzXCI7XG5AaW1wb3J0IFwibGF5b3V0Lmxlc3NcIjtcbkBpbXBvcnQgXCJsZXJuZnJhZ2VuLmxlc3NcIjtcbkBpbXBvcnQgXCJoZWxwZXJzLmxlc3NcIjtcblxuaHRtbCwgYm9keSB7XG5cdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhJywgc2Fucy1zZXJpZjtcblx0bWFyZ2luOiAwcHg7XG5cdHBhZGRpbmc6IDBweDtcblx0Zm9udC1zaXplOiAxZW07XG5cdGhlaWdodDogMTAwJTtcbn1cblxuYm9keSB7XG5cdGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1nL2JnLmpwZycpO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtc2l6ZTogMTIwJTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgMTYwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzQwNDA0MDtcbn1cblxuXG5AcHJpbWFyeS1hY3Rpb24tY29sb3I6IHJnYigyNTUsIDAsIDUxKTsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0= */